CircuitPython
Original author(s) | Adafruit Industries |
---|---|
Initial release | July 19, 2017[1] |
Stable release | 9.2.1[2]
/ 20 November 2024 |
Repository | https://github.com/adafruit/circuitpython |
Written in | C[3] |
Platform | Supported microcontrollers and single-board computers |
Type | Python implementation |
License | MIT license[4] |
Website | circuitpython |
CircuitPython[5] is an open-source derivative of the MicroPython programming language targeted toward students and beginners. Development of CircuitPython is supported by Adafruit Industries. It is a software implementation of the Python 3 programming language, written in C.[3] It has been ported to run on several modern microcontrollers.
CircuitPython consists of a Python compiler to bytecode and a runtime interpreter of that bytecode that runs on the microcontroller hardware. The user is presented with an interactive prompt (the REPL) to execute supported commands immediately. Included are a selection of core Python libraries. CircuitPython includes modules which give the programmer access to the low-level hardware of supported products as well as higher-level libraries for beginners.[6]
CircuitPython is a fork of MicroPython, originally created by Damien George.[7] The MicroPython community continues to discuss[8] forks of MicroPython into variants such as CircuitPython.
CircuitPython is targeted to be compliant with CPython, the reference implementation of the Python programming language.[9] Programs written for CircuitPython-compatible boards may not run unmodified on other platforms such as the Raspberry Pi.[10]
Usage
[edit]CircuitPython is being used as an emerging alternative solution for microcontroller programming, which is usually done in C, C++, or assembly. The language has also seen uptake in making small, handheld video game devices.[11][better source needed] Developer Chris Young has ported his infrared transmit-and-receive software to CircuitPython to provide interactivity and to aid those with accessibility issues.[12]
Community
[edit]The user community support includes a Discord chat room and product support forums.[13] A Twitter account dedicated to CircuitPython news was established in 2018.[14] A newsletter, Python on Microcontrollers, is published weekly since 15 November, 2016 by Adafruit to provide news and information on CircuitPython, MicroPython, and Python on single board computers.[15] A Reddit subreddit, r/CircuitPython, provides news on CircuitPython and related news and projects and has about 4,300 members.[16]
Hardware support
[edit]The version 9.1.0 supports a range of architectures, called "ports":[17]
- atmel-samd: Microchip SAMD21, SAMx5x
- cxd56: Sony Spresense
- espressif: Espressif ESP32, ESP32-S2, ESP32-S3, ESP32-C2, ESP32-C3, ESP32-C6
- nordic: Nordic nRF52840, nRF52833
- raspberrypi: Raspberry Pi RP2040, RP2350
- stm: ST STM32F4 chip family
These ports are considered alpha and will have bugs and missing functionality:
- broadcom: Raspberry Pi boards such as RPi 4, RPi Zero 2W (bare metal)
- litex: fomu
- mimxrt10xx: NXP i.MX RT10xxx
- renode: hardware simulator
- silabs: Silicon Labs MG24 family
- stm: ST non-STM32F4 chip families
Previous versions supported the ESP8266 microcontroller, but its support was dropped in version 4.[18]
Blinka Software Abstraction Layer
[edit]CircuitPython code may run on MicroPython or CPython using the Adafruit written Blinka compatibility layer.[19] It acts as a translation layer between CircuitPython code and underlying code. This allows CircuitPython code to run on many more devices including a wide range of single-board computers which are listed on circuitpython.org.[20] It is a pip installable Python library. The CircuitPython runtime is not used, as documented in the guide CircuitPython Libraries on Linux and Raspberry Pi.[21]
Modules (Libraries)
[edit]Adafruit has fostered a community which has contributed software libraries for more than 488 sensors and drivers.[22][23]
References
[edit]- ^ Shawcroft, Scott (19 July 2017). "CircuitPython 1.0.0!". Adafruit Blog. Adafruit Industries. Retrieved 1 May 2018.
- ^ "Release 9.2.1". 20 November 2024. Retrieved 21 November 2024.
- ^ a b "adafruit/circuitpython". GitHub. Adafruit Industries. Retrieved 2 May 2018.
- ^ George, Damien P. (4 May 2014). "circuitpython/LICENSE". GitHub. Retrieved 1 May 2018.
- ^ "CircuitPython is an education friendly open-source derivative of MicroPython". GitHub. Retrieved 30 April 2018.
- ^ "CircuitPython". Read the Docs. Adafruit Industries. Retrieved 1 May 2018.
- ^ George, Damien (20 May 2016). "Damien P. George". Damien P. George. Retrieved 1 May 2018.
- ^ "Adafruit CircuitPython". MicroPython Forum. MicroPython.org. Retrieved 2 May 2018.
- ^ Lewis, James (14 February 2018). "Circuit Python adds Python to Microcontrollers". The Bald Engineer. Retrieved 2 May 2018.
- ^ Ganne, Simon. "Can I use circuitPython code on my raspberry?". Element 14 Community. Element 14.
- ^ Dopieralski, Radomir. "CircuitPython LAMEBOY". BitBucket. BitBucket. Retrieved 2 May 2018.
- ^ Young, Chris (6 June 2018). "Announcing IRLibCP — a Circuit Python Module for Infrared Transmitting and Receiving". CY's Tech Talk. Chris Young. Retrieved 2 May 2018.
- ^ "Adafruit CircuitPython and MicroPython". Adafruit Support Forums. Adafruit Industries. Retrieved 1 May 2018.
- ^ "CircuitPython". Twitter. Adfafruit Industries. Retrieved 1 May 2018.
- ^ "The Python on Microcontrollers Newsletter". Adafruit Daily. Adafruit Industries. Retrieved 17 July 2024.
- ^ "r/CircuitPython". Reddit.com. Adafruit Industries. Retrieved 17 July 2024.
- ^ "CircuitPython 9.1.0". GitHub. 17 July 2024.
- ^ "Why are we dropping support for ESP8266?". Adafruit.com. Adafruit Industries. Retrieved 15 April 2019.
- ^ "Blinka". CircuitPython. Adafruit Industries. Retrieved 17 July 2024.
- ^ "Blinka". CircuitPython. Adafruit Industries. Retrieved 17 July 2024.
- ^ "CircuitPython Libraries on Linux and Raspberry Pi". Adafruit Learning System. Adafruit Industries Industries. Retrieved 17 July 2024.
- ^ "Python on Microcontrollers Newsletter". Retrieved 17 July 2024.
- ^ "CircuitPython Libraries". Retrieved 17 July 2024.
External links
[edit]- CircuitPython on GitHub
- MicroPython playlist on YouTube • Tutorials by Tony DiCola / Adafruit