Отладочная плата PyBoard v1.1


Всем привет. Сегодня хочу рассказать про интересную на мой взгляд плату PyBoard v1.1. А интересна она тем, что для ее программирования используется язык Python 3. За подробностями прошу под кат.

Pyboard — это Open Source проект, поставляемый под MIT лицензией.
В репозитории на GitLab можно найти как аппаратную часть, так и программную.

В основе программной части этой платы используется MicroPython, который представляет из себя Python, оптимизированный для работы на 32-битных ARM микроконтроллерах.

Как и у многих интересных проектов путь PyBoard'а начался с кикстартера.

Основные предназначения данной платы: возможность людям, которые не хотят погружаться в ассемблер/С/С++ разрабатывать небольшие устройства, а так же плата прекрасно подходит для обучения детей. Ведь считается, что Python находится на втором месте по порогу вхождения после Scratch, при чем детям, которые умеют писать на Scratch перейти на Python будет очень легко.

Вот для обучения я и решил заказать парочку плат. После заказа посылка пришла на удивление очень быстро (15 дней, что для моего города довольно большая редкость).

Упакованы платы были плохо, чудо, что все пришло в целости и сохранности



Сама плата имеет относительно небольшие размеры, выглядит довольно аккуратно




В сравнении с Arduino Uno и Arduino Pro mini



На плате присутствуют разъемы для подключения Micro USB кабеля и MicroSD карты.


Что удивительно, у меня была MicroSD карта, которая вышла из строя и ни одно устройство ее не видело, но стоило подключить эту MicroSD карту через плату, как она прекрасно прочиталась.

Сердцем платы является микроконтроллер Stm32f405 (ARM 32-bit Cortex-M4)


Распиновка платы


При подключении PyBoard к компьютеру он распознается как flash память (если подключить внешнюю  MicroSD карту, то вместо встроенной в борд памяти будет доступна внешняя память)


По умолчанию на карте памяти находятся 4 файла.

boot.py
Этот файл стартует первым. Здесь мы указываем главный исполняемый файл, можем попутно загрузить драйвер клавиатуры и мыши (VCP+HID) или флешки (VCP+MSC). Если явно не указываем main скрипт, он загружает main.py автоматом.
boot.py
# boot.py -- run on boot-up
# can run arbitrary Python, but best to keep it minimal

import machine
import pyb
#pyb.main('main.py') # main script to run after this one
#pyb.usb_mode('VCP+MSC') # act as a serial and a storage device
#pyb.usb_mode('VCP+HID') # act as a serial device and a mouse


main.py
Основной файл, куда будем писать нашу программу.
main.py

# main.py -- put your code here!


pybcdc.inf
Драйвер для возможности работать с платой через консоль в OS Windows
pybcdc.inf

key = USB_VID val = f055
key = USB_PID_CDC_MSC val = 9800
key = USB_PID_CDC_HID val = 9801
key = USB_PID_CDC val = 9802
key = USB_PID_MSC val = 9803
key = USB_PID_CDC2_MSC val = 9804
; Windows USB CDC ACM Setup File
; Based on INF files which were:
;     Copyright © 2000 Microsoft Corporation
;     Copyright © 2007 Microchip Technology Inc.
; Likely to be covered by the MLPL as found at:
;    <http://msdn.microsoft.com/en-us/cc300389.aspx#MLPL>.

[Version]
Signature="$Windows NT$"
Class=Ports
ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}
Provider=%MFGNAME%
LayoutFile=layout.inf
DriverVer=03/11/2010,5.1.2600.3

[Manufacturer]
%MFGNAME%=DeviceList, NTamd64

[DestinationDirs]
DefaultDestDir=12

;---------------------------------------------------------------------
; Windows 2000/XP/Server2003/Vista/Server2008/7 - 32bit Sections

[DriverInstall.nt]
include=mdmcpq.inf
CopyFiles=DriverCopyFiles.nt
AddReg=DriverInstall.nt.AddReg

