Совсем недавно ребята из Raspberry Foundation представили новую плату, главным элементом которой является собственный SoC, RP2040. Плата отличная, ничего не скажешь, но некоторых возможностей, конечно, не хватает.
Сторонние разработчики занялись решением этого вопроса: — на основе той же системы на кристалле они создают собственные платы с новыми функциями. Одна из них — Adafruit Feather RP2040. Что там у нас нового?
Берем быка за рога
Да, сразу приступим к техническим характеристикам. А они у нас такие:
- 21 многофункциональный вывод GPIO на 3,3 В.
- 2 порта SPI.
- 2 I2C.
- 2 UART.
- 4 12-битных АЦП.
- 16 управляемых каналов ШИМ.
- 8 конечных автоматов программируемого ввода-вывода (PIO) для поддержки настраиваемых периферийных устройств.
- Возможность распайки на несущей плате.
- Встроенный разъем WS2812 Neopixel STEMMA QT.
- Встроенная зарядка аккумулятора и поддержка аккумуляторов LiPo и Lilon с возможностью горячей замены USB Type C.
Что касается системы на кристалле, то это двухъядерный чип ARM Cortex M0+ c частотой работы ядра вплоть до 133 МГц, 264 КБ SRAM и 8 МБ флеш-памяти.
Adafruit Feather RP2040: — как это сделано
Если вам хорошо знакомо семейство Adafruit Feather, то при первом же взгляде на новую плату можно обнаружить обычные для Feather особенности дизайна. Принадлежность к этой экосистеме — еще одно достоинство платы, поскольку она совместима с целым спектром систем этого разработчика, включая FeatherWings.
Размер платы — 50.8x22.8 мм, что лишь немногим больше оригинальной «малинки», габариты которой — 51x21мм.
Здесь, кстати, меньше GPIO пинов, чем у Raspberry — 21 вместо 40. Распиновка — характерная для Feather. С обеих сторон платы каждый из пинов прописан, так что проблем с пониманием возникнуть не должно.
В число пинов входит 4 12-bit ADC, что на один больше, чем у Pico. Еще — два набора l2C, два SPI и два UART. 16 пинов могут быть задействованы для PWM (Pulse Width Modulation), LED и вывода звука.
На борту платы — единственный светодиод красного цвета для мониторинга режима работы системы. Объем флеш-памяти в четыре раза больше, чем у Raspberry Pi Pico — 8 МБ вместо 2 МБ. Если использовать CircuitPython, получается 7 МБ файлового пространства для сохранения кода и библиотек.
У плат Feather всегда есть экстра-фичи, и эта плата — не исключение. В левой части находится JST-коннектор для подключения совместимых Lithium Ion и Lithium Polymer батарей. При подключении по USB ток заряда составляет 200 мА.
Менять аккумуляторы можно без отключения, в «горячем» режиме, что важно для многих проектов. В ходе теста, проведенного специалистами Tom's Hardware во время обработки кода, питание по USB отключили, но плата продолжила выполнять код.
Еще одна возможность — наличие коннектора STEMMA QT, который используется для быстрого подключения совместимых компонентов. Это просто отличный вариант, который упрощает работу с платой.
И еще есть две дополнительные кнопки. BOOTSEL, которая используется для настройки платы или прошивки нового ПО. И RESET, которая, что логично, позволяет перезагрузить систему без необходимости отключения питания.
Программирование c Adafruit Feather RP2040
Поскольку плата является частью экосистемы Adafruit, закономерно, что разработчики предлагают использовать для работы с ней CircuitPython, собственную версию MicroPython. Загрузить и прошить ПО можно без особого труда.
У CircuitPython есть преимущества перед MycroPython, включая поддержку USB HID. Соответственно, плата отображается при подключении как USB-накопитель. Для создания кода можно использовать code.py. Но лучше всего работать с такими редакторами, как Visual Studio Code, Thonny или Mu. Библиотеки доступны для загрузки с сайта компании, их стоит использовать, поскольку они здорово упрощают работу.
Для теста был использован Visual Studio Code. С его помощью тестировщики написали скрипт управления встроенным светодиодом для мониторинга режима работы платы. Можно реализовать и гораздо более сложные проекты. Те же тестировщики написали скрипт управления подключенными светодиодами Neopixel.
Подключения STEMMA QT и I2C
Встроенный разъем STEMMA QT у платы тоже был опробован. К нему подключили емкостную сенсорную плату MPR121 к Feather RP2040. После чего на плату установили библиотеку CircuitPython. Затем тестировщики написали код для определения момента прикосновения к контакту. Все заработало сразу и без проблем.
Затем наступил новый этап — подключение ЖК-дисплея I2C HD44780 с разрешением 16 x 2 символа. И вот здесь уже появились проблемы: дисплей невозможно было подключить без подтягивающих резисторов на обоих выводах l2C. У платы нет собственных резисторов, так что их нужно либо устанавливать дополнительно, либо же использовать плату STEMMA QT с ними.
В целом, все оказалось неплохо. Без проблем не обошлось, но все это можно было решить. Кстати, важный момент — сейчас плата не работает с Си или MicroPython. Тем не менее, CircuitPython работает гладко, так что дополнительные возможности, быть может, и не нужны.
Подключать к плате можно много чего: экосистема Adafruit включает OLED-экран, сопроцессор Wi-Fi, светодиодную матрицу RGB, джойстик и QWERTY-клавиатуру с ЖК-дисплеем.
Для чего можно использовать плату?
Для всего, чего угодно — от домашних небольших проектов до более-менее масштабных IoT-систем, устройств, предназначенных для работе вне помещения, и т.п. Форм-фактор платы удобен, систему без проблем можно распаять на несущей плате.
В сухом остатке
Если вам повезло увидеть эту плату в продаже, то обязательно купите. Она является отличной альтернативой официальной «малинке», но с рядом преимуществ.
Единственный минус платы — она работает с элементами собственной экосистемы. С большинством дополнительных аксессуаров для Pico система не работает. Не получится, например, подключить ее к Pico Explorer от Pimoroni с 40 пинами.
Но плюсов гораздо больше, чем минусов. Это универсальная плата с большим количеством вариантов использования.