Модуль bluetooth wi fi arduino

Arduino Nano RP2040 Connect: обзор «ардуинки» с Wi-Fi и BLE на борту

В середине мая мы писали о появлении новой платы от Arduino, которая получила название Arduino Nano RP2040 Connect. Ее основа — чип RP2040 от Raspberry. В знакомую компоновку Nano весьма аккуратно интегрирован модуль связи Wi-Fi Nina W102 uBlox, который обеспечивает работу 2,4 ГГц Wi-Fi, Bluetooth с низким энергопотреблением, плюс есть гироскоп (IMU), способный обнаруживать движения и жесты, и микрофон.

Нужна ли вашему проекту такая плата? Как всегда, это зависит от потребностей и бюджета. Если нужны только светодиоды и базовая функциональность без беспроводной связи, хватит возможностей Raspberry Pi Pico. Если проект имеет отношение к IoT, да еще нужен веб-интерфейс, то Arduino Nano RP2040 Connect как раз то, что нужно. Правда, с оговорками, о которых поговорим ниже.

Характеристики платы

ATECC608A-MAHDA-T Crypto IC

Circuit operating voltage

Board Power Supply (USB/VIN)

448 КБ ROM, 520 КБ SRAM, 16 МБ Flash

Дизайн и использование Arduino Nano RP2040 Connect

Что касается дизайна, то он базируется на Arduino Nano, включая Nano 33 IoT и Nano Every. У всех этих плат аналогичная распиновка, так что при необходимости более старые и менее функциональные системы можно заменять на Arduino Nano RP2040 Connect. Плату можно распаивать на другой плате.

Из 22 GPIO-пинов 20 можно использовать для ШИМ. У платы 8 аналоговых входов. Что касается I2C пинов, то это A4 и A5. Доступ к встроенному гироскопу реализуется как раз через l2C шину.

К сожалению, вместо USB-С, который постепенно становится стандартом, система оснащена micro-USB. Эта плата — одна из самых дорогих в модельном ряду систем с чипом RP2040, поэтому производители могли бы и оснастить ее USB-C без удорожания. Но, как видим, не оснастили.

Наиболее заметной возможностью Arduino Nano RP2040 Connect является беспроводная связь, о чем уже говорилось выше. Ее наличие обеспечивается чипом Nina W102 с 802.11 b/g/n 2.4 ГГц Wi-Fi и Bluetooth 4.2. Антенна расположена с противоположной стороны от USB-порта. Чип бесплатной связи представляет собой мощный микроконтроллер с 520 КБ SRAM и двухъядерным 240 МГц 32-битным процессором Xtensa LX6. На этой плате он отвечает лишь за связь.

Поскольку это Arduino, то выбор IDE прост — это Arduino IDE. Недавнее обновление, добавившее поддержку чипа RP2040, делает работу простой и приятной. Мы протестировали Arduino Nano RP2040 Connect с Arduino 1.8.15 и 2.0 beta 7 IDE и все заработало без проблем. Тест, конечно, проводился с модулем связи. Для получения доступа к WiFi понадобилось установить библиотеку WiFiNINA, а затем создать файл с данными доступа. Для теста запустили Simple Web Server WiFi, и он без проблем заработал. Правда, для управления платой через интерфейс нужно было изменить вывод GPIO, используемый по умолчанию, с 9 на «LED_BUILTIN».

Детали подключения должны были появиться во встроенном мониторе последовательного интерфейса (Serial monitor). К сожалению, поначалу с этим возникла проблема — постоянно появлялась ошибка с сообщением о том, что порт занят. Единственный способ решить проблему в этом случае — закрыть Arduino IDE и использовать иное решение. В итоге мы разобрались: оказалось, что проблема связана с нашей операционной системой Ubuntu 18.04, пришлось удалить modemmanager, чтобы увидеть последовательные данные порта.

Читайте также:  Wi fi rubetek rl 3112

Также мы протестировали встроенный микрофон. И здесь возникла проблема — вместо визуализации звука при тесте система выдавала лишь одно значение — 128. Нигде не удалось найти никаких указаний по устранению этой проблемы.

Возникали и другие проблемы, включая работу с сервисом Arduino IoT Cloud, причем мы пытались изучать официальную документацию по плате, но она была далеко неполной. Это огромный недостаток, поскольку IoT Cloud — новый сервис, позволяющий создавать различные проекты интернета вещей, контролируя их через веб-интерфейс. Вероятно, разработчики постараются исправить недостатки, но пока порекомендуем использовать обычные IDE.

Вероятно, вы рассчитываете на возможность работы с другими языками программирования, раз уж это плата на основе RP2040? Все верно. Можно работать с CircuitPython и MicroPython, правда, потребуется создать собственные библиотеки для микрофона, гироскопа и WiFi. Проблема в разной распиновки. Так, контакт, который используется в IDE Arduino для вывода — это, скажем D2. В RP2040 это уже GPIO25. Другой пример — встроенный светодиод D13, который при работе с MicroPython оказался GPIO 6.