[DriverCopyFiles.nt]
usbser.sys,,,0x20

[DriverInstall.nt.AddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,usbser.sys
HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"

[DriverInstall.nt.Services]
AddService=usbser, 0x00000002, DriverService.nt

[DriverService.nt]
DisplayName=%SERVICE%
ServiceType=1
StartType=3
ErrorControl=1
ServiceBinary=%12%\usbser.sys

;---------------------------------------------------------------------
;  Windows XP/Server2003/Vista/Server2008/7 - 64bit Sections

[DriverInstall.NTamd64]
include=mdmcpq.inf
CopyFiles=DriverCopyFiles.NTamd64
AddReg=DriverInstall.NTamd64.AddReg

[DriverCopyFiles.NTamd64]
usbser.sys,,,0x20

[DriverInstall.NTamd64.AddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,usbser.sys
HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"

[DriverInstall.NTamd64.Services]
AddService=usbser, 0x00000002, DriverService.NTamd64

[DriverService.NTamd64]
DisplayName=%SERVICE%
ServiceType=1
StartType=3
ErrorControl=1
ServiceBinary=%12%\usbser.sys

;---------------------------------------------------------------------
;  Vendor and Product ID Definitions

[SourceDisksFiles]
[SourceDisksNames]
[DeviceList]
%DESCRIPTION%=DriverInstall, USB\VID_f055&PID_9800&MI_00, USB\VID_f055&PID_9800&MI_01, USB\VID_f055&PID_9801&MI_00, USB\VID_f055&PID_9801&MI_01, USB\VID_f055&PID_9802

[DeviceList.NTamd64]
%DESCRIPTION%=DriverInstall, USB\VID_f055&PID_9800&MI_00, USB\VID_f055&PID_9800&MI_01, USB\VID_f055&PID_9801&MI_00, USB\VID_f055&PID_9801&MI_01, USB\VID_f055&PID_9802

;---------------------------------------------------------------------
;  String Definitions

[Strings]
MFGFILENAME="pybcdc"
MFGNAME="MicroPython"
DESCRIPTION="Pyboard USB Comm Port"
SERVICE="USB Serial Driver"



README.txt
Краткая инструкция по работе. Где рассказывается, что писать код нужно в файл main.py. Ну а для работы через консоль, объясняется, как это делать. Для Linux и MaxOS X красота, достаточно выполнить команду:

для Linux: screen /dev/ttyACM0
для MacOS X: screen /dev/tty.usbmodem*
для Windows же нужно открыть «Диспетчер устройств», найти «неизвестное устройство» и указать путь к драйверу (pybcdc.inf'). После чего работать с платой через Putty.

README.txt

This is a MicroPython board

You can get started right away by writing your Python code in 'main.py'.

For a serial prompt:
 - Windows: you need to go to 'Device manager', right click on the unknown device,
   then update the driver software, using the 'pybcdc.inf' file found on this drive.
   Then use a terminal program like Hyperterminal or putty.
 - Mac OS X: use the command: screen /dev/tty.usbmodem*
 - Linux: use the command: screen /dev/ttyACM0

Please visit http://micropython.org/help/ for further help.



В общем под MacOS все заработало без проблем


А вот в Windows как и обещали, немного посложнее.

Делаем, как написано в readme
Открывает диспетчер устройств и находим наше недоустановленное устройство

Открываем его свойства и нажимаем «обновить драйвер»

Далее «поиск и установка драйверов вручную»

Указываем путь к появившейся флешке

Так как драйвер не подписан, соглашаемся его установить

И все, у нас появилось последовательное устройство

Теперь смотрим, какой этому устройству назначен порт (в моем случае это COM9)

Открываем Putty  и указываем наш порт

Получилось!!!



На плата имеется 4 светодиода и одна пользовательская кнопка, которыми можно побаловаться.

Открываем документацию docs.micropython.org/en/latest/pyboard/quickref.html#internal-leds


и пробуем сначала через консоль:

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

После замены файлов рекомендую перед ресетом безопасно извлекать из системы, в противном случае у меня часто бывало, файлы не сохранялись.

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

Если у вас платы нет, а попробовать хочется, на сайте проекта есть эмулятор с минимальным набором периферии.


Полезные ссылки:
Планирую купить +41 Добавить в избранное +62 +99
+
avatar
0
Интересный набор, у меня как раз лежит такой же камень, купленный про запас, надо бы покопать его на возможность воссоздания подобной платы дома.
+
avatar
+9
Эмм… я правильно понимаю, что речь о плате на STM32F405 по цене двух плат на STM32F407? А в чем прикол, если исходники есть даже под PIC16, не говоря уж про ESP32?
+
avatar
+2
Согласен. Дорого. Можно блек на 407 за 9 баксов взять и не париться.
+
avatar
0
Минусатор — обоснуй в чем я не прав.
+
avatar
+1
Да. Проще купить платку: aliexpress.com/item/4000069263843.html и плату с MicroSD разьемом.

Будет гораздо дешевле.
+
avatar
0
Кстати да, сейчас валом пошли дешевые платы на F401/411 в том же формате, в каком раньше появились F103.

А за 15 баксов можно купить плату на STM32H750, причем уже с MicroSD разъемом на борту — а H7 это все-таки зверь классом заметно повыше чем F4.
Ну или, как писал ниже, OrangePi Zero стоит 10 баксов. Кушает, правда, поболе — но лишнюю периферию можно погасить, а частоту загнать вниз. Зато это вообще уже полноценный комп.
+
avatar
  • zhevak
  • 05 декабря 2019, 11:50
-8
+
avatar
  • fps
  • 05 декабря 2019, 12:15
+3
ССЗБ
У меня по этой ссылке вполне вменяемый текст:
+
avatar
  • login123
  • 05 декабря 2019, 19:52
+3
А ардуина ещё более слабая, но прекрасно продаётся до сих пор.
А прикол в том, что тут воткнул и всё работает (кроме винды, хотя и в ней можно без установки дров обойтись, вроде как).
— Без прошивки невесть откуда берущимися утилитами.
— Без дополнительных конверторов.
— Без паяльника.
Порог вхождения, эта штука называется, и за него платят. Если вы что-то умеете, то это ещё не значит, что это умеют все.
+
avatar
  • Ivan_113
  • 04 декабря 2019, 22:14
+1
Данная плата урежет возможности f4 до avr
Upd. Не плата, конечно, а питон.
+
avatar
  • vint_x
  • 06 декабря 2019, 10:42
+1
Все верно, даже на секунду задуматься о процессах, которые происходят в МК (исходники не изучал): при старте загружаются файлы питона в память, далее запускается интерпретатор, который переводит питонячий язык (не типизированный к тому же) в набор инструкций контроллера и загружает в память, попутно реализует прерывания по последовательному порту что бы поддерживать storage и консоль. Собственно на видео видно, как после ресета плата относительно долго стартует. Если обратить внимание на видео с попыткой программировать, первый фрагмент, где при запуске светодиоды по очереди загораются, в определенный момент происходит лаг с морганием, это МК отвлекся на какое то прерывание и не смог обеспечить точную задержку в 100мс, которая скорее всего реализуется с помощью цикла с учетом скорости МК. Как я и написал — основное предназначение платы — возможность людям без знания низкоуровневых языков почувствовать себя ембеддед разработчиками (смешно конечно, на питоне эмбеддед разработчики, но все же), а так же для обучения детей, которым рано еще объяснять, что такое указатели, как работают регистры и что такое типы данных. Для серьезных разработок этот подход определенно не годится.
Ну а в плане регресса производительности, это вечный компромисс между производительностью и удобством. К примеру берем AVR, пишем низкоуровневый код и все работает здорово, берем плату помощнее и задачи уже посложнее, ставим RTOS, перфоманс немного упал, но зато теперь мы не мучаемся с управлением процессами, имеем многопоточность. Далее задача усложнилась, берем полноценную ОС Linux, перфоманс еще сильнее упал, но зато на порядок выросло удобство. В общем, оперируя этими компромиссами и приходим к решению ставить те или иные контроллеры и использовать те или иные программные средства. Ну а что касается этой платы, она вообще не для разработки, а все же больше как игрушка, с которой можно потренироваться над написанием алгоритмов, а потом уже попробовать ардуино и далее.
+
avatar
  • kvas
  • 04 декабря 2019, 22:26
+1
У меня дома wemos d1 mini перешитые в micropython второй год в систему мониторинга температуру отправляют. Тоже было интересно поиграть. И с вайфаем)
+
avatar
0
Аксакалы говорят, что питон это очень тяжело для микроконтролеров.
+
avatar
  • Bald
  • 04 декабря 2019, 23:08
+3
Конечно тяжеловато. Получается что в плате живёт сам питон, что б выполнять программу пользователя. А си компилируется в машинный код, ему достаточно самого микроконтроллера
+
avatar
+1
Тоже из принципа никогда это не куплю. Сегодня они притащили в микроконтроллер питона, завтра притащат HTML с CSS. Послезавтра восьмиядерный микроконтроллер со ста ваттами потребления будет 5 минут выводить таблицу умножения 10х10.
+
avatar
  • smasters
  • 04 декабря 2019, 23:12
+1
Раз уж Вы на пакете фамилию потёрли, то укажу, что в скриншоте линуксовской консоли (да и в видео тоже) она присутствует…
+
avatar
  • falcon99
  • 05 декабря 2019, 06:31
+2
Ну там не только фамилия потерта, но и улица с домом и квартирой. А вот их на скриншоте и в видео нет
Так что все нормально, продолжайте наблюдение)))
+
avatar
  • Alex3k
  • 05 декабря 2019, 07:03
