Jump to content

МикроПитон

МикроПитон
Разработчик(и) Дэмиен П. Джордж
Первоначальный выпуск 3 мая 2014 г .; 10 лет назад ( 03.05.2014 )
Стабильная версия
1.23.0  Отредактируйте это в Викиданных / 31 мая 2024 г .; 16 дней назад ( 31 мая 2024 г. )
Репозиторий
Написано в С
Платформа ARM Cortex-M , STM32 , ESP8266 , ESP32 , 16-битный PIC , Unix , Microsoft Windows , Zephyr , JavaScript , RP2040
Лицензия МОЯ лицензия [1]
Веб-сайт микропитон .org

MicroPython — это программная реализация языка программирования , в значительной степени совместимого с Python 3, написанного на C и оптимизированного для работы на микроконтроллере . [2] [3]

MicroPython состоит из компилятора Python для байт-кода и интерпретатора этого байт-кода во время выполнения. Пользователю предоставляется интерактивное приглашение ( REPL ) для немедленного выполнения поддерживаемых команд. Включен набор основных библиотек Python; MicroPython включает модули, которые предоставляют программисту доступ к аппаратному обеспечению низкого уровня. [4]

В MicroPython есть встроенный ассемблер , который позволяет коду работать на полной скорости, но его нельзя переносить на разные микроконтроллеры.

Исходный код проекта доступен на GitHub под лицензией MIT . [5]

История [ править ]

Калькулятор Casio FX-9860GIII, представленный в 2020 году и поставляемый со встроенным MicroPython.

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]

Поддерживаемые операции [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]

Стандартные библиотеки Python в MicroPython [4]
Название библиотеки Описание
множество операции с массивами
cmath предоставляет математические функции для комплексных чисел
ГК сборщик мусора
математика предоставляет базовые математические операции для чисел с плавающей запятой
система функции системного уровня; обеспечивает доступ к переменным, используемым интерпретатором
Бинаскии функции для преобразования двоичного кода в ASCII
коллекции операции для коллекций и типов контейнеров, содержащих различные объекты
нет обеспечивает доступ к кодам ошибок
хэшлиб операции для алгоритмов двоичного хеширования
куча операции по реализации алгоритма очереди кучи
этот операции по обработке ввода/вывода потоков
JSON обрабатывает преобразование между документами JSON и объектами Python
ты функции для доступа к файловой системе и основные операционной системы функции
ре реализует операции сопоставления регулярных выражений
выбирать функции для обработки событий в нескольких потоках
розетка подключение к сокетам (сетям), предоставление доступа к интерфейсу сокетов
структура выполняет преобразования в объекты Python путем упаковки и распаковки примитивных типов данных.
время обеспечивает функцию времени и даты, включая измерение временных интервалов и реализацию задержек
zlib операции по распаковке двоичных данных
Библиотеки, специфичные для MicroPython [4]
Название библиотеки Описание
кадровый буфер предоставляет буфер кадров , который можно использовать для создания растровых изображений для отправки на дисплей.
машина функции, помогающие получать доступ и взаимодействовать с аппаратными блоками
микропитон доступ и управление внутренними компонентами 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]

Процесс загрузки [ править ]

Плата 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)
  • безопасная загрузка: только оранжевый светодиод (во время загрузки не выполняются никакие сценарии)
  • сброс файловой системы: зеленый и оранжевый светодиод вместе (сбрасывает флэш-накопитель до заводского состояния и загружается в безопасном режиме)
  • используется в качестве исправления при повреждении файловой системы

Ошибки [ править ]

Примеры программирования [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]

См. также [ править ]

