Руководства · 14 мин чтения

План уроков по Raspberry Pi Pico: 6 недель MicroPython в классе

План уроков по Raspberry Pi Pico: 6 недель уроков MicroPython по 40 минут с бесплатными проектами, настройкой Thonny, списком материалов на 24 ученика и примером урока.

Если нужен план уроков по Raspberry Pi Pico, вот короткий ответ: 6 недель, один урок по 40 минут в неделю, работа в парах и одно новое понятие MicroPython каждую неделю. На первой неделе ученики зажигают встроенный светодиод одной строкой в REPL Thonny; дальше идут переменные и время, функции, кнопки и условия, звук и датчик расстояния с ШИМ, а на последней неделе — пианино на пять кнопок со списком и циклом for. Проект каждой недели бесплатно доступен в BlueGrays со схемой, списком деталей и кодом, так что Premium ученикам не нужен. План рассчитан на Raspberry Pi Pico или Pico W с Thonny и на учеников средней и старшей школы, которые ещё никогда не писали код.

Сначала разберём, почему Pico и MicroPython так хорошо работают в классе, а затем подготовку к первому уроку: файл MicroPython UF2, кнопку BOOTSEL, выбор интерпретатора в Thonny и то, на что обратить внимание на школьных компьютерах. После этого — план по неделям с аналогом каждого понятия на Arduino C++, список материалов на класс из 24 учеников, поминутный пример урока, три коротких примера кода, таблица оценивания и решения проблем, которые чаще всего возникают на уроке. 8-недельную версию этого подхода с Arduino и блоками мы разобрали в статье план уроков по блочному программированию; этот план её не повторяет и предназначен для классов, которые хотят сразу начать с текстового кода или перейти на Python после блоков.

Плата Raspberry Pi Pico WH с запаянными штыревыми гребёнками, разъёмом micro USB и белой кнопкой BOOTSEL рядом
Pico WH: гребёнки уже запаяны, поэтому плата вставляется прямо в макетную плату. Белая кнопка рядом с USB-разъёмом — это BOOTSEL; она понадобится для установки MicroPython.

Почему Raspberry Pi Pico и MicroPython?

Pico — небольшая плата с микроконтроллером, которую Raspberry Pi сделала на собственной микросхеме RP2040. Это не компьютер: как и Arduino, она снова и снова выполняет одну программу. Для класса у неё три сильные стороны. Первая — MicroPython, облегчённая версия Python для микроконтроллеров. Он легко читается, в нём нет точек с запятой и фигурных скобок, поэтому ученики, которые уже встречали Python на информатике, тем же языком управляют светодиодом или зуммером. Вторая — нет компиляции: как только в Thonny нажата кнопка «Запустить» (Run), код выполняется на плате, и не нужно ждать компиляции и загрузки после каждой мелкой правки. На 40-минутном уроке это значит гораздо больше попыток за то же время. Третья — REPL: введи одну строку в окне Shell в Thonny, нажми Enter, и плата сразу её выполнит. Когда ученики вводят led.on() и светодиод загорается, они за первые пять минут понимают, что программировать — значит давать плате команды. Низкая цена и то, что плата вставляется прямо в макетную плату, делают работу в парах реальной. Когда проще взять Arduino? С младшими учениками, которые только научились читать, или если большая часть набора — модули на 5 V, начинать с Arduino и блоков проще и без сюрпризов. Характеристики и распиновка платы — в статье Что такое Raspberry Pi Pico?

ХарактеристикаRaspberry Pi Pico + MicroPythonArduino Uno + C++
Напряжение пинов3,3 V (5 V не выдерживает)5 V
Язык и редакторMicroPython, ThonnyC++, Arduino IDE
Запуск кодаСразу по кнопке «Запустить», без компиляцииКомпиляция и загрузка после каждой правки
Проверка по строке (REPL)Есть: >>> в окне Shell в ThonnyНет
Аналоговые входы3 пина (GP26–GP28), read_u16() 0–655356 пинов (A0–A5), analogRead() 0–1023
Разъём USBMicro USBUSB-B (Uno R3)
На макетной платеPico H / WH идут с гребёнками и вставляются напрямуюПлата стоит рядом, подключается перемычками
ЦенаОбычно заметно дешевле UnoДороже
Пины Pico работают от 3,3 V и не выдерживают 5 V. Если подключить к пину GPIO выход, который выдаёт 5 V (например, пин ECHO датчика HC-SR04 с питанием 5 V), пин может выйти из строя навсегда; поэтому на 5-й неделе на линию ECHO ставится делитель напряжения из резисторов 1 kΩ и 2 kΩ. На первом уроке покажи ученикам пины VBUS (пин 40, 5 V от USB), VSYS (пин 39) и 3V3(OUT) (пин 36) и запиши правило на доске: кнопки и выходы датчиков никогда не подключаются к VBUS. Светодиод всегда подключай через резистор 220 Ω; при 3,3 V через красный светодиод течёт около 6 mA. Найти пины вместе с учениками можно в утилите распиновки.

