Skip to content

A curated list of awesome MicroPython libraries, frameworks, software and resources.

License

Notifications You must be signed in to change notification settings

mcauser/awesome-micropython

Repository files navigation

Awesome


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

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.
  • micropython-aioble-itag - Examples using aioble to interact with iTag BLE keychain tags.
  • micropython_aioble_examples - A few aioble (asyncio BLE) examples of MicroPython using ESP32.

CAN

Compression

  • ufastlz - MicroPython wrapper for FastLZ, a lightning-fast lossless compression library.
  • tamp - A low-memory, MicroPython-optimized, DEFLATE-inspired lossless compression library.
  • micropython-zipfile - Read/write ZIP archive files. Ported from CPython, supports DEFLATE compression.

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.
  • mpy-mbedtls - MicroPython bindings for some MbedTLS EC and x509 cert/csr functions.
  • micropython-cryptocfb - A Python module to encrypt and decrypt data with AES-128 CFB mode.
  • tscp - An endpoint-to-endpoint encryption based on Diffie-Hellman-Merkle with TLS1.3 styled handshake using MicroPython.

DNS

  • aiodns - A small, versatile DNS client that provides an async version of getaddrinfo and works with any connectivity.
  • 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.

ESP-NOW

Ethernet

FTP

GPS

GSM

HTTP

  • mrequests - A HTTP client module (not only) for MicroPython with an API similar to requests.

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.
  • micropython-ha-mqtt-device - MicroPython module which allows creating Entites for HomeAssistant using MQTT Discovery.
  • ESP8266-Home-Assistant-Smart-Socket - This MicroPython project is to hack a Hyleton313 cheap WiFi smart socket.
  • ESP8266-Home-Assistant-RGB-Bulb - This MicroPython project is to hack a TYWE3S board in a cheap WiFi RGB Bulb.
  • uPyIoT - Connect an M5Stack ATOM running MicroPython to the Google Cloud Platform (GCP) to collect air-quality variables obtained from reading sensors.
  • micropython-switchbot-thermometer-hygrometer - Read SwitchBot Thermometer/Hygrometer via Bluetooth.

IR

LoRa

  • loraE22 - A MicroPython class for the Ebyte E22 Series LoRa modules.
  • micropython-lora - MicroPython library for controlling a Semtech SX127x LoRa module over SPI.
  • micropython-aiolora - MicroPython library for controlling a Semtech SX127x LoRa module with asyncio API.
  • micropython-rylr - MicroPython library for controlling Reyax LoRa modules (RYLR896, RYLR406).
  • silvergeko_rfm9x - Porting to MicroPython of adafruit_rfm9x.py library.

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 client: recovers from WiFi and broker outages.
  • 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.
  • mqtt_upython - MQTT Client using MicroPython on ESP8266.
  • tinymqtt - Async MQTT client for MicroPython.
  • micropython-mqtt-thingspeak - Publish and Subscribe to ThingSpeak using MQTT with MicroPython.
  • micropython-sparkplugb - MicroPython compatible implementation of the Eclipse Sparkplug B Specification.

NBD

  • unbd - Micro implementation of network block device (NBD) for MicroPython.

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.
  • micropython_arduino_control - MicroPython library to control an Arduino remotely, with corresponding Arduino code.

Onkyo EISCP

  • eiscp-micropython - MicroPython port for the Onkyo-EISCP protocol used, among others, by Pioneer.

OTA

Proxy

  • uProxy - An asyncio-based, memory-efficient HTTP/HTTPS/SOCKS4/SOCKS5 forward proxy server for MicroPython, compatible with CPython.

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

RPC

  • ujrpc - JSON RPC for MicroPython.

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.
  • microSDI12 - A mini SDI-12 implementation for getting sensor info over RS-485.

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.
  • ucbor - Lightweight implementation of cbor for MicroPython.
  • upy-msgpack - A lightweight MessagePack (de)serialization library (not only) for MicroPython.

