Jak zintegrować Arduino z Unity?

Cześć!

Dziś zajmiemy się komunikacją między Unity a Arduino przy użyciu Monitora szeregowego.
No to zaczynajmy !

Do komunikacji Unity z Portem szeregowym użyjemy klasy SerialPort. Jednak Unity domyślnie nie ma zaimplementowanych wszystkich bibliotek C# więc musimy je zmusić do używania pełnej biblioteki .NET 2.0

  1. Klikamy Edit -> Project Settings -> Player

2. W inspektorze po prawej klikamy Other Settings oraz szukamy zakładki Optimization. W Api Compatibility Level zaznaczamy .NET 2.0

Gdy mamy już skonfigurowany silnik, możemy przejść do inicjalizacji komunikacji Unity z portem szeregowym.

Aby komunikować się z portem szeregowym musimy stworzyć nowy obiekt SerialPort nazwiemy go tutaj „arduino” oraz podać port wraz z szybkością.

Port oraz szybkość podane są tutaj jako przykład wszystko zależy od tego do, którego portu podpięliśmy Arduino oraz jaką ustawiliśmy szybkość w kodzie Arduino, ale o tym później.

Teraz przejdźmy do praktycznego przykładu. A dokładniej do „wysłania” oraz odebrania zmiennej a.
Zacznijmy od Arduino. Kod tutaj jest bardzo prosty, ponieważ jego jedyne zadanie to „wypisanie” zmiennej a na monitor szeregowy (więcej o monitorze szeregowym dowiesz się TUTAJ)

Gdy mamy już działający skrypt wysyłający możemy przejść do przechwycenia danych w Unity.
Tworzymy nowy Game Object (np. Cube) oraz skrypt (np. Test)
Skrypt test wygląda mniej więcej tak:

Tutaj też kod nie jest skomplikowany. Tworzymy nowy obiekt „arduino”, definiujemy szybkość oraz port, otwieramy port szeregowy oraz w metodzie Update tworzymy wyjątek, który odczytuje dane z portu szeregowego.

Do wcześniej utworzonego obiektu dodajemy nasz skrypt oraz uruchamiamy projekt.

Po uruchomieniu na dole w konsoli powinna co sekundę powinna pojawiać się wartość naszej zmiennej a.

JUŻ! To wszystko na dziś. Teraz jedynie od Ciebie zależy co dalej zrobisz z danymi pobranymi z Arduino 😀 A można zrobić naprawdę wiele.

Jeżeli macie jakieś pytania lub propozycje piszcie w komentarzach.

Scroll to Top