С CircuitPython все оказалось гораздо проще. Благодаря большому количество библиотек и в особенности библиотеке ESP32SPI нам удалось вывести Arduino Nano RP2040 Connect в онлайн и добиться получения данных от удаленного API.

Кстати, есть нюанс при прошивке платы. Для того, чтобы войти в режим прошивки нужно замкнуть между собой контакты REC и GND.

Юзкейсы для Arduino Nano RP2040 Connect

Наиболее очевидное применение платы — IoT-проекты. При помощи IoT Cloud есть возможность оперативно создавать приложения с графическим интерфейсом для снятия данных с удаленного устройства. Так, можно создать метеостанцию с помощью Arduino Nano RP2040 Connect и передавать данные в реальном времени в облако. А уже доступ к облаку можно получить с любого устройства, подключенного к Интернету.

Плату можно применить для удаленного управления роботизированной системой — как пример. И реализовать это вовсе не сложно.

Но и без IoT Cloud кейсов достаточно много. Даже с традиционной IDE и новыми библиотеками для HTTP, MQTT и Bluetooth без проблем можно работать с телеуправляемыми роботами, IoT-устройствами и т.п.

В сухом остатке

Здесь главное, вероятно — цена, которая составляет 22 евро. Если нужен WiFi и чип RP2040, значит, Arduino Nano RP2040 Connect вполне подходит. Стоит учитывать, что это, в целом, неплохая плата, но она дороже любого другого решения на основе того же чипа, включая Raspberry Pi Pico и Pimoroni Pico Wireless. Существенный недостаток — недоработанная документация, которая не соответствует стандартам Arduino.

Если бы не этот фактор, то плату можно было бы рекомендовать в качестве универсального решения. Есть и альтернатива — Seeed RP2040, у которой тоже есть WiFi, и которая, как ожидается, будет в два раза дешевле Arduino Nano RP2040 Connect.

Читайте также:  Wifi точка доступа авторизация

Источник

Arduino и Bluetooth

В настоящее время в зарубежных и отечественных магазинах можно найти большое количество различных Bluetooth Serial модулей для DIY-устройств. Цена на них не сильно высока: 5-10$ за модуль (с учетом бесплатной доставки в любую страну). Их легко можно найти на широко известной площадке AliExpress введя в поисковую строку одно из словосочетаний: Bluetooth RS232, Bluetooth Serial, HC-03, HC-04, HC-05, HC-06 или нажать на эту ссылку. Bluetooth модулиВ большинстве модулей используется чип BC417, плюс Flash-память. Чип поддерживает спецификацию Bluetooth v2.0 + EDR, AT-команды, может работать в режиме Master или Slave (модули HC-03/HC-5, может устанавливаться AT-командой), поддерживает скорость обмена от 2400 до 1382400.
Напряжение питание модуля составляет 3.3В, ток потребления ~50мА.
Модули HC-03/HC-05 более функциональные, чем HC-04/HC-06. Схема подключения Bluetooth модуля HC-06 (BMX-02A)Основные выводы модулей HC-04/HC-06:
UART_TX (pin 1), UART_RX (pin 2), UART_CTS (pin 3), UART_RTS (pin 4) — пины UART.
3,3V (pin 12) — питание 3.3В.
GND (pin 13) — общий.
PIO1 (pin 24) — индикатор рабочего режима. Если соединение не установлено — то светодиод мигает, если установлено, то постоянно горит. Для модулей HC-03/HC-05 есть некоторые отличия. Линии UART и питания те же самые, но:
PIO8 (pin 31) — индикатор рабочего режима.
PIO9 (pin 32) — статус соединения, если соединение установлено, то на выходе будет высокий уровень.
PIO11 (pin 34) — вход включения режима AT-команд (необходимо подать лог. 1). За более подробной документацией обращайтесь к PDF. Плата Bluetooth модулейИтак, соберем простую схему для подключения Bluetooth модуля HC-06 к плате Arduino Nano V3. Подключение Bluetooth модуля HC-06 к ArduinoОбратите внимание, что выводы TX и RX в плате Arduino Nano поменяны местами в отличии от Ardunio UNO и др. Поэтому внимательно смотрите распиновку своей Arduino платы. Шаг между выводами в модуле составляет всего 1.5мм, поэтому придется взяться за паяльник и припаять провода к модулю. Всего необходимо припаять 5 проводов, однако светодиод подключать необязательно, он служит для индикации состояния. Итак припаиваем провода и подключаем Bluetooth модуль следующим образом:
вывод Arduino 3.3В — к 12 пину модуля
вывод Arduino GND — к 13 пину модуля
вывод Arduino TX — к 2 пину модуля RX
вывод Arduino RX — к 1 пину модуля TX

Передача данных из Arduino по Bluetooth