+1
Вроде как по треку вся эта информация доступна :)
+
avatar
+2
Все равно Саров колючкой по периметру обнесен. В гости приехать не получится.
+
avatar
-1
+
avatar
  • Konokrad
  • 05 декабря 2019, 00:42
+5
ESP с костыльным SDK, которая лопатит кучу пустого кода из-за этого, теперь на STM этот же подход распространяют. Благо что большинство решаемых ими задач могли бы уместиться в Тиньку и та бы справилась.
Но! надо изучать «сверхсложный» Си.
+
avatar
  • rexen
  • 06 декабря 2019, 11:11
+1
Это беда современного мира. «Microsoft Office 97» отлично работал на древних-древних третьих Пентиумах. И делал он РОВНО ТУ ЖЕ функцию, какую сейчас делает Офис 2017. Но последнему подавай многоядерники с ГигаБайтами…

«Индусский код» (и прочие приколы типа Ардуины и сабжа с Питоном) процветают в современном мире из-за дешевизны железа. Процы нынче обладают избыточной производительностью, а толкового прогаммиста нужно не один год обучать и натаскивать — люди как стоили много денег, так и продолжают — мозг закону Мура не подчиняется.
+
avatar
  • Ivan_113
  • 06 декабря 2019, 11:29
0
Не соглашусь. В 97 экселе нету битовых операций. Когда очень понадобилось, пришлось последний офис ставить.
(хотя в остальном, конечно правы. Не стоят битовые операции тех ресурсов, которое требует современное ПО, но это уже из разряда маркетинга — нужно создавать спрос на новое железо)
+
avatar
  • Konokrad
  • 12 декабря 2019, 17:36
