Raspberry rp2040: начало и первые шаги. Что есть поесть за $4 / Хабр
|Содержание
Установка поддержки Rasbperry Pi Pico в Arduino IDE
Общие сведения
В этой статье мы объясним как установить поддержку плат Raspberry Pi Pico в Arduino IDE.
Для установки поддержки этих плат достаточно выполнить несколько простых шагов. Перед их выполнением убедитесь, что на ПК на котором они выполняются есть подключение к сети Интернет и доступ к нему для Arduino IDE не заблокирован в Брендмауре Windows.
1 — Откройте менеджер плат Arduino IDE
Выберете пункт меню "Инструметы"
->"Плата:"
->"Менеджер плат..."
2 — Найдите плату в списке
Введите rp2040 в поле поиска
3 — Установите поддержку плат
Найдите строку Arduino Mbed OS RP2040 Boards и нажмите «Установить»
Начнётся установка. Если появится диалоговое окно «Контроль учётных записей», нажмите «Да».
Если появятся окна «Безопасность Windows» с установкой USB устройств, нажмите «Установить»
4 — проверка
Если Вы ещё не подключили плату к ПК, подключите её зажав кнопку «BOOTSEL» на плате.
Выберете пункт меню "Инструменты"
->"Плата:"
->"Arduino Mbed OS RP2040 Boards"
->"Rasbperry Pi Pico"
Начнётся настройка устройства
После завершения настройки в меню "Инструменты"
->"Порт"
должен появится новый COM порт. Выберете его.
Загрузите проверочный скетч в плату (например Blink)
Готово!
5 — устранение неполадок (Нет COM порта в списке)
Способ 1
Если Вы уже использовали плату с MicroPython и после этого сбрасывали на заводские настройки при помощи flash_nuke.uf2
файла, то после подключения к ПК в Arduino IDE порт платы может быть не виден, но при этом внизу окна Arduino IDE будет показан COM порт отсутствующий в списке.
Просто нажмите «Загрузить скетч» не выбирая никаких портов и после загрузки скетча и перезагрузки платы появится новый порт в списке.
Способ 2
Если внизу окна Arduino IDE нет порта не из списка портов или в меню порт уже выбран какой-либо порт, то:
- Зажмите кнопку «BOOTSEL» на плате при подключении к ПК. Плата определится как флеш карта.
- Скопируйте на неё вот этот файл. Дождитесь перезагрузки микроконтроллера.
- В меню
"Инструменты"
->"Порт"
появится новый порт. Выберете его и загрузите в плату любой скетч, выбрав при этом Raspberry Pi Pico в меню плат. - После загрузки скетча плата определится как Raspberry Pi Pico.
Сброс на заводские настройки
Не важно, что вы загружали в плату, её всегда можно перезагрузить в режиме флеш-карты и сбросить на заводские настройки. Для этого:
- Зажмите кнопку «BOOTSEL» на плате при подключении к ПК. Плата определится как флеш карта.
- Скопируйте на неё
flash_nuke.uf2
файл с сайта производителя. Дождитесь перезагрузки микроконтроллера. - Микроконтроллер сброшен на заводские настройки.
Raspberry Pi Pico RP2040 — ТехноМастерская
Введение:
Raspberry Pi Pico является платой с микроконтроллером RP2040.
Надо помнить, что это не компьютер, на котором запущена взрослая ОС типа Linux, а именно микроконтроллер и поэтому цели применения у Pico отличаются от той же Raspberry Pi Zero и других старших продуктов семейства Raspberry Pi.
Приведу часть технических характеристик:
- Два ядра Arm Cortex-M0+ @ 133 МГц
- 264 КБ памяти (284 КБ если отключить XIP кеширование и использовать память USB)
- 2 МБ флеш-память с XIP кешированием. В RP2040 нет встроенной флеш-памяти, поэтому чип распаян на плате. У RP2040 есть поддержка до 16 МБ внешней флеш-памяти
- DMA контроллер
- 4 x 12-разрядных аналоговых входа (на Pico доступно для пользователя 3 из них)
- 2 × UART
- 2 × SPI
- 2 × I2C
- 16 × PWM каналов
- Встроенный сенсор температуры
- Всего 30 GPIO пинов (3,3 вольта)
- MicroUSB B порт с USB 1.1 контроллером и поддержкой хоста
- 2 × PIO блока для своих собственных интерфейсов
- 2 x PLL (один для USB, второй для остального)
- Поддержка UF2 для загрузки бинарников
- Поддержка SWD для загрузки и отладки
- Поддержка спящих режимов и пониженной частоты для снижения потребления
RP2040 декодируется как:
RP: Raspberry Pi
2: два ядра
0: ядра M0+
4: минимум 256 КБ памяти
0: нет встроенной флеш-памяти
PIO блоки дают возможность создавать свои интерфейсы. Например, можно запрограммировать интерфейс WS2812, добавить I2S, SDIO или VGA и т.п.
Ещё одна интересная штука: ядро Cortex-M0+ не содержит в себе блока вычислений с плавающей запятой. Обычно это эмулируется библиотеками GCC, но тут Raspberry Pi использует более быстрое оптимизированное решение от автора Qfplib, которое лицензировано для использования на RP2040.
Плата:
Немного о самой плате Raspberry Pi Pico.
Плата имеет удобный размер 21мм x 51мм. Есть даже отверстия для монтирования, чем может похвастаться не каждая похожая плата.
Можно припаять пины для использования с макеткой или запаять весь модуль поверхностным монтажом на другую плату.
На Pico стоит понижающий преобразователь на 3,3 Вольта. И это не просто линейный преобразователь, которые часто встречаются на недорогих аналогичных платах, а buck-boost SMPS на Richtek RT6150B. Благодаря этому входное питание платы может быть в пределах 1,8 — 5,5 Вольт.
Флеш-память W25Q16JV, хоть, и стоит внешняя, но перепаивать её будет не такой уж и тривиальной задачей, так как чип в корпусе USON-8 (мне лично точно не под силу).
Есть кнопка BOOTSEL и светодиод на GPIO25. Так же выведен SWD для отладки.
Кстати, можно использовать вторую плату Pico как отладчик по SWD.
Распиновка:
На Raspberry Pi Pico выведено почти все входные-выходные пины (26 из 30). Официальная распиновка платы:
Некоторые пины задействованы для внутреннего применения:
GPIO23: выход для контроля энергосбережения SMPS. Можно регулировать пульсации за счёт изменения КПД преобразователя
GPIO24: вход для VBUS sense (1 если VBUS по MicroUSB подключен)
GPIO25: выход на светодиод, расположенный на плате
GPIO29: аналоговый вход для измерения VSYS/3
Сам USB порт дополнительно выведен на точки TP1, TP2 и TP3 внизу платы.
youtube.com/embed/aqkxPtsAj24?feature=oembed» frameborder=»0″ allow=»accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture» allowfullscreen=»»> Документация
Raspberry Pi — RP2040
Добро пожаловать в RP2040
Добро пожаловать в RP2040, микроконтроллер, разработанный здесь, в Raspberry Pi.
Независимо от того, есть ли у вас Raspberry Pi Pico или другая плата микроконтроллера на базе RP2040, здесь есть все, что вам нужно для начала работы. Вы найдете поддержку для начала работы с C/C++ или MicroPython на Raspberry Pi Pico, а также ссылки на ресурсы для других плат, использующих RP2040. Также есть ссылки на техническую документацию платы микроконтроллера Raspberry Pi Pico и нашего чипа микроконтроллера RP2040.
Технические характеристики
RP2040 — дебютный микроконтроллер от Raspberry Pi. Это приносит наши фирменные ценности высокой производительности, низкой стоимости,
и простота использования пространства микроконтроллера.
С большой встроенной памятью, симметричным двухъядерным процессорным комплексом, детерминированной матрицей шин и богатым набором периферийных устройств
дополненный нашей уникальной подсистемой программируемого ввода-вывода (PIO), он предоставляет профессиональным пользователям непревзойденную мощность
и гибкость. С подробной документацией, полированным портом MicroPython и загрузчиком UF2 в ПЗУ, он имеет
самый низкий возможный барьер для входа для начинающих и любителей.
RP2040 — это устройство без сохранения состояния с поддержкой кэшированного выполнения на месте из внешней памяти QSPI. Этот дизайн
решение позволяет выбрать подходящую плотность энергонезависимого хранилища для вашего приложения и извлечь выгоду из
низкие цены на товарные детали Flash.
RP2040 производится по современному 40-нанометровому техпроцессу, что обеспечивает высокую производительность и низкую динамическую мощность
потребление и низкая утечка, с различными режимами низкого энергопотребления для поддержки увеличенной продолжительности работы от батареи
мощность
Основные характеристики:
Dual ARM Cortex-M0+ @ 133 МГц
264 КБ встроенной SRAM в шести независимых банках
Поддержка до 16 МБ внешней флэш-памяти через выделенную шину QSPI
контроллер прямого доступа к памяти
Полностью соединенная поперечина AHB
Периферийные устройства интерполятора и целочисленного делителя
Встроенный программируемый LDO для генерирования напряжения ядра
2 встроенных PLL для генерации тактовых импульсов USB и ядра
30 контактов GPIO, 4 из которых могут использоваться как аналоговые входы
Периферийные устройства
Почему чип называется RP2040?
Пост-фикс на RP2040 происходит от следующего:
Количество ядер процессора (2)
Ориентировочно какой тип процессора (M0+)
этаж(log2(ram/16k))
floor(log2(энергонезависимая / 16k)) или 0, если нет встроенной энергонезависимой памяти
Файлы дизайна
Внутренний датчик температуры
Внутренний датчик температуры в корпусе RP2040 представляет собой датчик с низким разрешением, который необходимо откалибровать пользователем, чтобы обеспечить любую степень точности.
Важнейшей частью точного определения измеренной температуры является знание напряжения VREF АЦП. Формула преобразования означает, что небольшие ошибки в напряжении VREF АЦП могут привести к довольно большим расхождениям в вычисляемой температуре. RP2040 не имеет внутреннего фиксированного источника опорного напряжения, который можно использовать для определения напряжения VREF, поэтому напряжение VREF необходимо измерять вручную — с оговоркой, что оно может измениться — или необходимо обеспечить внешний фиксированный источник опорного напряжения.
Примечание | Напряжение датчика RP2040 падает по мере повышения температуры. |
Дополнительные сведения о датчике внутренней температуры см. в главе 4, раздел 4.9.5 технического описания RP2040.
Документация
Документация для Raspberry Pi Pico и других плат на базе RP2040.
Устройство RP2040
Малина Пи Пико
Малина Пи Пико W
Разработка программного обеспечения
Документация Doxygen уровня API для Raspberry Pi Pico C/C++ SDK также доступна в виде микросайта.
Примечание | Доступен установщик одним щелчком мыши для Pico C/C++ SDK для Windows 10 и Windows 11. |
Платы на базе RP2040
Разработанная Raspberry Pi как плата для разработки и как эталонный дизайн, серия Raspberry Pi Pico представляет собой семейство плат на базе RP2040. В настоящее время семейство Pico состоит из Raspberry Pi Pico (крайний слева), Pico H (слева), Pico W (справа) и Pico WH (крайний справа).
Файлы дизайна для Raspberry Pi Pico и Pico W доступны в открытом доступе без ограничений.
Настоящим дается разрешение на использование, копирование, изменение и/или распространение этого дизайна для любых целей за плату или бесплатно.
ПРОЕКТ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», И АВТОР ОТКАЗЫВАЕТСЯ ОТ ВСЕХ ГАРАНТИЙ В ОТНОШЕНИИ ЭТОГО ПРОЕКТА, ВКЛЮЧАЯ ВСЕ ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ КОММЕРЧЕСКОЙ ПРИГОДНОСТИ И ПРИГОДНОСТИ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОР НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБОЙ СПЕЦИАЛЬНЫЙ, ПРЯМОЙ, КОСВЕННЫЙ ИЛИ КОСВЕННЫЙ УЩЕРБ ИЛИ ЛЮБОЙ УЩЕРБ, ВОЗНИКШИЙ В РЕЗУЛЬТАТЕ ПОТЕРИ ПОЛЬЗОВАНИЯ, ДАННЫХ ИЛИ ПРИБЫЛИ, БУДЬ ТО В ДЕЙСТВИИ ДОГОВОРА, НЕБРЕЖНОСТИ ИЛИ ДРУГОМ СЛУЧАЙНОМ ДЕЙСТВИИ, ВОЗНИКШЕМОМ ИЛИ В СВЯЗИ С ИСПОЛЬЗОВАНИЕМ ИЛИ ЭКСПЛУАТАЦИЕЙ ЭТОГО ПРОЕКТА.
Другие платы
Обсуждения других сторонних плат на базе RP2040 можно найти на форумах Raspberry Pi.
RP2040 — микроконтроллер от Raspberry Pi
Совершенно новый микроконтроллер и чип, полностью поддерживающий MicroPython и C/C++. Добро пожаловать в новый мир Raspberry Pi.
См. платы RP2040
Альтернатива Arduino
Вы можете использовать RP2040 для запуска менее сложных проектов, когда вам не нужны размер и мощность полноценного Raspberry Pi, но вы не хотите разрабатывать на платформе Arduino .
Тщательно документировано
RP2040 сопровождается невероятно подробной документацией как для MicroPython SDK, так и для C/C++ SDK. Документация была создана самим Raspberry Pi Foundation.
Чип микроконтроллера RP2040, разработанный Raspberry Pi
Процессор | Вспышка | SRAM | МГц | GPIO |
---|---|---|---|---|
Два ядра ARM Cortex-M0+ | 2M встроенный QSPI | 264k | 133 | 30 |
ШИМ | АЦП | UART | I 2 С | СПИ |
---|---|---|---|---|
16 каналов | 3 доступных × 12-бит | 2 | 2 автобуса | 2 автобуса |
Дополнительные возможности | |
---|---|
Поддержка хоста и устройства USB 1. 1 | Спящий и спящий режимы с низким энергопотреблением |
Перетаскивание программирования с использованием запоминающего устройства через USB | Часы реального времени и встроенный таймер |
Ускоренные библиотеки с плавающей запятой на кристалле |
Сделано Raspberry Pi
Raspberry Pi Pico
Raspberry Pi Pico — это недорогая высокопроизводительная плата микроконтроллера с гибкими цифровыми интерфейсами. Он оснащен RP2040, который знаменует собой первый микроконтроллер Raspberry Pi, разработанный внутри компании. Pico предоставляет минимальную (но гибкую) внешнюю схему для поддержки чипа RP2040.
Большинство контактов микроконтроллера RP2040 выведены на пользовательские контакты ввода-вывода на левом и правом краях платы. Четыре RP2040 IO используются для внутренних функций — управления светодиодом, управления питанием встроенного импульсного источника питания (SMPS) и определения системных напряжений.
Buy the Raspberry Pi Pico  See pinout
Other RP2040 Boards from Raspberry Pi:
RP2040 boards from SparkFun
Pro Micro — RP2040
Utilizing the Pro Micro footprint, this board also includes a WS2812B addressable LED, boot кнопка, кнопка сброса, разъем Qwiic, USB-C и зубчатые площадки.
Узнать большеПросмотреть руководство по подключению
Thing Plus — RP2040
В дополнение к размерам Thing Plus или *Feather* эта плата также включает слот для карты SD, флэш-память 16 МБ (128 Мбит), разъем для одноячеечной батареи JST. , адресуемый RGB-светодиод, контакты JTAG PTH, четыре монтажных отверстия (4-40 винтов) и разъем Qwiic.
Узнать большеПросмотреть руководство по подключению
Впервые в MicroPython?
С появлением плат, использующих RP2040, возможно, самое время впервые взглянуть на мир микроконтроллеров, использующих MicroPython.
С помощью этой книги вы научитесь работать с Raspberry Pi Pico и создавать программы, которые используют входные и выходные контакты платы для выполнения таких действий, как управление светодиодами, запись на светодиоды основных символов и многое другое.
Получите книгу сегодня!
MicroPython, будучи менее ресурсоемким, чем Python, отлично подходит для небольших микроконтроллеров, таких как Pico. Вот пример «Hello World», чтобы вы начали.
Шаг 1: Перетащите MicroPython на Pico:
Чтобы запустить MicroPython на Raspberry Pi Pico, нужно выполнить несколько шагов. Один из способов — загрузить готовый двоичный файл релиза с помощью кнопки ниже (самый простой вариант).
Загрузить файл UF2
Или вы создаете MicroPython firmware.uf2 из исходного кода, если хотите настроить его низкоуровневые аспекты (более сложные). Этот процесс начинается с клонирования репозитория MicroPython Github и установки CMake и GNU Embedded Toolchain for Arm, чтобы помочь в создании программного обеспечения.
echo "Команды терминала для установки MicroPython"; echo "Получение MicroPython"; диск ~/; мкдир пико; компакт-диск пико; git clone -b пико [email protected]:raspberrypi/micropython.git; echo "Получить дополнительные инструменты"; sudo подходящее обновление; sudo apt install cmake gcc-arm-non-eabi; echo "Создание MicroPython"; компакт-диск с микропитоном; Обновление подмодуля git --init --recursive; сделать -C mpy-крест; cd порты/rp2; делать
Оттуда установка программного обеспечения MicroPython выполняется путем программирования перетаскиванием, при котором вы перетаскиваете файл firmware.uf2 на плату в качестве USB-накопителя. Вам нужно будет удерживать нажатой кнопку BOOTSEL, чтобы перевести ее в режим запоминающего устройства USB.
Шаг 2: Код через REPL или IDE:
После того, как прошивка будет загружена на плату, вы сможете подключиться к MicroPython REPL (Read Evaluate Print Loop), который является простым способом проверки кода. и запускать команды.
Другой вариант — загрузить Thonny Python IDE для кода, и в этом случае, как только компьютер и Pico будут подключены, вы можете выбрать работу именно с Raspberry Pi Pico, выбрав его в меню «Интерпретатор» в разделе «Параметры» (см. изображение ниже).
Thonny — это Python IDE для начинающих.
Используя пример кода от Raspberry Pi, вы можете реализовать код, который использует таймер для мигания встроенного светодиода.
##кредит Фонда Raspberry Pi из машинного импорта Пин, Таймер светодиод = контакт (25, контакт OUT) Тим = Таймер() тик по умолчанию (таймер): глобальный светодиод led. toggle() tim.init (частота = 2,5, режим = Timer.PERIODIC, обратный вызов = тик)
Поскольку мы работали над совершенно секретным Pico перед его выпуском, мы хотели общаться с ним более загадочно. Итак, на основе кода «Мигни светодиодом» мы создали скрипт MicroPython, который выводит «Hello World» азбукой Морзе.
Шаг 3: Мигните «Hello World» азбукой Морзе:
Убедитесь, что вы заменили код «мигания» выше, если вы доживете до шага 3 ниже.
#--------------------------------------------------------------- --------------------------------
# Импортировать необходимые библиотеки, подключиться к встроенному светодиоду, установить частоту мигания для светодиода
#------------------------------------------------- ------------------------------
время импорта
из импорта машины Pin
led=Pin(25,Pin.OUT)#светодиод на Pico имеет контакт 25
Скорость мигания = 0,25
#------------------------------------------------- ------------------------------
# Функции длительности сигналов азбуки Морзе и самого кода
#------------------------------------------------- ------------------------------
определение тире():
светодиод. значение(1)
time.sleep(4*BlinkRate)
светодиод.значение(0)
time.sleep(BlinkRate)
определенная точка():
светодиод.значение(1)
time.sleep(BlinkRate)
светодиод.значение(0)
time.sleep(BlinkRate)деф пауза():
time.sleep(BlinkRate)code = {'A':'.-','B':'-...','C':'-.-.','D':'-..','E':'. ','F':'..-.','G':'--.',
'H':'....','I':'..','J':'.---','K':'-.-','L':'.-.. ','М':'--','Н':'-.',
'O':'---','P':'.--.','Q':'--.-','R':'.-.','S':'... ','Т':'-','У':'..-',
'V':'...-','W':'.--','X':'-..-','Y':'-.--','Z':'-- ..',
'0':'-----','1':'.----','2':'..---','3':'...--','4 ':'....-',
'5':'.....','6':'-....','7':'--...','8':'---..','9':'----.',
'.':'.-.-.-',
',':'--..--',
'?':'..--..',
'/':'--..-.',
'@':'.--.-.',
' ':' / ',}
#------------------------------------------------- ------------------------------
# Функция, которая просто возвращает предложение азбуки Морзе из английского предложения в верхнем регистре
#------------------------------------------------- ------------------------------
def convertToMorseCode (предложение):
предложение = предложение.