Всем привет. Сегодня хочу рассказать про интересную на мой взгляд плату 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
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 светодиода и одна пользовательская кнопка, которыми можно побаловаться.
После замены файлов рекомендую перед ресетом безопасно извлекать из системы, в противном случае у меня часто бывало, файлы не сохранялись.
На этом все. Плата однозначно крутая, рекомендую попробовать. Она не годится для серьезных разработок, но для прототипирования мелких вещей очень даже хороша.
Если у вас платы нет, а попробовать хочется, на сайте проекта есть эмулятор с минимальным набором периферии.
Эмм… я правильно понимаю, что речь о плате на STM32F405 по цене двух плат на STM32F407? А в чем прикол, если исходники есть даже под PIC16, не говоря уж про ESP32?
Кстати да, сейчас валом пошли дешевые платы на F401/411 в том же формате, в каком раньше появились F103.
А за 15 баксов можно купить плату на STM32H750, причем уже с MicroSD разъемом на борту — а H7 это все-таки зверь классом заметно повыше чем F4.
Ну или, как писал ниже, OrangePi Zero стоит 10 баксов. Кушает, правда, поболе — но лишнюю периферию можно погасить, а частоту загнать вниз. Зато это вообще уже полноценный комп.
А ардуина ещё более слабая, но прекрасно продаётся до сих пор.
А прикол в том, что тут воткнул и всё работает (кроме винды, хотя и в ней можно без установки дров обойтись, вроде как).
— Без прошивки невесть откуда берущимися утилитами.
— Без дополнительных конверторов.
— Без паяльника.
Порог вхождения, эта штука называется, и за него платят. Если вы что-то умеете, то это ещё не значит, что это умеют все.
Все верно, даже на секунду задуматься о процессах, которые происходят в МК (исходники не изучал): при старте загружаются файлы питона в память, далее запускается интерпретатор, который переводит питонячий язык (не типизированный к тому же) в набор инструкций контроллера и загружает в память, попутно реализует прерывания по последовательному порту что бы поддерживать storage и консоль. Собственно на видео видно, как после ресета плата относительно долго стартует. Если обратить внимание на видео с попыткой программировать, первый фрагмент, где при запуске светодиоды по очереди загораются, в определенный момент происходит лаг с морганием, это МК отвлекся на какое то прерывание и не смог обеспечить точную задержку в 100мс, которая скорее всего реализуется с помощью цикла с учетом скорости МК. Как я и написал — основное предназначение платы — возможность людям без знания низкоуровневых языков почувствовать себя ембеддед разработчиками (смешно конечно, на питоне эмбеддед разработчики, но все же), а так же для обучения детей, которым рано еще объяснять, что такое указатели, как работают регистры и что такое типы данных. Для серьезных разработок этот подход определенно не годится.
Ну а в плане регресса производительности, это вечный компромисс между производительностью и удобством. К примеру берем AVR, пишем низкоуровневый код и все работает здорово, берем плату помощнее и задачи уже посложнее, ставим RTOS, перфоманс немного упал, но зато теперь мы не мучаемся с управлением процессами, имеем многопоточность. Далее задача усложнилась, берем полноценную ОС Linux, перфоманс еще сильнее упал, но зато на порядок выросло удобство. В общем, оперируя этими компромиссами и приходим к решению ставить те или иные контроллеры и использовать те или иные программные средства. Ну а что касается этой платы, она вообще не для разработки, а все же больше как игрушка, с которой можно потренироваться над написанием алгоритмов, а потом уже попробовать ардуино и далее.
Конечно тяжеловато. Получается что в плате живёт сам питон, что б выполнять программу пользователя. А си компилируется в машинный код, ему достаточно самого микроконтроллера
Тоже из принципа никогда это не куплю. Сегодня они притащили в микроконтроллер питона, завтра притащат HTML с CSS. Послезавтра восьмиядерный микроконтроллер со ста ваттами потребления будет 5 минут выводить таблицу умножения 10х10.
ESP с костыльным SDK, которая лопатит кучу пустого кода из-за этого, теперь на STM этот же подход распространяют. Благо что большинство решаемых ими задач могли бы уместиться в Тиньку и та бы справилась.
Но! надо изучать «сверхсложный» Си.
Это беда современного мира. «Microsoft Office 97» отлично работал на древних-древних третьих Пентиумах. И делал он РОВНО ТУ ЖЕ функцию, какую сейчас делает Офис 2017. Но последнему подавай многоядерники с ГигаБайтами…
«Индусский код» (и прочие приколы типа Ардуины и сабжа с Питоном) процветают в современном мире из-за дешевизны железа. Процы нынче обладают избыточной производительностью, а толкового прогаммиста нужно не один год обучать и натаскивать — люди как стоили много денег, так и продолжают — мозг закону Мура не подчиняется.
Не соглашусь. В 97 экселе нету битовых операций. Когда очень понадобилось, пришлось последний офис ставить.
(хотя в остальном, конечно правы. Не стоят битовые операции тех ресурсов, которое требует современное ПО, но это уже из разряда маркетинга — нужно создавать спрос на новое железо)
с битовыми операциями Вы попадаете в редкие 0.5% пользователей. Подавляющее большинство даже имеющиеся ресурсы 97 офиса по расчетам не используют. Максимум сложить колонки, вывести долю и нарисовать график
У меня перед глазами был один показательный пример.
В начале 90х годов на прошлой работе отдел программистов занимался разработкой программируемого логического контроллера. 10 лет его делали. Он был крутой, ядро линукса запускалось даже на довольно тухлых процессорах, с помощью графики получили некий аналог окон, компилятор, пошаговый отладчик, редактор графических схем. Это был действительно крутой проект. А знаете, почему он не выстрелил? К тому времени, как его закончили, появились мощные железки, на которые можно было накатить десктопную линуху, цветные формы и т.п. Они потратили кучу времени на оптимизацию, которая в итоге никому оказалась не нужна. Вот сейчас мы и имеем высокоуровневые языки, фреймверки, которые жрут памяти как не в себя, но позволяют на порядок а то и несолкько ускорить процесс разработки. Ведь мы все куда то торопимся. Но, если быть честными, мы так привыкли к красивому интерфейсу, за который нужно расплачиваться соответствующим железом
А потом не смогут перейти на 7нм процесс, или на 5нм. (Итак уже за уши притянули способ измерения техпроцесса чтобы уложился в эмпирическое правило Мура. ) И вот тогда вспомним этих ребят добрым словом…
К слову сказать, код VETERANALI еще применяется на эту плату.
Но вот что-то я не нахожу даже дешевых wi-fi модулей для этой платы. Без периферии это как-то не очень интересно.
Если мы говорим про 15 баксов и python, то практически в габаритах обозреваемого сабжа получается Orange Pi Zero (10 баксов сам и 5 доставка), а это все-таки СОВСЕМ другой уровень: полноценный linux и полноценный python безо всяких скидок на «микро».
Сколько? От 2 до 5 Вт? Сколько копеек вы там сэкономите на счётчике? Или вам реально нужен четырёхядерник с питанием от батареек? Может как-то адекватно нужно железо подбирать под нужды? Малинки-апельсинки как-то болше в стационаре используют — под всякие эмуляторы, медиа-комбайны, умные дома и т.п.
Ну а вообще-то эти процы и в планшеты ставят. И литий их вполне тащит.
Будет гораздо дешевле.
А за 15 баксов можно купить плату на STM32H750, причем уже с MicroSD разъемом на борту — а H7 это все-таки зверь классом заметно повыше чем F4.
Ну или, как писал ниже, OrangePi Zero стоит 10 баксов. Кушает, правда, поболе — но лишнюю периферию можно погасить, а частоту загнать вниз. Зато это вообще уже полноценный комп.
Первый момент — цена.
Да. Давненько я не заходил в лавочку к дядюшке Ляо… 200 рублей — это… это соизмеримо с ценой 5 литров бензина, а не всего бака.
Второй — после прочтения строки
А уже более не смог читать китайско-русский перевод. Это надо отлить в граните!
У меня по этой ссылке вполне вменяемый текст:
А прикол в том, что тут воткнул и всё работает (кроме винды, хотя и в ней можно без установки дров обойтись, вроде как).
— Без прошивки невесть откуда берущимися утилитами.
— Без дополнительных конверторов.
— Без паяльника.
Порог вхождения, эта штука называется, и за него платят. Если вы что-то умеете, то это ещё не значит, что это умеют все.
Upd. Не плата, конечно, а питон.
Ну а в плане регресса производительности, это вечный компромисс между производительностью и удобством. К примеру берем AVR, пишем низкоуровневый код и все работает здорово, берем плату помощнее и задачи уже посложнее, ставим RTOS, перфоманс немного упал, но зато теперь мы не мучаемся с управлением процессами, имеем многопоточность. Далее задача усложнилась, берем полноценную ОС Linux, перфоманс еще сильнее упал, но зато на порядок выросло удобство. В общем, оперируя этими компромиссами и приходим к решению ставить те или иные контроллеры и использовать те или иные программные средства. Ну а что касается этой платы, она вообще не для разработки, а все же больше как игрушка, с которой можно потренироваться над написанием алгоритмов, а потом уже попробовать ардуино и далее.
Так что все нормально, продолжайте наблюдение)))
Но! надо изучать «сверхсложный» Си.
«Индусский код» (и прочие приколы типа Ардуины и сабжа с Питоном) процветают в современном мире из-за дешевизны железа. Процы нынче обладают избыточной производительностью, а толкового прогаммиста нужно не один год обучать и натаскивать — люди как стоили много денег, так и продолжают — мозг закону Мура не подчиняется.
(хотя в остальном, конечно правы. Не стоят битовые операции тех ресурсов, которое требует современное ПО, но это уже из разряда маркетинга — нужно создавать спрос на новое железо)
В начале 90х годов на прошлой работе отдел программистов занимался разработкой программируемого логического контроллера. 10 лет его делали. Он был крутой, ядро линукса запускалось даже на довольно тухлых процессорах, с помощью графики получили некий аналог окон, компилятор, пошаговый отладчик, редактор графических схем. Это был действительно крутой проект. А знаете, почему он не выстрелил? К тому времени, как его закончили, появились мощные железки, на которые можно было накатить десктопную линуху, цветные формы и т.п. Они потратили кучу времени на оптимизацию, которая в итоге никому оказалась не нужна. Вот сейчас мы и имеем высокоуровневые языки, фреймверки, которые жрут памяти как не в себя, но позволяют на порядок а то и несолкько ускорить процесс разработки. Ведь мы все куда то торопимся. Но, если быть честными, мы так привыкли к красивому интерфейсу, за который нужно расплачиваться соответствующим железом
Но вот что-то я не нахожу даже дешевых wi-fi модулей для этой платы. Без периферии это как-то не очень интересно.
И даже вот на такой: aliexpress.com/item/32890327433.html
Ну а вообще-то эти процы и в планшеты ставят. И литий их вполне тащит.