SMTP

  • uMail - A lightweight, scalable SMTP client for sending email in MicroPython.

Sockets

  • XAsyncSockets - XAsyncSockets is an efficient Python/MicroPython library of managed asynchronous sockets.

SOCKS

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.

Text-to-Speech

Time

  • ustrftime - A MicroPython implementation of time.strftime.

VoIP

  • uPyVoip - VoIP for MicroPython ESP32 with Interactive Voice Response.

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.
  • CaptiveWebServer - Simple MicroPython web server for serving a website from a captive portal.
  • micropython-urouter - A lightweight HTTP request routing processing support library based on MicroPython. The previous name was micro-route.
  • wlan-relays - Very simple HTTP server written in MicroPython for controlling the pins of an ESP32 board.

WiFi

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.
  • micropython_GT30L24T3Y_big5_font - MicroPython driver for reading BIG-5 Chinese characters from GT30L24T3Y / ER3303-1 SPI module.
  • ttgo-hershey-fonts - MicroPython Hershey font demo for the TTGO-LCD board.
  • packed-font - Memory efficient MicroPython fonts for the Pico Pi and SSD1306 OLED Display.
  • microfont - Text drawing library for MicroPython framebuffer.

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.
  • micropython-touch - Derived from nano-gui and supporting the same displays and hosts, this offers touch input. Supports various touch controllers.
  • TFT-GUI - A fast touch GUI for large displays based on SSD1963 controller with XPT2046 touch controller.
  • micropython-nextion - Control Nextion displays using MicroPython.
  • mp_lvgl_widgets - Widgets for the MicroPython Port of LVGL.
  • micropython-core2 - Extends LV-MicroPython for the M5Stack CORE2 with MPU6886, ILI9342C, BM8563 and AXP192 drivers.

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.
  • st7789s3_esp_lcd - Fast ESP_LCD based MicroPython driver for the TTGO T-Display-S3 st7789 display written in C.
  • s3lcd - ESP_LCD based MicroPython driver for ESP32-S3 Devices with ST7789 or compatible displays.
  • thmi_py - MicroPython display driver for the LILYGO T-HMI written in Python.
  • wt32sc01py - WT32SC01 Plus MicroPython Display Driver.
  • st7789s3_mpy - MicroPython display driver for the TTGO T-Display-S3 ST7789 written in C.
  • t-display-s3 - MicroPython display driver for the TTGO T-Display-S3 ST7789 written in Python.
  • mp-ili9341 - MicroPython Driver for ILI9341 TFT Display.
  • lvgl_esp32_gc9a01 - Driver for displays using the GC901 driver for use with LVGL MicroPython.
  • ST77xx-pure-MP - Pure MicroPython driver for ST77xx displays. Low memory requirements.
  • upy-st7789 - A simple ST7789 driver written in MicroPython.

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-ADC_Cal - ESP32 ADC driver using reference voltage calibration value from efuse.
  • micropython-pcf8591 - MicroPython driver for PCF8591 ADC/DAC, I2C interface.
  • MCP342x_LoPy - MicroPython driver for the MCP342x ADC.
  • micropython-ads1220 - MicroPython library for ADS1220 24-bit analog-to-digital converter.
  • PCF8591_micropython_library - MicroPython library for PCF8591 8-bit ADC/DAC.
  • CS1237 - MicroPython driver for the CS1237 ADC.
  • ads1115 - MicroPython module for managing ADS1115, multichannel, differential I2C ADC from TI.
  • mcp3421 - MicroPython module for controlling MCP342X, 18-bit analog-to-digital converter with I2C interface.
  • micropython-MCP3001 - MicroPython driver for the MCP3001 1-channel 10-bit ADC with SPI interface.

