Начало работы с Raspberry Pi Pico с использованием языков программирования MicroPython и C


Плата Raspberry Pi Pico была выпущена только в прошлый четверг, и благодаря Cytron мы получили образец уже через несколько часов после выпуска. У нас было достаточно времени поэкспериментировать с платой, используя языки программирования MicroPython и C.

Для начала работы мы обратились к официальной документации. Однако, чтобы добиться того, что мы хотели сделать, а именно попеременно мигать светодиодами, нам пришлось немного потрудиться, поэтому представим вам наш опыт работы с Raspberry Pi Pico с использованием компьютера, работающего на операционной системе Ubuntu 20.04. Инструкции будут аналогичными для Windows и Mac OS.

Подготовка оборудования

Мы могли бы просто начать работу только с платы, но мы решили так же воспользоваться возможностью опробовать паяльник Pinecil Pine64, работающий от источника питания MINIX NEO P2 USB-C.

Паяльник работал отлично около минуты, а потом начались проблемы… Посмотрев на экран, мы увидели, что устройство перешло в спящий режим и температуру упала. Видимо, мы недостаточно сдвигали паяльник и, не обнаружив никакой активности, устройство погрузилось в спящий режим. Изменение чувствительности к движению или интервала сна может легко решить эту проблему.

Было бы обидно не использовать эти разъемы, поэтому мы вставили Raspberry Pi Pico в макет и добавили светодиод с сопутствующей схемой.

5 В подключен к VBUS (контакт 40), GND — к контакту 38, и мы решили использовать GPIO, ближайший к светодиоду, а именно GP15 (контакт 20). Маркировка GPIO на Raspberry Pi Pico отображается только на нижней части платы, поэтому, когда плата подключена к макетной плате, помогает распиновка.

На этом настройка оборудования завершена, и все, что нам нужно, это кабель Micro USB-USB-A для подключения платы к ноутбуку.

MicroPython на Raspberry Pi Pico

Сначала мы должны скопировать прошивку MicroPython на плату. Для этого мы можем загрузить последнюю версию прошивки из руководства по началу работы (pico_micropython_20210121.uf2 на момент обзора), затем нажать клавишу BOOTSEL на плате при подключении к компьютеру с портом USB и отпустить клавишу после подключения. Мы так и сделали, но ничего не произошло. Это потому, что мы использовали USB-кабель велосипедной фары, у которого нет линии передачи данных … Поэтому мы выбрали правильный кабель micro USB — USB-Type-A, и Raspberry Pi Pico был правильно распознан на нашем ноутбуке:

.. и установлен как запоминающее устройство RPI-RP2.

После копирования файла pico_micropython_20210121.uf2 на диск он автоматически отключается, и плата Pico перезагружается как последовательное устройство:

На данный момент руководство по началу работы на веб-сайте Raspberry Pi не очень информативно, поэтому переключаемся на документацию Python SDK (PDF).

В документации для последовательной консоли используется minicom, но мы предпочитаем Bootterm, так как его проще использовать. В любом случае, если вы программируете плату в Linux, убедитесь, что ваш текущий пользователь добавлен в группу dialout, иначе вам нужно будет запускать все программы как root:

Bootterm правильно определил порт ttyACM0, поэтому просто запускаем «bt» для доступа к интерфейсу MicroPython REPL и набираем несколько команд MicroPython.

Нам удалось включить встроенный светодиод (GP25), но когда мы сделали то же самое для светодиода на макете (GP15), это не сработало. Перепроверяем схему и используем мультиметр, чтобы проверить уровни напряжения, и обнаруживаем, что GP25 все еще находится на низком уровне. Поискав в Интернете, мы поняли, что GP15 отключен в CircuitPython, потому что это мешает работе интерфейса USB.

Это сделано специально, GP15 не должен использоваться, он используется внутренним периферийным USB-устройством.

Мы полагаем, что то же самое произойдет и с MicroPython, поэтому переключаемся на соседний контакт (GP14, контакт 19)