Перед первым уроком: MicroPython и Thonny

  1. Определи плату: для Pico, Pico W, Pico 2 и Pico 2 W нужны разные файлы MicroPython. Посмотри на надпись на плате и скачай с официальной страницы загрузки MicroPython последний файл .uf2 именно для этой платы. С неправильным файлом плата не запустится или не заработает Wi-Fi.
  2. Подключай с зажатой BOOTSEL: удерживай белую кнопку BOOTSEL рядом с USB-разъёмом, пока вставляешь кабель в компьютер, затем отпусти. На компьютере появится диск RPI-RP2 (у Pico 2 он называется RP2350).
  3. Скопируй файл UF2: перетащи файл .uf2 на этот диск. Через несколько секунд плата перезагрузится, и диск исчезнет; это не ошибка, а знак того, что MicroPython установлен. MicroPython остаётся на плате, так что переустанавливать его на каждом уроке не нужно.
  4. Выбери интерпретатор в Thonny: в «Инструменты › Параметры › Интерпретатор» (Tools › Options › Interpreter) выбери «MicroPython (Raspberry Pi Pico)», а порт оставь на автоопределении. То же самое можно выбрать, нажав на правый нижний угол окна Thonny.
  5. Проверь соединение: внизу, в окне Shell, должно быть приглашение >>>. Введи print("привет") и нажми Enter; если пришёл ответ, плата готова к уроку.

Не оставляй настройку школьных компьютеров на сам урок; поговори со школьным системным администратором за неделю. Thonny работает в Windows, macOS и Linux и идёт со своим Python, так что отдельно ставить Python не нужно. Для Windows есть и портативная версия, которая вообще не требует установки; это сильно упрощает жизнь в закрытых компьютерных классах, где программы может ставить только администратор. Windows 10 и 11 распознают Pico как последовательный порт (COM) без дополнительного драйвера. В некоторых школах USB-накопители заблокированы; тогда диск RPI-RP2 может не появиться на компьютерах учеников, но если MicroPython заранее установлен на платы с твоего компьютера, это не важно, потому что на уроке используется только последовательное соединение. И наконец, покажи ученикам два варианта в окне сохранения Thonny: «This computer» (этот компьютер) сохраняет файл на компьютер, «Raspberry Pi Pico» — на плату. Пары, которые не знают, что выбрали, на 6-й неделе не найдут свой код.

Чтобы закончить настройку за один раз, установи MicroPython на все платы до начала курса, пронумеруй платы и кабели от 1 до 13 и следи, чтобы каждая пара каждую неделю получала один и тот же номер. Ссылка «Install or update MicroPython» (установить или обновить MicroPython) в окне интерпретатора Thonny находит плату в режиме BOOTSEL и просит выбрать нужный вариант, так что установить можно и без ручного скачивания UF2. Если при проверке платы в окне Shell видно >>>, эта пара «плата + кабель» готова.

6-недельный план уроков по Raspberry Pi Pico

Каждый урок рассчитан на 40 минут и работу в парах. Все проекты в таблице бесплатны в BlueGrays, а у проектов первых трёх недель рядом с кодом есть ещё и блочное представление. Порядок выбран намеренно: сначала выход (светодиод), затем переменные и время, функции, потом вход и условия, звук и датчик с ШИМ и в конце списки и циклы. Каждая неделя добавляет одну новую идею к предыдущей. В последнем столбце то же понятие показано на Arduino C++: это мостик для учеников, которые позже перейдут на Arduino; подробнее о C++ — в статье Основы программирования Arduino.

