Raspberry Pi Pico — отличная плата, хотя и с урезанными возможностями. В целом, ей не хватает двух ключевых функций. Первая — это кнопка reset, которую, впрочем, можно без проблем добавить самостоятельно. Вторая, более важная — беспроводная связь.
Исправить вторую проблему сложнее, но все равно можно. Сейчас появилась совместимая плата, Pimoroni Pico Wireless, которая подключается к «малинке» и обеспечивает работу с беспроводными сетями — пока что только WiFi, о Bluetooth расскажем ниже. Подключается она через SPI-интерфейс.
В целом, добавление беспроводной связи к Pico — совсем не сложная задача, компания Adafruit доказала это при помощи AirLift FeatherWing с ESP32. Работает система как с Pico, так и с Feather RP2040. Есть еще Maker Pi Pico, плата, которая поддерживает и ESP8266. Но портативных систем, добавляющих беспроводную связь, для Pico не так много. И Pimoroni Pico Wireless — один из отличных вариантов.
Что собой представляет Pimoroni Pico Wireless и как использовать плату?
Pico Wireless по GPIO-интерфейсу. Здесь и достоинство и недостаток системы. Достоинство — простота подключения. Недостаток — плата закрывает доступ ко всем пинам. Модуль идеально подходит к Pico, размеры у него такие же, как и у «малинки».
ESP32-WROOM-32E — мощный микроконтроллер, который, правда, в Pico Wireless используется в качестве сопроцессора — так же, как и в AirLift FeatherWing от Adafruit. В обычной ситуации контроллер поддерживает работу как с WiFi, так и с Bluetooth, но в этой модели работает лишь WIFi. С другой стороны, при внимательном изучении платы наверняка откроется возможность активировать и Bluetooth, поскольку аппаратно все это поддерживается.
Есть и возможность все же задействовать пины GPIO, но для этого потребуется дополнительная система — например, Pico Omnibus. При этом нужно будет убедиться в отсутствии конфликтующих контактов на подключенных устройствах. Питание Pico Wireless обеспечивает GPIO Raspberry Pi Pico, так что дополнительно подключать ничего не нужно.
«Железо» ничто без программного обеспечения. Pico Wireless поддерживает С++ и собственную версию MicroPython, которая включает “picowireless” модуль, разработанный для использования с платой. Эта функция отлично работает, ее уже протестировали при помощи скриптов. Проблем не было, единственное — пользователь должен понимать, как работает беспроводная сеть, чтобы работать с ПО.
Если желания возиться самостоятельно нет, то лучший вариант Adafruit CircuitPython. Здесь нужно всего лишь изменить несколько строк для того, чтобы Pico «увидел» подключенный модуль. Кроме того, нужно еще и скопировать несколько библиотек в Pico. После того, как это было сделано, удалось без проблем подключиться к сети и получить погодные данные через API.
Данные записали на SD-карту, с подключением которой тоже пришлось немного повозиться — потребовалось использовать дополнительную библиотеку, которая и активировала карт-ридер. Прописав несколько строк CircuitPython, удалось создать новый файл, в котором хранится журнал данных JSON, полученных через API. Информацию можно считывать с SD посредством CircuitPython.
Светодиод RGB подключен к ESP32 через три контакта (красный = 25, зеленый = 26, синий = 27), и для его использования нам нужно использовать esp.set_analog_write (). Например, вот код для установки красного светодиода.
esp.set_analog_write(25, 0)
esp.set_analog_write(26, 1)
esp.set_analog_write(27, 1)
Здесь можно изменять значения между 0 и 1, что дает возможность настраивать цвет самого светодиода.
В системе можно установить и кнопку, подключив ее к GPIO 12 и «земле». При нажатии на кнопку та замыкает контакт GPIO, вызывая какое-либо событие. Какое именно — зависит от желания разработчика.
Характеристики:
- Модуль ESP32-WROOM-32E (даташит).
- 1 сенсорная кнопка.
- Светодиод RGB.
- Слот для карты памяти Micro-SD.
- Предварительно припаянные пины для подключения к Raspberry Pi Pico.
- Размер — 53mm x 25mm x 11mm.
- Библиотеки C++ и MicroPython.
На одной из сторон платы есть дорожки, которые можно разрезать, чтобы убрать неиспользуемые функции, что позволяет высвободить некоторые GPIO-пины.
Где можно использовать Pimoroni Pico Wireless
В целом, беспроводная связь для Pico открывает перед разработчиком ряд новых возможностей, включая работу с приложениями IoT. Pico Wireless дает возможность взаимодействовать «малинке» с другими устройствами, используя как стандартные протоколы связи, так и не самые обычные, включая MQTT. Библиотека CircuitPython добавляет еще и поддержку базового HTTP. В ходе теста был проверен мы HTTP-ответ от API с передачей значения в REPL, что полезно для отладки проблем с подключением.
Raspberry Pi Pico вместе с Pimoroni Pico Wireless идеально подходит для добавления в проект мониторинга данных, сбора информации с датчиков, хранения полученной информации на карте памяти и передачи данных на удаленную машину. Если есть навыки, то можно сделать и нечто посложнее, используя в качестве сетевого посредника Pico.
В сухом остатке
Как и говорилось выше, Pico Wiereless можно в считанные секунды подключить к «малинке», потеряв при этом доступ к GPIO. Соответственно, не будет возможности использовать пины. Проблема решается при помощи Pico Omibus, что увеличивает размеры платы. Также можно самостоятельно припаять систему, придумав что-либо для подключения к пинам.
Автор: Deluar