0
с битовыми операциями Вы попадаете в редкие 0.5% пользователей. Подавляющее большинство даже имеющиеся ресурсы 97 офиса по расчетам не используют. Максимум сложить колонки, вывести долю и нарисовать график
+
avatar
  • vint_x
  • 06 декабря 2019, 11:32
+4
У меня перед глазами был один показательный пример.
В начале 90х годов на прошлой работе отдел программистов занимался разработкой программируемого логического контроллера. 10 лет его делали. Он был крутой, ядро линукса запускалось даже на довольно тухлых процессорах, с помощью графики получили некий аналог окон, компилятор, пошаговый отладчик, редактор графических схем. Это был действительно крутой проект. А знаете, почему он не выстрелил? К тому времени, как его закончили, появились мощные железки, на которые можно было накатить десктопную линуху, цветные формы и т.п. Они потратили кучу времени на оптимизацию, которая в итоге никому оказалась не нужна. Вот сейчас мы и имеем высокоуровневые языки, фреймверки, которые жрут памяти как не в себя, но позволяют на порядок а то и несолкько ускорить процесс разработки. Ведь мы все куда то торопимся. Но, если быть честными, мы так привыкли к красивому интерфейсу, за который нужно расплачиваться соответствующим железом
+
avatar
  • pc63
  • 07 декабря 2019, 13:38
