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, чтобы увидеть последовательные данные порта.
Также мы протестировали встроенный микрофон. И здесь возникла проблема — вместо визуализации звука при тесте система выдавала лишь одно значение — 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.