НеделяЦельБесплатный проект BlueGraysНовое понятие MicroPythonАналог на Arduino C++
1Знакомство с Pico, первая программа, цифровой выходМигание встроенным светодиодом Raspberry Pi Pico (Pico и Pico W), Raspberry Pi Pico: управление внешним светодиодом (GP14 + макетная плата)REPL (>>>), from machine import Pin, Pin(14, Pin.OUT), led.on() / led.off(), time.sleep(0.5), while True:, отступыpinMode(14, OUTPUT); digitalWrite(14, HIGH); delay(500); void loop() (аналог while True)
2Переменные, время, два выходаДва попеременно мигающих светодиода на Pico (узор мигалки, GP14 + GP13), Полицейский стробоскоп на Pico (красный + синий, GP11 + GP12)WAIT_MS = 300 (переменная), led.value(1), led.toggle(), sleep_ms(300)int waitMs = 300; digitalWrite(13, !digitalRead(13)); delay(waitMs); (аналог toggle())
3Меньше повторов: функцииСимулятор светофора на Pico (3 светодиода по очереди, GP11/GP12/GP13)def all_off():, вызов функции, дробные секунды через sleep(1.5)void allOff() { … } ; delay(1500); (функция и пауза 1,5 с)
4Вход, условия и состояниеСветофор на Pico с выбором 4 режимов кнопкой (конечный автомат, GP11-13 + GP4)Pin(4, Pin.IN, Pin.PULL_UP), if / elif / else, mode = (mode + 1) % 4, time.ticks_ms() (время в мс)pinMode(4, INPUT_PULLUP); if / else if / else; millis() (время в мс)
5Датчик и звукПарктроник на Raspberry Pi Pico (HC-SR04 + 3 светодиода + зуммер)PWM(Pin(17)), freq(), duty_u16(), time_pulse_us(), def … return (функция с возвратом значения)tone(17, 1200); pulseIn(); return (звук, длительность импульса, возврат значения)
6Списки, циклы for, итоговый проектКнопочное пианино на Raspberry Pi Pico (5 кнопок + зуммер + запись мелодии)NOTE_HZ = (523, 587, 659, 698, 784), for … in, пять кнопок с одним и тем же кодомint notes[] = {523, 587, 659, 698, 784}; for (int i = 0; i < 5; i++) (массив и цикл)
Блоки проекта «Симулятор светофора на Pico»: функция all_off, пины GP11, GP12 и GP13 как выходы, а внутри «повторять всегда» блоки записи в пин и ожидания в секундах
3-я неделя: светофор. Блок функции all_off выключает все три светодиода и вызывается в цикле три раза; блоки ожидания на 4 с, 1,5 с, 3 с и 1 с один к одному соответствуют строкам sleep() в коде.

Во время курса возьми за правило, чтобы в конце каждой недели ученики меняли одно значение. На 1-й неделе проект со встроенным светодиодом обращается к нему по имени «LED», поэтому одинаково работает на Pico и Pico W; внешний светодиод подключается к GP14, то есть к физическому пину 19, а соседний пин 18 — это GND. На 2-й неделе уменьшение WAIT_MS в полицейском стробоскопе с 300 до 80 показывает, что одна переменная сразу меняет ритм обоих светодиодов. На 3-й неделе светофор вызывает all_off() в цикле три раза; попроси учеников удалить функцию и написать то же самое вручную: увидев, как набегают девять строк, они сами объяснят, зачем нужны функции. 4-я неделя — проект среднего уровня: кнопка подключена с PULL_UP, поэтому при нажатии читается 0, а каждое нажатие по кругу переключает режим: обычный, только красный, мигающий жёлтый и выключено. Код длинный, поэтому сначала прочитайте его по шагам во вкладке «Разбор кода». На 5-й неделе HC-SR04 работает от 5 V, так что не забудь подключить ECHO через делитель; эксперименты со значениями GREEN_CM 100, YELLOW_CM 50, RED_CM 25 и STOP_CM 10 дают ученикам понятие порога. Как работает датчик, рассказано в статье Датчик расстояния HC-SR04, а как получить звук с помощью ШИМ — в статье Активный и пассивный зуммер; бери пассивный зуммер, потому что в проекте меняется частота. На 6-й неделе пианино играет пять нот от «до» до «соль» в диапазоне 523–784 Hz, а если удерживать клавишу «до» 1 секунду, начинается запись мелодии. Полный код для этого уровня длинный; вместо того чтобы просить учеников набрать его целиком, попроси их поменять частоты в списке NOTE_HZ и построить свой звукоряд.

Вопросы на выходе для каждой недели

  • 1-я неделя: Что произойдёт, если поменять местами строки led.on() и time.sleep(0.5)? Почему строки под while True: начинаются с отступом?
  • 2-я неделя: Как изменится стробоскоп, если увеличить WAIT_MS с 300 до 1000? Какие две строки заменяет одна toggle()?
  • 3-я неделя: Сколько ещё строк пришлось бы написать без функции all_off()? Чем определение функции отличается от её вызова?
  • 4-я неделя: Почему button.value() возвращает 0 при нажатии кнопки с PULL_UP? Если mode равно 3 и нажать кнопку, чему станет равно mode?
  • 5-я неделя: Почему пин ECHO датчика HC-SR04 не подключают к Pico напрямую? Что делает с зуммером строка duty_u16(0)?
  • 6-я неделя: Какие списки в коде нужно изменить, чтобы добавить пианино шестую клавишу?

Список материалов на класс из 24 учеников

Если разбить 24 ученика на пары, получится 12 групп; с одним запасным набором готовь 13 наборов. Pico недорогая, поэтому в большинстве школ можно работать парами, а не тройками, и у каждого ученика больше времени за клавиатурой; если работать тройками, сократи количество до 9 наборов. Каждой группе нужен компьютер, потому что Thonny общается с Pico по USB. Телефон или планшет нужен, чтобы держать открытыми в BlueGrays проект недели, его схему и вкладку «Разбор кода». Паять ничего не нужно: всё вставляется в макетную плату.