DAC

  • micropython-mcp4725 - Driver for the MCP4725 I2C DAC.
  • mcp4728 - Helper library for the Microchip MCP4728 I2C 12-bit Quad DAC.
  • mpyDAC - MicroPython module for controlling MCP4725, 12-bit digital analog converter (CAP) with EEPROM memory.

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

  • micropython-mcp230xx - Driver for MCP23017 and MCP23008 GPIO expanders.
  • micropython-mcp230xx - Driver for MCP23017 and MCP23008 GPIO expanders, extended with interrupt handling.
  • micropython-mcp23017 - MicroPython driver for MCP23017 16-bit I/O Expander.
  • micropython-pcf8574 - MicroPython driver for PCF8574 8-Bit I2C I/O Expander with Interrupt.
  • micropython-pcf8575 - MicroPython driver for PCF8575 16-Bit I2C I/O Expander with Interrupt.
  • ESP8266_MCP23S17 - MicroPython library for using the MCP23S17 16-bit I/O expander with the ESP8266.
  • pcf8574 - MicroPython module for working with the PCF8574(A) I2C 8-bit I/O expander from NXP.
  • mcp23017 - MicroPython module for MCP23017, 16-Bit I/O Expander with Serial Interface.
  • micropython-sx1509 - MicroPython SX1509 I/O Expander Library.

Joystick

Keyboard

Multiplexer

  • micropython-tca9548a - MicroPython examples using TCA9548A I2C multiplexer.
  • tca9548a - MicroPython driver for the TCA9548A I2C multiplexer.

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.
  • MicroPython_DS1841 - MicroPython Driver for the DS1841 Potentiometer.
  • MicroPython_DS3502 - MicroPython Driver for the DS3502 Potentiometer.

Power Management

PWM

  • upwmcontroller - A MicroPython library for controlling PWM outputs in an asyncio loop, with features including fading and blinking.

Relay

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

Mathematics

  • 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.
  • uumpy - A subset of NumPy for MicroPython.
  • upyuncertainties - Uncertainty calculations for MicroPython.
  • umatrix - A matrix library for the MicroPython language.
  • micropython-fractions - A MicroPython port of the CPython standard Fractions library.
  • Sun and Moon - Determine Sun and Moon rise and set times, Moon phases.
  • micropython-npyfile - Numpy .npy file support for MicroPython, supports read/write/streaming.
  • Micropython Perlin - A Perlin noise generator module.

Motion

DC Motor

  • L298N - Driver for the L298N dual H-bridge motor controller.
  • MicroPython-L298 - Drive L298 dual H-bridge with MicroPython.
  • pyl298 - Driver for the L298 dual full-bridge motor controller.

Servo

  • micropython-pca9685 - 16-channel 12-bit PWM/servo driver.
  • micropython-servo - Library to control RC servos using direct PWM output in a tidy way.
  • MicroPython_PCA9685 - MicroPython Driver for the PCA9685 PWM control IC, commonly used to control servos, LEDs and motors.
  • MicroPython_MOTOR - MicroPython Helper for controlling PWM based motors.
  • pca9685 - MicroPython module for managing a 16-channel SHIM controller, PCA9685

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.
  • MicroPython_BMP581 - MicroPython driver for the Bosch BMP581 pressure & temperature sensor.
  • mp-bmp3xx-full - MicroPython driver for the Bosch BMP3xx range of barometric pressure sensors. Includes FIFO support. ⏩
  • MicroPython_DPS310 - MicroPython Driver for the DPS310 Sensor.
  • MicroPython_ICP10111 - MicroPython Driver for the TDK ICP-10111 Barometric Pressure and Temperature sensor.
  • bmp581 - MicroPython module for BMP581, pressure and ambient temperature sensor from Bosch Sensortec.

Battery

Biometric

  • micropython-fingerprint - MicroPython library for reading Grow and ZhianTec fingerprint sensors.
  • MAX30102-MicroPython-driver - A MAX30102 driver ported to MicroPython. It should also work for MAX30105.
  • max30102 - MicroPython driver for the MAX30102, with heartbeat detection and BPM measurement.

