Python для микроконтроллеров. Учимся программировать одноплатные компьютеры на языке высокого уровня — Хакер
2025.10.18 23:18
Временная скидка 60% на годовую подписку ! Вход
Взлом Приватность Трюки Кодинг Админ Geek Магазин Подписаться на материалы Windows Linux Android Железо Райтапы Нейросети Python Все выпуски «Хакера» Реклама на «Хакере» Выпуски
Годовая
подписка
на
Хакер
Хакер #317. AI на службе хакера
Хакер #316. Android по-хакерски
Хакер #315. Positive Hack Days Fest 3
Хакер #314. Разведка по плану
Хакер #313. Вызов для Windows
КодингPython для микроконтроллеров. Учимся программировать одноплатные компьютеры на языке высокого уровня
Виктор Паперно 25.01.2018 3 комментария 347,846Содержание статьи
С чего все началось? А чем эта плата лучше? И что, только официальная плата? Подготовка к работе Прошивка контроллера Взаимодействие с платой Начинаем разработку Hello world Радужный мир Монитор. Рисование, письмо и каллиграфия Настраиваем Wi-Fi и управляем через сайт Управление моторами Интернет вещей Заключение Шутники говорят, что после трудового дня за компьютером типичный программист едет домой, садится за ПК и таким образом отдыхает. А ведь истина на самом деле куда ужаснее этой шутки: многие из нас, приходя с работы, посвящают оставшееся до сна время программированию микроконтроллеров. 🙂 Обывателям не понять, но Arduino, Teensy или ESP — действительно очень неплохое хобби. Их единственный недостаток — необходимость программировать на достаточно низком уровне, если не на Assembler, то на Arduino C или Lua. Но теперь в списке ЯП для микроконтроллеров появился Python. Точнее, MicroPython. В этой статье я постараюсь максимально продемонстрировать его возможности.С чего все началось?
Все началось с кампании на Kickstarter. Дэмьен Джордж (Damien George), разработчик из Англии, спроектировал микроконтроллерную плату, предназначенную специально для Python. И кампания «выстрелила». Изначально была заявлена сумма в 15 тысяч фунтов стерлингов, но в результате было собрано в шесть с половиной раз больше — 97 803 фунта стерлингов.
А чем эта плата лучше?
Автор проекта приводил целый ряд преимуществ своей платформы в сравнении с Raspberry Pi и Arduino:
Мощность — MP мощнее в сравнении с микроконтроллером Arduino, здесь используются 32-разрядные ARM-процессоры типа STM32F405 (168 МГц Cortex-M4, 1 Мбайт флеш-памяти, 192 Кбайт ОЗУ).
Простота в использовании — язык MicroPython основан на Python, но несколько упрощен, для того чтобы команды по управлению датчиками и моторами можно было писать буквально в несколько строк.
Отсутствие компилятора — чтобы запустить программу на платформе MicroPython, нет необходимости устанавливать на компьютер дополнительное ПО. Плата определяется ПК как обычный USB-накопитель — стоит закинуть на него текстовый файл с кодом и перезагрузить, программа тут же начнет исполняться. Для удобства все-таки можно установить на ПК эмулятор терминала, который дает возможность вписывать элементы кода с компьютера непосредственно на платформу. Если использовать его, тебе даже не придется перезагружать плату для проверки программы, каждая строка будет тут же исполняться микроконтроллером.
Низкая стоимость — в сравнении с Raspberry Pi платформа PyBoard несколько дешевле и, как следствие, доступнее.
Открытая платформа — так же как и Arduino, PyBoard — открытая платформа, все схемы будут находиться в открытом доступе, что подразумевает возможность спроектировать и создать подобную плату самому в зависимости от потребностей.И что, только официальная плата?
Нет. При всех своих достоинствах PyBoard (так называется плата от разработчика MicroPython) — довольно дорогое удовольствие. Но благодаря открытой платформе на многих популярных платах уже можно запустить MicroPython, собранный специально для нее. В данный момент существуют версии:
для BBC micro:bit — британская разработка, позиционируется как официальное учебное пособие для уроков информатики; Circuit Playground Express — разработка известной компании Adafruit. Это плата, включающая в себя светодиоды, датчики, пины и кнопки. По умолчанию программируется с помощью Microsoft MakeCode for Adafruit. Это блочный (похожий на Scratch) редактор «кода»; ESP8266/ESP32 — одна из самых популярных плат для IoT-разработки. Ее можно было программировать на Arduino C и Lua. А сегодня мы попробуем установить на нее MicroPython. Плата ESP8266Подготовка к работе
Перед тем как писать программы, нужно настроить плату, установить на нее прошивку, а также установить на компьютер необходимые программы.
INFO
Все примеры проверялись и тестировались на следующем оборудовании:
плата NodeMCU ESP8266-12E; драйвер моторов L293D; I2C-дисплей 0,96″ 128 × 64; Adafruit NeoPixel Ring 16.
Прошивка контроллера
Для прошивки платы нам понадобится Python. Точнее, даже не он сам, а утилита esptool, распространяемая с помощью pip. Если у тебя установлен Python (неважно, какой версии), открой терминал (командную строку) и набери:
pip install esptoolПосле установки esptool надо сделать две вещи. Первое — скачать с официального сайта версию прошивки для ESP8266. И второе — определить адрес платы при подключении к компьютеру. Самый простой способ — подключиться к компьютеру, открыть Arduino IDE и посмотреть адрес в списке портов.
Для облегчения восприятия адрес платы в примере будет /dev/ttyUSB0 , а файл прошивки переименован в esp8266.bin и лежит на рабочем столе.
Открываем терминал (командную строку) и переходим на рабочий стол:
cd DesktopФорматируем флеш-память платы:
esptool.py --port /dev/ttyUSB0 erase_flashЕсли при форматировании возникли ошибки, значит, нужно включить режим прошивки вручную. Зажимаем на плате кнопки reset и flash. Затем отпускаем reset и, не отпуская flash, пытаемся отформатироваться еще раз.
И загружаем прошивку на плату:
esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 esp8266.binВзаимодействие с платой
Все взаимодействие с платой может происходить несколькими способами:
через Serial-порт; через web-интерпретатор.При подключении через Serial-порт пользователь в своем терминале (в своей командной строке) видит практически обычный интерпретатор Python.
Подключение через SerialPortДля подключения по Serial есть разные программы. Для Windows можно использовать PuTTY или TeraTerm. Для Linux — picocom или minicom. В качестве кросс-платформенного решения можно использовать монитор порта Arduino IDE. Главное — правильно определить порт и указать скорость передачи данных 115200.
picocom /dev/ttyUSB0 -b115200Кроме этого, уже создано и выложено на GitHub несколько программ, облегчающих разработку, например EsPy. Кроме Serial-порта, он включает в себя редактор Python-файлов с подсветкой синтаксиса, а также файловый менеджер, позволяющий скачивать и загружать файлы на ESP.
EsPy IDEНо все перечисленные способы хороши лишь тогда, когда у нас есть возможность напрямую подключиться к устройству с помощью кабеля. Но плата может быть интегрирована в какое-либо устройство, и разбирать его только для того, чтобы обновить программу, как-то неоптимально. Наверное, именно для таких случаев и был создан WebREPL. Это способ взаимодействия с платой через браузер с любого устройства, находящегося в той же локальной сети, если у платы нет статического IP, и с любого компьютера, если такой IP присутствует. Давай настроим WebREPL. Для этого необходимо, подключившись к плате, набрать
import webrepl_setupПоявится сообщение о статусе автозапуска WebREPL и вопрос, включить или выключить его автозапуск.
WebREPL daemon auto-start status: enabled Would you like to (E)nable or (D)isable it running on boot? (Empty line to quit)После ввода q появляется сообщение о выставлении пароля доступа:
To enable WebREPL, you must set password for it New password (4-9 chars):Вводим его, а затем подтверждаем. Теперь после перезагрузки мы сможем подключиться к плате по Wi-Fi.
Так как мы не настроили подключение платы к Wi-Fi-сети, она работает в качестве точки доступа. Имя Wi-Fi-сeти — MicroPython-******, где звездочками я заменил часть MAC-адреса. Подключаемся к ней (пароль — micropythoN ).
Открываем WebREPL и нажимаем на Connect. После ввода пароля мы попадаем в тот же интерфейс, что и при прямом подключении. Кроме этого, в WebREPL есть интерфейс для загрузки файлов на плату и скачивания файлов на компьютер.
WebRERLINFO
Среди файлов, загруженных на плату, есть стандартные:
boot.py — скрипт, который загружается первым при включении платы. Обычно в него вставляют функции для инициализации модулей, подключения к Wi-Fi и запуска WebREPL; main.py — основной скрипт, который запускается сразу после выполнения boot.py , в него записывается основная программа.
Начинаем разработку
Hello world
Принято, что первой написанной на новом языке программирования должна быть программа, выводящая Hello world. Не будем отходить от традиции и выведем это сообщение с помощью азбуки Морзе.
import machine import time pin = machine.Pin(2,machine.Pin.OUT) def dot_show(): pin.off() time.sleep(1) pin.on() def dash_show(): pin.off() time.sleep(2) pin.on() Hello_world = '**** * *-** *-** --- *-- --- *-* *-** -**' for i in Hello_world: if i=="*": dot_show() elif i=='-': dash_show() else: time.sleep(3) time.sleep(0.5)Итак, что же происходит? Сначала подключаются библиотеки: стандартная Python-библиотека time и специализированная machine. Эта библиотека отвечает за взаимодействие с GPIO. Стандартный встроенный светодиод располагается на втором пине. Подключаем его и указываем, что он работает на выход. Если бы у нас был подключен какой-нибудь датчик, то мы бы указали режим работы IN.
Следующие две функции отвечают за включение и выключение светодиода на определенный интервал времени. Наверное, интересно, почему я сначала выключаю светодиод, а потом включаю? Мне тоже очень интересно, почему сигнал для данного светодиода инвертирован Оставим это на совести китайских сборщиков. На самом деле команда pin.off() включает светодиод, а pin.on() — отключает.
Ну а дальше все просто: заносим в переменную Hello_world нашу строчку, записанную кодом Морзе, и, пробегаясь по ней, вызываем ту или иную функцию.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»
Виктор Паперно
Теги: Python Выбор редактора Микроэлектроника Программирование Статьи
Check Also
Неслучайный UUID. Как я нашел нестандартный IDOR на баг-баунти
Исследуя веб‑приложение в рамках закрытого баг‑баунти BI.ZONE, я обнаружил ошибку в генера
← Ранее Шифровальщик маскируется под несуществующую криптовалюту SpriteCoin Далее Обнаружены сразу два новых IoT-ботнета: Masuta и Hide ‘N Seek Далее по этой теме Ранее по этой темеОткрытое обращение к министру цифрового развития от основателя «Хакера»
Мы публикуем текст обращения, направленного министру цифрового развития с целью остановить 2 недели назад 3 мин на чтениеJavaScript для умного дома. Arduino устарел, да здравствует ESP32!
Интерес к интернету вещей растет с каждым днем, свои курсы по технологии IoT запустили и C 04.05.2018 19 мин на чтениеOmega 2. Проверяем, на что способен крошечный и дешевый компьютер с Linux
В жизни каждого мейкера наступает момент, когда обычных микроконтроллеров уже не хватает, 21.06.2018 13 мин на чтениеПрыжок в облако. Строим бюджетное решение для интернета вещей на NodeMCU + Azure IoT Hub
Самое популярное назначение IoT-устройств — это сбор телеметрии. На сегодняшний день цены 01.03.2018 16 мин на чтениеГосподин Самоуничтожение. Как в домашних условиях смастерить Rubber Ducky со встроенной пиротехникой
Представь: ты втыкаешь в USB какую-то флешку, и вдруг в браузере открывается окно, где гру 18.07.2018 12 мин на чтениеIntel открывает программу вознаграждений за уязвимости для всех желающих и увеличивает выплаты
Компания Intel анонсировала публично доступную bug bounty программу и предложила всем жела 15.02.2018 4 мин на чтениеУстройство SkimReaper обнаруживает скиммеры со стопроцентной точностью
Сотрудник Флоридского университета представил на конференции USENIX Security Symposium уст 16.08.2018 3 мин на чтениеОткрытое обращение к министру цифрового развития от основателя «Хакера»
Мы публикуем текст обращения, направленного министру цифрового развития с целью остановить 2 недели назад 3 мин на чтениеБюджетный IoT. Как сэкономить на лампочках, объединить домашние гаджеты и обмануть Siri
Накупить умных гаджетов — не проблема. Но как сделать так, чтобы они работали вместе и упр 03.03.2017 10 мин на чтениеEspruino Pico. Учимся программировать USB-микроконтроллер на JavaScript и делаем из него токен авторизации
Несмотря на огромное количество устройств на базе микроконтроллеров, созданных на волне ус 11.12.2017 17 мин на чтение64 подарка для хакера. Выбираем лучшие гиковские гаджеты для друзей и для себя
Мы собрали 64 устройства, среди которых ты наверняка найдешь что-то, что порадует твоих др 27.12.2017 17 мин на чтениеКакие производители уже устранили уязвимости, связанные с WPA2 и атакой KRACK
Вчера специалисты рассказали о комплексе уязвимостей в WAP2, получившем название KRACK. По 17.10.2017 9 мин на чтениеРеверсинг малвари для начинающих. Инструменты скрытия вредоносной активности
В постоянном соревновании с антивирусными решениями современная малварь использует все бол 28.03.2017 16 мин на чтениеСтань админом! 11 техник атак с повышением привилегий в Windows
Одна из наиболее частых рекомендаций по безопасности — это запускать приложения и сервисы 30.06.2017 21 мин на чтениеПодпишись на наc в Telegram!
Только важные новости и лучшие статьи
Подписаться
3 комментария к записи Python для микроконтроллеров. Учимся программировать одноплатные компьютеры на языке высокого уровня Подписаться авторизуйтесь Пожалуйста, войдите, чтобы прокомментировать 3 комментариев Старые Новые Популярные Межтекстовые Отзывы Посмотреть все комментарии Загрузить ещё комментарии Вопросы по материалам и подписке: support@glc.ruОтдел рекламы и спецпроектов: yakovleva.a@glc.ru
Контент 18+
Сайт защищен Qrator —
самой забойной защитой от DDoS в мире Подписка для физлиц
Подписка для юрлиц
Реклама на «Хакере»
Контакты wpDiscuz Insert
- Программирование на языке python, помогите советом ...
- Micropython - это просто. Часть первая
- КАК СОЗДАТЬ КОНТРОЛЛЕР ИГРОКА НА PYTHON? | УРОК 3
- Python для микроконтроллера — CircuitPython
- Как использовать Python для работы с ...
- Python для микроконтроллеров
- Программирование контроллеров или как стать ...
- Подключение контроллера к проекту на python
- Python для микроконтроллеров. Учимся ...
- Пишем программу для контроллера TXT на Python
- Программирование на языке python, помогите советом ...
9 мар. 2025 г. — Для работы с MQTT в Python используйте библиотеку paho-mqtt . Она позволяет отправлять и получать сообщения через MQTT-брокер по стандартным ... - Micropython - это просто. Часть первая
Привет от преподавателя Международной школы программирования и дизайна CODDY! В этом коротком видеоролике ты научишься создавать контроллер ... - КАК СОЗДАТЬ КОНТРОЛЛЕР ИГРОКА НА PYTHON? | УРОК 3
4 сент. 2022 г. — MicroPython позволяет запускать Python-скрипты на микроконтроллерах esp8266, esp32, stm32, nRF и пр. А вот на Arduino с микроконтроллером ... - Python для микроконтроллера — CircuitPython
5 авг. 2021 г. — Программирование контроллеров ... Для успешного освоения материалов курса желательно иметь базовые навыки программирования на языке Python. - Как использовать Python для работы с ...
25 янв. 2018 г. — main.py — основной скрипт, который запускается сразу после выполнения boot.py , в него записывается основная программа. Начинаем разработку ... - Python для микроконтроллеров
7 июл. 2017 г. — Все что мне в итоге надо это уметь создавать вебстраницу с элементами управления (кнопки, флажки, текстовые поля) и управлять с этой страницы ... - Программирование контроллеров или как стать ...
21 июн. 2018 г. — Пишем программу для контроллера TXT на Python · Устанавливаем интерпретатор Python · Устанавливаем модуль ftrobopy · Устанавливаем редактор текста ... - Подключение контроллера к проекту на python
11 дек. 2013 г. — Python для микроконтроллеров · используется синтаксис Python 3.3; · может исполнять файлы, а также имеет интерфейс командной строки; ... - Python для микроконтроллеров. Учимся ...
28 мая 2024 г. — Подключите микроконтроллер к компьютеру с помощью USB-кабеля. · Сконфигурируйте среду разработки для работы с микроконтроллером. · Создайте новый ... - Пишем программу для контроллера TXT на Python
20 мар. 2020 г. — Эта статья начинает курс уроков по программированию микроконтроллеров с помощью языка Micropython. Это сравнительно новый язык ...
9 мар. 2025 г. — Для работы с MQTT в Python используйте библиотеку paho-mqtt . Она позволяет отправлять и получать сообщения через MQTT-брокер по стандартным ...
Привет от преподавателя Международной школы программирования и дизайна CODDY! В этом коротком видеоролике ты научишься создавать контроллер ...
4 сент. 2022 г. — MicroPython позволяет запускать Python-скрипты на микроконтроллерах esp8266, esp32, stm32, nRF и пр. А вот на Arduino с микроконтроллером ...
5 авг. 2021 г. — Программирование контроллеров ... Для успешного освоения материалов курса желательно иметь базовые навыки программирования на языке Python.
25 янв. 2018 г. — main.py — основной скрипт, который запускается сразу после выполнения boot.py , в него записывается основная программа. Начинаем разработку ...
7 июл. 2017 г. — Все что мне в итоге надо это уметь создавать вебстраницу с элементами управления (кнопки, флажки, текстовые поля) и управлять с этой страницы ...
21 июн. 2018 г. — Пишем программу для контроллера TXT на Python · Устанавливаем интерпретатор Python · Устанавливаем модуль ftrobopy · Устанавливаем редактор текста ...
11 дек. 2013 г. — Python для микроконтроллеров · используется синтаксис Python 3.3; · может исполнять файлы, а также имеет интерфейс командной строки; ...
28 мая 2024 г. — Подключите микроконтроллер к компьютеру с помощью USB-кабеля. · Сконфигурируйте среду разработки для работы с микроконтроллером. · Создайте новый ...
20 мар. 2020 г. — Эта статья начинает курс уроков по программированию микроконтроллеров с помощью языка Micropython. Это сравнительно новый язык ...