All Projects → pfalcon → Awesome Micropython

pfalcon / Awesome Micropython

Licence: cc-by-sa-4.0
Curated list of awesome MicroPython resources

Programming Languages

micropython
64 projects

Projects that are alternatives of or similar to Awesome Micropython

Lwmqtt
a light weight MQTT implementation
Stars: ✭ 67 (-44.17%)
Mutual labels:  iot, embedded
Azure Sdk For C
This repository is for active development of the Azure SDK for Embedded C. For consumers of the SDK we recommend visiting our versioned developer docs at https://azure.github.io/azure-sdk-for-c.
Stars: ✭ 77 (-35.83%)
Mutual labels:  iot, embedded
Printf
Tiny, fast, non-dependent and fully loaded printf implementation for embedded systems. Extensive test suite passing.
Stars: ✭ 1,157 (+864.17%)
Mutual labels:  iot, embedded
Easyntpclient
Library to read time from Network Time Protocol (NTP) servers.
Stars: ✭ 20 (-83.33%)
Mutual labels:  iot, embedded
Utensor
TinyML AI inference library
Stars: ✭ 1,295 (+979.17%)
Mutual labels:  iot, embedded
Utensor cgen
C++ code generator for uTensor https://utensor-cgen.readthedocs.io/en/latest/
Stars: ✭ 42 (-65%)
Mutual labels:  iot, embedded
Sming
Sming - Open Source framework for high efficiency native ESP8266 development
Stars: ✭ 1,197 (+897.5%)
Mutual labels:  iot, embedded
Swupdate
Software Update for Embedded Systems
Stars: ✭ 711 (+492.5%)
Mutual labels:  iot, embedded
Kaa
Kaa Internet of Things platform for device management, data collection, analytics and visualization, remote control, software updates and more
Stars: ✭ 1,264 (+953.33%)
Mutual labels:  iot, embedded
Ehal
Embedded Hardware Abstraction Library
Stars: ✭ 84 (-30%)
Mutual labels:  iot, embedded
Anjay
C implementation of the client-side OMA LwM2M protocol
Stars: ✭ 115 (-4.17%)
Mutual labels:  iot, embedded
Sod
An Embedded Computer Vision & Machine Learning Library (CPU Optimized & IoT Capable)
Stars: ✭ 1,460 (+1116.67%)
Mutual labels:  iot, embedded
Paho.mqtt.embedded C
Paho MQTT C client library for embedded systems. Paho is an Eclipse IoT project (https://iot.eclipse.org/)
Stars: ✭ 887 (+639.17%)
Mutual labels:  iot, embedded
Blinker Library
An IoT Solution,Blinker library for embedded hardware. Works with Arduino, ESP8266, ESP32.
Stars: ✭ 1,095 (+812.5%)
Mutual labels:  iot, embedded
Raylib
A simple and easy-to-use library to enjoy videogames programming
Stars: ✭ 8,169 (+6707.5%)
Mutual labels:  iot, embedded
Serial Studio
Multi-purpose serial data visualization & processing program
Stars: ✭ 1,168 (+873.33%)
Mutual labels:  iot, embedded
Platformio Vscode Ide
PlatformIO IDE for VSCode: The next generation integrated development environment for IoT
Stars: ✭ 676 (+463.33%)
Mutual labels:  iot, embedded
Paper collection
Academic papers related to fuzzing, binary analysis, and exploit dev, which I want to read or have already read
Stars: ✭ 710 (+491.67%)
Mutual labels:  iot, embedded
Easyflash
Lightweight IoT device information storage solution: KV/IAP/LOG. | 轻量级物联网设备信息存储方案:参数存储、在线升级及日志存储 ,全新一代版本请移步至 https://github.com/armink/FlashDB
Stars: ✭ 1,236 (+930%)
Mutual labels:  iot, embedded
Ot Rtos
OpenThread RTOS, an integration of OpenThread, LwIP, and FreeRTOS.
Stars: ✭ 90 (-25%)
Mutual labels:  iot, embedded

Awesome MicroPython

MicroPython Powered

MicroPython came known as a "Python for microcontrollers". It's far more than that.

MicroPython is a full-stack language, which, unlike many other languages, is concerned not only with scaling up, but also with scaling down. This means it can run on your laptop, desktop, on a supercomputer (sure, why not), but also inside your Internet router, fridge, clock, smartwatch, temperature sensor, microcontroller development board, inside your new game or productivity app, and in gazillion of other applications and devices. Familiar, easy to use, expressive language everywhere, with the ability to optimize your software based on the hardware needs.

Summing this all up with the (unoffical) motto: MicroPython runs everywhere!

MicroPython is created and maintained by Damien George, @dpgeorge.

This list is not directly affiliated with, or endorsed by, the "official" MicroPython and/or forks owned by other parties. Opinions here are solely those of the list author and agreeing contributors. The list is intended to capture breadth and pluralism of the MicroPython community, but may be subjective nonetheless.

This list is compiled and maintained by Paul Sokolovsky, @pfalcon. This list is licensed under Creative Commons Attribution-ShareAlike 4.0 International License (CC BY-SA 4.0): you are free to share and reuse contents of this list, as long as you give credit to the original author and allow other people to share/reuse it under the same terms.

Forks and Variants

Notable Forks

There are more than 2000 forks of MicroPython on Github, and here are a few notable ones:

  • Pycopy - by @pfalcon, 2nd largest (~35%) contributor to MicroPython. Dedicated to further developing all the great features which were initially contributed to the mainline - stream I/O interface, async support, memory-saving APIs, etc. Also to optimizations, bugfixes and improved documentation. Synced with the mainline.
  • Pycom MicroPython - by @pycom. Support for modern communication standards like LoRa, Sigfox, etc.
  • CircuitPython - by @adafruit. Education friendly MicroPython fork, concentrating on microcontroller boards of a particular vendor. Wealth of online tutorials and educational resources.
  • OpenMV - by @openmv. MicroPython fork for machine vision boards.
  • Loboris ESP32 fork - by @loboris. Concentrates on ESP32. A number of C libraries are wrapped.

OS/RTOS Ports/Forks

  • POSIX/Unix - part of the mainline. The POSIX port is the biggest and most important MicroPython target, alone supporting thousands of diverse computer and device types, ranging from supercomputers to a few-dollar appliances.
  • Windows - part of the mainline. Runs on different Windows variants, from Server down to Windows IoT.
  • DOS/DJGPP - part of the mainline. Runs on DOS versions with support of x86 extended mode.
  • Zephyr port - Modern advanced RTOS, more than 100 boards supported.
  • FreeRTOS port - part of the mainline (as CC3200 port).
  • mbedOS port - RTOS for ARM microcontrollers, dozens of boards supported.
  • FrostedOS port - POSIX-compatible RTOS.
  • UEFI port - port to UEFI (BIOS replacement framework) by Intel (ANN).

Hardware-specific Forks

Documentation

  • README - Never to miss the project README, it's an entry to the MicroPython universe.
  • Pycopy docs are more complete - Online searchable documentation for language aspects and builtin modules.
  • Mainline docs lag in updates.
  • CPython 3.5 docs - MicroPython is an implementation of the Python language, so main Python docs provide the relevant background information (MicroPython's own docs concentrate on differences with CPython and new features added.)

Tools

Accessing MicroPython Prompt (REPL)

  • Local access: MicroPython comes with REPL (read-evaluate print loop, interactive prompt), which you can access right in your terminal, or by connecting over UART (serial) or USB to another device.
  • Remote access:

Shells

There're shells which run directly on a MicroPython device (or in a MicroPython process), and ones whict run on a host and connect to a device:

On device:

  • upysh - very minimal file shell using Python syntax, suitable for devices even with little memory. Part of pycopy-lib.
  • upy-shell - simple command line based shell.

On host:

  • rshell - remote shell for MicroPython.
  • mpfshell - simple shell based file explorer for Micropython based devices.
  • ampy - utility to interact with a MicroPython board over a serial connection.

Package Management

  • Packages are distributed via Python Package Index (PyPI), like packages for any other Python implementation.
  • Installable using upip package manager (built into Unix port and some other ports with networking capabilities, part of pycopy-lib otherwise).
  • Documentation of MicroPython package usage
    • For non-networked ports, packages can be "cross-installed" on a host, and copied to device (manually or using host-side shells above).
    • For ultimate RAM efficiency, packages can be "frozen" into MicroPython binary.

IDEs

Libraries

Standard Libraries

  • pycopy-lib - Standard library of the Pycopy project. Dozens of modules ported from CPython, dozens developed specifically for Pycopy.
  • Backports of Pycopy API modules to CPython - Allows to run software written for MicroPython using CPython (WIP). Part of pycopy-lib.

Asynchronous Scheduling and I/O

  • uasyncio (micro-asyncio) - Pycopy’s asynchronous scheduling library, roughly modeled after CPython’s asyncio. Part of pycopy-lib.

Graphics

  • framebuf - builtin module for simple device-independent graphics.

Graphical User Interfaces (GUI)

Text User Interfaces (TUI)

  • picotui - Lightweight TUI widget toolkit with minimal dependencies. Works both in MicroPython and CPython.
  • FBConsole - MicroPython terminal (dupterm) over framebuffer.

Databases

  • btree - builtin module, simple "NoSQL" database with dictionary-like interface, based on well-known BerkeleyDB 1.xx library. Available in both bare-metal and OS ports.
  • sqlite3 - Reimplementation of CPython's sqlite3 module for Pycopy (Unix port). Part of pycopy-lib.
  • micropython-redis - Redis client.
  • picoredis - Another Redis client.
  • uPyMySQL - MySQL client.

Protocols

  • HTTP

    • urequests (micro-requests) - implements a subset of API of well-known "requests" module. Part of pycopy-lib.
  • DNS

  • Websocket

    • websocket - builtin provisional module (i.e. details of API is subject to change).

Web Frameworks

  • picoweb - Really minimal web application framework based on "uasyncio" module.

Interfacing with Other Languages

  • ffi - Foreign Function Interface module for MicroPython. Call C, etc. functions from dynamic libraries or just in memory.
  • uctypes - "Foreign Data" interface for MicroPython. Access binary data structures with the expressiveness of C language. "ffi" and "uctypes" modules commonly used together.
  • jni - Module for JavaVM integration (using JNI).
  • pycopy-ffigen - Automatically generate bindings for ffi/uctypes modules from C header files.
  • micropython-wrap - C++ wrapper to interface C++ code with MicroPython easily.
  • ullvm - Bindings for LLVM C API.

Textual Data Processing

  • Regular expressions
    • ure (micro-re) - builtin module which implements subset of regular expression syntax.
    • re-pcre - more complete regular expression implementation, based on PCRE library, largely compatible with full CPython re syntax.
  • Templating
    • utemplate - Micro template engine with low memory usage, based on generators.

Sciences

  • uMath - Symbolic computer algebra system (CAS)

Learning MicroPython

Sites

Books

Academia

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].