МикроПитон
![]() | |
Разработчик(и) | Дэмиен П. Джордж |
---|---|
Первоначальный выпуск | 3 мая 2014 г |
Стабильная версия | |
Репозиторий | |
Написано в | С |
Платформа | ARM Cortex-M , STM32 , ESP8266 , ESP32 , 16-битный PIC , Unix , Microsoft Windows , Zephyr , JavaScript , RP2040 |
Лицензия | МОЯ лицензия [1] |
Веб-сайт | микропитон |
MicroPython — это программная реализация языка программирования , в значительной степени совместимого с Python 3, написанного на C и оптимизированного для работы на микроконтроллере . [2] [3]
MicroPython состоит из компилятора Python для байт-кода и интерпретатора этого байт-кода во время выполнения. Пользователю предоставляется интерактивное приглашение ( REPL ) для немедленного выполнения поддерживаемых команд. Включен набор основных библиотек Python; MicroPython включает модули, которые предоставляют программисту доступ к аппаратному обеспечению низкого уровня. [4]
В MicroPython есть встроенный ассемблер , который позволяет коду работать на полной скорости, но его нельзя переносить на разные микроконтроллеры.
Исходный код проекта доступен на GitHub под лицензией MIT . [5]
История [ править ]

MicroPython был первоначально создан австралийским программистом Дэмиеном Джорджем после успешной кампании, поддержанной Kickstarter в 2013 году. [6] В то время как первоначальная кампания Kickstarter выпустила MicroPython с платой разработки «pyboard» на базе STM32F4 , MicroPython поддерживает ряд архитектур на базе ARM . [7] В основной линии поддерживаются порты ARM Cortex-M (многие порты STM32). [8] платы, платы RP2040 , TI CC3200/WiPy, платы Teensy, серия Nordic nRF, SAMD21 и SAMD51), ESP8266 , ESP32 , [9] 16-битный PIC, Unix, Windows, Zephyr и JavaScript. [10] Кроме того, существует множество вилок для различных систем и аппаратных платформ, не поддерживаемых в основной ветке. [11]
В 2016 году версия MicroPython для BBC Micro Bit была создана в рамках вклада Python Software Foundation в партнерство Micro Bit с BBC. [12]
В июле 2017 года MicroPython был разделен на создание CircuitPython , версии MicroPython с упором на обучение и простоту использования. MicroPython и CircuitPython поддерживают несколько разные наборы оборудования (например, CircuitPython поддерживает платы Atmel SAM D21 и D51, но отказался от поддержки ESP8266). Начиная с версии 4.0, CircuitPython основан на MicroPython версии 1.9.4. [13]
В 2017 году Microsemi выпустила порт MicroPython для архитектуры RISC-V (RV32 и RV64). [14]
В апреле 2019 года была создана версия MicroPython для Lego Mindstorms EV3 . [15]
В январе 2021 года был создан порт MicroPython для RP2040 (ARM Cortex-M0+, на Raspberry Pi Pico и других). [16]
Особенности [ править ]
Возможность запуска Python [ править ]
MicroPython имеет возможность запускать Python, что позволяет пользователям создавать простые и понятные программы. [17] MicroPython поддерживает множество стандартных библиотек Python, поддерживая более 80% функций наиболее используемых библиотек Python. [17] MicroPython был разработан специально для устранения типичного разрыва в производительности между микроконтроллерами и Python. [18] Код Python может напрямую получать доступ к оборудованию и взаимодействовать с ним, обладая расширенными аппаратными возможностями, которые недоступны при использовании обычного приложения Python, запускаемого в операционной системе . [19]
Переносимость кода [ править ]
Использование в MicroPython технологии уровня аппаратной абстракции (HAL) позволяет переносить разработанный код между различными микроконтроллерами одного семейства или платформы, а также на устройствах, которые поддерживают и могут загружать MicroPython. Программы часто разрабатываются и тестируются на высокопроизводительных микроконтроллерах и распространяются вместе с конечным приложением, используемым на микроконтроллерах с более низкой производительностью. [20]
Модули [ править ]
MicroPython предлагает функциональность после написания нового кода для создания замороженного модуля и использования его в качестве библиотеки, которая может быть частью разработанной прошивки . Эта функция помогает избежать повторной загрузки одного и того же, уже безошибочного, протестированного кода в среду MicroPython. Этот тип модуля будет сохранен в каталоге модулей микроконтроллера для компиляции и загрузки в микроконтроллер, где библиотека будет доступна с помощью команды импорта Python для многократного использования. [20]
Цикл чтения-оценки-печати [ править ]
Цикл чтения-оценки-печати (REPL) позволяет разработчику вводить отдельные строки кода и немедленно запускать их на терминале . [21] Системы на базе Linux и macOS имеют эмуляторы терминала , которые можно использовать для создания прямого подключения к REPL устройства MicroPython с использованием последовательного USB- соединения. REPL помогает немедленно протестировать части приложения , поскольку вы можете запустить каждую часть кода и визуально увидеть результаты. После загрузки различных частей вашего кода в REPL вы можете использовать дополнительные функции REPL, чтобы экспериментировать с функциональностью вашего кода. [17]
Полезные команды REPL (после подключения к последовательной консоли): [21]
- CTRL+ C: прерывание клавиатуры
- CTRL+ D: перезагрузить
help()
: справочное сообщениеhelp("modules")
: список встроенных модулейimport board
↵ Enterdir(board)
: список всех контактов на плате микроконтроллера, которые можно использовать в коде программы.
Ограничения [ править ]
Хотя MicroPython полностью реализует язык Python версии 3.4 и большую часть версии 3.5, он не реализует все функции языка, представленные начиная с версии 3.5. [22] хотя некоторый новый синтаксис из версии 3.6 и более поздние функции из более поздних версий, например, из 3.8 (выражения присваивания) и 3.9. Он включает в себя подмножество стандартной библиотеки. [23]
MicroPython имеет более ограниченную аппаратную поддержку на рынке микроконтроллеров, чем другие популярные платформы, такие как Arduino, с меньшим количеством вариантов микроконтроллеров, поддерживающих этот язык. [18] В отличие от других платформ MicroPython не включает интегрированную среду разработки (IDE) или специальный редактор. [18]
Синтаксис и семантика [ править ]
MicroPython Синтаксис заимствован из Python благодаря его ясному и легкому пониманию стилю и мощности. [24] В отличие от большинства других языков программирования используется меньше знаков препинания и меньше синтаксических махинаций, чтобы обеспечить приоритет читаемости. [17]
Блоки кода [ править ]
MicroPython использует стиль блоков кода Python с для кода, специфичного для конкретной функции , условия или цикла. отступом [17] Это отличается от большинства других языков, которые обычно используют символы или ключевые слова для разделения блоков. [17] Это способствует читабельности кода MicroPython, поскольку визуальная структура отражает семантическую структуру. Эта ключевая особенность проста, но важна, поскольку неправильное использование отступов может привести к выполнению кода в неправильных условиях или к общей ошибке интерпретатора . [17]
Двоеточие (:) — это ключевой символ, используемый для обозначения окончания оператора условия. [17] Размер отступа соответствует одной табуляции или 4 пробелам.
Операции [ править ]
MicroPython имеет возможность выполнять различные математические операции, используя примитивные и логические операции. [19]
Тип | Оператор | Имя | Пример |
---|---|---|---|
Арифметика | + | Добавление | переменная + 1 |
- | Вычитание | переменная - 1 | |
* | Умножение | переменная * 4 | |
/ | Разделение | переменная / 4 | |
% | Деление по модулю | переменная % 4 | |
Сравнение | == | Равно | выражение1 == выражение2 |
!= | Не равно | выражение1 != выражение2 | |
< | Меньше, чем | выражение1 <выражение2 | |
> | Больше, чем | выражение1 > выражение2 | |
<= | Меньше или равно | выражение1 <= выражение2 | |
>= | Больше или равно | выражение1 >= выражение2 | |
Логический | & | побитовое и | переменная1 и переменная2 |
| | поразрядно или | переменная1 | переменная2 | |
^ | побитовое исключающее или | переменная1 ^ переменная2 | |
~ | побитовое дополнение | ~переменная1 | |
и | логичный и | переменная1 и переменная2 | |
или | логичный или | переменная1 или переменная2 |
Библиотеки [ править ]
MicroPython — это простая и эффективная реализация Python с библиотеками, аналогичными библиотекам Python. [25] Некоторые стандартные библиотеки Python имеют эквивалентную библиотеку в MicroPython, переименованную, чтобы различать их. Библиотеки MicroPython меньше по размеру, менее популярные функции удалены или изменены для экономии памяти . [19]
Три типа библиотек в MicroPython: [19]
- получен из стандартной библиотеки Python (встроенные библиотеки)
- определенные библиотеки MicroPython
- специальные библиотеки для поддержки аппаратных функций
MicroPython обладает широкими возможностями настройки и настройки, при этом язык различается для каждой платы ( микроконтроллера ), а доступность библиотек может отличаться. Некоторые функции и классы в модуле или во всем модуле могут быть недоступны или изменены. [19]
Название библиотеки | Описание |
---|---|
множество | операции с массивами |
cmath | предоставляет математические функции для комплексных чисел |
ГК | сборщик мусора |
математика | предоставляет базовые математические операции для чисел с плавающей запятой |
система | функции системного уровня; обеспечивает доступ к переменным, используемым интерпретатором |
Бинаскии | функции для преобразования двоичного кода в ASCII |
коллекции | операции для коллекций и типов контейнеров, содержащих различные объекты |
нет | обеспечивает доступ к кодам ошибок |
хэшлиб | операции для алгоритмов двоичного хеширования |
куча | операции по реализации алгоритма очереди кучи |
этот | операции по обработке ввода/вывода потоков |
JSON | обрабатывает преобразование между документами JSON и объектами Python |
ты | функции для доступа к файловой системе и основные операционной системы функции |
ре | реализует операции сопоставления регулярных выражений |
выбирать | функции для обработки событий в нескольких потоках |
розетка | подключение к сокетам (сетям), предоставление доступа к интерфейсу сокетов |
структура | выполняет преобразования в объекты Python путем упаковки и распаковки примитивных типов данных. |
время | обеспечивает функцию времени и даты, включая измерение временных интервалов и реализацию задержек |
zlib | операции по распаковке двоичных данных |
Название библиотеки | Описание |
---|---|
кадровый буфер | предоставляет буфер кадров , который можно использовать для создания растровых изображений для отправки на дисплей. |
машина | функции, помогающие получать доступ и взаимодействовать с аппаратными блоками |
микропитон | доступ и управление внутренними компонентами MicroPython |
сеть | помогает с установкой сетевого драйвера, обеспечивая взаимодействие через сети |
cтипы | доступ к двоичным структурам данных |
Пользовательские библиотеки MicroPython [ править ]
Когда разработчики начинают создавать новое приложение, стандартные библиотеки и драйверы MicroPython могут не соответствовать требованиям из-за недостаточного количества операций или вычислений. Как и в случае с Python, существует возможность расширения функциональности MicroPython с помощью пользовательских библиотек, которые расширяют возможности существующих библиотек и встроенного ПО. [20]
В MicroPython файлы, заканчивающиеся на .py, имеют преимущество перед другими псевдонимами библиотек, что позволяет пользователям расширять использование и реализацию существующих библиотек. [19]
Поддерживаемое оборудование [ править ]
Поскольку реализация и популярность MicroPython продолжают расти, все больше плат имеют возможность запускать MicroPython. Многие разработчики создают версии для конкретных процессоров, которые можно загрузить на разные микроконтроллеры. [19] Установка MicroPython на микроконтроллеры хорошо документирована и удобна для пользователя. [20] MicroPython позволяет упростить взаимодействие между аппаратным обеспечением микроконтроллера и приложениями, обеспечивая доступ к ряду функций при работе в среде с ограниченными ресурсами и с высоким уровнем оперативности. [17]
Два типа плат, используемых для запуска MicroPython: [19]
- MicroPython загружается при изготовлении, что означает, что можно запускать только MicroPython.
- платы, имеющие прошивку, позволяющую устанавливать MicroPython на плату.
Исполняемый код [ править ]
Чтобы переместить программу на плату MicroPython, создайте файл и скопируйте его в микроконтроллер для выполнения. Когда оборудование подключено к устройству, например компьютеру платы , на устройстве появится флэш-накопитель , позволяющий перемещать файлы на флэш-накопитель. Будет два существующих файла Python, boot.py и main.py, которые обычно не изменяются. Main.py можно изменить, если вы хотите запускать программу каждый раз при загрузке микроконтроллера , в противном случае программы будут запускаться с использованием REPL. консоль. [19]
Пиборд [ править ]
pyboard — это официальная плата микроконтроллера MicroPython, которая полностью поддерживает функции программного обеспечения MicroPython. Аппаратные возможности pyboard включают в себя: [4]
- микроконтроллер (MCU, CPU , флэш- ПЗУ и ОЗУ )
- микроUSB разъем
- micro-SD слот для карты
- я прикалываю
- переключатели , светодиоды , сервопорты, часы реального времени, акселерометр
Процесс загрузки [ править ]
Плата pyboard содержит внутренний диск (файловую систему) с именем /flash, который хранится во флэш-памяти платы. Кроме того, microSD в слот можно вставить карту , доступ к которой осуществляется через /sd. При загрузке pyboard должен выбрать файловую систему для загрузки: /flash или /sd, при этом текущий каталог должен быть установлен на /flash или /sd. По умолчанию, если вставлена SD-карта, будет использоваться /sd, если нет, то /flash. При необходимости можно избежать использования SD-карты для процесса загрузки, создав пустой файл с именем /flash/SKIPSD, который останется на плате и будет существовать при загрузке pyboard и будет пропускать SD-карту для процесса загрузки. . [4]
Режимы загрузки [ править ]
Когда pyboard включается нормально или нажимается кнопка сброса, pyboard загружается в стандартном режиме, что означает, что файл boot.py выполняется, затем настраивается USB и, наконец, запускается программа Python. [4]
Существует возможность отменить стандартную последовательность загрузки, удерживая пользовательский переключатель, пока плата находится в процессе загрузки, а затем нажимая кнопку сброса, продолжая удерживать пользовательский переключатель. Светодиоды pyboard будут переключаться между режимами, и как только светодиоды перейдут в нужный пользователю режим, можно отпустить пользовательский переключатель, и плата загрузится в определенном режиме. [4]
режимы загрузки: [4]
- стандартная загрузка: только зеленый светодиод (запускается boot.py, а затем программа Python)
- безопасная загрузка: только оранжевый светодиод (во время загрузки не выполняются никакие сценарии)
- сброс файловой системы: зеленый и оранжевый светодиод вместе (сбрасывает флэш-накопитель до заводского состояния и загружается в безопасном режиме)
- используется в качестве исправления при повреждении файловой системы
Ошибки [ править ]
- необходимо использовать REPL Если красный и зеленый светодиоды мигают попеременно, то в скрипте Python возникла ошибка, и для отладки .
- Если все 4 светодиода загораются и гаснут, значит, возникла серьезная неисправность, которую невозможно устранить и требуется аппаратный сброс. [4]
Примеры программирования [19] [ редактировать ]
# print to serial console
print('Hello, World!')
Импорт + включение светодиода:
import pyb
# turn LED on
pyb.LED(1).on()
Чтение файла + цикл:
import os
# open and read a file
with open('/readme.txt') as f:
print(f.read())
Байт-код [ править ]
MicroPython включает в себя кросс-компилятор , который генерирует байт-код MicroPython (расширение файла .mpy ). Код Python может быть скомпилирован в байт-код либо непосредственно на микроконтроллере, либо предварительно скомпилирован в другом месте.
Прошивку MicroPython можно собрать без компилятора, оставив только виртуальную машину , на которой можно запускать предварительно скомпилированные программы mpy .
Реализация и использование [ править ]
MicroPython используется посредством встроенного ПО, загружаемого стандартным программным обеспечением на конкретный микроконтроллер во флэш-память и взаимодействующего с использованием терминального приложения, загруженного на компьютер, которое эмулирует последовательный интерфейс. [20]
Основные применения MicroPython можно разделить на 3 категории: [20]
- образовательные цели : используя цикл чтения-оценки-печати MicroPython (REPL) для взаимодействия с микроконтроллером, можно наглядно объяснить концепции обработки данных и взаимодействия с платами более простым способом, чем более сложные языки программирования.
- разработка и тестирование конструкций устройств и датчиков : MicroPython предлагает проверенные, безошибочные и тщательно протестированные эталонные реализации интерфейсов, используемых в микроконтроллерах, решающих общую задачу разработчика по реализации настройки и управления периферийной связью. MicroPython предлагает прямой и интерактивный доступ к регистрам устройств, что позволяет легко проверять функциональность, а также разрабатывать и тестировать аппаратные части и устройства, а также алгоритмы управления и получения данных с устройства.
- инструмент мониторинга и настройки для разработки сложных приложений : для некоторых приложений требуются специальные приложения на высокопроизводительных микроконтроллерах. MicroPython может помочь в мониторинге состояния и настройке параметров системы.
Реализация MicroPython может различаться в зависимости от наличия стандартных и вспомогательных библиотек, а также размера флэш-памяти и оперативной памяти микроконтроллера. [20]
См. также [ править ]
Ссылки [ править ]
- ^ Джордж, Дэмиен П. (4 мая 2014 г.). «микропитон/ЛИЦЕНЗИЯ у мастера · микропитон/микропитон» . Гитхаб . Проверено 11 февраля 2017 г. .
- ^ Венкатараманан, Мадхумита (6 декабря 2013 г.). «Micro Python: мощнее, чем Arduino, проще, чем Raspberry Pi» . Проводной . Проверено 15 декабря 2016 г.
- ^ Егулалп, Сердар (5 июля 2014 г.). «Крошечные схемы Micro Python: вариант Python предназначен для микроконтроллеров» . Инфомир . Проверено 15 декабря 2016 г.
- ^ Jump up to: Перейти обратно: а б с д и ж г час я «MicroPython — Python для микроконтроллеров» . micropython.org . Проверено 12 августа 2017 г.
- ^ «MicroPython на GitHub» . Гитхаб . 7 февраля 2022 г.
- ^ «Micro Python: Python для микроконтроллеров» . Кикстартер . Проверено 15 декабря 2016 г.
- ^ Бенинго, Джейкоб (11 июля 2016 г.). «Прототип для производства: MicroPython под капотом» . Сеть ЭДН . Проверено 15 декабря 2016 г.
- ^ «MicroPython на Nucleo STM32, STM32F411CE и STM32F401CC: прошивка прошивки и основные инструменты» . Мишьянти . Август 2023.
- ^ «MicroPython с esp8266 и esp32: прошивка и программирование базовыми инструментами» . Мишьянти . 7 июня 2023 г.
- ^ Джордж, Дэмиен П. «микропитон/порты в мастере · микропитон/микропитон» . Гитхаб . Проверено 22 октября 2019 г.
- ^ Соколовский Павел. «Потрясающий МикроПитон» . Гитхаб . Проверено 22 октября 2019 г.
- ^ Уильямс, Алан (7 июля 2015 г.). «Практическое знакомство с пользовательским интерфейсом BBC Micro-Bit» . ElectronicsWeekly.com . Проверено 8 июля 2015 г.
- ^ Шоукрофт, Скотт (22 мая 2019 г.). «Выпущена CircuitPython 4.0.1!» . Блог Adafruit . Адафрут Индастриз . Проверено 11 июня 2019 г.
- ^ «Предварительный просмотр плаката RISC-V — 7-й семинар RISC-V» (PDF) . 28 ноября 2017 года . Проверено 17 декабря 2018 г.
- ^ «LEGO выпускает MicroPython для EV3 на основе ev3dev и Pybricks» . www.ev3dev.org . Проверено 21 апреля 2020 г.
- ^ «Знакомьтесь, Raspberry Silicon: Raspberry Pi Pico уже в продаже по цене 4 доллара» . www.raspberrypi.org . 21 января 2021 г. Проверено 21 января 2021 г.
- ^ Jump up to: Перейти обратно: а б с д и ж г час я Альсаббах, Марван (2019). Рецепты MicroPython . Бирмингем, Великобритания: Packt Publishing .
- ^ Jump up to: Перейти обратно: а б с Бруно, П. (25 ноября 2021 г.). «Введение в MicroPython» . All3DP . Проверено 9 мая 2022 г.
- ^ Jump up to: Перейти обратно: а б с д и ж г час я дж к Белл, Чарльз (2017). MicroPython для Интернета вещей . Беркли, США: Apress .
- ^ Jump up to: Перейти обратно: а б с д и ж г Гаспар, Г.; Куба, П.; Флохова Ю.; Дудак Дж.; Флоркова, З. (2020). Разработка IoT-приложений на базе платформы MicroPython для реализации Индустрии 4.0 . 2020 19-я Международная конференция по мехатронике – Мехатроника (МЭ). стр. 1–7.
- ^ Jump up to: Перейти обратно: а б Рембор, К. «РЕПЛ» . Добро пожаловать в CircuitPython! . Система обучения Adafruit . Проверено 9 мая 2022 г.
- ^ «Отличия MicroPython от CPython — последняя документация MicroPython» . docs.micropython.org .
- ^ «MicroPython — Python для микроконтроллеров» . micropython.org .
- ^ Ван, Л.; Ли, Ю.; Чжан, Х.; Хан, К.; Чен, Л. (2021). Эффективный обфускатор на основе потока управления для байт-кода Micropython . 2021 7-й Международный симпозиум по надежности систем и программного обеспечения (ИСССР). стр. 54–63.
- ^ Хамфру, М.; Кванкео, Н.; Каемарунгси, К.; Фукава, К. (2017). Образовательный мобильный робот на базе MicroPython для обучения программированию . 2017 8-я Международная конференция информационных и коммуникационных технологий для встраиваемых систем (IC-ICTES). стр. 1–6.
Внешние ссылки [ править ]
- Официальный сайт
- микропитон на GitHub
- ПЕРЕЙДИТЕ К 2016 Г. • MicroPython и Интернет вещей • Дэмиен Джордж на YouTube
- MicroPython Плейлист на YouTube • Учебники Тони ДиКолы / Adafruit