Python > MicroPython
A lean and efficient implementation of Python 3 for microcontrollers.
Contents
- AI
- Audio
- Communications
- Authentication
- Bluetooth
- CAN
- Compression
- Cryptography
- DNS
- ESP-NOW
- Ethernet
- FTP
- GPS
- GSM
- HTTP
- IoT
- IR
- LoRa
- LoRaWAN
- MDNS
- LCD TFT
- E-Paper
- Fonts
- Graphics
- GUI
- OLED
- LCD Character
- LCD Graphic
- LED Matrix
- LED Segment
- LEDs
- Printer
- IO/ADC
- ADC
- IO/DAC
- IO/GPIO
- IO/IO-Expander
- IO/Joystick
- IO/Keyboard
- IO/Multiplexer
- IO/Potentiometers
- IO/Power Management
- IO/PWM
- IO/Relay
- IO/Rotary Encoder
- IO/Shift Registers
- IO/Waveform Generator
- Mathematics
- Motion
- Servo
- Stepper
- Accelerometer Digital
- Air Quality
- Barometer - Air and Water Pressure
- Battery
- Biometric
- Camera
- Colour
- Compass
- Current
- Distance IR
- Distance Laser
- Distance Ultrasonic
- Dust
- Energy
- Gaseous
- Humidity
- Light
- Scheduling
- Configuration file
- Database
- EEPROM
- Flash
- FRAM
- PSRAM
- SD
- SRAM
- Threading
- User Interface
- Utilities
- DC Motor
Libraries
AI
Audio
Examples for I2S support on microcontrollers that run MicroPython.
MicroPython driver for the Texas Instruments TAS2505 Digital Input Class-D Speaker Amplifier.
Communications
Library for sending data to thingspeak.com from IoT devices running MicroPython (such as ESP8266).
Simple example of how to use PushBullet with MicroPython on ESP8266.
A library for using Spotify's web API from a IoT device with MicroPython.
A python module for very basic APIs of the free dweet service.
A python module for very basic APIs of the free dweet service with encryption.
MicroPython library for sending notifications to Line Notify with ESP8266 and ESP32.
Authentication
Bluetooth
Lightweight Bluetooth Low Energy driver written in pure Python for MicroPython.
Human Interface Device (HID) over Bluetooth Low Energy (BLE) GATT library for MicroPython.
Passively retrieve sensor data from some Xiaomi Bluetooth Low Energy (BLE) sensors.
MicroPython library to read certain Xiaomi Mijia BLE temperature & humidity sensors.
Examples using aioble to interact with iTag BLE keychain tags.
CAN
Compression
MicroPython wrapper for FastLZ, a lightning-fast lossless compression library.
A low-memory, MicroPython-optimized, DEFLATE-inspired lossless compression library.
Cryptography
Lightweight porting of pyca/cryptography to MicroPython based on ARM Mbed TLS.
MicroPython package for doing fast RSA and elliptic curve cryptography, specifically digital signatures. ECDSA API design inspired from fastecdsa and implementation based on tomsfastmath.
Lightweight driver for Microchip Crypto Authentication secure elements written in pure Python for MicroPython.
A minimal Bitcoin library for MicroPython and Python 3 with a focus on embedded systems.
A MicroPython module to encrypt and decrypt messages with AES CBC mode.
A MicroPython module for creating, importing, and exporting RSA keys in DER and PEM formats with PKCS#1, PKCS#8, and X.509/SPKI structures, and signing/verifying and encryption/decryption using blinding and SHA-1 and SHA-256 hashing algorithms.
A Python module to encrypt and decrypt data with AES-128 CFB mode.
An endpoint-to-endpoint encryption based on Diffie-Hellman-Merkle with TLS1.3 styled handshake using MicroPython.
DNS
A small, versatile DNS client that provides an async version of getaddrinfo and works with any connectivity.
"I Can't Believe It's Not DNS!" (ICBIND) is an authoritative DNS server for the ESP8266 written in MicroPython.
A micro DNS server for MicroPython to simply respond to A queries on multi-domains with or without wildcards (used on Pycom modules & ESP32).
ESP-NOW
Ethernet
FTP
GPS
GSM
HTTP
IoT
Emulated Belkin WeMo device that works with Amazon Echo (Alexa) using MicroPython on an ESP32.
A remote for Sonos installations running on an ESP8266 and using Sonos HTTP API.
MicroPython-based scripts to extend your Home Assistant-driven home automation projects.
An approach to designing IoT applications using ESP8266, ESP32 or Pyboard D endpoints.
MicroPython code which uses the AWS IoT REST API to GET/POST device state info.
An ESP8266/ESP32 MicroPython-based sensor platform for GPIO, DHT, analog, LED and more. Includes remote updates for .py code from web server and MQTT/Home Assistant integration.
MicroPython module which allows creating Entites for HomeAssistant using MQTT Discovery.
This MicroPython project is to hack a Hyleton313 cheap WiFi smart socket.
This MicroPython project is to hack a TYWE3S board in a cheap WiFi RGB Bulb.
IR
Nonblocking device drivers to receive from IR remotes and for IR "blaster" apps.
Driver for Grid-EYE thermal infrared array sensor (Adafruit 3538).
LoRa
MicroPython library for controlling a Semtech SX127x LoRa module over SPI.
MicroPython library for controlling a Semtech SX127x LoRa module with asyncio API.
LoRaWAN
SX127x (LoRa transceiver) driver for (Micro)Python on ESP8266/ESP32/Raspberry Pi.
Lightweight Interrupt-driven Semtech SX127x Library for MicroPython.
MDNS
LCD TFT
Collection of drivers for TFT displays, ILI9341, SH1106, SSD1606, ST7735.
SSD1963 TFT Library for Pyboard and Raspberry Pi Pico.
Fast pure-C driver for MicroPython that can handle display modules on ST7789 chip.
Slow MicroPython driver for 240x240 ST7789 display without CS pin from AliExpress, written in MicroPython.
Driver for 320x240, 240x240 and 135x240 ST7789 displays written in MicroPython.
An ESP8266 MicroPython library for ST7735 160x80, 128x128, 128x160 TFT LCD displays.
MicroPython ST7789 display driver for TTGO T-Display ESP32 CP2104 WiFi Bluetooth Module 1.14 Inch LCD.
ST7735 MicroPython drivers for 80x160, 128x128, 128x160 for ESP8266.
Fast ESP_LCD based MicroPython driver for the TTGO T-Display-S3 st7789 display written in C.
ESP_LCD based MicroPython driver for ESP32-S3 Devices with ST7789 or compatible displays.
MicroPython display driver for the TTGO T-Display-S3 ST7789 written in C.
MicroPython display driver for the TTGO T-Display-S3 ST7789 written in Python.
Driver for displays using the GC901 driver for use with LVGL MicroPython.
E-Paper
Waveshare ePaper Display driver for devices running Pycom-flavored MicroPython.
Pure MicroPython driver for the DEPG0213BN eInk display found on the TTGO T5 V2.3 ESP32 boards.
Control a Waveshare 7.5" E-INK display using an ESP32 running MicroPython.
Fonts
A simple way to render above Python fonts to displays whose driver is subclassed from framebuf.
MicroPython FrameBuffer extension: larger and rotated font, triangles and circles.
MicroPython driver for reading BIG-5 Chinese characters from GT30L24T3Y / ER3303-1 SPI module.
Graphics
GUI
An object-oriented, component-based high-level GUI library with MicroPython binding.
Simple touch-driven event based GUI for the Pyboard and LCD160CR colour display.
MicroPython device driver and nano-GUI for RA8875 based displays.
A tiny display-only GUI with a limited set of GUI objects (widgets) for displays whose display driver is subclassed from the framebuf class. With drivers for TFT, ePaper and OLED displays.
Derived from nano-gui and supporting the same displays and hosts, this provides for user input via push buttons or a navigation joystick and an optional rotary encoder.
Derived from nano-gui and supporting the same displays and hosts, this offers touch input. Supports various touch controllers.
OLED
LCD Character
driver for AIP31068L 3.3 V I2C and SPI 1602 Serial Character LCDs.
MicroPython package to control HD44780 LCD displays 1602 and 2004 via I2C.
MicroPython library for interacting with HD44780-based LCD displays through a PCF8574 I/O expander. It offers a high-level API for LCD control, including text display, cursor manipulation, and backlight settings, while also providing lower-level access to the GPIO operations on the PCF8574.
LCD Graphic
LED Matrix
LED Segment
LEDs
Driver for P9813 RGB LED used in SeeedStudio's Grove chainable RGB LED.
A MicroPython library to interface with strands of WS2801 RGB LEDs.
MicroPython driver for the HT16K33, a LED matrix, 7-Segment Numeric, and 14-Segment Alphanumeric display driver IC.
This wrapper module aims to reduce the work needed to work with NeoPixel (WS2812) and DotStar (APA102) RGB LED strips and matrices.
A MicroPython port of the Adafruit CircuitPython APA102/DotStar library.
Printer
IO/ADC
ADS1015 12-Bit and ADS1115 16-bit ADC, 4 channels with programmable gain, I2C interface.
ADS1115 16-bit ADC, 4 channels with programmable gain, I2C interface.
ESP32 ADC driver using reference voltage calibration value from efuse.
MicroPython library for ADS1220 24-bit analog-to-digital converter.
MicroPython module for managing ADS1115, multichannel, differential I2C ADC from TI.
MicroPython module for controlling MCP342X, 18-bit analog-to-digital converter with I2C interface.
MicroPython driver for the MCP3001 1-channel 10-bit ADC with SPI interface.
IO/DAC
IO/GPIO
IO/IO-Expander
Driver for MCP23017 and MCP23008 GPIO expanders, extended with interrupt handling.
MicroPython driver for PCF8574 8-Bit I2C I/O Expander with Interrupt.
MicroPython driver for PCF8575 16-Bit I2C I/O Expander with Interrupt.
MicroPython library for using the MCP23S17 16-bit I/O expander with the ESP8266.
IO/Joystick
IO/Keyboard
IO/Multiplexer
IO/Potentiometers
IO/Power Management
IO/PWM
IO/Relay
IO/Rotary Encoder
IO/Shift Registers
IO/Waveform Generator
A MicroPython-based frequency generator for Raspberry Pi Pico designed to create vibrations on solenoids or speakers, enabling wave experimentation and exploration at home.
Mathematics
Fast Fourier transform in MicroPython's inline ARM assembler.
FIR filters using ARM Thumb assembler. Using an online utility you can go from a graph of required frequency response to a filter implementation.
Small size matrix handling module with a few linear algebra operations specifically for MicroPython (Python 3).
A MicroPython port of the CPython standard Fractions library.
Servo
Stepper
MicroPython library for Stepper Driver control using AMIS-30543 driver.
A MicroPython library for the Trinamic TMC5160 Motion Controller.
Driver and example in MicroPython to control a stepper motor via a DRV8825 controller board.
Accelerometer Digital
Air Quality
Barometer - Air and Water Pressure
Driver for BMP585, BMP581, BMP390, BMP280 Bosch temperature/pressure sensors.
MicroPython driver for the Bosch BMP3xx range of barometric pressure sensors. Includes FIFO support.
Driver for the Bosch BME280 temperature/pressure/humidity sensor.
Driver for Bosch BMP180 temperature, pressure and altitude sensor.
MicroPython driver for the BME280 sensor, target platform Pycom devices.
A MicroPython implementation of the driver for an MS5803 air/water pressure & temperature sensor.
A MicroPython module for communicating with the Bosch BME280 temperature, humidity, and pressure sensor.
MicroPython module for BMP581, pressure and ambient temperature sensor from Bosch Sensortec.
MicroPython Driver for the TDK ICP-10111 Barometric Pressure and Temperature sensor. (Archived)
MicroPython driver for the Bosch BMP581 pressure & temperature sensor. (Archived)
MicroPython Driver for the Mitsumi MMR902 Micro Pressure Sensor. (Archived)
MicroPython driver for the NXP MPL3115A2 Pressure and Temperature sensor. (Archived)
Battery
Biometric
Camera
Colour
Compass
Current
Distance IR
Distance Laser
Distance Ultrasonic
Energy
Gaseous
MicroPython I2C driver for Sensirion SCD40 and SCD41 CO2 sensors.
MicroPython module for work with SCD4x (SCD40, SCD41) low power CO2, temperature & humidity electroacoustic sensor from Sensirion.
Light
Scheduling
MicroCRON is a time-based task scheduling program for MicroPython.
SimpleCRON is a time-based task scheduling program inspired by the well-known cron program for Unix systems.
Configuration file
Database
A Redis client implementation designed for use with MicroPython.
Lightweight version of micropg with some slight limitations (e.g. error handling), in order to run on low-RAM microcontrollers (works with ESP8266).
The lightest PostgreSQL database driver for MicroPython based on micropg_lite/micropg, but has even stronger restrictions in functionality and focuses only on the absolutely necessary functions.
EEPROM
Flash
PSRAM
SD
SRAM
Threading
User Interface
Proximity
Tutorials
Tutorial and code for asynchronous interfaces to switches, pushbuttons, encoders and ADCs.
Tutorial and code for the easy way to do 3D rotation.
A 100-day challenge building real-world IoT projects with MicroPython on ESP32, ESP8266 and Raspberry Pi Pico 2W. Step-by-step documented with wiring diagrams and code for beginners.
Modbus
MQTT
A 'resilient' asynchronous MQTT client: recovers from WiFi and broker outages.
A micro-framework for using MQTT with asyncio on MicroPython boards, primarily on the ESP32.
Implements an MQTT-controllable switch for the iTead Sonoff Switch using MicroPython.
Publish and Subscribe to ThingSpeak using MQTT with MicroPython running on ESP8266/ESP32 platforms.
Async MQTT library with auto reconnect for MicroPython devices such as the ESP32 or Pycom devices.
Using MQTT to Publish/Subscribe to Adafruit IO. MicroPython/CircuitPython implementation on ESP8266/ESP32.
Publish and Subscribe to ThingSpeak using MQTT with MicroPython.
NFC
NTP
Object Storage
Temperature Digital
ESP8266 driver for DHT11 and DHT12 temperature and humidity sensor.
Driver for BME680 gas, pressure, temperature and humidity sensor.
Driver for the Texas Instruments HDC1008 humidity and temperature sensor.
Silicon Labs Si705x series of temperature sensors, I2C interface.
Silicon Labs Si70xx series of relative humidity and temperature sensors, I2C interface.
This is a MicroPython module / class to measure data from the HTU21D.
A SHT3x (SHT30/31/35) library for ESP8266/ESP32 with MicroPython.
MicroPython implementation of API of SHT25 humidity and temperature sensor.
MicroPython driver for the AHT10 and AHT20 temperature and humidity sensors.
MicroPython driver for the ZACwire protocol used in TSic 506F temperature sensors.
MicroPython Driver for the Sensirion SHTC3 Temperature and Humidity Sensor.
MicroPython Driver for the Analog Devices ADT7410 Temperature Sensor.
MicroPython Driver for the Renesas HS3003 Temperature and Humidity Sensor.
MicroPython Driver for the Sensirion Temperature and Humidity SHT40 and SHT45 Sensor.
MicroPython driver for the TI HDC1080 Temperature and Humidity sensor.
MicroPython module for the TMP117 temperature sensor from Texas Instruments.
MicroPython module for the BME680, Bosch low power gas, pressure, temperature & humidity sensor.
MicroPython Driver for the NXP Semiconductors PCT2075 Temperature Sensor.
OneWire
Onkyo EISCP
OTA
Proxy
Radio
MicroPython implementation of popular 433MHz-based RFSockets.
Capture and replay 433MHz remote control codes. Control remote switched power adaptors.
MicroPython examples using YS-RF34T 433MHz ASK/OOK UART transceivers.
ESP32 433MHz receiver written in MicroPython and tools for Windows.
RC receiver
RFID
RTC
Serial
Serialization
MessagePack serialisation library optimised for MicroPython.
A lightweight implementation of Google's Protocol Buffers (protobuf) for MicroPython.
SMTP
Sockets
Telnet
Text-to-Speech
Web
A micro HTTP web server that supports WebSockets, HTML/Python language templating and routing handlers, for MicroPython (used on Pycom modules & ESP32).
The last micro web server for IoTs (MicroPython) or large servers (CPython), that supports WebSocket, routes, template engine and with really optimized architecture (mem allocations, async I/Os).
A mini client/server implementation of CoAP (Constrained Application Protocol) into MicroPython.
A micro JSON REST web client based on MicroWebCli for MicroPython (used on Pycom modules & ESP32).
Full async MicroPython web server with small memory footprint.
A micro HTTP web client for MicroPython (used on Pycom modules & ESP32).
Captive portal for MicroPython including a dumb DNS server and a web server to configure WiFi networks.
Simple MicroPython web server for serving a website from a captive portal.
A lightweight HTTP request routing processing support library based on MicroPython. The previous name was micro-route.
Very simple HTTP server written in MicroPython for controlling the pins of an ESP32 board.
WiFi
Sensors
Load Cell
Magnetometer
Motion Inertial
Bosch BNO055 driver for MicroPython. IMU with hardware sensor fusion.
Sensor fusion calculates heading, pitch and roll from the outputs of motion tracking devices.
LSM9DS0 g-force linear acceleration, Gauss magnetic and DPS angular rate sensors.
MicroPython library for reading from MPU-6050 accelerometer and gyroscope modules.
Stream data from MPU6050 to MQTT server using MicroPython on ESP8266.
MicroPython I2C driver for MPU6886 6-axis motion tracking device.
MPU6050 (Accelerometer/Gyroscope) driver which works on ESP32.
ARCHIVED. MicroPython Driver for the Bosch BMI160 Accelerometer/Gyro Sensor.
ARCHIVED. MicroPython Driver for the Bosch BMI270 Accelerometer/Gyro Sensor.
ARCHIVED. MicroPython Driver for the TDK ICG20660 Accelerometer/Gyro sensor.
Radiation
Soil Moisture
Spectral
Temperature Analog
Precision thermocouple to digital converter with linearization, SPI interface.
Precision resistance-to-digital converter optimized for platinum resistance temperature detectors, SPI interface.
Temperature IR
Touch Capacitive
Driver for MPR121 capacitive touch keypads and breakout boards.
MicroPython ESP8266/ESP32 driver for TTP229-BSF 16-key capacitive keypad in serial interface mode.
Touch Resistive
Frameworks
Development
Micropy CLI is a project management/generation tool for writing MicroPython code in modern IDEs such as Visual Studio Code.
Generate and use stubs for different MicroPython firmwares to use with Visual Studio Code or any IDE and linter.
Stubs of most MicroPython ports, boards and versions to make writing code that much simpler.
Automatically Generated Stub Packages for Micropy-Cli and whomever else.
Generator for MicroPython external modules written in C.
GitHub workflow supported MicroPython package template with deploys to the Python Package Index on a push to the main branch and test deploys to the Test Python Package Index on PRs.
Compile WebAssembly to native MicroPython .mpy files. Allows writing code in various statically compiled languages, and translating them to C for near-native performance.
IDEs
Shells
Small on-board editor for Pyboard, WiPy, ESP8266, ESP32, PyCom and Adafruit devices written in Python.
Jupyter kernel to interact with a MicroPython board over its REPL interface.
A file system bridge to synchronize and manage files on a device running MicroPython.
Powerful official shell that supports mounting the host's current directory on the target. Run code without changing the target's filesystem.