ПозицияНа группуНа класс (12 групп + 1 запасной)Неделя
Raspberry Pi Pico H или Pico WH (с запаянными гребёнками)113Все
Кабель micro USB с передачей данных113Все
Макетная плата (400 или 830 отверстий)113Все
Перемычки «папа–папа»20около 260Все
Светодиоды 5 мм (красный, жёлтый, зелёный, синий)4около 601–5
Резистор 220 Ω4около 601–5
Тактовая кнопка (4 ножки)5около 704, 6
Пассивный зуммер1135, 6
Ультразвуковой датчик расстояния HC-SR041135
Резисторы 1 kΩ и 2 kΩ (делитель для ECHO)1 + 113 + 135
Компьютер с Thonny112Все
Потенциометр 10 kΩ (по желанию, для АЦП)113Быстрые группы
Покупая платы, выбирай Pico H, Pico WH или версию с уже запаянными гребёнками. Pico без гребёнок не вставить в макетную плату, а запайка 40 пинов на 13 платах займёт все выходные; если хочется специально сделать пайку частью курса, загляни в статью как паять. Убедись, что кабели передают данные: дешёвые кабели micro USB только для зарядки питают плату, но компьютер Pico так и не видит, и это главный пожиратель времени на первом уроке. Храни резисторы в отдельных коробках по номиналам; цветные полосы можно проверить вместе с учениками в утилите цветового кода резисторов, а подходящий номинал для светодиода — в калькуляторе резистора для светодиода.

Пример урока: 1-я неделя, первая программа

План ниже — для 1-й недели. Первый урок самый рискованный, потому что именно здесь вылезают проблемы с настройкой. Предполагается, что MicroPython уже установлен на платы, а Thonny — на компьютеры. Тот же каркас подходит и для остальных недель: разминка, совместное чтение, прогноз, схема, запуск кода, изменение одного значения и вопрос на выходе. Если есть сдвоенный урок на 80 минут, растяни этап «измени одно значение» и дай парам представить свои ответы на вопрос на выходе.

ВремяЭтапЧто происходит
0–5 минРазминкаВопрос: что нужно сообщить плате, чтобы она «зажгла светодиод»? Ответы записываются на доске. Раздаются платы, показываются кнопка BOOTSEL и разъём USB.
5–12 минПервая команда в REPLОкно Shell в Thonny на проекторе: from machine import Pin, led = Pin("LED", Pin.OUT), led.on(). Пары вводят те же три строки на своём компьютере, затем выключают светодиод через led.off().
12–18 минСовместное чтение проектаОткрыть в BlueGrays проект «Мигание встроенным светодиодом». Сначала прочитать блоки с включённым «Показать блоками», потом код; обсудить while True и отступы.
18–22 минЗапускВставить код в Thonny и нажать «Запустить» (F5). Светодиод мигает каждые 0,5 секунды. Показать кнопку «Стоп» для остановки.
22–32 минСхема с внешним светодиодомОтключить USB. GP14 (пин 19) → 220 Ω → длинная ножка светодиода, короткая ножка → GND (пин 18). Запустить код проекта с внешним светодиодом. Роли: сборщик и контролёр.
32–37 минИзменить одно значениеПоменять time.sleep(0.5) на 0.1, затем на 2. Желающие пары могут перенести светодиод на GP15 и заменить в коде 14 на 15.
37–40 минВопрос на выходеОдин вопрос на листке: что было бы, если бы строки под while True: не начинались с отступом? Платы отключаются и возвращаются в пронумерованные коробки.

Три коротких примера на MicroPython для урока

Больше всего путаницы между Pico и Pico W вызывает встроенный светодиод. На классической Pico светодиод подключён к GP25, поэтому в старых примерах встречается Pin(25). На Pico W светодиод подключён к микросхеме Wi-Fi и не имеет номерного пина GP, так что Pin(25) там его не зажжёт. Способ, который работает на обеих, — обращаться к светодиоду по имени: Pin("LED"). В актуальных версиях MicroPython это имя определено для Pico, Pico W и Pico 2, поэтому проект со встроенным светодиодом в BlueGrays использует именно его. Если в классе платы вперемешку, всем можно раздать один и тот же код. Если старая прошивка не знает имени «LED», нужно обновить файл UF2.

