|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Raspberry Pi Pico: инструкция, программирование на MicroPython / C++ и документация
Время создания: 14.05.2025 19:46
Автор: alensav
Текстовые метки: Raspberry Pi Pico
Раздел: Pico
Запись: alensav/MyTetra2/main/base/1747241216kt8wqk33y3/text.html на raw.githubusercontent.com
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Raspberry Pi Pico: инструкция, программирование на MicroPython / C++ и документация Используйте платформу Raspberry Pi Pico для создания электронных гаджетов, метеостанций, роботов и других изобретений. Плата программируется на языке MicroPython или C++ и отлично подойдёт как начинающим мейкерам, так и опытным разработчикам. Платформа Raspberry Pi Pico поставляется в двух вариантах исполнения:
Программирование на MicroPython Рассмотрим программирование Raspberry Pi Pico на языке MicroPython с помощью ПК на OS Windows.
Рассмотрим несколько примеров работы программирования Pico на MicroPython. Для начала мигнём встроенным светодиодом LED на 25 пине.
raspberry-pi-pico-example-micropython-blink.py # Библиотека для работы с пинами ввода-вывода from machine import Pin # Библиотека для работы с временем import time
# Светодиод в режим выхода на 25 пине led = Pin(25, Pin.OUT)
while True: # Зажигаем светодиод led.value(1) # Ждём 1 секунду time.sleep(1) # Гасим светодиод led.value(0) # Ждём 1 секунду time.sleep(1) После запуска скрипта, светодиод начнёт мигать раз в секунду. Главная фишка Пико — возможность программируемого ввода-вывода через блоки PIO, на которых можно реализовать произвольный интерфейс. В следующем примере заставим Pico рулить светодиодами WS2812.
Для работы примера скачайте и установите библиотеку MicroPython Neopixel Pi Pico . Как устанавливать библиотеки в Thony Python IDE. raspberry-pi-pico-example-micropython-ws2812-rainbow.py # Библиотека для работы с временем import time # Библиотека для работы со светодиодами WS2812 from neopixel import Neopixel
# Номер пина, к которому подключена матрица WS2812 led_pin = 11 # Количество светодиодов led_count = 16
# Создаём объект для работы со светодиодной матрицей strip = Neopixel(led_count, 0, led_pin, "GRB")
# Создаём фиксированные цвета red = (255, 0, 0) green = (0, 255, 0) blue = (0, 0, 255) off = (0, 0, 0)
colors = (red, green, blue, off)
# Устанавливаем яркость светодиодов # Диапазон значений от 0 до 255 strip.brightness(40)
while True: # Перебираем цвета for color in colors: # Перебираем светодиоды for i in range(led_count): #Выставляем цвет светодиода strip.set_pixel(i, color) # Ждём 100 мс time.sleep(0.1) # Обновляем изменения strip.show() После прошивки управляющей платформы, вы увидите заполнение по очереди каждого светодиода матрицы из красного, зелёного и синего цветов.
Для работы примера скачайте и установите библиотеку MicroPython ST7032 Как устанавливать библиотеки в Thony Python IDE. raspberry-pi-pico-example-micropython-lcd-1602.py # Библиотека для работы с пинами ввода-вывода from machine import Pin, I2C # Библиотека для работы дисплеем на чипе ST7032 from ST7032 import ST7032
# Номер пина, к которому подключена подсветка дисплея lcd_led_pin = 11 # Пин подсветки в режим выхода lcd_led = Pin(lcd_led_pin, Pin.OUT) # Включаем подсветку lcd_led.value(1)
# Создаём I²C соединение i2c=I2C(0, scl=Pin(1), sda=Pin(0), freq=100000) # Создаём объект для работы с дисплеем lcd = ST7032(i2c)
# Очищаем экран lcd.clear() # Устанавливаем контрастность lcd.setContrast(15)
# Устанавливаем курсор в колонку 0, строку 0 lcd.setCursor(0, 0) lcd.print('Hello, world!') # Устанавливаем курсор в колонку 0, строку 1 lcd.setCursor(0, 1) lcd.print('Pico chip RP2040') После прошивки управляющей платформы, на дисплее отобразится приветствующий текст. Программирование на С++ через Arduino IDE Рассмотрим программирование Raspberry Pi Pico на языке C++ в среде Arduino IDE с помощью ПК на OS Windows.
Документация на плату Raspberry Pi Pico в Arduino IDE. Рассмотрим несколько примеров работы программирования Pico на C++ через Arduino IDE. Для начала мигнём встроенным светодиодом LED на 25 пине. raspberry-pi-pico-example-arduino-blink.ino // Даём имя встроенному светодиоду на 25 пине constexpr uint8_t LED_PIN = 25;
void setup() { // Настраиваем пин со светодиодом в режим выхода pinMode(LED_PIN, OUTPUT); }
void loop() { // Зажигаем светодиод digitalWrite(LED_PIN, HIGH); // Ждём 1 секунду delay(1000); // Гасим светодиод digitalWrite(LED_PIN, LOW); // Ждём 1 секунду delay(1000); } После прошивки скетча, светодиод начнёт мигать раз в секунду. Главная фишка Пико — возможность программируемого ввода-вывода через блоки PIO, на которых можно реализовать произвольный интерфейс. В следующем примере заставим Pico рулить светодиодами WS2812.
Для работы примера скачайте и установите библиотеку Adafruit NeoPixel . raspberry-pi-pico-example-arduino-ws2812-rainbow.ino // Библиотека для работы со светодиодами WS2812 #include <Adafruit_NeoPixel.h>
// Номер пина, к которому подключена матрица WS2812 constexpr uint8_t LED_PIN = 11;
// Количество светодиодов в матрице constexpr uint8_t LED_COUNT = 16;
// Создаём объект для работы со светодиодной матрицей Adafruit_NeoPixel matrix = Adafruit_NeoPixel(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() { // Инициализация матрицы matrix.begin(); // Устанавливаем яркость светодиодов // Диапазон значений от 0 до 255 matrix.setBrightness(40); }
void loop() { // Заполняем матрицу по сегментам «бегущий огонь» красного цвета colorWipe(matrix.Color(255, 0, 0), 100); // Заполняем матрицу по сегментам «бегущий огонь» зелёного цвета colorWipe(matrix.Color(0, 255, 0), 100); // Заполняем матрицу по сегментам «бегущий огонь» синего цвета colorWipe(matrix.Color(0, 0, 255), 100); // Гасим матрицу по сегментам «бегущая тень» colorWipe(matrix.Color(0, 0, 0), 100); }
// Функция заполнения каждого сегмента void colorWipe(uint32_t c, uint8_t wait) { for (uint16_t i = 0; i < matrix.numPixels(); i++) { // Заполняем текущий сегмент выбранным цветом matrix.setPixelColor(i, c); matrix.show(); // Ждём delay(wait); } } После прошивки управляющей платформы, вы увидите заполнение по очереди каждого светодиода матрицы из красного, зелёного и синего цветов.
Для работы примера скачайте и установите библиотеку TroykaTextLCD . raspberry-pi-pico-example-arduino-lcd-1602.ino // Библиотека для работы с дисплеем #include <TroykaTextLCD.h>
// Номер пина, к которому подключена подсветка дисплея constexpr uint8_t LCD_LED_PIN = 15;
// Создаём объект I²C и передаём ему номера пинов SDA и SCL MbedI2C i2c(0, 1); // Создаём объект для работы с дисплеем // передаём ему объект I²C, I²C-адрес и пин подсветки TroykaTextLCD lcd(&i2c, 0x3E, LCD_LED_PIN);
void setup() { // Устанавливаем количество столбцов и строк экрана lcd.begin(16, 2); // Устанавливаем контрастность в диапазоне от 0 до 63 lcd.setContrast(45); // Устанавливаем яркость в диапазоне от 0 до 255 lcd.setBrightness(255); // Устанавливаем курсор в колонку 0, строку 0 lcd.setCursor(0, 0); // Печатаем первую строку lcd.print("Hello, world!"); // Устанавливаем курсор в колонку 0, строку 1 lcd.setCursor(0, 1); // Печатаем вторую строку lcd.print("Pico chip RP2040"); }
void loop() { } После прошивки управляющей платформы, на дисплее отобразится приветствующий текст.
Raspberry Pi Pico поддерживает два метода загрузки: штатный режим и режим загрузчика . Платформа загружается с внешней Flash-памяти , распаянной на плате Raspberry Pi Pico. В диспетчере устройств OS Windows плата отображается как виртуальный COM-порт с именем Устройство с последовательным интерфейсом USB. Активация режима происходит простым подключением плате по USB. Платформа загружается с внутренней памяти микроконтроллера RP2040. В диспетчере устройств OS Windows плата отображается как съёмный накопитель с именем RPI-RP2. Режим служит для загрузки прошивки в формате UF2 простым перемещением файла с одного носителя на другой. Активация режима происходит с помощью кнопки BOOTSEL :
Платформа Pi Pico выполнена на чипе собственной разработки RP2040 от компании Raspberry Pi Foundation. Кристалл содержит двухъядерный процессор на архитектуре ARM Cortex M0+ с тактовой частотой до 133 МГц. На RP2040 также расположились часы реального времени, датчик температуры и оперативная память на 264 КБ. Внешняя Flash-память распаяна на отдельном чипе W25Q16JVUXIQ объёмом 2 МБ. Разъём USB Micro предназначен для прошивки и питания платформы Raspberry Pi Pico. Для подключения к ПК понадобится кабель USB (A — Micro USB) . Пользовательский светодиод на 25 пине микроконтроллера . При задании значения высокого уровня светодиод включается, при низком – выключается. На плате расположен универсальный преобразователь питания SMPS (Switch Mode Power Supply) на чипе RT6150-33GQW , который обеспечивает питание микроконтроллера RP2040 и другой логики платы. Диапазон входного напряжения — от 1,8 до 5,5 вольт: при низком входном напряжении регулятор поднимет питание до 3,3 вольт, а при высоком — понизит до 3,3 вольт. Максимальный выходной ток 800 мА. Выходное напряжение с регулятора можно снять с пина 3V3(OUT). На плате Pi Pico расположена кнопка, которая служит для перевода платформы в режим загрузчика . В описании контактов будем использовать нумерацию GPx, где x — номер контакта.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Так же в этом разделе:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|