В этой статье мы рассмотрим основы работы с платой Raspberry Pi Pico, совершенно новой захватывающей плате микроконтроллера на базе микроконтроллера RP2040 от Raspberry Pi Foundation . Raspberry Pi Pico — это недорогой микроконтроллер на базе Arm, который мы можем программировать с помощью C/C++ и MicroPython. Ранее на нашем сайте мы уже публиковали статью о начале работы с Raspberry Pi Pico на MicroPython для начинающих, но решил добавить на сайт и эту статью потому что в ряде аспектов она более подробная и также в ней кроме Thonny IDE рассматривается и работа с uPyCraft IDE - по итогу вы сами сможете выбрать какая из этих двух программных оболочек вам больше подходит. Я надеюсь что эти две статьи о начале работы с Raspberry Pi Pico на MicroPython на нашем сайте будут взаимно дополнять друг друга.
За эти годы платы Raspberry Pi стали обязательным инструментом для студентов, любителей или промышленников. Но когда дело доходит до стоимости, плату Raspberry Pi существенно обгоняют такие платы как Arduino, ESP32, STM32, а также микроконтроллеры AVR, ARM, PIC. Микрокомпьютер Raspberry Pi стоит около 35-40$ , тогда как другие микроконтроллеры едва ли стоят всего 2-5$ . Вот почему Raspberry Pi Foundation выпустила свою недорогую мощную конкурентоспособную плату Raspberry Pi Pi с RP2040, двухъядерным микроконтроллером ARM Cortex-M0+.
В статье рассматривается микроконтроллер RP2040, его функции и характеристики. Мы также узнаем о плате Raspberry Pi Pico, ее компоновке и характеристиках. Подробное руководство по контактам Raspberry Pi Pico, таким как контакты ADC (АЦП), контакты I2C, контакты SPI, UART и т. д., поможет вам подключить любые датчики или модули к этой мощной плате.
Так как это руководство по началу работы с Raspberry Pi Pico , мы будем программировать устройство только с помощью Micropython. Для этого вы можете использовать Thonny IDE или uPyCraft IDE. В последующих статьях на нашем сайте мы также научимся программировать Raspberry Pi Pico с помощью C/C++. Даже Arduino IDE будет поддерживать Raspberry Pie Pico в будущем, так как сейчас он находится в стадии разработки. Мы рассмотрим базовый код мигания светодиода Raspberry Pi Pico и проверим функциональность платы.
Что такое микроконтроллер RP2040?
Ранее все платы Raspberry Pi, такие как Raspberry Pi 3 или 4 или Raspberry Pi Zero, были оснащены процессорами Broadcom, такими как BCM2835, BCM2836, BCM2711 и т. д. Чип RP2040 был анонсирован 21 января 2021 года и является первым процессором, разработанным Raspberry Pi Foundation.
RP2040 — это 32-битная интегральная схема двухъядерного микроконтроллера ARM Cortex-M0+, выпущенная в то же время как часть платы Raspberry Pi Pico. Процессор — это недорогой микроконтроллер стоимостью около 4 долларов США. Чип выполнен по 40-нм кремнию в корпусе QFN-56 размером 7×7 мм.
RP2040 содержит два ядра ARM Cortex-M0+ с тактовой частотой 133 МГц вместе с 264 КБ ОЗУ. Память программ внешняя и поддерживает до 16 МБ. Устройство имеет все, что вы ожидаете от современного микроконтроллера, например, порты UARTS, SPI и I2C , а также таймеры, ШИМ, DMA и 12-битный аналого-цифровой преобразователь (АЦП).
Значение RP2040
Название RP2040 имеет очень интересное значение, которое объясняется ниже.
1. RP означает: Raspberry Pi
2. Число 2 означает: Ядра процессора, поскольку это двухъядерный микроконтроллер. Таким образом, значение равно 2.
3. Число 0 означает: Тип ядра процессора, поскольку это ARM Cortex-M0+. Таким образом, значение равно 0.
4. Число 4 означает: Представляет собой встроенную оперативную память. RP2040 имеет 264 КБ ОЗУ. Формула для получения значения 4: floor (log2 (ram / 16k)). Таким образом, значение равно 4.
5. Число 0 означает: Представляет собой встроенную флэш-память. Поскольку встроенной флэш-памяти нет, значение равно 0.
Основные характеристики RP2040:
- Два ядра ARM Cortex-M0+ 133 МГц.
- 264 КБ SRAM в шести независимых банках.
- Поддержка до 16 МБ внешней флэш-памяти через выделенную шину QSPI.
- Контроллер прямого доступа к памяти (DMA).
- Полностью подключенная перекладина AHB.
- Периферийные устройства интерполятора и целочисленного делителя.
- Встроенный программируемый LDO (регулятор с малым падением напряжения) для генерации напряжения ядра.
- 2 встроенных ФАПЧ для генерации USB и основных тактовых импульсов.
- 30 контактов GPIO, 4 из которых могут использоваться как аналоговые входы.
Введение в Raspberry Pi Pico
Raspberry Pi Pico — первая плата микроконтроллера на базе RP2040. Она очень похожа на другие платы микроконтроллеров с MCU в центре, разъемом micro-USB на одном конце и рядом контактов вдоль каждой стороны. На другом конце платы имеется 3-контактный отладочный разъем.
Raspberry Pi Pico имеет размеры 51 на 21 мм , что соответствует размеру ESP32 Pico Kit и немного больше, чем Arduino Nano или Micro. Pico поставляется с 2 МБ флэш-памяти QSPI, а 25 из 30 контактов GPIO RP2040 выведены на разъемы расширения. Плата дружелюбна к макетной плате и идеально подходит для нее.
Возможности Raspberry Pi Pico
- Построена на основе микроконтроллера RP2040.
- 2 МБ флэш-памяти SPI.
- Порт Micro-USB типа B для питания и программирования.
- 40 контактов ввода-вывода DIP-типа.
- 3-контактный интерфейс последовательной отладки ARM (SWD).
- Кварцевый генератор 12 МГц.
- Кнопка выбора загрузки.
- Программируемый светодиод, подключенный к GPIO 25.
- Понижающе-повышающий преобразователь SMPS с фиксированным выходом 3,3 В.
Распиновка Raspberry Pi Pico
Это вид сверху на распиновку Raspberry Pi Pico. Метки выводов находятся на нижней стороне платы.
На Raspberry Pi Pico имеется 40 контактов. Из этих 40 контактов 26 контактов являются входами-выходами (IO Pins). Все эти 14 контактов являются аналоговыми, цифровыми и другими последовательными контактами. Имеется 14 контактов питания и системных контактов. Оставшиеся 3 контакта используются для отладки SWD.
Доступны два периферийных устройства I2C, I2C0 и I2C1. Аналогично, есть два периферийных устройства SPI, SPI0 и SPI1. Количество выводов UART также равно двум, UART0 и UART1. Вы можете назначить любой из них выводам, на которых они доступны.
Прежде чем начать использовать Raspberry Pi Pico, вам необходимо припаять 40-контактные штыревые разъемы, по 20 с каждой стороны платы.
Программирование Raspberry Pi Pico
Raspberry Pi Pico можно программировать с использованием C/C++ или Python. Pico адаптируется к широкому спектру приложений и уровней навыков, и начать работу с ней так же просто, как перетащить файл. Если вы работаете с C, то рекомендуется использовать систему на базе Linux, например, компьютер Raspberry Pi, поскольку легко загрузить SDK и писать программы на C в Linux.
Но я рекомендую использовать MicroPython для программирования платы Raspberry Pi Pico. MicroPython — это интерпретатор языка Python, разработанный для микроконтроллеров и встраиваемых систем. Синтаксис MicroPython очень похож на Python. Так что, если вы работали с Python, то работать с MicroPython будет очень легко.
Чтобы запрограммировать Raspberry Pi Pico с помощью Micropython, вы можете использовать:
1. Thonny IDE.
2. uPyCraft IDE.
Но прежде чем начать работу с Raspberry Pi Pico, вам необходимо установить MicroPython на плату Raspberry Pi Pico.
Установка MicroPython на Raspberry Pi Pico
Нажмите и удерживайте кнопку BOOTSEL на Pico, а затем немедленно подключите плату Raspberry Pi Pico к компьютеру с помощью кабеля micro USB. Отпустите BOOTSEL, как только диск RPI-RP2 появится на вашем компьютере.
Откройте диск RPI-RP2, который отображается на вкладке «Диски».
Посетите страницу официальной документации Raspberry Pi Pico здесь: документация по Raspberry Pi.
Загрузите файл MicroPython UF2 с вкладки MicroPython.
Перетащите файл UF2 на диск RPI-RP2. Raspberry Pi Pico перезагрузится и теперь будет запускать MicroPython.
Начало работы с Raspberry Pi Pico с использованием MicroPython в Thonny IDE
- Теперь давайте начнем использовать MicroPython в Raspberry Pi Pico с помощью Thonny IDE. Сначала вам нужно скачать Thonny с https://thonny.org/
Подключите Raspberry Pi Pico к компьютеру. Затем из Thonny перейдите в Tools > Options и щелкните вкладку Interpreter. В раскрывающемся списке интерпретаторов выберите MicroPython (Raspberry Pi Pico). Раскрывающееся меню портов можно оставить для автоматического обнаружения Pico. Нажмите Ok, чтобы закрыть.
При подключении платы pico появится вкладка установки прошивки для raspberry pi pico. Нажмите «Установить», и некоторые файлы будут загружены.
После успешной установки версия MicroPython и плата Raspberry появятся в оболочке Python. Для проверки мы можем написать быструю функцию печати, чтобы сказать «Hello World». Нажмите Enter, чтобы запустить код. Вы получите Hello World в качестве ответа.
Написание программы мигания встроенным светодиодом pico
Встроенный светодиод на Raspberry Pi Pico подключен к контакту GPIO25. Скопируйте следующий код и вставьте его в окно редактора.
1 2 3 4 5 6 7 8 |
from machine import Pin import utime led = Pin(25, Pin.OUT) led.low() while True: led.toggle() print("Toggle") utime.sleep(1) |
Сохраните программу на компьютере и дайте ей уникальное имя, например, blink.py.
Программа запустится, и вы увидите, как на плате замигает светодиод.
Теперь отсоедините USB от Raspberry Pi Pico и подсоедините снова. Вы увидите, что светодиод не мигает. Это потому, что программа сохранена на компьютере, а не на плате Raspberry Pi Pico.
Чтобы система работала даже после подключения и отключения кабеля USB, вам нужно сохранить программу на плату Raspberry Pi Pico. Для этого откройте новую вкладку, вставьте ту же программу и нажмите «Сохранить». На этот раз сохраните ее на плате Raspberry Pi Pico.
При сохранении дайте файлу с программой имя main.py, как показано на рисунке ниже.
На этот раз светодиод будет мигать даже после подключения и отключения кабеля питания. Это потому, что программа сохранена на плате Raspberry Pi Pico.
Написание программы мигания внешним светодиодом
Теперь давайте напишем код для платы Raspberry Pi Pico для мигания внешнего светодиода, подключенного к контакту GPIO Pin28 платы Raspberry Pi Pico. Схема приведена ниже. Подключите светодиод к GPIO28 через резистор 330 Ом.
Скопируйте следующий код и загрузите его на плату Raspberry Pi Pico.
1 2 3 4 5 6 7 8 |
from machine import Pin import utime led = Pin(28, Pin.OUT) led.low() while True: led.toggle() print("Toggle") utime.sleep(1) |
Как только код запустится, светодиод начнет мигать с интервалом в 1 секунду.
Написание программы для мигания как встроенным, так и внешним светодиодом
Теперь давайте напишем код Raspberry Pi Pico для мигания как встроенным, так и внешним светодиодом. Код очень простой. Скопируйте следующий код и запустите его.
1 2 3 4 5 6 7 8 9 10 11 |
from machine import Pin import utime led1 = Pin(25, Pin.OUT) led2 = Pin(28, Pin.OUT) led1.low() led2.low() while True: led1.toggle() led2.toggle() print("Toggle") utime.sleep(1) |
После запуска кода оба светодиода начнут мигать: как встроенный, так и внешний.
Начало работы с Raspberry Pi Pico с использованием MicroPython в uPyCraft IDE
Вы также можете программировать микроконтроллер Rapsberry Pi Pico RP2040 с помощью uPyCraft IDE, которая очень похожа на Thonny IDE.
Сначала загрузите uPyCraft IDE по следующей ссылке: https://github.com/DFRobot/uPyCraft. Теперь откройте uPyCraft IDE.
Нажмите «Инструменты» (Tools) и в меню «Инструменты» выберите COM-порт.
В меню инструментов выберите «board», а затем выберите other («Другие»).
Теперь скопируйте следующий код мигания светодиода Raspberry Pi Pico и вставьте его на новую вкладку в uPyCraft IDE.
Сохраните файл под именем main.py.
Затем нажмите кнопку Download & Run с правой стороны. После загрузки светодиод начнет мигать. Вы сможете увидеть слово Toggle, появляющееся в окне оболочки.
Вы можете протестировать остальные коды выше с помощью uPyCraft IDE. Код будет работать с любой IDE.
Видео, демонстрирующее работу проекта
25 просмотров