MicroPython
1from machine import Pin
2import time
3
4# "LED" adı Pico, Pico W ve Pico 2'de karttaki LED'i bulur / The name "LED" finds the onboard LED on Pico, Pico W and Pico 2
5led = Pin("LED", Pin.OUT)
6# Eski firmware'li klasik Pico'da: Pin(25, Pin.OUT) / Classic Pico with old firmware: Pin(25, Pin.OUT)
7# Pico W'de Pin(25) LED'i yakmaz / On the Pico W, Pin(25) does not light the LED
8
9while True:
10    led.toggle()       # Durumu tersine çevir / Flip the state
11    time.sleep(0.5)    # 0,5 saniye bekle / Wait 0.5 seconds
12

Код для внешнего светодиода построен по тому же каркасу, меняется только номер пина. Здесь время ожидания вынесено в переменную WAIT; именно эту строку ученики первой поменяют на 2-й неделе. Переменная count и строка print() при каждом включении светодиода выводят число в окно Shell в Thonny, так что ученики видят на экране, что цикл действительно крутится. 14 в коде — это номер GP, а не номер физического пина; именно это ученики путают чаще всего.

MicroPython
1from machine import Pin
2import time
3
4LED_PIN = 14          # LED'in bağlı olduğu GP pini (fiziksel pin 19) / GP pin the LED is wired to (physical pin 19)
5WAIT = 0.5            # Bekleme süresi, saniye / Wait time in seconds
6
7led = Pin(LED_PIN, Pin.OUT)   # Pini çıkış yap / Make the pin an output
8count = 0                     # Kaç kez yandığını say / Count how many times it lit
9
10while True:
11    led.on()                  # LED'i yak / Turn the LED on
12    count = count + 1
13    print("LED", count)       # Thonny Shell'e yaz / Print to the Thonny Shell
14    time.sleep(WAIT)
15    led.off()                 # LED'i söndür / Turn the LED off
16    time.sleep(WAIT)
17

Кнопку можно подключить двумя способами, и оба стоит показать. С PULL_UP одна ножка кнопки идёт на GP15, а противоположная — на GND; резистор внутри Pico подтягивает пин к 3,3 V, нажатие соединяет пин с GND, и читается 0. Все проекты с кнопками для Pico в BlueGrays используют этот способ, потому что лишний провод не нужен. С PULL_DOWN противоположная ножка идёт на пин 3V3(OUT) (пин 36), и при нажатии читается 1; логика кажется естественнее, но провод легко по ошибке воткнуть в VBUS (пин 40, 5 V). Какие из четырёх ножек кнопки соединены между собой, мы разобрали в статье Как подключить кнопку к Arduino. 4-ю неделю можно начать с короткого кода ниже, а затем перейти к выбору режимов.

MicroPython
1from machine import Pin
2import time
3
4led = Pin(14, Pin.OUT)                  # GP14 -> 220 ohm -> LED -> GND / GP14 -> 220 ohm -> LED -> GND
5button = Pin(15, Pin.IN, Pin.PULL_UP)   # Buton GP15 ile GND arasında / Button between GP15 and GND
6# PULL_DOWN: Pin(15, Pin.IN, Pin.PULL_DOWN), buton GP15 ile 3V3(OUT) arasında / button between GP15 and 3V3(OUT)
7# PULL_DOWN ile koşul == 1 olur / With PULL_DOWN the condition becomes == 1
8
9while True:
10    if button.value() == 0:             # PULL_UP: basınca 0 okunur / PULL_UP: reads 0 when pressed
11        led.on()
12    else:
13        led.off()
14    time.sleep_ms(10)                   # Döngüyü biraz yavaşlat / Slow the loop down a little
15

Как использовать BlueGrays на уроке с Pico

  • Справочник по коду, раздел MicroPython: «Справочник по коду» в «Учёбе» рядом с разделом Arduino C++ предлагает раздел MicroPython из 18 карточек: import, print, выход пина, вход пина (PULL_UP, PULL_DOWN), time.sleep, while True, отступы, переменные, if / elif / else, for и range, списки, def и return, ADC, PWM, ticks_ms, Pin.irq, try / except и I2C. В каждой карточке есть «Что делает?», «Синтаксис», пример с вкладками «Блоки · Arduino · MicroPython», «Частая ошибка» и мини-тест. Советуй ученикам читать между уроками карточки по понятию недели; свой прогресс MicroPython x/18 каждый ученик видит на экране «Мой уровень».
  • «Посмотреть в проектах»: эта ссылка в конце каждой карточки показывает проекты, в коде которых встречается команда, от простых к сложным. Отсюда ученики переходят от команды, прочитанной в карточке, к её поиску в коде настоящего проекта.
  • Вопросы дня: в настройке «Язык кода в вопросах» есть варианты «Оба», Arduino и MicroPython. Если уроки идут на Pico, пусть ученики выберут MicroPython; общие вопросы без кода приходят при любом выборе. Каждый день — набор примерно на 3 минуты, есть тест на уровень из 15 вопросов и 6 уровней от A1 до C2: хорошая привычка для ежедневного повтора между уроками.
  • «Показать блоками»: у пяти бесплатных проектов для Pico (встроенный светодиод, внешний светодиод, два попеременно мигающих светодиода, светофор и полицейский стробоскоп) рядом с кодом есть блочное представление. Если тем, кто впервые видит Python, сначала показать блоки, а потом код той же программы, складывается идея «логика та же, запись другая»; этот шаг подробно разобран в статье переход от блоков к MicroPython. Блоки нужны для чтения: в приложении их нельзя редактировать, а на плату всегда загружается код MicroPython.
  • «Разбор кода» и «Если не работает»: они есть у каждого бесплатного проекта для Pico. Вкладка «Разбор кода» начинается с краткого итога «Что делает этот код?», продолжается разбором «Шаг за шагом» и заканчивается блоком «Если не получается» и заданием «Твоя очередь». С длинным кодом на 4-й и 6-й неделях это главный помощник для пар, которые пока читают медленно.
  • «Собираем вместе» и «Копировать ссылку»: пошаговый режим проходит четыре шага и на шаге с кодом напоминает выбрать в Thonny интерпретатор MicroPython. «Копировать ссылку» в разделе исходного кода даёт ссылку, по которой код открывается на компьютере, так что перепечатывать код с телефона в Thonny не придётся.