int cnt = 0; // счетчик void setup() < Serial.begin(9600); // инициализация порта >void loop() < cnt++; Serial.print("Hello BB from Arduino! Counter:"); // выводим надпись Serial.println(cnt); // выводим значение счетчика и переводим на новую строку delay(1000); // ждем 1 секунду >

Как видите скетч довольно простой и хорошо прокомментирован. В цикле, раз в секунду происходит увеличение переменной cnt, которая затем с текстовой надписью выводится в последовательный порт на Bluetooth модуль. Обратите внимание, что скорость порта установлена в значение 9600. При покупке модуля, спрашивайте на какое значение установлена скорость обмена по последовательному интерфейсу. Но в большинстве случаев это 9600. При необходимости, скорость обмена можно изменить АТ-командами. Откройте данный скетч в Arduino IDE, скомпилируйте и прошейте ваш Arduino. Если вы подключали светодиод в Bluetooth модулю, то он должен мигать, показывая тем самым, что модуль ожидает соединение. Внимание! Если при прошивке платы Arduino ругается прошивальщик, то отключите питание 3.3В с Bluetooth модуля. Bluetooth флэшкаНа компьютере, в качестве Bluetooth модуля использовался самый дешевый китайский Bluetooth USB адаптер, стоимостью около 200 руб. После того, как адаптер подключается к компьютеру, установите необходимые драйвера (в Windows 7 x64 у меня все драйвера поставились автоматом).
Затем щелкаем в трее по иконке Bluetooth модуля и выбираем «Добавить устройство»: Добавление нового Bluetooth устройстваИмя моего модуля BOLUTEK, у вас оно скорее всего будет другим. Нажимаем «Далее» и переходим к окну, где необходимо ввести пароль для устройства: Код образования пары для Bluetooth устройстваВыбираем второй пункт: «Введите код образования пары устройства». С завода, код установлен 1234. Его и вводим. Программа настроит и пропишет в системе виртуальные COM-порты (у меня прописало 2 шт, но может быть и один): Виртуальные COM-портыВ дальнейшем, можно посмотреть на какой COM-порт назначилось и его параметры. Для этого щелкаем правой кнопкой мыши по устройству и выбираем «Свойства» и вкладку «Оборудование». Там можно посмотреть и изменить параметры виртуального COM-порта: Параметры COM-портаТеперь, для приема и передачи данных на виртуальный COM порт можно использовать любую терминал программу. Я использовал бесплатную Tera Term. При каждом запуске программы предлагается выбор соединения, переключаем флажок на Serial и выбираем COM порт вашего Bluetooth модуля. У меня это COM4. Tera TermВ терминале мы видим данные счетчика с платы Arduino: Данные с ArduinoКак видим, данные успешно передаются по Bluetooth соединению. Ниже в статье вы можете посмотреть видео.

Читайте также:  Устройства принимающие вай фай

Двунаправленный обмен данными по Bluetooth

Следующим шагом будет написание простенькой программы двунаправленного обмена данными между Arduino и компьютером. В схему я добавил светодиод, подключив его к 12 пину Arduino, через токоограничительный резистор. Но можно использовать и встроенный LED (обычно 13 пин).

char incomingByte; // входящие данные int LED = 12; // LED подключен к 12 пину void setup() < Serial.begin(9600); // инициализация порта pinMode(LED, OUTPUT); Serial.println("Press 1 to LED ON or 0 to LED OFF. "); >void loop() < if (Serial.available() >0) < //если пришли данные incomingByte = Serial.read(); // считываем байт if(incomingByte == '0') < digitalWrite(LED, LOW); // если 1, то выключаем LED Serial.println("LED OFF. Press 1 to LED ON!"); // и выводим обратно сообщение >if(incomingByte == '1') < digitalWrite(LED, HIGH); // если 0, то включаем LED Serial.println("LED ON. Press 0 to LED OFF!"); >> >

Обмен данными

Программа работает очень просто. После запуска или сброса устройства, в последовательный порт выводится сообщение с предложением нажать 1 или 0. В зависимости от нажатой цифры светодиод будет загораться или гаснуть. А также, от Arduino будет выводиться сообщение загорелся светодиод, или погас. Видео работы:

Подключаем к Android

Для платформы Android также существуют программы-терминалы. Но необходима специальная программа для работы в терминальном режиме по Bluetooth. Я установил вот эту: Bluetooth Terminal. Достаточно простая программа, ничего лишнего. В моем Android устройстве нет Bluetooth модуля, но он прекрасно работает и с внешним USB-адаптером, который мы использовали для подсоединения к ПК. Подключаем адаптер по USB, включаем на андроиде bluetooth, находим и вводим пароль для нашего Bluetooth устройства на Arduino и наконец запускаем программу терминал. Нажимаем «Connect a device — Secure» и выбираем наше устройство BOLUTEK. Теперь вы можете отправлять и принимать данные с Bluetooth устройства при помощи терминала. Видео соединения с Android устройством:

Прикрепленные файлы:

Источник

Оцените статью
Adblock
detector