Raspberry Pi Pico и MicroPython под Windows
Эта статья отвечает на вопрос: Как использовать Raspberry Pi Pico с MicroPython в Windows? Мы также покажем, как установить правильный драйвер для "Board CDC" (под которым будет отображаться Pico после установки MicroPython) в Windows 8.1. (Мы также обсудим различия между MicroPython и CircuitPython, где это применимо - где плата будет называться "CircuitPython CDC Control").
Наконец, мы покажем, как подключиться к Pico с помощью PuTTY, а также более удобный вариант с помощью Thonny (это Python IDE, интегрированная с Pico!).
Введение: Что такое Pico и что такое MicroPython?
Сайт Raspberry Pi Pico это новая микроконтроллерная плата от Raspberry Pi, оснащенная микроконтроллерным чипом RP2040 собственной разработки.
Raspberry Pi предусмотрели в RP2040 множество классных функций (моя любимая - PIO - программируемый ввод-вывод, с помощью которого можно эмулировать множество аппаратных интерфейсов, требующих точной синхронизации и т.д.). - Я расскажу об этом в другой статье в будущем), а Pico - это действительно хорошая эталонная платформа, на которой реализован RP2040.
Чем Raspberry Pi Pico отличается от Raspberry Pi Zero W?
Разница между микроконтроллерами (такими как Pico) и одноплатный компьютер (скажем, Pi Zero W) заключается примерно в следующем: вы программируете Pico напрямую (например, на языке C), без операционной системы, в то время как Pi Zero W обычно работает под управлением Linux.
Это имеет свои преимущества, например, реальное время, но и недостатки - вам нужно больше знать об используемом оборудовании, а также реализовать множество функций, которые в современной операционной системе считаются само собой разумеющимися (например, доступ к файлам).
У Pico меньше ресурсов по сравнению с Pi Zero W (например, значительно меньше оперативной памяти, нет графического процессора VideoCore и т.д.) - но он потребляет меньше энергии и имеет дополнительные функции, такие как вышеупомянутый PIO и аналоговые входы (АЦП).
Pico - хороший выбор для проектов, которые не обязательно требуют подключения к сети, выхода HDMI, входа камеры и обработки данных. Другими словами, если вы хотите взаимодействовать с аппаратным обеспечением, иметь длительное время автономной работы и т.д. - тогда Pico для вас.
Какое программное обеспечение уже существует для Pico?
Pico можно прошить с помощью различного программного обеспечения, которое поставляется в комплекте Файлы UF2 (см. руководство по началу работы с Pico). Raspberry Pi предоставляет несколько файлов UF2 для начала работы:
- MicroPython (о котором пойдет речь в этой статье) и близкий родственник, CircuitPython
- Мигание светодиода (Мигает UF2)
- Здравствуй мир (будет говорить "Hello world", если вы подключаетесь через терминал)
- Пикозонд (используйте один Pico для отладки другого Pico)
- Сброс флэш-памяти (установит флэш-память в пустое состояние)
Есть много других примеры можно найти здесь (код C).
Примечание: Я даю ссылку на самые новые файлы UF2 по состоянию на 30.01.2021 - в частности, MicroPython может быть обновлен, поэтому обязательно проверьте Страница начала работы с Raspberry Pi Pico.
MicroPython
Если перспектива полностью погрузиться в программирование на C кажется вам немного пугающей, вы можете начать с MicroPython. В этом случае на Raspberry Pi Pico предустанавливается некоторое программное обеспечение (файл MicroPython UF2), которое запускает небольшой интерпретатор Python.
Он называется MicroPython, потому что не поддерживает всю стандартную библиотеку Python 3. MicroPython предназначен для ограниченных сред, таких как Pico. В Pico всего 2 МБ оперативной памяти - это не позволит вместить все, что несет с собой Python 3. Проверьте Эта страница Github посвящена различиям между CPython и MicroPython. А вот и официальный Домашняя страница MicroPython, и официальная документация по MicroPython.
CircuitPython
Примечание: большинство инструкций также применимы к платам на базе CircuitPython RP2040 под Windows, например, Adafruit Feather RP2040, но вам нужно будет выполнить немного другие шаги - я укажу на различия в этой статье.
CircuitPython - это, по сути, вариант MicroPython, который разрабатывается компанией Adafruit.
Сама плата после прошивки будет называться по-другому в вашем диспетчере устройств (CircuitPython CDC Control) - и вам, конечно, понадобится другое программное обеспечение. Вот что вам понадобится для начала:
- Страница скачивания Adafruit Feather RP2040 (файл CircuitPython 7.0.0 UF2)
В этой статье мы также покажем вам, как установить библиотеки CircuitPython на устройства на базе RP2040 под Windows, а также как запускать и останавливать программы с помощью Thonny.
Что вы получите с MicroPython UF2?
После установки MicroPython на Pico вы сможете подключиться к нему с помощью последовательной консоли (мы покажем в этой статье) и начать писать Python-код на Pico.
Установка MicroPython на Pico
- Отключите питание от Pico
- Нажмите кнопку BOOTSEL и удерживайте ее нажатой.
- Подключите Pico к компьютеру с помощью кабеля microUSB - USB.
- теперь вы можете отпустить кнопку BOOTSEL
Теперь Pico должен быть виден в вашей файловой системе как RPI-RP2:
(Примечание: интересно, что такое RPI-RP1?)
Pico эмулирует флэш-накопитель FAT32, на котором хранятся два файла: INDEX.HTM и INFO_UF2.TXT.
В диспетчере дисков Windows Pico отображается как флэш-накопитель FAT емкостью 128 МБ.
Не совершайте ошибку, пытаясь сохранить какие-либо файлы на Pico. таким образом: они будут беззвучно удалены. Даже если кажется, что они записаны, это просто Windows кэширует операции - ваши файлы исчезнут! Я уже упоминал, что на самом деле у Pico всего 2 МБ Flash? Здесь бессовестно врут про 128 МБ (RP2040, кстати, должен поддерживать до 16 МБ флэш-памяти, AFAIK).
Это немного напоминает мне мою поездку в Индию, где я купил флешки емкостью 128 ГБ - они могли записать ваши данные в Нирвану. Когда я попытался вернуть флешку и получить свои деньги обратно, продавец уже исчез... вот такие приключения 🙂 .
Однако если вы скопируете на этот диск файл нужного типа - файл UF2, он будет распознан и записан.
Вы можете перетащить его из браузера после загрузки или скопировать и вставить. После завершения копирования Pico автоматически перезагрузится, и вы больше не увидите флэш-накопитель.
Примечание: Если вы хотите использовать CircuitPython, то, конечно же, используйте UF2-файл CircuitPython на этом шаге.
Теперь на Pico (после перезагрузки) работает MicroPython, который обеспечивает последовательный порт (COM-порт) через USB. (С технической точки зрения, это USB-устройство класса 02 = Коммуникации и контроль CDC и USB-устройства подкласса 02).
Подключение к Pico, Windows 10
Windows 10 упрощает подключение к Pico, поскольку необходимый драйвер COM-порта (usbser.inf) будет автоматически установлен и активирован.
Чтобы проверить, через какой COM-порт он подключен, откройте диспетчер устройств:
Здесь вы сможете увидеть новое последовательное устройство USB с номером COM-порта (который вам понадобится через секунду для подключения) в разделе Порты (COM & LPT).
Чтобы еще раз убедиться, что это действительно Pico, на котором запущен MicroPython, можно сделать следующее:
Нажмите на View (Просмотр) и выберите Devices by Container (Устройства по контейнерам):
Здесь вы увидите запись "Плата в режиме FS" с двумя узлами "Композитное устройство USB" и "Последовательное устройство USB (COM3)". COM3 очень важен, его нужно будет использовать для PuTTY (см. ниже).
Мы можем исследовать устройства дальше, щелкнув на них правой кнопкой мыши и выбрав соответствующий пункт свойств из контекстного меню. Свойства платы в режиме FS пусты:
Составное устройство USB показывает "Плата в режиме FS" в качестве описания устройства в сообщении шины:
Примечание: это Pico под управлением MicroPython. Когда вы перепрошьете его с другим программным обеспечением, здесь будут показаны другие результаты!
Само последовательное устройство USB покажет несколько интересных свойств:
Примечание: описание устройства платы будет "CircuitPython CDC Control" вместо "Board CDC", если вы используете CircuitPython.
Если вы знаете, что ищете, вам пригодятся идентификаторы оборудования (VID = идентификатор производителя и PID = идентификатор продукта):
VID_2E8A -> идентификатор поставщика 2E8A (в шестнадцатеричном формате) или 11914 (в десятичном исчислении), что составляет Raspberry Pi
PID_0005 -> идентификатор продукта 5который плата покажет при запуске MicroPython (по умолчанию используется идентификатор продукта 3)
Примечание: журнал отладки браузера Chrome
Эту информацию также можно получить с помощью браузера Chrome.
позволит вам увидеть подключенные в данный момент Устройства
Вернемся к Windows 10:
Как видно на скриншоте выше, Windows 10 автоматически установила драйвер usbser (USB Serial Driver), так что вы можете сразу же приступить к работе с Pico.
PuTTY
PuTTY - это клиент telnet / SSH. Вы будете использовать его для подключения к Pico и общения с REPL MicroPython. Загрузите PuTTY здесь. (Для большинства установок Windows 10 можно использовать 64-разрядный установщик MSI Windows).
Откройте PuTTY. Введите нужные настройки:
- Тип соединения должен быть установлен на Серийный
- Для параметра Serial Line (Последовательная линия) нужно установить значение, которое вы получили в результате проведенного выше исследования. В моем случае это COM3. В вашем случае это, скорее всего, будет что-то другое!
- Скорость пока можно оставить на 9600
Нажмите на кнопку Открыть, и откроется Терминал:
Чтобы получить начальную подсказку, нажмите Enter один раз.
Затем вы можете начать писать Python-код после подсказки, который будет немедленно интерпретирован. Попробуйте ввести классическое "Hello world":
print("Hello world!")
MicroPython ответит следующим образом
Привет, мир!
как и ожидалось 🙂
Теперь, когда первый контакт установлен, я желаю вам счастливого кодирования!
Thonny: Python IDE, работает с Pico!
Использование PuTTY не очень удобно для длительных сессий или когда вы хотите загрузить много кода в Pico. К счастью, приложение с открытым исходным кодом Thonny (которое по умолчанию установлено на Raspberry Pi OS) также доступно для Windows и включает в себя поддержку Pico (MicroPython и CircuitPython)
Шаг первый
Скачать Thonny можно здесь, и установите его
Шаг второй
Подключите Pico, как описано выше - теперь у него должен быть COM-номер - если хотите, можете проверить с помощью описанного выше метода PuTTY, можете ли вы связаться с Pico.
Шаг третий
Запустите Thonny и нажмите на кнопку Инструменты выберите Опции
Шаг четвертый: установить Pico в качестве интерпретатора
Перейдите на вкладку Переводчик. По умолчанию вы увидите этот экран:
Нажмите и выберите MicroPython (Raspberry Pi Pico).
Примечание: если вы используете CircuitPythonВместо этого вам нужно выбрать "CircuitPython (общий)" из этого выпадающего меню.
Вы можете оставить значение порта "пытаться определить порт автоматически" или задать конкретный порт (выше мы рассмотрели, как можно определить правильный номер порта).
Примечание: порт все еще должен отображаться в выпадающем списке, поэтому нелишним будет перепроверить, есть ли он там:
Я оставляю значение "пытаться определить порт автоматически". Нажмите OK, чтобы сохранить настройку.
Теперь ваш экран должен измениться на следующий:
Шаг пятый: тестирование
Теперь вы можете проверить связь с Pico.
Тип
print("Hello world")
введите в приглашение MicroPython и нажмите Enter
Вы увидите, что Pico отвечает вам.
Поздравляем, вы успешно подключили Thonny к Pico под Windows!
Более сложные скрипты: Мигание светодиода с помощью Thonny
REPL (read evaluate print loop), который вы только что видели, хорош, но для более сложных проектов мы хотели бы сначала войти в исходный текст или загрузить его из файла.
Именно для этого можно использовать верхнюю часть окна Thonny.
Введите свой код. В моем примере мы будем мигать встроенным светодиодом (который является аппаратным эквивалентом hello world!) и зацикливаться до бесконечности.
import time
from machine import Pin
print("Welcome to Pico example 2, blinking an LED")
led = Pin(25, Pin.OUT)
# For demo purposes, we have an infinite loop here
while True:
led.high()
time.sleep(0.5)
led.low()
time.sleep(0.5)
Обратите внимание на правильные отступы в Python (пробельные символы в Python используются для управления!).
Теперь нажмите на кнопку "Выполнить".
Thonny спросит вас, куда сохранить
Выберите Raspberry Pi Pico:
Я выбрал имя файла hello.py - Нажмите OK, чтобы сохранить его
После нажатия кнопки OK ваш код начнет выполняться. Встроенный светодиод Pico должен начать мигать, и вы увидите вывод в Shell:
Примечание: мне не пришлось вводить команду %Run -c $EDITOR_CONTENT, Thonny сделал это сам. Ниже приведен вывод из нашего кода.
CircuitPython на Thonny под Windows
Выполните те же шаги, но в качестве интерпретатора выберите CircuitPython (generic).
Раковина Thonny покажет вам другое подтверждение:
Windows 8.1
Windows 8.1 НЕ будет автоматически загружать драйвер последовательного интерфейса и покажет устройство в состоянии ошибки.
Примечание: при использовании CircuitPython имя устройства будет "CircuitPython CDC control". Процедура та же.
Вот как выглядят свойства платы CDC (Pico, на которой работает MicroPython):
В нем говорится, что драйверы для этого устройства не установлены (код 28).
Решением этой проблемы является Инструмент Zadigкоторую вы можете скачать бесплатно:
Внимание: Ряд вирусных сканеров сходятся во мнении, что в файле installer_x64.exe, содержащемся в Zadig 2.7, присутствует "Trojan.Tedy". Возможно, это ложная тревога, однако: я рекомендую использовать Zadig-2.5.exe вместо этого, который не выдал мне этих предупреждений (только что проверено во второй раз). Лучше перестраховаться, чем потом жалеть!
Задиг поможет вам установить общие драйверы USB для доступа к USB-устройствам.
В нашем случае нам нужен драйвер USB Serial (CDC).
Выберите Board CDC (Interface 0) в выпадающем меню, USB Serial (CDC) в другом поле. Нажмите на кнопку Установить драйвер.
После установки вы увидите, что драйвер теперь установлен на usbser (v1.0.0.0):
И вы сможете подключиться, как я уже описывал в Windows 10, используя правильный номер COM-порта:
примечание:
Пико/последовательный порт в Windows 7
По словам одного из покупателей, Задиг Помогла установка драйвера последовательного порта и в Windows 7, после чего Pico можно было использовать! Обязательно используйте Задиг 2.5Так как более новый Zadig 2.7 был отмечен моим вирусным сканером во время установки драйвера. (Не знаю почему, но лучше перестраховаться - старый работает).
Если вам нужно пошаговое руководство, посмотрите руководство для Windows 8.1 выше - на машине с Windows 8.1 все должно быть примерно так же.
Установка библиотек и программирование платы CircuitPython RP2040 в Windows
Если вы используете, например, Adafruit Feather RP2040, вы можете захотеть использовать CircuitPython на нем. У Adafruit есть NeoPixel RGB на него, для чего необходимо установить библиотеки в lib папку на устройстве.
(прим: скачать библиотеки здесь - щелкните на ссылке "Download Project Bundle").
Когда вы извлечете папку с пакетом проектов, вы увидите две разные подпапки с CircuitPython 6.x и CircuitPython 7.x
Здесь я использую версию CircuitPython 7.x, так как я прошил 7.0.0 Версия CircuitPython.
В проводнике вы заметите диск под названием "CIRCUITPY":
Сайт lib папка пуста при свежей установке CircuitPython. Используя проводник Windows, мы можем просто скопировать и вставить сюда файлы.
Скопируйте необходимые библиотеки из загруженной папки lib в папку lib CIRCUITPY:
Теперь мы также можем переписать файл code.py:
С помощью Thonny мы можем отредактировать и запустить файл code.py. Нажмите на иконку открытия в Thonny и выберите "Устройство CircuitPython" в диалоге "Откуда открыть":
Здесь вы можете открыть файл code.py:
Теперь ваше окно Thonny должно выглядеть примерно так:
Нажмите F5 на клавиатуре или щелкните значок "Выполнить".
Если всё прошло успешно, то светодиод NeoPixel RGB на вашем Adafruit Feather RP2040 теперь должен начать мигать разными цветами. Поздравляем 🙂 .
Теперь вы можете поиграть со скриптом - возможно, вы сможете изменить цвета или время между изменениями цвета? Или добавить другие функции.
Чтобы запустить измененный скрипт, нажмите Ctrl + C в оболочке (или выберите Run > Interrupt Execution в меню Thonny). Теперь вы можете снова загрузить свой скрипт.
Для отладки очень удобно то, что в Thonny вы получаете консольный вывод, так что вы можете использовать операторы print для вывода информации:
Adafruit CircuitPython Bundle
Adafruit предлагает удобную загрузку нескольких библиотек в ZIP-архиве. Загрузите соответствующий adafruit-circuitpython-bundle-7.x.-mpy или -6.x. mpy здесь. Вы можете установить несколько или все библиотеки, как обсуждалось выше, просто используя проводник Windows. Полная загрузка всех библиотек будет иметь размер около 1,2 МБ, в Adafruit Feather RP2040 достаточно места для этого. Копирование может занять пару минут.
Разные заметки
Могу ли я использовать процедуры, описанные в этом руководстве, для CircuitPython?
Безусловно, да. Например, вы можете использовать Zadig на Windows 8.1 (см. описание выше для подробностей. Используйте версию 2.5.730 Zadig!). Вы будете искать устройство "CircuitPython CDC control" вместо устройства "Board CDC".
Не удается установить драйвер с помощью Zadig?
Это может быть связано с антивирусным программным обеспечением. Возможно, это ложная тревога, но я не могу быть в этом уверен. Мой вирусный сканер (Bitdefender) говорит мне следующее:
"Die Datei C:\Users\Max\usb_driver\installer_x64.exe ist mit Gen:Variant.Tedy.11444 infiziert und wurde in die Quarantäne verschoben. Wir empfehlen die Durchführung eines System-Scans, um weitere Infektionen auszuschließen."
Ряд вирусных сканеров сходятся во мнении, что в файле installer_x64.exe (часть USB-драйвера) присутствует "Trojan.Tedy". Рекомендую попробовать использовать вместо него Zadig-2.5.exe. Которые вы можете скачать здесь. Я использовал Zadig-2.5 для установки последовательного USB-драйвера CircuitPython на мою установку Windows 8.1 (это моя основная машина).
Как остановить выполнение кода на Pico в Thonny?
Перейдите в оболочку и нажмите Ctrl+C. Это должно остановить выполнение текущего кода:
Повторяя предыдущие заявления в Тонни
Удобно выполнять одну и ту же команду повторно - нажмите клавишу вверх на клавиатуре в приглашении оболочки, чтобы вызвать историю предыдущих команд.
Как узнать, что Pi Pico отключен от Thonny?
При попытке запустить код вы получите сообщение об ошибке, примерно такое:
Это означает, что Thonny не может писать в последовательный порт, к которому должен подключаться Pico.
Ошибка автоматического поиска устройства в Thonny
Если вы получите следующую ошибку:
Не удалось найти устройство в автоматическом режиме.
Проверьте соединение (убедившись, что устройство не находится в режиме загрузчика) или выберите
"Настроить интерпретатор" в меню интерпретатора (правый нижний угол окна)
чтобы выбрать конкретный порт или другой интерпретатор.
Убедитесь, что вы выбрали правильный интерпретатор. Если на вашем устройстве используется CircuitPython, а не MicroPython, вам нужно выбрать CircuitPython (общий) в качестве переводчика в Thonny. Инструкции см. в соответствующей информации в этой статье.
Ваши советы по работе с Pico/MicroPython под Windows?
Сообщите нам в комментариях, если у вас есть другие советы по началу работы с Pico и MicroPython под Windows, мы обновим статью 🙂 .
Наслаждайтесь своим Pico и получайте удовольствие от удивительных проектов, которые вы можете сделать с его помощью!
Другие записи в блоге Pico на PiCockpit
Если вам понравилась эта статья, то, возможно, вам также будет интересно прочитать следующие:
У меня Win 8.1, и это единственный сайт, на котором есть решение проблемы COM. Большое спасибо.
Не могли бы вы поделиться ссылкой на статью, в которой есть решение для Board CDC в windows 8.1
Эта статья, которую вы читаете, описывает, как использовать Board CDC на Windows 8.1 - использовать инструмент Zadig в версии 2.5.
Спасибо, Windows 7 64 бит работает без проблем.
Большое спасибо за этот учебник!
Очень хороший учебник Вы ставите кофе на стол, как мы говорим в Польше, что означает без битья о кусты. Отлично!
Мне нужна помощь. Мои окна 11 просто показывают pico как "портативное устройство". Putty не может найти его из-за этого, поэтому я получаю ошибку, что он не может определить путь.
Не знаю, как справиться с этим.
Спасибо!
Это было отличное введение для меня! Спасибо!
Hola muy bueno, consulto x la inquietud que se me ha presentado
si despues de subir mi codigo a mi pi pico, y la coloco en una placa para que ejecute una tarea x,
если вы не являетесь пользователем, отсоедините pi pico от планшета и подключите к ПК или ноутбуку,
можно ли узнать код, который находится в пиктограмме, на примере Thonny, нажав на иконку abrir carpeta и выбрав abrir lo que esta in la pi pico?
Есть ли какой-нибудь способ сделать так, чтобы не читать лекций?
спасибо
Шпатлевка и zadig оба сработали для меня. Отличный учебник.