Оценивание и дифференциация

Критерий1 – Начало2 – Развитие3 – Освоено
Сборка схемСобирает с помощью, забывает GNDСобирает по схеме, сопоставляет номер GP с кодомРазличает физические пины и номера GP, находит ошибку у соседа по парте
Чтение кодаЧитает строки, но не может объяснить, что они делаютВ общих чертах объясняет, что делает программаОбъясняет каждую строку и смысл отступов
Изменение и проверкаМеняет значение, но не может объяснить эффектПредсказывает результат до проверкиЕсли прогноз не сбылся, находит причину по сообщению об ошибке в Shell
Сопоставление с C++Не может сопоставитьСопоставляет Pin, sleep и while TrueСопоставляет также if, for и функции
  • Быстрые группы, аналоговое чтение: отдельной недели про АЦП в плане нет; пары, которые закончили раньше, подключают среднюю ножку потенциометра 10 kΩ к GP26, читают значение от 0 до 65535 через ADC(26).read_u16() и задают им скорость стробоскопа со 2-й недели. Для задачи посложнее подойдёт бесплатный проект Светодиодный костёр на Raspberry Pi Pico (матрица NeoPixel 8x8 + потенциометр + зуммер): тот же потенциометр управляет матрицей NeoPixel 8x8.
  • Быстрые группы, объединение: добавить кнопку с 4-й недели к парктронику с 5-й и написать «тихий режим», который включает и выключает звук, — первый настоящий шаг к собственному коду.
  • Медленные группы: выдай уже собранную схему или положи на стол крупную распечатку схемы. Пусть идут шаг за шагом по вкладке «Разбор кода» и ставят цель в этот день изменить всего одно значение; это уже достойный результат.

Частые проблемы и быстрые решения

ПроблемаВероятная причинаРешение
Компьютер вообще не видит PicoКабель только для зарядки, плохой контакт, USB-хабПопробуй заведомо рабочий кабель с передачей данных, подключи плату напрямую к компьютеру, попробуй другой USB-порт.
При каждом подключении открывается диск RPI-RP2На плате нет MicroPython или BOOTSEL залипаетСкопируй файл UF2 на диск; подключи снова, не нажимая кнопку.
RPI-RP2 так и не появляетсяBOOTSEL нажата уже после подключения кабеляОтключи кабель, удерживай BOOTSEL, подключи снова, затем отпусти.
Thonny не подключается, «Device is busy» (устройство занято) или ошибка портаНеверный интерпретатор или порт, порт открыт в другой программе, работающий код занятВыбери «MicroPython (Raspberry Pi Pico)» в правом нижнем углу, нажми Stop/Restart («Стоп»), закрой второе окно Thonny, отключи и снова подключи USB.
No module named 'machine' (нет модуля machine)Код выполняется в Python на компьютереВыбери интерпретатор MicroPython (Raspberry Pi Pico).
IndentationError или SyntaxErrorСмешанные отступы, нет двоеточияПерейди к номеру строки из ошибки; в конце строк с while, if и def нужно двоеточие, а в строках под ними — 4 пробела.
Код работает, но светодиод не горитСветодиод перевёрнут, нет GND, номер GP в коде не совпадает со схемой, Pin(25) на Pico WДлинную ножку — к резистору (на сторону GP), проверь провод GND, для встроенного светодиода используй Pin("LED").
Код перестаёт работать после отключения от компьютераФайл сохранён на компьютер или называется не main.pyВ Thonny выбери сохранение › Raspberry Pi Pico и назови файл main.py; код будет запускаться сам каждый раз, когда на плату подаётся питание.
main.py крутит бесконечный цикл, и Thonny не может подключитьсяКод запускается сразу при стартеНажми «Стоп» несколько раз или Ctrl+C в Shell; если не помогает, сотри флеш-память официальным flash_nuke.uf2 и заново установи MicroPython (все файлы на плате удалятся).