и это сработало! Если вы хотите узнать больше об API MicroPyton, нажмите Ctrl + B и введите help ():

Мы можем выйти из bootterm, нажав «Ctrl +]», а затем «q». Но что, если мы хотим сохранить нашу программу Python на плате и запускать ее автоматически? Возможно, что мы что-то пропустили, но в документации Python SDK об этом нет ничего, поэтому нам пришлось перейти к третьему руководству, чтобы узнать, как лучше всего использовать Thonny.

Ubuntu 20.04 действительно имеет Thonny 3.2.7 в своем репозитории, который мы можем установить с помощью sudo apt install thonny, но он не поддерживает Raspberry Pi Pico, поэтому устанавливаем последнюю версию программы (v3.3.3) с помощью pip3:

Затем переходим в «Выполнить» -> «Выбрать интерпретатор»… чтобы выбрать «MicroPython (Raspberry Pi Pico)».

В пользовательском интерфейсе вводим код, чтобы выключить встроенный светодиод:

Чтобы попеременно мигать встроенным светодиодом и светодиодом макета с интервалом в одну секунду, мы скопировали и изменили некоторый код из документации Python SDK:

Сохраняем файл как blink.py на своем ПК, все работает нормально. Но если вы хотите запустить код без ПК, его можно сохранить на Raspberry Pi Pico. Щелкните Файл-> Сохранить копию, затем кнопку «Raspberry Pi Pico»,

и сохраните программу как main.py. Теперь вы можете запускать программу автоматически, подключив плату к любому источнику питания USB.

C / C ++ на Raspberry Pi Pico

Давайте попробуем «C / C ++ SDK», который в основном состоит из языка C, за исключением некоторых инструментов, написанных на C ++. Мы можем вернуться к официальной документации по началу работы, где нас просят скопировать blink.uf2 в Raspberry Pi Pico в режиме загрузки, и мигает встроенным светодиодом. Все работает, и это очень просто, т.к. двоичный файл предварительно собран, но мы хотим изменить исходный код и создать собственный двоичный файл, чтобы мигал как внутренний, так и внешний светодиод.

Поэтому нам нужно установить C/C++ SDK, зависимости и примеры следующим образом:

Мы можем взглянуть на пример мигания в pico-examples / blink / blink.c:

Хорошо. Прежде чем изменять его, мы должны попытаться собрать его, сначала экспортировав путь к SDK и настроив сборку:

Теперь мы можем войти в каталог blink (новый, созданный cmake) и запустить make:

Теперь у нас есть куча файлов:

Наиболее важными из них являются blink.uf2, который мы можем скопировать в Raspberry Pi Pico для запуска программы, и blink.elf, который может использоваться отладчиком (OpenOCD + GDB), но это выходит за рамки данного руководства по началу работы.

Теперь, когда мы знаем, как скомпилировать программу на C для платы Pico, давайте изменим пример blink.c, чтобы поочередно включать и выключать встроенный светодиод и внешний светодиод, подключенный к контакту 14:

и заново соберем программу:

Затем войдем в режим загрузки и скопируем blink.uf2 на плату, и успех!

Мы можем достичь тех же результатов с помощью программы на C или Python. Мы рассмотрим интерфейс PIO (программируемый ввод-вывод) RP2040 в одном из следующих постов, поскольку, по нашему мнению, это больше всего отличает Raspberry Pi RP2040 от других микроконтроллеров.

Мы хотели бы поблагодарить Cytron за отправку Raspberry Pi Pico на рассмотрение. Если вы находитесь в АСЕАН, вы можете приобрести плату в их магазине за 4,98 доллара США, или, если у вас есть время, вы можете заказать несущую плату за 5 долларов для Raspberry Pi Pico по той же цене с уже припаянной платой, отправки которой, как ожидается, начнутся после 10-го февраля и будут доступны во всем мире, а не только для стран АСЕАН.

Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.

Оригинал статьи вы можете прочитать здесь.

5 1 vote
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Inline Feedbacks
View all comments