- Arduino Nano 33 BLE Sense
- Omówienie sprzętu Arduino Nano 33 BLE Sense
- Ulepszenia oprogramowania z sensem Arduino Nano 33 BLE
- Przygotowanie Arduino IDE do Arduino Nano 33 BLE sense
- Program do odczytu danych z czujnika i wyświetlania na monitorze szeregowym
- Arduino Nano 33 BLE - Wgrywanie kodu
Arduino to platforma programistyczna służąca do szybkiego prototypowania i weryfikacji pomysłów. Wielu z nas zaczynałoby od płyty rozwojowej Arduino UNO, ale dziś, gdy postępujemy w kierunku Internetu rzeczy, wizji komputerowej, sztucznej inteligencji, uczenia maszynowego i innych futurystycznych technologii, skromny Arduino UNO nie mógł już poradzić sobie z 8 -bitowy mikrokontroler. To wymagało wprowadzenia nowych płyt z mocniejszymi procesorami, które mają wbudowane Wi-Fi, Bluetooth, GSM i inne funkcje bezprzewodowe, takie jak popularne MKR1000 lub MKR GSM 1400. W tym kontekście Arduino niedawno wypuściło nową wersję swojego Nano o nazwie Arduino Nano 33.
Istnieją całkowicie dwa rodzaje płyt Arduino Nano 33, a mianowicie Arduino Nano 33 IoT i Arduino Nano 33 BLE sense. Główną różnicą między obydwoma modułami jest to, że moduł czujnikowy Arduino Nano 33 BLE ma wbudowane czujniki (o szczegółach dowiemy się później), podczas gdy Arduino Nano 33 IoT ich nie ma. W tym artykule dokonamy przeglądu płyty sensorycznej Arduino Nano 33 BLE, przedstawimy jej cechy i funkcjonalności, a na koniec napiszemy przykładowy kod do odczytu wartości czujnika i wyświetlenia na monitorze szeregowym. Więc nauczmy się….!
Arduino Nano 33 BLE Sense
Nazwa „Arduino Nano 33 BLE Sense” jest pełna kęsów, ale sama nazwa zawiera kilka ważnych informacji. Nazywa się „Nano”, ponieważ wymiary, wyprowadzenia i współczynnik kształtu są bardzo podobne do klasycznego Arduino Nano, w rzeczywistości planuje się go użyć jako zamiennika Arduino Nano w istniejących projektach, ale haczyk polega na tym, że ten nowy moduł działa 3,3 V, podczas gdy klasyczny Nano działa na 5 V. Myślę więc, że tutaj pojawia się nazwa „33”, aby wskazać, że płyta działa na 3,3V. Wówczas nazwa „BLE” wskazuje, że moduł obsługuje technologię Bluetooth Low Energy (BLE5 5.0)a nazwa „sense” wskazuje, że ma wbudowane czujniki, takie jak akcelerometr, żyroskop, magnetometr, czujnik temperatury i wilgotności, czujnik ciśnienia, czujnik zbliżeniowy, czujnik koloru, czujnik gestów, a nawet wbudowany mikrofon. Później przejdziemy do szczegółów BLE i innych czujników, ale na razie tak wygląda tablica czujnikowa Arduino Nano 33 BLE prosto po rozpakowaniu.
Omówienie sprzętu Arduino Nano 33 BLE Sense
Na pierwszy rzut oka na płytce można znaleźć wiele elementów zatłoczonych na górze, z których większość to czujniki, o których mówiłem wcześniej. Ale główny mózg jest ukryty za metalową obudową po prawej stronie. Ta obudowa zawiera procesor Nordic nRF52840, który zawiera potężny Cortex M4F i moduł NINA B306 do komunikacji BLE i Bluetooth 5. Dzięki temu płyta może działać przy bardzo niskim poborze mocy i komunikować się za pomocą Bluetooth 5, dzięki czemu idealnie nadaje się do zastosowań sieciowych o niskim poborze mocy w automatyce domowej i innych połączonych projektach. Ponieważ procesor nRF obsługuje system operacyjny ARM Mbedzawiera również pewne ulepszenia oprogramowania, które omówimy później. Czujniki, diody LED, przyciski i inne ważne rzeczy, które powinieneś wiedzieć na swojej płytce, są zaznaczone na poniższym obrazku.
Jak widać na powyższym obrazku, płyta jest wyposażona w czujniki, które mogą pomóc w zbudowaniu prawej części pudełka bez konieczności podłączania płytki do jakichkolwiek zewnętrznych czujników. Tablica jest przeznaczona do użytku w urządzeniach do noszenia i innych inteligentnych urządzeniach przenośnych, takich jak opaski fitness, monitorowanie poziomu glukozy, krokomierze, smartwatch, stacja pogodowa, zabezpieczenia w domu itp., Gdzie będziesz używać większości tych czujników. I jak zawsze wszystkie te czujniki mają wbudowane biblioteki dla Arduino, z których można łatwo korzystać. Na końcu tego artykułu odczytamy wartości ze wszystkich tych czujników i wyświetlimy je na monitorze szeregowym. Szczegóły czujnika na płycie sensorycznej Arduino Nano 33 BLE wraz z wymaganymi bibliotekami są zestawione poniżej
Nazwa czujnika |
Parametry |
Spinki do mankietów |
LSM9DSI - ST Microelectronics |
Akcelerometr, żyroskop, magnetometr |
Arkusz danych LSMDSI Biblioteka Arduino_LSM9DS1 |
LPS22HB - ST Microelectronics |
Ciśnienie |
Arkusz danych LPS22HB Biblioteka Arduino_LPS22HB |
HTS221 - ST Microelectronics |
Temperatura i wilgotność |
Arkusz danych LPS22HB Biblioteka Arduino_HTS221 |
APDS9960 - Avago Tech. |
Bliskość, światło, kolor, gest |
Arkusz danych LPS22HB Biblioteka Arduino_APDS9960 |
MP34DT05 - ST Microelectronics |
Mikrofon |
MP34DT05 Arkusz danych Wbudowana biblioteka PDM |
Większość z tych czujników pochodzi z firmy ST Microelectronics i obsługują pracę przy niskim poborze mocy, dzięki czemu idealnie nadają się do projektów zasilanych bateryjnie. Niewiele osób może już znać czujnik APDS9960, ponieważ jest on już dostępny jako moduł spate, a wcześniej używaliśmy również czujnika APDS9960 z Arduino. Aby uzyskać więcej informacji na temat tych czujników, możesz odwiedzić odpowiedni arkusz danych, a także upewnić się, że dodałeś całą dostarczoną bibliotekę do swojego Arduino IDE, aby rozpocząć ich używanie z płytą czujnikową Arduino Nano 33 BLE. Aby dodać bibliotekę, możesz skorzystać z podanego linku, aby przejść do odpowiedniej strony GitHub i pobrać plik ZIP, a następnie użyć Sketch -> Include Library -> Add.ZIP Library lub możesz również użyć menedżera bibliotek w Arduino IDE i dodać je biblioteki.
Arduino Nano 33 BLE Sense Board Dane techniczne:
Zasilana przez procesor Nordic nRF52840 płyta Arduino Nano 44 BLE ma następujące specyfikacje techniczne
- Napięcie robocze: 3,3 V.
- Napięcie wejściowe USB: 5 V.
- Napięcie wejściowe: 4,5 V do 21 V.
- Układ: NINA-B3 - RF52840
- Zegar: 64 MHz
- Flash: 1 MB
- SRAM: 256 KB
- Łączność bezprzewodowa: Bluetooth 5.0 / BLE
- Interfejsy: USB, I2C, SPI, I2S, UART
- Cyfrowe piny we / wy: 14
- Piny PWM: 6 (rozdzielczość 8-bitowa)
- Piny analogowe: 8 (konfigurowalne 10-bitowe lub 12-bitowe)
Ulepszenia oprogramowania z sensem Arduino Nano 33 BLE
Podobnie jak wszystkie płyty Arduino, czujnik Arduino Nano 33 BLE można zaprogramować za pomocą Arduino IDE. Ale zanim zaczniesz, musisz użyć menedżera tablicy i dodać szczegóły tablicy do swojego IDE. Jak wiemy, nRF 52840 można zaprogramować za pomocą ARM Mbed OS, oznacza to, że nasza płyta Arduino Nano 33 obsługuje system operacyjny czasu rzeczywistego (RTOS). Dzięki programowaniu w Mbed OS możemy jednocześnie uruchamiać wiele wątków w programie, aby wykonywać wielozadaniowość. Ponadto, zużycie energii przez płytę zostanie znacznie zmniejszone, za każdym razem, gdy wywołasz funkcję opóźnienia, płyta wejdzie w tryb łaskotania w czasie opóźnienia, aby oszczędzać energię i wróci do pracy po zakończeniu opóźnienia. Poinformowano, że ta operacja zużyje 4,5uA mniej niż normalna operacja opóźnienia Arduino.
To powiedziawszy, integracja Mbed OS z Arduino IDE jest stosunkowo nowa i zajmie trochę czasu, zanim będziemy mogli w pełni wykorzystać pełną moc Mbed OS z Arduino IDE. Dlatego w celu szybkiego uruchomienia napiszemy program odczytujący wszystkie wartości czujnika i wyświetlający go na monitorach szeregowych.
Przygotowanie Arduino IDE do Arduino Nano 33 BLE sense
Uruchom Arduino IDE i przejdź do Narzędzia -> Tablice -> Menedżer tablicy, aby uruchomić swojego menedżera Arduino Board. Teraz wyszukaj „Mbed OS” i zainstaluj pakiet. Zakończenie instalacji powinno zająć trochę czasu.
Po zakończeniu instalacji zamknij okno dialogowe i podłącz płytę Arduino 33 za pomocą kabla micro USB do laptopa. Jak tylko podłączysz płytę, Windows automatycznie rozpocznie instalację wymaganych sterowników do płyty. Następnie otwórz Arduino IDE i wybierz Narzędzia -> Płytka -> Arduino Nano 33. Następnie wybierz również właściwy port COM, zaznaczając Narzędzia -> Port, mój jest podłączony do portu COM3, ale twój może się różnić. Po wybraniu portu prawy dolny róg IDE powinien wyglądać tak
Teraz, aby szybko sprawdzić, czy wszystko działa, możemy skorzystać z przykładowego programu, wypróbujmy ten podany w Plik -> Przykłady -> PDM -> PDMSerialPlotter. Ten program będzie używać wbudowanego mikrofonu do nasłuchiwania dźwięku i zapisywania go na ploterze szeregowym. Możesz wgrać program i sprawdzić, czy płyta i IDE działają.
Teraz, jeśli doświadczysz absurdalnie powolnej kompilacji, nie jesteś sam, wiele osób, w tym ja, boryka się z tym problemem, aw chwili pisania tego artykułu wydaje się, że nie ma rozwiązania. Kompilacja i załadowanie prostych programów zajmuje mi około 2-3 minut, a gdy próbowałem niektórych programów BLE lub próbowałem pracować z Mbed OS, czas kompilacji wydłużył się do ponad 10 minut, co nie zachęciło mnie do dalszych prób. Dzieje się tak z powodu integracji Mbed OS z Arduino IDE, miejmy nadzieję, że ktoś ze wspaniałej społeczności Arduino znajdzie rozwiązanie tego problemu.
Program do odczytu danych z czujnika i wyświetlania na monitorze szeregowym
Jeśli nie korzystamy z BLE lub podstawowych funkcji Mbed OS płyty, czas kompilacji był rozsądny. Napisałem więc prosty szkic, aby odczytać wszystkie wartości czujników i wyświetlić je na monitorze szeregowym, jak pokazano poniżej
Pełny kod umożliwiający wykonanie tego samego znajduje się na dole tej strony, ale upewnij się, że zainstalowałeś wszystkie wymienione powyżej biblioteki. Wyjaśnienie kodu jest następujące.
Uruchom program, dołączając wszystkie wymagane pliki nagłówkowe. Tutaj będziemy używać wszystkich czterech czujników oprócz mikrofonu
#include // Dołącz bibliotekę 9-osiowego IMU #include // Dołącz bibliotekę do odczytu ciśnienia #include // Dołącz bibliotekę do odczytu temperatury i wilgotności #include // Dołącz bibliotekę do rozpoznawania kolorów, bliskości i gestów
W ramach funkcji konfiguracji inicjalizujemy monitor szeregowy z szybkością 9600 bodów, aby wyświetlić wszystkie wartości czujników, a także zainicjować wszystkie wymagane biblioteki. Kod wewnątrz setupu jest pokazany poniżej
void setup () {Serial.begin (9600); // Monitor szeregowy do wyświetlania wszystkich wartości czujników if (! IMU.begin ()) // Inicjalizacja czujnika IMU {Serial.println ("Nie udało się zainicjować IMU!"); while (1);} if (! BARO.begin ()) // Zainicjuj czujnik ciśnienia {Serial.println ("Nie udało się zainicjować czujnika ciśnienia!"); while (1);} if (! HTS.begin ()) // Inicjalizacja czujnika temperatury i wilgotności {Serial.println ("Nie udało się zainicjować czujnika temperatury i wilgotności!"); while (1);} if (! APDS.begin ()) // Inicjalizacja czujnika koloru, zbliżenia i gestów {Serial.println ("Nie udało się zainicjować czujnika koloru, zbliżenia i gestów!"); while (1);}}
Wewnątrz funkcji pętli odczytujemy wymagane wartości czujników z biblioteki, a następnie drukujemy je na monitorze szeregowym. Składnię można odwołać się z przykładowego programu każdej biblioteki, odczytaliśmy wartości akcelerometru, żyroskopu, magnetometru, ciśnienia, temperatury, wilgotności i czujnika zbliżeniowego i wyświetliliśmy je na monitorze szeregowym. Kod do pomiaru wartości akcelerometru jest pokazany poniżej, podobnie możemy mierzyć dla wszystkich czujników.
// Wartości akcelerometru if (IMU.accelerationAvailable ()) {IMU.readAcceleration (accel_x, accel_y, accel_z); Serial.print ("Akcelerometr ="); Serial.print (accel_x); Serial.print (","); Serial.print (accel_y); Serial.print (","); Serial.println (accel_z); } opóźnienie (200);
Arduino Nano 33 BLE - Wgrywanie kodu
Wgrywanie kodu do Nano 33 przebiega podobnie jak w przypadku innych płyt, ale pamiętaj, że płyta ma dwa porty COM. Po kliknięciu przycisku przesyłania Arduino IDE kompiluje kod, a następnie automatycznie resetuje płytkę za pomocą polecenia oprogramowania, co spowoduje przejście płyty w tryb programu ładującego i przesłanie kodu. Z tego powodu po zakończeniu przesyłania możesz zauważyć, że Arduino IDE automatycznie zmieniło swój port COM na inny numer i możesz chcieć zmienić go z powrotem przed otwarciem monitora szeregowego.
To jest prawie moje dotychczasowe doświadczenie z płytą Arduino Nano 33, spróbuję zbudować coś z jej czujnikami i funkcjami BLE później w przyszłości. Jakie masz doświadczenia z tablicą? Co chcesz, żebym za jego pomocą zbudował? Zostaw odpowiedzi w sekcji komentarzy, a omówimy więcej.