Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Sprawdzenie kodu:
- Krok 2: Reszta Kodeksu…
- Krok 3: Łączenie z czystymi danymi…
- Krok 4:
Wideo: Używanie płytki czujników Complex Arts do kontroli czystych danych przez Wi-Fi: 4 kroki (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:29
Czy kiedykolwiek chciałeś poeksperymentować z kontrolą gestów? Wprawiać rzeczy w ruch machnięciem ręki? Kontroluj muzykę jednym ruchem nadgarstka? Ten Instruktaż pokaże Ci, jak!
Complex Arts Sensor Board (complexarts.net) to wszechstronny mikrokontroler oparty na ESP32 WROOM. Posiada wszystkie funkcje platformy ESP32, w tym wbudowane WiFi i Bluetooth oraz 23 konfigurowalne piny GPIO. Sensor Board zawiera również BNO_085 IMU – procesor ruchu o rozdzielczości 9 DOF, który wykonuje wbudowane równania fuzji czujników i kwaternionów, zapewniając bardzo precyzyjną orientację, wektor grawitacyjny i dane przyspieszenia liniowego. Płytkę czujnika można zaprogramować za pomocą Arduino, MicroPython lub ESP-IDF, ale w tej lekcji będziemy programować płytkę za pomocą Arduino IDE. Należy zauważyć, że moduły ESP32 nie są programowalne natywnie z Arduino IDE, ale umożliwienie tego jest bardzo proste; jest tu świetny samouczek: https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/, który powinien zająć około 2 minut. Ostatnim elementem konfiguracji, którego potrzebujemy, jest sterownik układu USB-to-UART na płytce czujnika, który można znaleźć tutaj: https://www.silabs.com/products/development-tools/software/usb-to -uart-bridge-vcp-sterowniki. Po prostu wybierz swój system operacyjny i zainstaluj, co powinno zająć około 2 minut. Gdy to zrobisz, możemy iść!
[Ta lekcja nie zakłada znajomości Arduino ani Pure Data, jednak nie obejmuje ich instalacji. Arduino można znaleźć na stronie aduino.cc. Czyste dane można znaleźć na puredata.info. Obie strony mają łatwe do wykonania instrukcje dotyczące instalacji i konfiguracji.]
Ponadto… koncepcje omówione w tym samouczku, takie jak konfigurowanie połączeń UDP, programowanie ESP32 za pomocą Arduino i podstawowe budowanie łatek Pure Data – są elementami konstrukcyjnymi, które można zastosować w niezliczonych projektach, więc nie pochylaj się tutaj, gdy już to zrobisz mam te koncepcje!
Kieszonkowe dzieci
1. Płytka czujników złożonych sztuk
2. IDE Arduino
3. Czyste dane
Krok 1: Sprawdzenie kodu:
Najpierw przyjrzymy się kodowi Arduino. (Źródło jest dostępne pod adresem https://github.com/ComplexArts/SensorBoardArduino. Zaleca się, aby śledzić wraz z kodem, gdy idziemy.) Potrzebujemy kilku bibliotek, z których jedna nie jest podstawową biblioteką Arduino, więc ty może trzeba go zainstalować. Ten projekt opiera się na pliku SparkFun_BNO080_Arduino_Library.h, więc jeśli go nie masz, musisz przejść do Szkic -> Dołącz bibliotekę -> Zarządzaj bibliotekami. Wpisz „bno080”, a pojawi się wspomniana biblioteka. Naciśnij zainstaluj.
Pozostałe trzy używane biblioteki powinny być domyślnie dostarczane z Arduino. Najpierw użyjemy biblioteki SPI do komunikacji z BNO. Możliwe jest również użycie UART między ESP32 a BNO, ale ponieważ SparkFun ma już bibliotekę wykorzystującą SPI, będziemy się tego trzymać. (Dzięki, SparkFun!) Dołączenie pliku SPI.h pozwoli nam wybrać, które piny i porty chcemy wykorzystać do komunikacji SPI.
Biblioteka WiFi zawiera funkcje, które pozwalają nam uzyskać dostęp do sieci bezprzewodowej. WiFiUDP zawiera funkcje, które pozwalają nam wysyłać i odbierać dane przez tę sieć. Kolejne dwie linijki przekierowują nas do sieci – wpisz nazwę sieci i hasło. Dwie kolejne linie określają adres sieciowy i port, do którego wysyłamy nasze dane. W tym przypadku po prostu będziemy nadawać, co oznacza, że wyślemy to do każdego w naszej sieci, kto słucha. Numer portu określa, kto nasłuchuje, jak zobaczymy za chwilę.
Kolejne dwie linie tworzą członków dla odpowiednich klas, dzięki czemu możemy później łatwo uzyskać dostęp do ich funkcji.
Następnie przypisujemy odpowiednie piny ESP do odpowiednich pinów na BNO.
Teraz konfigurujemy członka klasy SPI, ustawiając również prędkość portu SPI.
Wreszcie dochodzimy do funkcji konfiguracji. Tutaj uruchomimy port szeregowy, abyśmy mogli monitorować nasze wyjście w ten sposób, jeśli chcemy. Następnie zaczynamy WiFi. Zauważ, że program czeka na połączenie Wi-Fi przed kontynuowaniem. Po podłączeniu WiFi rozpoczynamy połączenie UDP, a następnie drukujemy naszą nazwę sieci i adres IP na monitorze szeregowym. Następnie uruchamiamy port SPI i sprawdzamy komunikację między ESP a BNO. Na koniec wywołujemy funkcję „enableRotationVector(50);” ponieważ w tej lekcji będziemy używać tylko wektora rotacji.
Krok 2: Reszta Kodeksu…
Zanim przejdziemy do głównej pętli(), mamy funkcję o nazwie „mapFloat”.
Jest to funkcja niestandardowa, którą dodaliśmy w celu mapowania lub skalowania wartości do innych wartości. Wbudowana funkcja map w Arduino umożliwia tylko mapowanie liczb całkowitych, ale wszystkie nasze początkowe wartości z BNO będą mieścić się w zakresie od -1 do 1, więc będziemy musieli ręcznie przeskalować je do wartości, których naprawdę chcemy. Nie martw się jednak - oto prosta funkcja, która właśnie to robi:
Teraz dochodzimy do głównej pętli(). Pierwszą rzeczą, którą zauważysz, jest kolejna funkcja blokująca, taka jak ta, która powoduje, że program czeka na połączenie sieciowe. Ten zatrzymuje się, dopóki nie pojawią się dane z BNO. Kiedy zaczynamy otrzymywać te dane, przypisujemy przychodzące wartości kwaternionów do zmiennych zmiennoprzecinkowych i drukujemy te dane na monitorze szeregowym.
Teraz musimy zmapować te wartości.
[Słowo o komunikacji UDP: dane są przesyłane przez UDP w pakietach 8-bitowych lub wartościach od 0-255. Wszystko powyżej 255 zostanie przesłane do następnego pakietu, zwiększając jego wartość. Dlatego musimy upewnić się, że nie ma wartości powyżej 255.]
Jak wspomnieliśmy wcześniej, mamy nadchodzące wartości z zakresu -1 – 1. To nie daje nam wiele pracy, ponieważ wszystko poniżej 0 zostanie odcięte (lub pojawi się jako 0) i nie możemy tego zrobić tonę o wartościach od 0 do 1. Najpierw musimy zadeklarować nową zmienną do przechowywania naszej mapowanej wartości, następnie bierzemy tę początkową zmienną i mapujemy ją od -1 – 1 do 0 – 255, przypisując wynik do naszej nowej zmiennej o nazwie Nx.
Teraz, gdy mamy już zmapowane dane, możemy złożyć nasz pakiet. Aby to zrobić, musimy zadeklarować bufor dla danych pakietu, nadając mu rozmiar [50], aby upewnić się, że wszystkie dane będą pasować. Następnie zaczynamy pakiet od adresu i portu, które określiliśmy powyżej, zapisujemy nasz bufor i 3 wartości do pakietu do, a następnie kończymy pakiet.
Na koniec wypisujemy nasze zmapowane współrzędne na monitorze szeregowym. Teraz kod Arduino jest gotowy! Prześlij kod do płytki czujnika i sprawdź monitor szeregowy, aby upewnić się, że wszystko działa zgodnie z oczekiwaniami. Powinieneś zobaczyć wartości kwaternionów, a także wartości mapowane.
Krok 3: Łączenie z czystymi danymi…
Teraz dla czystych danych! Otwórz Pure Data i rozpocznij nową łatkę (ctrl n). Łatka, którą stworzymy, jest bardzo prosta, ma tylko siedem obiektów. Pierwszym, który stworzymy, jest obiekt [netreceive]. To jest chleb powszedni naszej łatki, obsługującej całą komunikację UDP. Zauważ, że istnieją trzy argumenty dla obiektu [netreceive]; -u określa UDP, -b binarne, a 7401 to oczywiście port, na którym nasłuchujemy. Możesz również wysłać wiadomość „listen 7401” do [netreceive], aby określić swój port.
Gdy mamy już dane, musimy je rozpakować. Jeśli połączymy obiekt [print] z [netrecieve], możemy zobaczyć, że dane początkowo przychodzą do nas jako strumień liczb, ale chcemy przeanalizować te liczby i użyć każdej z nich do czegoś innego. Na przykład możesz chcieć użyć obrotu osi X do kontrolowania wysokości oscylatora, a osi Y do głośności lub dowolnej liczby innych możliwości. Aby to zrobić, strumień danych przechodzi przez obiekt [rozpakuj], którego argumentami są trzy pływaki (ff f).
Teraz, gdy jesteś tak daleko, świat jest twoją ostrygą! Masz kontroler bezprzewodowy, którego możesz użyć do manipulowania wszystkim, co chcesz w uniwersum Pure Data. Ale zatrzymaj się tam! Oprócz wektora obrotu wypróbuj akcelerometr lub magnetometr. Spróbuj użyć specjalnych funkcji BNO, takich jak „podwójne dotknięcie” lub „wstrząśnij”. Wystarczy trochę pogrzebać w podręcznikach użytkownika (lub następnym Instruktażowym…).
Krok 4:
To, co zrobiliśmy powyżej, to skonfigurowanie komunikacji między płytą czujnika a czystymi danymi. Jeśli chcesz zacząć się bawić, podłącz wyjścia danych do niektórych oscylatorów! Graj z regulacją głośności! Może kontrolować czasy opóźnienia lub pogłos! Świat stoi przed Tobą otworem!
Zalecana:
Lutowanie czystych spawów drutowych: 3 kroki (ze zdjęciami)
Lutowanie czystych spawów drutowych: Oto krótka wskazówka na temat prawidłowego łączenia kabli. Jest to przydatne do zmiany złącza w panelu słonecznym lub po prostu wydłużenia dowolnego kabla dwużyłowego. To może wydawać się podstawową umiejętnością, ale wiem, że zanim nauczyłem się tej techniki, nie
MicroPython na płytce czujników Complex Arts: 3 kroki
MicroPython na płycie czujników Complex Arts: Jednym z najbardziej niesamowitych aspektów mikrokontrolera ESP32 jest jego zdolność do obsługi MicroPythona. Można to zrobić na dwa sposoby: uruchamiając pełne programy Pythona lub interaktywnie przez aplikację konsolową. Ten instruktaż pokaże, jak używać
Sample Pad Controller korzystający z czystych danych: 4 kroki
Sample Pad Controller używając Pure Data: W tym Instruktażowym utworze kontroler, który pozwoli niektórym starym elektronicznym padom perkusyjnym Roland na wyzwalanie dźwięków bez oryginalnego modułu perkusyjnego dołączonego do zestawu. Użyję Pure Data, aby utworzyć łatkę do załadowania kilka plików wav, a następnie p
Robot autonomiczny Wallace - część 4 - dodanie czujników odległości na podczerwień i czujników „wzmacniacza”: 6 kroków
Robot autonomiczny Wallace – część 4 – Dodaj czujniki odległości na podczerwień i czujniki „wzmacniacza”: Witam, dzisiaj rozpoczynamy kolejny etap ulepszania możliwości Wallace'a. W szczególności staramy się poprawić jego zdolność wykrywania i omijania przeszkód za pomocą czujników odległości na podczerwień, a także wykorzystać możliwości kontrolera silnika Roboclaw
Używanie czujników temperatury, wody deszczowej i wibracji w Arduino do ochrony linii kolejowych: 8 kroków (ze zdjęciami)
Wykorzystanie czujników temperatury, wody deszczowej i wibracji w Arduino do ochrony kolei: we współczesnym społeczeństwie wzrost liczby pasażerów pociągów oznacza, że firmy kolejowe muszą zrobić więcej, aby zoptymalizować sieci, aby nadążyć za popytem. W tym projekcie pokażemy w małej skali, jak czujniki temperatury, wody deszczowej i wibracji działają