0
А потом не смогут перейти на 7нм процесс, или на 5нм. (Итак уже за уши притянули способ измерения техпроцесса чтобы уложился в эмпирическое правило Мура. ) И вот тогда вспомним этих ребят добрым словом…
+
avatar
  • Acheron
  • 05 декабря 2019, 02:03
0
К слову сказать, код VETERANALI еще применяется на эту плату.
Но вот что-то я не нахожу даже дешевых wi-fi модулей для этой платы. Без периферии это как-то не очень интересно.
+
avatar
  • Aahz
  • 05 декабря 2019, 12:27
0
Зачем отдельный модуль? MicroPython сервер можно поставить на ESP32.
+
avatar
  • Acheron
  • 05 декабря 2019, 13:19
0
Это вот такой, например? — aliexpress.com/item/32802431728.html
+
avatar
  • fps
  • 05 декабря 2019, 14:55
0
Да.
И даже вот на такой: aliexpress.com/item/32890327433.html
+
avatar
0
Лучше взятьTEENSY 4.0. Скорость синтетики впечатляет

+
avatar
0
ценник на эту TEENSY совсем не юношеский какой-то…
+
avatar
  • fps
  • 05 декабря 2019, 08:57
0
Просто интересно, для какого конкретно применения этой платы вам не хватает её скорости?
+
avatar
+2
Если мы говорим про 15 баксов и python, то практически в габаритах обозреваемого сабжа получается Orange Pi Zero (10 баксов сам и 5 доставка), а это все-таки СОВСЕМ другой уровень: полноценный linux и полноценный python безо всяких скидок на «микро».
+
avatar
  • Psh
  • 05 декабря 2019, 15:04
+2
Энергопотребление?
+
avatar
  • rexen
  • 06 декабря 2019, 11:21
-1
Сколько? От 2 до 5 Вт? Сколько копеек вы там сэкономите на счётчике? Или вам реально нужен четырёхядерник с питанием от батареек? Может как-то адекватно нужно железо подбирать под нужды? Малинки-апельсинки как-то болше в стационаре используют — под всякие эмуляторы, медиа-комбайны, умные дома и т.п.

Ну а вообще-то эти процы и в планшеты ставят. И литий их вполне тащит.
+
avatar
  • fps
  • 05 декабря 2019, 07:19
+10
MicroPython штатно ставится и прекрасно работает на ESP8266 за $1.5
+
avatar
  • Johnny
  • 05 декабря 2019, 09:17
+4
только за эту сумму порог вхождения слегка увеличится)
+
avatar
  • stdm
  • 05 декабря 2019, 14:11
0
Крайне незначительно, прошить ЕСП питоном — пара строчек с командами