Camera

  • micropython-camera-API - Project with the aim of supporting cameras across various ports in MicroPython, starting with the ESP32 port and Omnivision cameras (OV2640 & OV5640).
  • micropython-ov2640 - MicroPython class for OV2640 camera.
  • Nikon-Trigger-for-MicroPython - Remote trigger for a Nikon camera using an IR LED. For Pyboard v1.1.
  • micropython-camera-driver - OV2640 camera driver for MicroPython on ESP32.
  • esp32-cam-micropython - MicroPython ESP32-CAM.
  • uPyCam - Take a photo with an ESP32-CAM running MicroPython.
  • OV2640_uPy - OV2640 camera library for MicroPython.
  • MQTT-Cam - ESP32-CAM MicroPython MQTT AWS S3 Uploader.
  • huskylib - MicroPython driver for the DFRobot Husky Lens. An easy-to-use AI Camera / Vision Sensor, featuring face recognition, object tracking, object recognition, line tracking, color recognition, and QR code recognition.

Colour

Compass

Current

  • micropythonINA219 - Driver for INA219 current sensor.
  • pyb_ina219 - Driver for INA219 current sensor.
  • INA219 - INA219 MicroPython driver.
  • TI_INA226_micropython - MicroPython driver for Texas Instruments INA226 power measuring IC.
  • micropython-current-monitor - Current monitor using the INA219 and an SSD1306 OLED.
  • INA_TI - MicroPython module for controlling INA219, INA226 - A two-directional current / power monitor with the I2C interface.

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.
  • cs5490_micropython - MicroPython Driver for CS5490 Energy Monitor IC.

Gaseous

  • micropython-MQ - Drivers for MQ series gas sensors.
  • MQ135 - Driver for MQ135 gas sensor.
  • CCS811 - Basic MicroPython driver for CCS811 on ESP8266 boards.
  • micropython-scd30 - MicroPython I2C driver for Sensirion SCD30 CO2 sensor module.
  • MicroPython_SCD4X - MicroPython I2C driver for Sensirion SCD40 and SCD41 CO2 sensors.
  • micropython-sgp40 - MicroPython I2C driver for SGP40 VOC sensor module.
  • MICS6814-Micropython-driver - ESP32 MicroPython driver for the Pimoroni MICS6814 breakout board.
  • MicroPython_AGS02MA - MicroPython Driver for the AGS02MA TVOC sensor.
  • SCD4x - MicroPython module for work with SCD4x (SCD40, SCD41) low power CO2, temperature & humidity electroacoustic sensor from Sensirion.
  • ens160 - MicroPython module for work with ENS160 Digital Metal-Oxide Multi-Gas Sensor.

Humidity

Human Presence

  • ld2410 - 24GHz human presence sensing module, capable of detecting moving and stationary targets, and providing an approximate range.

Light

  • MicroPython-SI1145 - SI1145 UV index, IR, visible light and proximity sensor.
  • micropython-tsl2561 - Driver for the TSL2561 illumination sensor from TAOS / ams.
  • mpy_bh1750fvi_esp8266 - ESP8266 driver for BH1750FVI sensor.
  • bh1750 - BH1750 I2C digital light sensor driver.
  • micropython-max44009 - MicroPython driver for the MAX44009 ambient light sensor.
  • veml7700 - Library for MicroPython for VEML7700 light sensor.
  • MicroPython_MAX44009_driver - MicroPython driver for MAX44009 light sensor.
  • MicroPython-VEML6075 - Driver base for the VEML6075 UV light sensor.
  • BH1750 - MicroPython module for the BH1750 ambient light sensor (ALS).
  • veml7700 - MicroPython module for the VEML7700 ambient light sensor (ALS) from Vishay.
  • opt3001 - MicroPython module for OPT3001, external lighting sensor from Texas Instruments.
  • ltr390uv - MicroPython module for LTR390UV, ambient light sensor in the visible and ultraviolet ranges.

