- Arduino Nano 33 BLE Sense
- Общ преглед на хардуера на Arduino Nano 33 BLE Sense
- Софтуерни подобрения с Arduino Nano 33 BLE смисъл
- Подготовка на вашия Arduino IDE за Arduino Nano 33 BLE sense
- Програма за четене на данни от сензора и показване на сериен монитор
- Arduino Nano 33 BLE - Качване на кода
Arduino е платформата за разработка за бързо прототипиране и валидиране на идеи. Много от нас биха започнали с борда за разработка на Arduino UNO, но днес, докато напредваме към Интернет на нещата, компютърна визия, изкуствен интелект, машинно обучение и други футуристични технологии, скромният Arduino UNO вече не можеше да се справи със своите 8 -битов микроконтролер. Това изискваше пускането на нови платки с по-мощни процесори, които имат вградени Wi-Fi, Bluetooth, GSM и други безжични възможности, като популярните MKR1000 или MKR GSM 1400. В този контекст Arduino наскоро пусна нова версия на своя Nano, наречена Arduino Nano 33.
Съществуват напълно два вида платки Arduino Nano 33, а именно Arduino Nano 33 IoT и Arduino Nano 33 BLE sense. Основната разлика между двата модула е, че сензорният модул Arduino Nano 33 BLE има някои вградени сензори (ще влезе в подробности по-късно), докато Arduino Nano 33 IoT ги няма. В тази статия ще прегледаме сензорната платка Arduino Nano 33 BLE, ще ви запознаем с нейните характеристики и функционалности и накрая ще напишем примерен код, за да прочетем стойностите на сензора и да ги покажем на серийния монитор. Така че нека се научим…!
Arduino Nano 33 BLE Sense
Името „Arduino Nano 33 BLE Sense“ е за уста, но самото име дава важна информация. Нарича се „Nano“, тъй като размерите, пиновете и фактора на формата са много подобни на класическия Arduino Nano, всъщност се планира да се използва като заместител на Arduino Nano във вашите съществуващи проекти, но уловката е, че този нов модул работи на 3.3V, докато класическият Nano работи на 5V. Така че мисля, че тук идва името „33“, което показва, че платката работи на 3.3V. Тогава името „BLE“ показва, че модулът поддържа Bluetooth Low Energy (BLE5 5.0)а името „смисъл“ показва, че има вградени сензори като акселерометър, жироскоп, магнитометър, сензор за температура и влажност, сензор за налягане, сензор за близост, цветен сензор, сензор за жестове и дори вграден микрофон. По-късно ще влезем в подробностите за BLE и други сензори, но засега това е начинът, по който Arduino Nano 33 BLE сензорна дъска изглежда направо като не-бокс.
Общ преглед на хардуера на Arduino Nano 33 BLE Sense
При първия поглед на платката можете да намерите много компоненти, претъпкани отгоре, повечето от които са сензори, за които казах по-рано. Но основният мозък е скрит зад металната обвивка от дясната страна. Този корпус притежава нордическия nRF52840 процесор, който съдържа мощен Cortex M4F и модула NINA B306 за BLE и Bluetooth 5 комуникация. Това позволява платката да работи с много ниска мощност и да комуникира чрез Bluetooth 5, което е идеално за мрежови приложения с ниска мощност в домашна автоматизация и други свързани проекти. Също така, тъй като процесорът nRF поддържа ARM Mbed OSтой също така предоставя някои подобрения на софтуера, които ще обсъдим по-късно. Сензорите, светодиодите, бутоните и други важни неща, които трябва да знаете на дъската си, са маркирани на изображението по-долу.
Както можете да видите от горното изображение, платката е снабдена със сензори, които могат да ви помогнат при изграждането на дясната част на кутията, без дори да се налага да свързвате дъската с външни сензори. Платката е предназначена да се използва в носими устройства и други интелигентни преносими устройства като фитнес ленти, мониторинг на глюкозата, крачкомери, интелигентен часовник, метеорологична станция, домашна сигурност и т.н., където ще използвате повечето от тези сензори. И както винаги всички тези сензори имат предварително изградени библиотеки за Arduino, които можете да използвате лесно. В края на тази статия ще прочетем стойности от всички тези сензори и ще ги покажем на серийния монитор. Подробностите за сензора на сензорната платка Arduino Nano 33 BLE заедно с необходимите библиотеки са представени по-долу
Име на сензора |
Параметри |
Връзки |
LSM9DSI - ST Микроелектроника |
Акселерометър, жироскоп, магнитометър |
LSMDSI лист с данни Библиотека Arduino_LSM9DS1 |
LPS22HB - ST Микроелектроника |
Налягане |
LPS22HB Лист с данни Библиотека Arduino_LPS22HB |
HTS221 - ST микроелектроника |
Температура и влажност |
LPS22HB Лист с данни Библиотека Arduino_HTS221 |
APDS9960 - Avago Tech. |
Близост, светлина, цвят, жест |
LPS22HB Лист с данни Библиотека Arduino_APDS9960 |
MP34DT05 - ST Микроелектроника |
Микрофон |
MP34DT05 Лист с данни Вградена PDM библиотека |
Повечето от тези сензори са от ST Microelectronics и те поддържат работа с ниска мощност, което го прави идеален за проекти, работещи с батерии. Малко хора може вече да са запознати със сензора APDS9960, тъй като той вече е достъпен като модул за дистанционно управление и преди това сме използвали сензора APDS9960 с Arduino. За повече информация относно тези сензори можете да посетите съответния лист с данни и също така да сте сигурни, че сте добавили цялата предоставена библиотека към вашата Arduino IDE, за да започнете да ги използвате с вашата Arduino Nano 33 BLE сензорна платка. За да добавите библиотека, можете да използвате дадената връзка, за да стигнете до съответната страница на GitHub и да изтеглите ZIP файла, след това използвайте Sketch -> Include Library -> Add.ZIP Library или можете също да използвате библиотечния мениджър на Arduino IDE и да добавите тези библиотеки.
Технически спецификации на Arduino Nano 33 BLE sense Board:
Задвижван от Nordic nRF52840 процесор, платката Arduino Nano 44 BLE има следните технически спецификации
- Работно напрежение: 3.3V
- USB-входно напрежение: 5V
- Напрежение на входния щифт: 4.5V до 21V
- Чип: NINA-B3 - RF52840
- Часовник: 64MHz
- Flash: 1MB
- SRAM: 256 KB
- Безжична свързаност: Bluetooth 5.0 / BLE
- Интерфейси: USB, I2C, SPI, I2S, UART
- Цифрови I / O щифтове: 14
- PWM щифтове: 6 (8-битова разделителна способност)
- Аналогови щифтове: 8 (10-битови или 12-битови конфигурируеми)
Софтуерни подобрения с Arduino Nano 33 BLE смисъл
Подобно на всички дънки на Arduino, сензорът Arduino Nano 33 BLE може да бъде програмиран с IDE на Arduino. Но трябва да използвате диспечера на борда и да добавите подробности за борда към вашата IDE, преди да можете да започнете. Тъй като знаем, че nRF 52840 може да бъде програмиран с помощта на ARM Mbed OS, това означава, че нашата платка Arduino Nano 33 поддържа операционна система в реално време (RTOS). С програмирането на Mbed OS можем да изпълняваме няколко нишки едновременно в програмата, за да изпълняваме многозадачност. Също така, консумацията на енергия на платката ще бъде значително намалена, всеки път, когато извикаме функцията за забавяне, дъската ще влезе в режим на гъделичкане по време на времето на забавяне, за да спести енергия и ще премине обратно в експлоатация, след като закъснението свърши. Съобщава се, че тази операция ще консумира 4.5uA по-малко от нормалната операция за забавяне на Arduino.
Като се има предвид това, интеграцията на Mbed OS с Arduino IDE е сравнително нова и ще отнеме известно време, преди да можем напълно да използваме пълната мощ на Mbed OS с Arduino IDE. Така че за бързо стартиране ще напишем програма за четене на всички стойности на сензора и ще я покажем на серийните монитори.
Подготовка на вашия Arduino IDE за Arduino Nano 33 BLE sense
Стартирайте вашата Arduino IDE и отидете на Инструменти -> Табла -> Board Manger, за да стартирате вашия Arduino Board manager. Сега потърсете “Mbed OS” и инсталирайте пакета. Инсталацията трябва да отнеме известно време.
След като инсталацията приключи, затворете диалоговия прозорец и свържете вашата платка Arduino 33 с помощта на микро USB кабел към вашия лаптоп. Веднага след като свържете платката, прозорците автоматично ще започнат да инсталират необходимите драйвери за платката. След това отворете вашия Arduino IDE и изберете Инструменти -> Борд -> Arduino Nano 33. След това също изберете правилния COM порт, като проверите Инструменти -> Порт, моят е свързан с порт COM3, но вашият може да варира. След като портът е избран, вашият IDE долен десен ъгъл трябва да изглежда така
Сега, за да проверим бързо дали всичко работи, можем да използваме примерна програма, нека опитаме тази, предоставена във File -> Example -> PDM -> PDMSerialPlotter. Тази програма ще използва вградения микрофон, за да слуша аудио и да го нанася върху сериен плотер. Можете да качите програмата и да проверите дали платката и IDE работят.
Сега, ако изпитвате абсурдно бавно компилиране, тогава не сте сами, много хора, включително мен, се сблъскват с този проблем и по време на писането на тази статия изглежда няма решение. Отнема ми около 2-3 минути, за да компилирам и кача прости програми и когато опитах някои BLE програми или се опитах да работя с Mbed OS, времето за компилация се увеличи до повече от 10 минути, което не ме насърчи да опитам нещо по-нататък. Това се дължи на интеграцията на Mbed OS с Arduino IDE, да се надяваме някой от прекрасната общност на Arduino да излезе с решение за това.
Програма за четене на данни от сензора и показване на сериен монитор
Ако не използваме BLE или основните Mbed OS функционалности на платката, времето за компилиране беше разумно. Затова написах проста скица, за да прочета всички стойности на сензора и да я покажа на серийния монитор, както е показано по-долу
Пълният код за това е даден в долната част на тази страница, но се уверете, че сте инсталирали всички библиотеки, споменати по-горе. Обяснението на кода е както следва.
Стартирайте програмата, като включите всички необходими заглавни файлове. Тук ще използваме всичките четири сензора, с изключение на микрофона
#include // Включете библиотеката за 9-ос IMU #include // Включете библиотека за четене Налягане #include // Включете библиотека за четене Температура и влажност #include // Включете библиотека за разпознаване на цвят, близост и жест
Във функцията за настройка ние инициализираме серийния монитор със скорост 9600 бода, за да покажем всички стойности на сензора и също така инициализираме всички необходими библиотеки. Кодът в настройката е показан по-долу
void setup () {Serial.begin (9600); // Сериен монитор за показване на всички стойности на сензора, ако (! IMU.begin ()) // Инициализиране на IMU сензор {Serial.println ("Неуспешно инициализиране на IMU!"); while (1);} if (! BARO.begin ()) // Инициализиране на сензор за налягане {Serial.println ("Неуспешно инициализиране на сензор за налягане!"); while (1);} if (! HTS.begin ()) // Инициализиране на сензор за температура и влажност {Serial.println ("Неуспешно инициализиране на сензор за температура и влажност!"); while (1);} if (! APDS.begin ()) // Инициализиране на сензор за цвят, близост и жест {Serial.println ("Неуспешно инициализиране на сензор за цвят, близост и жест!"); докато (1);}}
Вътре във функцията на цикъла четем необходимите стойности на сензора от библиотеката и след това ги отпечатваме на серийния монитор. Синтаксисът може да бъде посочен от примерната програма на всяка библиотека, прочетохме акселерометъра, жироскопа, магнитометъра, стойностите на сензора за налягане, температура, влажност и близост и ги показахме на серийния монитор. Кодът за измерване на стойността на акселерометъра е показан по-долу, също така можем да измерим за всички сензори.
// Стойности на акселерометъра if (IMU.accelerationAvailable ()) {IMU.readAcceleration (accel_x, accel_y, accel_z); Serial.print ("Акселерометър ="); Serial.print (accel_x); Serial.print (","); Serial.print (accel_y); Serial.print (","); Serial.println (accel_z); } закъснение (200);
Arduino Nano 33 BLE - Качване на кода
Качването на кода в Nano 33 е подобно на всички други платки, но имайте предвид, че платката има два COM порта. Когато кликнете върху бутона за качване, Arduino IDE компилира кода и след това нулира борда автоматично чрез софтуерна команда, това ще постави дъската в режим на зареждане и ще качи вашия код. Поради това, след като качването приключи, може да забележите, че Arduino IDE автоматично е променил своя COM порт на различен номер и може да искате да го промените обратно, преди да отворите вашия сериен монитор.
Така че това е почти моят опит с Arduino Nano 33 до момента, ще се опитам да изградя нещо с неговите сензори и BLE функции по-късно в бъдеще. Как беше вашият опит с дъската? Какво бихте искали да изградя с него? Оставете отговорите в раздела за коментари и ще обсъдим повече.