Infineon / Mitsubishi / Fuji / Semikron / Eupec / IXYS

What is MicroPython?

What is MicroPython?

Posted Date: 2023-06-22

MicroPython implements the Python 3 programming language for microcontrollers and microcomputers. It's a firmware answer designed to implement the high-level language options of Python into low-level {hardware} platforms. The firmware is optimized to run in constrained environments whereas permitting a small subset of Python 3 commonplace libraries into embedded programming.

MicroPython firmware can run with a footprint of 256 Kilobytes and 16 Kilobytes of RAM. It could actually additionally supply a number of high-level programming options like arbitrary precision integers, object-oriented programming, mills, closures, exception dealing with, and record comprehension — even with such restricted code house and reminiscence. Normally, such options should not accessible in typical microcontroller programming. All these options, nonetheless, can be found with entry to low-level {hardware} through the machine module of the MicroPython firmware.

Plus, MicroPython compiler and runtime code consists of an interactive immediate referred to as REPL (read-eval-print-loop) that permits executing instructions from a desktop pc immediately on an embedded platform. The instructions utilizing REPL are executed through UART, the place the goal microcontroller board is related to the host PC over USB. That is helpful for the fast and real-time testing and debugging of embedded programs.

One of many notable high-level language options of MicroPython is multithreading. Sometimes, naked metals are void of multithreading capabilities. The multithreading function of MicroPython firmware hastens embedded functions by dealing with many embedded duties concurrently from a single microcontroller, and allows you to suppose out of the standard programming loops.

MicroPython is open supply
MicroPython is out there for basic use beneath MIT License. A lot of its modules and libraries are additionally accessible beneath MIT license or related open supply license. It's free to make use of for each academic and industrial functions; anyone can use and modify the firmware. It's an open-source undertaking with supply code accessible on Github. Being an open-source undertaking, MicroPython is open for group contributions. If you're in search of a firmware model concentrating on a selected {hardware} platform, microcontroller, port, or function, take a look at the official MicroPython obtain hyperlink.

MicroPython vs. Python
MicroPython is essentially an implementation of Python 3.4 with some choose Python 3.5 and above options. Many commonplace CPython libraries have been rewritten in C99 to run inside constraint environments of naked metals (microcontrollers and microcomputers with none working system) as a part of MicroPython. These micro-fied commonplace Python libraries type the core of MicroPython firmware. Not all commonplace Python libraries have been rewritten to type MicroPython; MicroPython is a subset of ordinary Python. It consists of the re-implementation of solely these Python libraries that could be helpful in programming embedded programs or programmatically enhancing embedded functions.

MicroPython could differ in syntax and conduct with equal operators, features, and modules of ordinary Python in some ways. A number of these conflicts are listed right here. Aside from just a few conflicts listed within the hyperlink talked about above, many of the MicroPython syntax and programming is compliant with commonplace Python documentation.

A microcontroller board, RTOS, or working system supported by MicroPython known as a MicroPython port. You will need to know that many options of core MicroPython could also be unavailable for a specific port, i.e., it might not be supported in a given microcontroller, RTOS, or working system. Plus, a specific port could have further modules and functionalities of MicroPython. The MicroPython model for ESP32 and ESP8266, for instance, has further libraries and features accessible to deal with community connections and helps WebREPL (REPL over internet sockets).

Supported Boards and MicroPython ports
MicroPython is out there for a number of widespread platforms, together with x86, x86-64, ARM-Thumb, and Xtensa. It's remarkably quick, with code execution potential at speeds as much as 168 MHz. The official microcontroller board supported by MicroPython is pyboard. The pyboard has the next salient options:

  • STM32F405RG microcontroller
  • 168 MHz Cortex M4 CPU with {hardware} floating level
  • 1024KiB flash ROM
  • 192KiB RAM
  • Micro SD card slot
  • Micro-USB port
  • On-board 3-axis accelerometer and RTC
  • 29 GPIO; 3x 12-bit ADC accessible on 16 pins 4 with analog floor shielding and 2x 12-bit DAC accessible on pins X5and X6.