Ссылки [ править ]

  1. ^ Джордж, Дэмиен П. (4 мая 2014 г.). «микропитон/ЛИЦЕНЗИЯ у мастера · микропитон/микропитон» . Гитхаб . Проверено 11 февраля 2017 г. .
  2. ^ Венкатараманан, Мадхумита (6 декабря 2013 г.). «Micro Python: мощнее, чем Arduino, проще, чем Raspberry Pi» . Проводной . Проверено 15 декабря 2016 г.
  3. ^ Егулалп, Сердар (5 июля 2014 г.). «Крошечные схемы Micro Python: вариант Python предназначен для микроконтроллеров» . Инфомир . Проверено 15 декабря 2016 г.
  4. ^ Jump up to: Перейти обратно: а б с д и ж г час я «MicroPython — Python для микроконтроллеров» . micropython.org . Проверено 12 августа 2017 г.
  5. ^ «MicroPython на GitHub» . Гитхаб . 7 февраля 2022 г.
  6. ^ «Micro Python: Python для микроконтроллеров» . Кикстартер . Проверено 15 декабря 2016 г.
  7. ^ Бенинго, Джейкоб (11 июля 2016 г.). «Прототип для производства: MicroPython под капотом» . Сеть ЭДН . Проверено 15 декабря 2016 г.
  8. ^ «MicroPython на Nucleo STM32, STM32F411CE и STM32F401CC: прошивка прошивки и основные инструменты» . Мишьянти . Август 2023.
  9. ^ «MicroPython с esp8266 и esp32: прошивка и программирование базовыми инструментами» . Мишьянти . 7 июня 2023 г.
  10. ^ Джордж, Дэмиен П. «микропитон/порты в мастере · микропитон/микропитон» . Гитхаб . Проверено 22 октября 2019 г.
  11. ^ Соколовский Павел. «Потрясающий МикроПитон» . Гитхаб . Проверено 22 октября 2019 г.
  12. ^ Уильямс, Алан (7 июля 2015 г.). «Практическое знакомство с пользовательским интерфейсом BBC Micro-Bit» . ElectronicsWeekly.com . Проверено 8 июля 2015 г.
  13. ^ Шоукрофт, Скотт (22 мая 2019 г.). «Выпущена CircuitPython 4.0.1!» . Блог Adafruit . Адафрут Индастриз . Проверено 11 июня 2019 г.
  14. ^ «Предварительный просмотр плаката RISC-V — 7-й семинар RISC-V» (PDF) . 28 ноября 2017 года . Проверено 17 декабря 2018 г.
  15. ^ «LEGO выпускает MicroPython для EV3 на основе ev3dev и Pybricks» . www.ev3dev.org . Проверено 21 апреля 2020 г.
  16. ^ «Знакомьтесь, Raspberry Silicon: Raspberry Pi Pico уже в продаже по цене 4 доллара» . www.raspberrypi.org . 21 января 2021 г. Проверено 21 января 2021 г.
  17. ^ Jump up to: Перейти обратно: а б с д и ж г час я Альсаббах, Марван (2019). Рецепты MicroPython . Бирмингем, Великобритания: Packt Publishing .
  18. ^ Jump up to: Перейти обратно: а б с Бруно, П. (25 ноября 2021 г.). «Введение в MicroPython» . All3DP . Проверено 9 мая 2022 г.
  19. ^ Jump up to: Перейти обратно: а б с д и ж г час я дж к Белл, Чарльз (2017). MicroPython для Интернета вещей . Беркли, США: Apress .
  20. ^ Jump up to: Перейти обратно: а б с д и ж г Гаспар, Г.; Куба, П.; Флохова Ю.; Дудак Дж.; Флоркова, З. (2020). Разработка IoT-приложений на базе платформы MicroPython для реализации Индустрии 4.0 . 2020 19-я Международная конференция по мехатронике – Мехатроника (МЭ). стр. 1–7.
  21. ^ Jump up to: Перейти обратно: а б Рембор, К. «РЕПЛ» . Добро пожаловать в CircuitPython! . Система обучения Adafruit . Проверено 9 мая 2022 г.
  22. ^ «Отличия MicroPython от CPython — последняя документация MicroPython» . docs.micropython.org .
  23. ^ «MicroPython — Python для микроконтроллеров» . micropython.org .
  24. ^ Ван, Л.; Ли, Ю.; Чжан, Х.; Хан, К.; Чен, Л. (2021). Эффективный обфускатор на основе потока управления для байт-кода Micropython . 2021 7-й Международный симпозиум по надежности систем и программного обеспечения (ИСССР). стр. 54–63.
  25. ^ Хамфру, М.; Кванкео, Н.; Каемарунгси, К.; Фукава, К. (2017). Образовательный мобильный робот на базе MicroPython для обучения программированию . 2017 8-я Международная конференция информационных и коммуникационных технологий для встраиваемых систем (IC-ICTES). стр. 1–6.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 92929d1f0351f287ce00e261889d2cac__1718560200
URL1:https://arc.ask3.ru/arc/aa/92/ac/92929d1f0351f287ce00e261889d2cac.html
Заголовок, (Title) документа по адресу, URL1:
MicroPython - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)