Чек-лист перед уроком

  • MicroPython установлен на все платы, платы и кабели пронумерованы от 1 до 13.
  • Thonny открывается на каждом компьютере, интерпретатор — «MicroPython (Raspberry Pi Pico)».
  • Каждая пара «плата + кабель» проверена и показывает >>> в Shell.
  • Резисторы разложены по коробкам по номиналам: 220 Ω, 1 kΩ, 2 kΩ.
  • Проект недели открыт в BlueGrays на проекторе; для первых трёх недель подготовлено «Показать блоками».
  • Листки с вопросом на выходе распечатаны, роли (сборщик, контролёр) распределены по парам.
  • Перед 5-й неделей резисторы делителя для HC-SR04 отложены для каждой группы.
  • В конце урока USB-кабели отключены, детали пересчитаны и сложены в пронумерованные коробки.

Все проекты, которые понадобятся за эти шесть недель, можно бесплатно открыть в приложении BlueGrays со схемой, списком деталей, кодом MicroPython и вкладкой «Разбор кода»; так легко вести урок с проектора, пока ученики следят за ним на своих телефонах. Если через шесть недель захочется перейти к проектам Premium для Pico с яркостью светодиода через ШИМ, сервоприводами, OLED-экраном или матричной клавиатурой, вместо индивидуальных подписок можно раздать коды педагога: это разовая покупка без автопродления.

Частые вопросы

Как вести уроки с Raspberry Pi Pico?

Вводи на каждом уроке одно новое понятие и выстраивай порядок так: выход, переменные, функции, вход и условия, ШИМ и датчики, затем списки и циклы. Пусть каждый урок идёт по одному каркасу: разминка, совместное чтение, прогноз, схема, запуск кода, изменение одного значения и вопрос на выходе. 6-недельный план в этой статье построен именно так, на бесплатных проектах.

Как установить MicroPython на Raspberry Pi Pico?

Удерживай кнопку BOOTSEL, пока подключаешь Pico к компьютеру по USB; появится диск RPI-RP2. Скопируй на этот диск файл MicroPython .uf2 для своей платы, и плата перезагрузится. Установить можно и через пункт «Install or update MicroPython» (установить или обновить MicroPython) в настройках интерпретатора Thonny.

Thonny не видит Raspberry Pi Pico. Что делать?

Сначала убедись, что USB-кабель передаёт данные: через кабель только для зарядки компьютер плату не увидит. Затем выбери в Thonny интерпретатор «MicroPython (Raspberry Pi Pico)» и нажми Stop/Restart. Если при каждом подключении открывается диск RPI-RP2, на плате ещё нет MicroPython, поэтому установи файл UF2.

Raspberry Pi Pico или Arduino для школы?

Обе платы — хорошая отправная точка; выбор зависит от языка и учеников. Если ты преподаёшь Python или хочешь быстрых экспериментов без ожидания компиляции, удобна Pico с MicroPython. С младшими учениками, если хочется начать с блоков, или если набор состоит из модулей на 5 V, с Arduino меньше сюрпризов.

Как запускать код на Pico без компьютера?

В Thonny сохрани код на плату через вариант «Raspberry Pi Pico» под именем main.py. Pico сама запускает main.py при каждой подаче питания, так что хватит USB-зарядки или пауэрбанка. Чтобы остановить код, снова подключи плату к Thonny и нажми «Стоп».

Есть ли разница между Pico и Pico W на уроке?

Все проекты этого плана работают на обеих платах с теми же пинами; единственное отличие — встроенный светодиод. На классической Pico он подключён к GP25, на Pico W — к микросхеме Wi-Fi, поэтому используй Pin("LED"), который работает на обеих. У Pico W есть ещё Wi-Fi и Bluetooth, но в первые шесть недель они не понадобятся.

Все проекты
Мигание встроенным светодиодом Raspberry Pi Pico (Pico и Pico W)
#147Новичок

Мигание встроенным светодиодом Raspberry Pi Pico (Pico и Pico W)

Первый проект серии Raspberry Pi Pico! Мигаем зелёным встроенным светодиодом, чтобы проверить, что плата работает, — классический первый опыт «Hello World». НИКАКИХ внешних компонентов, только Pico и USB-кабель. Код написан на MicroPython (официальном языке, поддерживаемом Raspberry Pi Foundation). Изучи в Thonny IDE класс machine.Pin, режим Pin.OUT, методы led.on()/off() и time.sleep(). Каждое переключение видно в выводе (REPL).

