Curated list of awesome lists
A curated list of awesome MicroPython libraries, frameworks, software and resources.
MicroPython is a lean and efficient implementation of the Python 3 programming language that includes a small subset of the Python standard library and is optimised to run on microcontrollers and in constrained environments.
Contents
Libraries
Other places you can look for MicroPython Libraries:
-
PyPi - This filter shows just the MicroPython libraries on PyPi. Note: You cannot
pip install
MicroPython libraries. See the MicroPython docs for more information on managing packages with MicroPython.
-
GitHub Search - Search GitHub for repositories containing MicroPython.
-
GitHub Topic - MicroPython - Browse GitHub Topics for projects tagged with MicroPython.
-
Libraries.io - Libraries.io query for MicroPython.
-
GitLab Explore - Explore repositories on GitLab.
-
Codeberg Explore - Explore repositories on Codeberg.
AI
-
MicroMLP - A micro neural network multilayer perceptron for MicroPython (used on ESP32 and Pycom modules).
-
MicroPython-NeuralNetwork - Neural Network for MicroPython.
Analytics
-
uMath - Computer Algebra for microcontrollers.
-
micropython-ulab - A NumPy-like fast vector module for MicroPython.
-
micropython-fourier - Fast Fourier transform in MicroPython's inline ARM assembler.
-
Filters - FIR filters using ARM Thumb assembler. Using an online utility you can go from a graph
of required frequency response to a filter implementation.
-
ulinalg - Small size matrix handling module with a few linear algebra operations specifically for MicroPython (Python 3).
-
micropython-mtx - Fast Matrix Multiplication and Linear Solver on MicroPython.
-
micropython-vec - Vector Operations on MicroPython.
-
MicroPython_Statistics - Statistics module for MicroPython.
-
MicroPython-Matrix - MicroPython basic matrix operations.
Audio
Communications
APIs
Authentication
Bluetooth
-
PyBoard-HC05-Android - Pyboard HC05 Bluetooth adapter example application.
-
uble - Lightweight Bluetooth Low Energy driver written in pure Python for MicroPython.
-
MicroPythonBLEHID - Human Interface Device (HID) over Bluetooth Low Energy (BLE) GATT library for MicroPython.
-
upyble - Command line tool for Bluetooth Low Energy MicroPython devices.
-
micropython-xiaomi-ble-adv-parse - Passively retrieve sensor data from some Xiaomi Bluetooth Low Energy (BLE) sensors.
-
mijia-temphum-upy - MicroPython library to read certain Xiaomi Mijia BLE temperature & humidity sensors.
CAN
Compression
-
ufastlz - MicroPython wrapper for FastLZ, a lightning-fast lossless compression library.
-
tamp - A low-memory, MicroPython-optimized, DEFLATE-inspired lossless compression library.
Cryptography
-
ucryptography - Lightweight porting of pyca/cryptography to MicroPython based on ARM Mbed TLS.
-
mpyaes - MicroPython module for AES encryption.
-
micropython-aes - AES algorithm with pure python implementation.
-
ucrypto - MicroPython package for doing fast RSA and elliptic curve cryptography, specifically digital signatures. ECDSA API design inspired from fastecdsa and implementation based on tomsfastmath.
-
ucryptoauthlib - Lightweight driver for Microchip Crypto Authentication secure elements written in pure Python for MicroPython.
-
embit - A minimal Bitcoin library for MicroPython and Python 3 with a focus on embedded systems.
-
microotp - An ESP8266 MicroPython OTP Generator.
-
micropython-rsa-signing - RSA signing on MicroPython.
-
micropython-cryptomsg - A MicroPython module to encrypt and decrypt messages with AES CBC mode.
-
mprsa - 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.
DNS
-
ICantBelieveItsNotDNS - "I Can't Believe It's Not DNS!" (ICBIND) is an authoritative DNS server for the ESP8266 written in MicroPython.
-
MicroDNSSrv - A micro DNS server for MicroPython to simply respond to A queries on multi-domains with or without wildcards (used on Pycom modules & ESP32).
-
tinydns - Very simple DNS async server for MicroPython.
-
micropython-captiveportal - Minimal async captive portal for MicroPython (compatible with uasyncio v3/MicroPython 1.13+ as well as earlier versions).
-
Micropython-DNSServer-Captive-Portal - MicroPython WiFi AP Captive Portal with DNS and Web Server.
Ethernet
FTP
GPS
GSM
IoT
-
microhomie - MicroPython implementation of the Homie MQTT convention for IoT.
-
uPyEcho - Emulated Belkin WeMo device that works with Amazon Echo (Alexa) using MicroPython on an ESP32.
-
SonosRemote - A remote for Sonos installations running on an ESP8266 and using Sonos HTTP API.
-
micropython-home-assistant - MicroPython-based scripts to extend your Home Assistant-driven home automation projects.
-
micropython-iot - An approach to designing IoT applications using ESP8266, ESP32 or Pyboard D endpoints.
-
iot-core-micropython - Use MicroPython to connect to Google Cloud IoT Core.
-
SmartUPy - Controlling "Tuya-type" smart power outlets using MicroPython.
-
aws-iot-GET-POST-loop - MicroPython code which uses the AWS IoT REST API to GET/POST device state info.
-
sensor-mqtt-homeassistant - 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.
IR
LoRaWAN
MDNS
-
micropython-mdns - A pure Python implementation of MDNS with support for Service Discovery.
Modbus
-
micropython-modbus - MicroPython port of modbus-tk.
-
micropython-modbus - Modbus Master library for MicroPython ESP32 devices. Based on pycom-modbus from Pycom.
-
mp_modbus - Modbus library for MicroPython.
-
micropython-modbus - ModBus TCP and RTU library supporting client and host mode. Based on pycom-modbus from Pycom.
MQTT
-
micropython-mqtt - A 'resilient' asynchronous MQTT driver. Plus a means of using an ESP8266 to bring MQTT to non-networked targets.
-
MQBoard - A micro-framework for using MQTT with asyncio on MicroPython boards, primarily on the ESP32.
-
pysmartnode - MicroPython Smart Home framework.
-
umqtt_aws_iot - Publish UMQTT messages with MicroPython to AWS IoT.
-
sonoff-mqtt by davea - MicroPython scripts to control Sonoff/ESP8266 using MQTT.
-
micropython-sonoff-switch - Implements an MQTT-controllable switch for the iTead Sonoff Switch using MicroPython.
-
micropython-thingspeak-mqtt-esp8266 - Publish and Subscribe to ThingSpeak using MQTT with MicroPython running on ESP8266/ESP32 platforms.
-
uMQTT - MQTT publish for MicroPython on the WiPy board.
-
micropython-mqtt - Async MQTT library with auto reconnect for MicroPython devices such as the ESP32 or Pycom devices.
-
micropython-adafruit-mqtt-esp8266 - Using MQTT to Publish/Subscribe to Adafruit IO. MicroPython/CircuitPython implementation on ESP8266/ESP32.
-
MicropythonCayenneMQTTClient - A port of the Python Cayenne MQTT Client to MicroPython.
-
mqtt_upython - MQTT Client using MicroPython on ESP8266.
NFC
-
micropython-nfc - Using NFC with MicroPython.
-
micropython_pn532 - Driver for PN532 NFC/RFID breakout boards based on Adafruit CircuitPython (UART).
-
NFC_PN532_SPI - Partial port of Adafruit CircuitPython to MicroPython of PN532 NFC/RFID control library (SPI).
NTP
OneWire
-
Official OneWire - For devices using the OneWire bus, eg Dallas DS18x20.
-
Onewire_DS18X20 - Classes for driving the DS18x20 sensor with the OneWire protocol for Pycom MicroPython.
Onkyo EISCP
-
eiscp-micropython - MicroPython port for the Onkyo-EISCP protocol used, among others, by Pioneer.
OTA
Radio
RC receiver
REPL
-
webrepl - MicroPython WebREPL.
-
zepl - MicroPython WebREPL Console Application using ZeroMQ.
-
jupyter_micropython_remote - Jupyter kernel to directly execute code on a MicroPython board over the serial/web REPL.
-
FBConsole - Framebuffer console class for MicroPython.
RFID
RTC
Serial
-
mpy-miniterm - Tool for seamless serial debug and file synchronisation with MicroPython devices via the serial REPL.
-
MicroPython-MorseCode - International Morse Code using a microcontroller with MicroPython.
-
I2C Slave - Uses the Pyboard's I2C slave mode to implement a full duplex asynchronous link. Principal use case is for ESP8266 which has only one UART.
Serialization
-
micropython-msgpack - MessagePack serialisation library optimised for MicroPython.
-
micropython-uprotobuf - A lightweight implementation of Google's Protocol Buffers (protobuf) for MicroPython.
-
minipb - Mini Protobuf {de}serializer in pure Python.
SOCKS
SMTP
-
uMail - A lightweight, scalable SMTP client for sending email in MicroPython.
TCP
-
us2n - MicroPython bridge between UART and TCP for the ESP32.
Telnet
-
MicroTelnetServer - Simple telnet server for MicroPython and the ESP8266 allowing telnet clients access to the REPL.
VoIP
-
uPyVoip - VoIP for MicroPython ESP32 with Interactive Voice Response.
WiFi
Web
-
MicroWebSrv - A micro HTTP web server that supports WebSockets, HTML/Python language templating and routing handlers, for MicroPython (used on Pycom modules & ESP32).
-
MicroWebSrv2 - 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).
-
tinyweb - Simple and lightweight HTTP async server for MicroPython.
-
upy-websocket-server - MicroPython (ESP8266) WebSocket server implementation.
-
micropython-captive-portal - A captive portal demo for MicroPython.
-
uPyPortal - A captive portal for MicroPython using ESP32 (Wemos).
-
ESP8266WebServer - ESP8266 web server for MicroPython.
-
microCoAPy - A mini client/server implementation of CoAP (Constrained Application Protocol) into MicroPython.
-
micropyserver - MicroPyServer is a simple HTTP server for MicroPython projects.
-
MicroRESTCli - A micro JSON REST web client based on MicroWebCli for MicroPython (used on Pycom modules & ESP32).
-
micropython-noggin - A very simple web server for MicroPython.
-
uwebsockets - MicroPython WebSocket implementation for ESP8266.
-
microdot - The impossibly small web framework for MicroPython.
-
micropython-nanoweb - Full async MicroPython web server with small memory footprint.
-
MicroWebCli - A micro HTTP web client for MicroPython (used on Pycom modules & ESP32).
-
micropython-configserver - Captive portal for MicroPython including a dumb DNS server and a web server to configure WiFi networks.
-
micropython-aioweb - A minimalist asyncio web framework for MicroPython.
-
thimble - A tiny web framework for MicroPython.
Zigbee
-
ZbPy - MicroPython IEEE802.15.4 / Zigbee parser.
Display
E-Paper
Fonts
-
micropython-font-to-py - A Python 3 utility to convert fonts to Python source capable of being frozen as bytecode.
-
writer - A simple way to render above Python fonts to displays whose driver is subclassed from
framebuf
.
-
ssd1306big - A font for MicroPython on 128x64 pixel SSD1306 OLED display.
-
framebuf2 - MicroPython FrameBuffer extension: larger and rotated font, triangles and circles.
Graphics
GUI
-
lvgl - An object-oriented, component-based high-level GUI library with MicroPython binding.
-
micropython-lcd160cr-gui - Simple touch-driven event based GUI for the Pyboard and LCD160CR colour display.
-
micropython_ra8875 - MicroPython device driver and nano-GUI for RA8875 based displays.
-
micropython-nano-gui - 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.
-
micro-gui - 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.
-
TFT-GUI - A fast touch GUI for large displays based on SSD1963 controller with XPT2046 touch controller.
-
micropython-nextion - Control Nextion displays using MicroPython.
LCD Character
LCD Graphic
LCD TFT
-
micropython-ili9341 - Collection of drivers for TFT displays, ILI9341, SH1106, SSD1606, ST7735.
-
micropython-ili934x - SPI driver for ILI934X series based TFT / LCD displays.
-
MicroPython-ST7735 - ESP32 version of GuyCarvers's ST7735 TFT LCD driver.
-
micropython-st7735 - Driver for ST7735 TFT LCDs.
-
MicroPython_ST7735 - Driver for ST7735 128x128 TFT.
-
SSD1963-TFT-Library-for-PyBoard-and-RP2040 - SSD1963 TFT Library for Pyboard and Raspberry Pi Pico.
-
ST7735 - Driver for ST7735 TFT LCDs.
-
micropython-ili9341 - MicroPython ILI9341 display & XPT2046 touch screen driver.
-
st7789_mpy - Fast pure-C driver for MicroPython that can handle display modules on ST7789 chip.
-
st7789py_mpy - Slow MicroPython driver for 240x240 ST7789 display without CS pin from AliExpress, written in MicroPython.
-
micropython-ili9341 - MicroPython Driver for ILI9341 display.
-
micropython-ili9341 - ILI9341 TFT driver for MicroPython on ESP32.
-
st7789_mpy - Fast MicroPython driver for ST7789 display module written in C.
-
st7789py_mpy - Driver for 320x240, 240x240 and 135x240 ST7789 displays written in MicroPython.
-
ili9342c_mpy - ILI9342C Fast 'C' Driver for MicroPython (M5Stack Core).
-
gc9a01py - GC9A01 Display driver in MicroPython.
-
gc9a01_mpy - Fast MicroPython driver for GC9A01 display modules written in C.
-
st7735-esp8266-micropython - An ESP8266 MicroPython library for ST7735 160x80, 128x128, 128x160 TFT LCD displays.
-
TTGO-ST7789-MicroPython - MicroPython ST7789 display driver for TTGO T-Display ESP32 CP2104 WiFi Bluetooth Module 1.14 Inch LCD.
-
st7735_micropython - ST7735 MicroPython drivers for 80x160, 128x128, 128x160 for ESP8266.
-
ili934x-micropython - Library for using ILI9341 display drivers with MicroPython.
-
micropython-st7735-esp8266 - MicroPython driver for ST7735 TFT displays on the ESP8266.
LED Matrix
LED Segment
LEDs
OLED
Printer
IO
ADC
-
ads1x15 - Driver for the ADS1015/ADS1115 ADC, I2C interface.
-
micropython-ads1015 - ADS1015 12-Bit and ADS1115 16-bit ADC, 4 channels with programmable gain, I2C interface.
-
Micropython_ADS1115 - ADS1115 16-bit ADC, 4 channels with programmable gain, I2C interface.
-
ADS7818 - Python class interfacing the ADS7818 AD-converter.
-
micropython-ads1219 - MicroPython module for the Texas Instruments ADS1219 ADC.
-
micropython-hx711 - MicroPython driver for HX711 24-Bit Analog-to-Digital Converter.
-
MicroPython-ADC_Cal - ESP32 ADC driver using reference voltage calibration value from efuse.
-
micropython-pcf8591 - MicroPython driver for PCF8591 ADC/DAC, I2C interface.
DAC
GPIO
-
micropython-inputs - Classes to count pulses, debounce digital inputs, and calculate moving averages of analog inputs for a MicroPython board.
-
ubutton - A MicroPython library for controlling reading and debouncing pushbutton inputs, including "short" and "long" press callbacks.
-
micropython-debounce-switch - MicroPython Class for Debouncing Switches.
IO-Expander
Joystick
Keyboard
Potentiometers
-
micropython-ad840x - MicroPython SPI-based manipulation of the AD series digital potentiometers AD8400, AD8402 and AD8403.
-
mcp4131 - MicroPython module to control MicroChip's MCP4131 SPI digital potentiometer.
Power Management
PWM
-
upwmcontroller - A MicroPython library for controlling PWM outputs in an asyncio loop, with features including fading and blinking.
Rotary Encoder
Shift Registers
-
micropython-74hc595 - MicroPython driver for 74HC595 8-bit shift registers.
-
MicroPython-SN74HCS264 - MicroPython Driver for SN74HCS264 8-Bit Parallel-Out Serial Shift Registers With Schmitt-Trigger Inputs and Inverted Outputs.
Waveform Generator
Motion
DC Motor
-
L298N - Driver for the L298N dual H-bridge motor controller.
-
MicroPython-L298 - Drive L298 dual H-bridge with MicroPython.
Servo
Stepper
Sensors
Accelerometer Digital
Air Quality
Barometer
-
micropython-bme280 - Driver for the Bosch BME280 temperature/pressure/humidity sensor.
-
micropython-bmp180 - Driver for Bosch BMP180 temperature, pressure and altitude sensor.
-
mpy_bme280_esp8266 - Bosch BME280 temperature/pressure/humidity sensor.
-
BME280 - MicroPython driver for the BME280 sensor, target platform Pycom devices.
-
micropython-bmp280 - Module for the BMP280 sensor.
-
micropython_bme280_i2c - A MicroPython module for communicating with the Bosch BME280 temperature, humidity, and pressure sensor.
-
MicroPython-BME280 - Driver to digital sensor of Temperature, Pressure and Humidity.
-
micropython-bmp180 - A module for MicroPython which provides a class for the BMP180 pressure sensor.
-
BMP390 - MicroPython module for BMP390 pressure & temperature sensor.
-
BMP180 - MicroPython module for BMP180 pressure & temperature sensor.
Battery
Biometric
Camera
Colour
Compass
Current
Distance IR
Distance Laser
Distance Ultrasonic
Dust
-
pyGP2Y - MicroPython library for the Sharp GP2Y1014AU0F Dust Sensor.
Energy
-
ATM90E26_Micropython - Driver for ATM90E26 energy metering device.
-
MCP39F521 - ESP8266 scripts for reading MCP39F521 power monitors.
-
micropython-p1meter - A ESP32 sensor to read a p1 electricity meter and publish this to MQTT and Home Assistant, written in MicroPython.
-
esp32-solar2 - Simple solar regulator - MicroPython project.
Gaseous
Light
Motion Inertial
Pressure
Proximity
-
uPy_APDS9960 - MicroPython proximity library for ESP8266 using APDS9960.
Radiation
Soil Moisture
-
micropython-chirp - Driver for the Chirp Soil Moisture Sensor.
-
MicroPython-MiFlora - Xiaomi Mi Flora (aka flower care) BLE plant sensors (soil moisture/conductivity/light intensity/temperature).
Spectral
-
AS726X_LoPy - MicroPython driver for the AS726X spectral sensor.
Temperature Analog
-
micropython-max31855 - Thermocouple amplifier, SPI interface.
-
max31856 - Precision thermocouple to digital converter with linearization, SPI interface.
-
mcp9700 - Generic MicroPython driver for MCP9700.
Temperature Digital
Temperature IR
Touch Capacitive
-
micropython-mpr121 - Driver for MPR121 capacitive touch keypads and breakout boards.
-
micropython-ttp223 - Examples using TTP223 capacitive touch module.
-
micropython-TTP229-BSF - MicroPython ESP8266/ESP32 driver for TTP229-BSF 16-key capacitive keypad in serial interface mode.
-
uFT6336U - MicroPython I2C driver for the Focus LCDs FT6336U capacitive touch panel controller IC.
Touch Resistive
Scheduling
-
micropython-mcron - MicroCRON is a time-based task scheduling program for MicroPython.
-
micropython-scron - SimpleCRON is a time-based task scheduling program inspired by the well-known cron program for Unix systems.
-
Schedule - A scheduler for uasyncio based applications. Schedule events at specified times and dates.
-
micropython-aioschedule - A persistent uasyncio scheduler that supports deepsleep between task runs.
Storage
Database
EEPROM
-
micropython_eeprom - Cross-platform MicroPython device drivers for memory chips (EEPROM, FRAM, Flash, PSRAM).
-
mb_24x256_512 - Very simple MicroPython module/driver for Microchip 24x256 and 24x512 I2C EEPROM devices.
-
micropython-eeprom - MicroPython driver for AT24Cxx EEPROM.
Flash
FRAM
PSRAM
-
mb_PSRAM_64Mb_SPI - Very simple MicroPython module to use a generic 64Mbit PSRAM (ie Adafruit 4677) with a Raspberry Pi Pico (RP2040).
SRAM
-
mb_23LC1024 - Very simple MicroPython module to use a Microchip 23LC1024 SPI SRAM with a Raspberry Pi Pico (RP2040).
-
mb_47x16 - Very simple MicroPython module/driver for Microchip 47x16 EERAM devices (47L/47C).
Threading
-
MicroWorkers - A micro workers class that easily manages a pool of threads to optimise simultaneous jobs and jobs endings, for MicroPython (used on Pycom modules & ESP32).
User Interface
-
upymenu - MicroPython Menu for LCD Displays.
Tutorials
Books
Frameworks
-
micrOS - MicroPython-based IoT Framework.
-
terkin-datalogger - Flexible data logger application for MicroPython and CPython.
-
perthensis - Perthensis: an asynchronous framework for MicroPython.
-
meerkat - I2C Data Acquisition for MicroPython and Raspberry Pi.
Resources
Development
Code Generation
Debugging
IDEs
Logging
Shells
On Device
-
upy-shell - A simple command line-based shell for MicroPython.
-
Micropython-Editor - Small on-board editor for Pyboard, WiPy, ESP8266, ESP32, PyCom and Adafruit devices written in Python.
On Host
-
rshell - Copy or sync files to boards, enter REPL from your terminal.
-
ampy - Utility to interact with a MicroPython board over a serial connection.
-
mpbridge - A file system bridge to synchronize and manage files on a device running MicroPython.
-
mpfshell - A simple shell-based file explorer for ESP8266 and WiPy.
-
mpsync - A tool that automatically synchronizes code to a MicroPython board.
-
mpremote - Powerful official shell that supports mounting the host's current directory on the target. Run code without changing the target's filesystem.
Miscellaneous
Contributing
Contributions and suggestions are always welcome! Please take a look at the contribution guidelines first.
I will keep some pull requests open if I'm not sure whether those libraries are awesome, you could vote for them by adding 👍 to them.