Load Cell

  • micropython-hx711 - MicroPython driver for HX711 24-Bit Analog-to-Digital Converter.
  • hx711_mpy-driver - MicroPython Driver for the HX711 weighing sensor.
  • hx710 - MicroPython driver for the HX710.
  • hx711 - MicroPython driver for the HX711 load cell interface.
  • hx710 - MicroPython driver for the HX710 load cell interface.

Magnetometer

Motion Inertial

Pressure

  • ms5803-micropython - A MicroPython implementation of the driver for an MS5803 pressure & temperature sensor.
  • MPL3115A2_MicroPython - MicroPython library for the MPL3115A2 altimeter.
  • MicroPython_MMR902 - MicroPython Driver for the Mitsumi MMR902 Micro Pressure Sensor.
  • MicroPython_MPL3115A2 - MicroPython driver for the NXP MPL3115A2 Pressure and Temperature sensor.
  • MicroPython_MS5611 - MicroPython Driver for the TE MS5611 Pressure and Temperature Sensor.
  • D6F-PH - MicroPython module for differential pressure sensor, D6F-PH (OMRON).

Proximity

  • uPy_APDS9960 - MicroPython proximity library for ESP8266 using APDS9960.
  • MicroPython_VCNL4010 - MicroPython Driver for the Vishay VCNL4010 Proximity and Ambient Light Sensor.
  • apds9960 - MicroPython Driver for the APDS9960, with simple gesture detection.

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).
  • micropython-miflora - MicroPython library for Xiaomi Mi Flora BLE plant sensors.

Spectral

Temperature Analog

  • micropython-max31855 - Thermocouple amplifier, SPI interface.
  • max31856 - Precision thermocouple to digital converter with linearization, SPI interface.
  • max31865 - Precision resistance-to-digital converter optimized for platinum resistance temperature detectors, SPI interface.
  • mcp9700 - Generic MicroPython driver for MCP9700.
  • micropython-generic-thermistor - MicroPython Generic Thermistor Library for simplified temperature sensing using NTC thermistors with voltage dividers.
  • micropython-simple-thermistor - Read NTC thermistor temperature wired in a potential divider.

