Skip to content

mcauser/awesome-micropython

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Files

Permalink
Failed to load latest commit information.

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

  • 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

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.

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

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.

About

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

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published