5.0(1)
10
Raspberry Pi Pico: управление внешним светодиодом (макетная плата)
#148Новичок

Raspberry Pi Pico: управление внешним светодиодом (макетная плата)

Следующий шаг после встроенного светодиода Pico: подключить внешний светодиод на макетной плате и управлять им через пин GP14. В этом проекте ты узнаешь, как использовать любой пин GPIO общего назначения у Pico как выход, какая полярность у светодиода (длинная ножка = анод/+, короткая = катод/–) и зачем нужен токоограничивающий резистор (220Ω). Без резистора через светодиод пойдёт слишком большой ток, и он может сгореть. Схема очень простая: Pico GP14 → резистор 220Ω → светодиод → GND.

4.5(2)
7
Два попеременно мигающих светодиода на Pico (узор мигалки)
#149Новичок

Два попеременно мигающих светодиода на Pico (узор мигалки)

Следующий шаг после одного светодиода на Pico: два светодиода мигают попеременно по классическому узору мигалки. Когда один гаснет, другой загорается — самый простой пример согласованной работы нескольких GPIO. В этом проекте два светодиода разных цветов (красный на GP14, зелёный на GP13) меняются состояниями каждые 500ms. Метод MicroPython Pin.toggle() делает код коротким и понятным. Та же логика лежит в основе светофоров, полицейских мигалок, бегущих огней и многих светодиодных анимаций.

5.0(2)
19
Симулятор светофора на Pico (3 светодиода по очереди)
#150Новичок

Симулятор светофора на Pico (3 светодиода по очереди)

Настоящий светофор на красном, жёлтом и зелёном светодиодах — первый проект серии Pico с 3 светодиодами! Зелёный 4 с «едем», жёлтый 1,5 с «внимание», красный 3 с «стоп» и красный + жёлтый 1 с «приготовиться» (европейская схема светофора). Изучи объявление функций (def all_off()), логику конечного автомата (последовательность) и синхронизацию нескольких GPIO. Простая схема: 3 светодиода на GP11 (зелёный), GP12 (жёлтый), GP13 (красный), у каждого токоограничивающий резистор 220Ω.

4.0(1)
12
Полицейский стробоскоп на Pico (красный + синий)
#151Новичок

Полицейский стробоскоп на Pico (красный + синий)

Имитируем мигалку полицейской машины на Raspberry Pi Pico в самом простом виде! Красный и синий светодиоды работают по очереди (мигалка): пока горит красный, синий погашен, и они меняются каждые 0,3 секунды бесконечно. Код записывает два шага прямо в одном цикле while True; скорость задаёт константа WAIT_MS.

4.7(3)
10
Светофор на Pico с выбором 4 режимов кнопкой (конечный автомат)
#158Средний

Светофор на Pico с выбором 4 режимов кнопкой (конечный автомат)

4 режима светофора всего одной кнопкой! Каждое нажатие меняет режим: обычный цикл (красный → жёлтый → зелёный по очереди), только красный (сигнал стоп), мигающий жёлтый (внимание/ночной режим) и выключено (обслуживание). Понятия: конечный автомат (переменная mode определяет, какое поведение выполняется), цикл режимов по модулю ((mode + 1) % 4 → 0→1→2→3→0), неблокирующий тайминг (фазы светодиодов отсчитываются через time.ticks_ms() + time.ticks_diff()).

5.0(1)
15
Светодиод с управлением кнопкой на Pico (удержание)
#155Новичок
Premium

Светодиод с управлением кнопкой на Pico (удержание)

Первый проект Pico с входом — чтение кнопки! Светодиод горит, пока кнопка нажата, и гаснет после отпускания. Это большой шаг после светодиодных анимаций: сигнал из внешнего мира в Pico. Изучи Pin.IN (режим входа), Pin.PULL_UP (встроенный подтягивающий резистор — стандарт для кнопок) и чтение button.value(). Светодиод на GP14, кнопка на GP2 (встроенный PULL_UP). Нажата = LOW (0), отпущена = HIGH (1) — обратная логика сначала путает, но это промышленный стандарт.

0.0(0)
11
Плавное затухание светодиода с PWM на Pico (эффект дыхания)
#160Новичок

Плавное затухание светодиода с PWM на Pico (эффект дыхания)

Светодиод больше не просто мигает — он дышит! С помощью PWM (широтно-импульсной модуляции) Raspberry Pi Pico яркость светодиода медленно растёт и медленно падает, как огонёк спящего MacBook. Изучи класс machine.PWM, duty_u16() (16-битная яркость 0–65535), частоту PWM (freq(1000) — 1000 циклов вкл/выкл в секунду, мерцания не видно), циклы range() с шагом (вверх и вниз) и почти аналоговый выход с цифрового пина.

0.0(0)
4