Temperature Digital

  • bme680-mqtt-micropython - Driver for BME680 gas, pressure, temperature and humidity sensor.
  • LM75-MicroPython - Driver for LM75 digital temperature sensor, I2C interface.
  • micropython-am2320 - Aosong AM2320 temperature and humidity sensor, I2C interface.
  • micropython-dht12 - Aosong DHT12 temperature and humidity sensor, I2C interface.
  • micropython-hdc1008 - Driver for the Texas Instruments HDC1008 humidity and temperature sensor.
  • micropython-mcp9808 - Driver for the Microchip MCP9808 temperature sensor.
  • micropython-mpl115a2 - Pyboard driver for the MPL115A2 barometric pressure sensor.
  • micropython-sht30 - Driver for SHT30 temperature and humidity sensor.
  • micropython-sht31 - Driver for the SHT31 temperature and humidity sensor.
  • micropython-Si7005 - Driver for Si7005 relative humidity and temperature sensor.
  • micropython-si7021 - SI7021 Temperature and humidity sensor, I2C interface.
  • micropython-si7021 - SI7021 Temperature and humidity sensor, I2C interface.
  • micropython-Si705x - Silicon Labs Si705x series of temperature sensors, I2C interface.
  • micropython-Si70xx - Silicon Labs Si70xx series of relative humidity and temperature sensors, I2C interface.
  • micropython-tmp102 - Driver for TMP102 digital temperature sensor.
  • Official DHT11+DHT12 - ESP8266 driver for DHT11 and DHT12 temperature and humidity sensor.
  • sht25-micropython - Driver for SHT25 temperature and humidity sensor.
  • micropython-tmp1075 - Driver for the TI TMP1075 temperature sensor.
  • micropython-sht11 - Driver for Sensirion SHT11 temperature and humidity sensor.
  • micropython-lm75a - Driver for the NXP LM75A digital temperature sensor.
  • BME680-Micropython - MicroPython driver for the BME680 sensor.
  • htu21d-esp8266 - This is a MicroPython module / class to measure data from the HTU21D.
  • HTU21D - Asynchronous driver for HTU21D temperature and humidity sensor.
  • esp-sht3x-micropython - A SHT3x (SHT30/31/35) library for ESP8266/ESP32 with MicroPython.
  • sht25-micropython - MicroPython implementation of API of SHT25 humidity and temperature sensor.
  • micropython-sht30 - SHT30 sensor driver in pure Python based on I2C bus.
  • micropython_ahtx0 - MicroPython driver for the AHT10 and AHT20 temperature and humidity sensors.
  • sht85 - MicroPython driver for the Sensiron SHT85 humidity and temperature sensor.
  • micropython-zacwire - MicroPython driver for the ZACwire protocol used in TSic 506F temperature sensors.
  • MicroPython_HTU31D - MicroPython library for TE HTU31D temperature and humidity sensors.
  • MicroPython_SHTC3 - MicroPython Driver for the Sensirion SHTC3 Temperature and Humidity Sensor.
  • MicroPython_TMP117 - MicroPython Driver for the TMP117 Temperature Sensor.
  • MicroPython_SI7021 - MicroPython Library for the Temperature and Humidity SI7021 Sensor.
  • MicroPython_ADT7410 - MicroPython Driver for the Analog Devices ADT7410 Temperature Sensor.
  • MicroPython_WSENTIDS - MicroPython library for the WSEN WSEN-TIDS temperature Sensor.
  • MicroPython_HS3003 - MicroPython Driver for the Renesas HS3003 Temperature and Humidity Sensor.
  • MicroPython_STTS22H - MicroPython Driver for the STTS22H Temperature Sensor.
  • MicroPython_HTU21DF - MicroPython HTU21D-F Temperature & Humidity driver.
  • MicroPython_SHT4X - MicroPython Driver for the Sensirion Temperature and Humidity SHT40 and SHT45 Sensor.
  • MicroPython_SHT20 - MicroPython Driver for the Sensirion SHT20 Temperature Sensor.
  • MicroPython_MCP9808 - MicroPython Driver for the Microchip MCP9808 Temperature Sensor.
  • MicroPython_HDC1080 - MicroPython driver for the TI HDC1080 Temperature and Humidity sensor.
  • TMP117 - MicroPython module for the TMP117 temperature sensor from Texas Instruments.
  • BME680 - MicroPython module for the BME680, Bosch low power gas, pressure, temperature & humidity sensor.
  • SHT30 - MicroPython driver for the Sensirion SHT3x sensor.
  • MicroPython_AS6212 - MicroPython Library for the ASM AS6212 Temperature Sensor.
  • MicroPython_PCT2075 - MicroPython Driver for the NXP Semiconductors PCT2075 Temperature Sensor.
  • micropython-hdc1080 - MicroPython driver for the HDC1080 temperature and humidity sensor.
  • bme680-pure-mp - Pure MicroPython Bosch BME680 sensor driver.
  • SHT4X - MicroPython module for controlling the SHT4x - 4th generation relative humidity and temperature sensor.

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.
  • MicroPythonTrill - Trill touch sensor library for MicroPython.
  • L58Touch - L58 Multi-Touch MicroPython Module.
  • micropython-ft6x06 - Simple driver for FT6x06 capacitive touch sensor in pure Python.

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 asyncio based applications. Schedule events at specified times and dates or with reference to Sun and Moon rise and set.
  • micropython-aioschedule - A persistent uasyncio scheduler that supports deepsleep between task runs.

Storage

Configuration file

  • uPyftsConf - MicroPython Far Too Simple Config File. Single file library that writes configurations to itself.