MicroPython can be utilized not simply the pyboard, however on many different microcontroller boards of STMicroelectronics as properly. Among the microcontrollers of STMicroelectronics which have full-support of MicroPython firmware embody:

  • Espruino Pico (STM32F401CD)
  • BLACK STM32F407VET6 (STM32F407VE)
  • BLACK STM32F407ZET6 (STM32F407ZE)
  • BLACK STM32F407ZGT6 (STM32F407ZG)
  • FEZ Cerb40 II (STM32F405RG)
  • G30HDR Module (STM32F401RE)
  • FEZ Lemur (STM32F401RE)
  • Netduino Plus 2 (STM32F405RG)
  • OpenMV (STM32F765)
  • HY-STM32F4xxCore144 Core/Dev Board (STM32F407ZGT6)
  • HydraBus V1.0 (STM32F405RG)
  • Olimex STM32-405STK (STM32F405RG)
  • Olimex STM32-E407 (STM32F407ZG)
  • NUCLEO F401RE (STM32F401RE)
  • STM Discovery STM32F401 (STM32F401VC)
  • STM Discovery STM32F407 (STM32F407VG)
  • STM Discovery STM32F429 (STM32F429ZI)
  • STM Discovery STM32F746G (STM32F746NG)
  • STM32F407VET6 Mini (STM32F407VE)
What is MicroPython?
Determine 1. Examples of MicroPython Boards and Ports.

Other than the above-listed microcontrollers of STMicroelectronics, MicroPython helps the next notable embedded platforms:

  • ESP32
  • ESP8266
  • Micro:Bit
  • WiPy and CC3200
  • Pyboard D-Collection
  • Teensy 3.X
  • Adafruit circuit Playground Categorical
  • Arduino Due
  • Cypress FreeSOC
  • Raspberry Pi Pico

Zephyr is without doubt one of the real-time working programs supported by MicroPython. MicroPython can run as a thread in different RTOS like pyRTOS and FreeRTOS.

MicroPython libraries
The core MicroPython consists of implementation of a number of commonplace Python 3.4 libraries, which consists of an array: binascii, builtins, cmath, collections, errno, gc, hashlib, heapq, io, json, math, os, random, re, choose, socket, ssl, struct, sys, time, uasyncio, zlib, and _thread. Different libraries included in MicroPython are hardware-specific. These are referred to as micro-libraries, together with Bluetooth, btree, cryptolib, framebuf, machine, micropython, neopixel, community, and uctypes.

Port-specific libraries
Completely different microcontroller boards and RTOS supply further options and core microcontroller operations. MicroPython consists of libraries particular to explicit microcontroller boards and real-time working programs to use their unique options. For instance, the port-specific model of MicroPython for pyboard consists of libraries like pyb, stm, and lcd160cr. The port-specific model of MicroPython for WiPy consists of wipy library and extra courses like ADCChannel, TimerChannel, TimerWiPy, and ADCWiPy. The port-specific model of MicroPython for ESP8266 and ESP32 boards consists of esp and esp32 packages. The rp2 bundle is moreover included within the MicroPython model for Raspberry Pi Pico. A further module, zephyr, comes packaged within the MicroPython model for Zephyr RTOS.

Further Python libraries from micropython-lib
The core MicroPython modules are referred to as umodules within the MicroPython terminology. Other than the choose commonplace Python libraries rewritten to type core MicroPython, many different commonplace Python libraries have been rewritten in MicroPython tasks. These libraries could be accessed as a separate distribution within the type of micropython-lib. Most of those libraries/modules use FFI for OS-specific functionalities. That's the reason micropython-lib could be usually used solely on hosts with POSIX-compatible working programs like Linux, FreeBSD, Solaris, MacOS, and many others. It has restricted assist for Home windows. In contrast to commonplace MicroPython modules, micropython-lib modules should be put in both utilizing upip or copying unzipped packages manually.

Extending MicroPython libraries
It is usually potential to increase the implementation of built-in MicroPython libraries. Any user-defined module named overwrites the usual MicroPython umodule inside a bundle. The bundle can nonetheless use the built-in functionalities by importing the u-module immediately. Many of the libraries in micropython-lib have been written in the identical method.

MicroPython could be the subsequent revolution within the microcontroller world after the Arduino. Not solely has it completed the main activity of introducing Python to microcontrollers and MCU-based embedded programs (Python is the one-stop for creating networked and AI-backed functions), however its use in multithreading in embedded functions can be one other vital milestone set by the MicroPython initiative.