- Arduino Nano 33 BLE Sense
- Огляд апаратного забезпечення Arduino Nano 33 BLE Sense
- Покращення програмного забезпечення за допомогою Arduino Nano 33 BLE
- Підготовка IDE для Arduino до сенсу Arduino Nano 33 BLE
- Програма для зчитування даних датчика та відображення на послідовному моніторі
- 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. Основна відмінність обох модулів полягає в тому, що сенсорний модуль 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,3 В, тоді як класичний Nano працює на 5 В. Тому я думаю, що саме тут з’являється назва “33”, що вказує на те, що плата працює на 3,3 В. Тоді назва “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 Microelectronics |
Тиск |
Таблиця даних 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-файл, а потім скористатися ескізом -> Включити бібліотеку -> Додати. бібліотеки.
Технічні характеристики Arduino Nano 33 BLE sense Board:
Працюючи на процесорі Nordic nRF52840, плата Arduino Nano 44 BLE має наступні технічні характеристики
- Робоча напруга: 3,3 В
- Вхідна напруга USB: 5 В
- Напруга на вхідному штифті: 4,5 В до 21 В
- Мікросхема: NINA-B3 - RF52840
- Годинник: 64 МГц
- Спалах: 1 Мб
- SRAM: 256 КБ
- Бездротове підключення: Bluetooth 5.0 / BLE
- Інтерфейси: USB, I2C, SPI, I2S, UART
- Цифрові виводи вводу-виводу: 14
- ШІМ-шпильки: 6 (8-бітна роздільна здатність)
- Аналогові висновки: 8 (10-розрядні або 12-розрядні конфігуруються)
Покращення програмного забезпечення за допомогою Arduino Nano 33 BLE
Як і всі інші плати Arduino, сенсор Arduino Nano 33 BLE можна програмувати за допомогою Arduino IDE. Але перед тим, як почати, вам потрібно скористатися диспетчером дошки та додати деталі дошки у вашу IDE. Оскільки ми знаємо, що nRF 52840 можна програмувати за допомогою ОС ARM Mbed, це означає, що наша плата Arduino Nano 33 підтримує операційну систему реального часу (RTOS). За допомогою програмування ОС Mbed ми можемо запускати кілька потоків одночасно в програмі для виконання багатозадачності. Крім того, енергоспоживання плати значно зменшиться, кожного разу, коли ми викликаємо функцію затримки, плата переходить в режим лоскотання під час затримки, щоб заощадити енергію, і повернеться до роботи після закінчення затримки. Повідомляється, що ця операція споживатиме 4,5uA менше, ніж звичайна операція затримки Arduino.
З огляду на це, інтеграція ОС Mbed з Arduino IDE є відносно новою, і це займе деякий час, перш ніж ми зможемо повністю використати всю потужність ОС Mbed з Arduino IDE. Тож для швидкого запуску ми напишемо програму для зчитування всіх значень датчика та відображення його на послідовних моніторах.
Підготовка IDE для Arduino до сенсу Arduino Nano 33 BLE
Запустіть IDE Arduino та перейдіть до Інструменти -> Дошки -> Дошка керування, щоб запустити менеджер дошки Arduino. Тепер знайдіть “Mbed OS” і встановіть пакет. Установка повинна зайняти деякий час.
Після завершення встановлення закрийте діалогове вікно та підключіть плату Arduino 33 за допомогою кабелю micro USB до ноутбука. Як тільки ви підключите плату, вікна автоматично почнуть встановлювати необхідні драйвери для плати. Потім відкрийте IDE Arduino та виберіть Інструменти -> Дошка -> Arduino Nano 33. Потім також виберіть правильний COM-порт, перевіривши Інструменти -> Порт, мій підключений до порту COM3, але ваш може відрізнятися. Після вибору порту ваш правий нижній кут IDE повинен виглядати так
Тепер, щоб швидко перевірити, чи все працює, ми можемо скористатися прикладом програми, спробуємо ту, що надана у меню Файл -> Приклади -> PDM -> PDMSerialPlotter. Ця програма використовуватиме вбудований мікрофон для прослуховування звуку та побудови його на послідовному плотері. Ви можете завантажити програму та перевірити, чи працює плата та IDE.
Тепер, якщо ви стикаєтесь із смішно повільним складанням, ви не самотні, багато людей, включаючи мене, стикаються з цією проблемою, і на момент написання цієї статті рішення, здається, не існує. На компіляцію та завантаження простих програм у мене йде близько 2-3 хвилин, і коли я пробував деякі програми BLE або намагався працювати з ОС Mbed, час компіляції збільшувався до понад 10 хвилин, що не спонукало мене спробувати щось далі. Це пов’язано з інтеграцією ОС Mbed з Arduino IDE, будемо сподіватися, що хтось із чудової спільноти Arduino запропонує рішення для цього.
Програма для зчитування даних датчика та відображення на послідовному моніторі
Якщо ми не використовуємо BLE або основні функціональні можливості Mbed OS на платі, час компіляції був розумним. Тому я написав простий ескіз, щоб прочитати всі значення датчика та відобразити його на послідовному моніторі, як показано нижче
Повний код, щоб зробити те саме, наведено внизу цієї сторінки, але переконайтеся, що ви встановили всі бібліотеки, згадані вище. Пояснення коду таке.
Запустіть програму, включивши всі необхідні файли заголовків. Тут ми будемо використовувати всі чотири датчики, крім мікрофона
#include // Включити бібліотеку для 9-осьового IMU #indeclude // Включити бібліотеку для читання Тиск #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 десь пізніше в майбутньому. Яким був ваш досвід роботи з дошкою? Що б ви хотіли, щоб я будував на ньому? Залиште відповіді в розділі коментарів, і ми обговоримо більше.