Databases

  • uPyMySQL - Pure MicroPython MySQL Client.
  • micropython-redis - A Redis client implementation designed for use with MicroPython.
  • picoredis - A very minimal Redis client (not only) for MicroPython.
  • micropg - PostgreSQL database driver for MicroPython.
  • micropg_lite - PostgreSQL database driver for MicroPython, based on micropg but aiming to require less memory with some compromises in functionality.
  • micropython-cratedb - MicroPython driver for CrateDB databases.
  • nmongo - MongoDB client for CPython and MicroPython, with MongoDB shell-like APIs.
  • MicroPyDatabase - A low-memory JSON-based database for MicroPython.
  • micropython-firebase-realtime-database - Firebase implementation for MicroPython optimized for ESP32.
  • micropython-firebase-firestore - Firebase Firestore implementation for MicroPython.
  • uSQLite - SQLite library module for MicroPython.

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

  • micropython_data_to_py - A Python 3 utility to convert an arbitrary binary file to Python source for freezing as bytecode in Flash.
  • micropython-winbond - Interact with Winbond W25Q Flash chips via SPI.
  • freezeFS - Create self-extracting compressed or self-mounting archives for MicroPython.

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).

SD

  • mp-sdcard-littleFS - MicroPython SD card driver that works with LittleFS2 (implements extended interface).

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.

Utilities

Community

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

  • micropy-cli - Micropy CLI is a project management/generation tool for writing MicroPython code in modern IDEs such as Visual Studio Code.
  • micropython-stubber - Generate and use stubs for different MicroPython firmwares to use with Visual Studio Code or any IDE and linter.
  • micropython-stubs - Stubs of most MicroPython ports, boards and versions to make writing code that much simpler.
  • micropy-stubs - Automatically Generated Stub Packages for Micropy-Cli and whomever else.
  • micropython-extmod-generator - Generator for MicroPython external modules written in C.
  • micropython-package-template - 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.
  • micropython-usermod - Online book about MicroPython external modules writen in C.
  • wasm2mpy - Compile WebAssembly to native MicroPython .mpy files. Allows writing code in various statically compiled languages, and translating them to C for near-native performance.

Debugging

Firmware

IDEs

  • BIPES - Web-based IDE for MicroPython with file manager, editor, code generation from blocks, IoT dashboard and Serial/USB/Bluetooth/WebREPL console on the web browser. Source: https://github.com/BIPES.
  • ESP32-MPY-Jama - Tool for managing Espressif ESP32 microcontrollers with MicroPython.
  • JetBrains IntelliJ/PyCharm MicroPython Plugin - Plugin for MicroPython devices in IntelliJ and PyCharm.
  • MicroPython IDE for VSCode - MicroPython IDE for Visual Studio Code.
  • MicroPython-REPLink for VSCode - Handy shortcuts for interacting with a MicroPython REPL terminal.
  • MPRemote for VSCode - An extension to provide easy access to some of mpremote's functionality from within Visual Studio Code.
  • Mu Editor - Code with Mu: a simple Python/MicroPython/CircuitPython editor for beginner programmers.
  • Thonny IDE - Thonny: Python IDE for beginners.
  • ViperIDE - An innovative MicroPython / CircuitPython IDE for Web and Mobile. No installation required.
  • Pyboard File Manager - Pyboard File Manager: Windows GUI for Pyboard.py compatible devices.
  • uPIDE - µPIDE is a simple IDE for MicroPython.

Logging

  • micropython-ulogger - Lightweight log module customized for MicroPython.
  • scd30logger - Sensirion SCD30 based CO2, Humidity and Temperature Logger for MicroPython.
  • sht15logger - MicroPython Temperature and Humidity Logger using Sensirion SHT15.

Shells

Jupyter

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.
  • MPRemoteEditor - A simple Windows IDE for developing with MicroPython MPRemote devices.
  • uPyExplorer - Explorer for MicroPython Device.
  • mpr - Wrapper for MicroPython mpremote tool.

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.