CircuitPython
{{Short description|Programming language for embedded electronics}}
{{Infobox software
| name = CircuitPython
| logo = Adafruit blinka angles-left.svg
| logo caption = Logo of the Blinka library, a compatibility layer for CircuitPython
| logo size = 200px
| author = Adafruit Industries
| released = {{Start date and age|2017|07|19}}{{cite web|first1=Scott|last1=Shawcroft|title=CircuitPython 1.0.0!|url=https://blog.adafruit.com/2017/07/19/circuitpython-1-0-0/|website=Adafruit Blog|date=19 July 2017 |publisher=Adafruit Industries|accessdate=1 May 2018}}
| latest release version = {{wikidata|property|edit|reference|P348}}
| latest release date = {{start date and age|{{wikidata|qualifier|P348|P577}}}}
| repo = https://github.com/adafruit/circuitpython
| programming language = C
| platform = Supported microcontrollers and single-board computers
| genre = Python implementation
| license = MIT license{{Cite web|url=https://github.com/adafruit/circuitpython/blob/master/LICENSE/micropython|title=circuitpython/LICENSE|last=George|first=Damien P.|date=4 May 2014|website=GitHub|access-date=1 May 2018}}
| website = {{URL|https://circuitpython.org/}}
}}
CircuitPython{{cite web|url=https://github.com/adafruit/circuitpython|title=CircuitPython is an education friendly open-source derivative of MicroPython|website=GitHub|accessdate=30 April 2018}} 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 {{nowrap|Python 3}} programming language, written in C.{{cite web |title=adafruit/circuitpython|url=https://github.com/adafruit/circuitpython |website=GitHub |publisher=Adafruit Industries |accessdate=2 May 2018}} 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.{{cite web|title=CircuitPython|url=https://readthedocs.org/projects/circuitpython/|website=Read the Docs|publisher=Adafruit Industries|accessdate=1 May 2018}}
CircuitPython is a fork of MicroPython, originally created by Damien George.{{cite web|last1=George|first1=Damien|title=Damien P. George|url=http://dpgeorge.net/|publisher=Damien P. George|accessdate=1 May 2018|date=20 May 2016}} The MicroPython community continues to discuss{{cite web|title=Adafruit CircuitPython|url=https://forum.micropython.org/viewtopic.php?t=2894|website=MicroPython Forum|publisher=MicroPython.org|accessdate=2 May 2018}} forks of MicroPython into variants such as CircuitPython.
CircuitPython is targeted to be compatible with CPython, the reference implementation of the Python programming language.{{cite web|last1=Lewis|first1=James|title=Circuit Python adds Python to Microcontrollers|url=https://www.baldengineer.com/circuit-python.html|website=The Bald Engineer|date=14 February 2018 |accessdate=2 May 2018}} Programs written for CircuitPython-compatible boards may not run unmodified on other platforms such as the Raspberry Pi.{{cite web|last1=Ganne|first1=Simon|title=Can I use circuitPython code on my raspberry?|url=https://www.element14.com/community/thread/62774/l/can-i-use-circuitpython-code-on-my-raspberry?displayFullThread=true|website=Element 14 Community|publisher=Element 14}}
Usage
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.{{cite web|last1=Dopieralski|first1=Radomir|title=CircuitPython LAMEBOY|url=https://bitbucket.org/thesheep/circuitpython-lameboy|website=BitBucket|accessdate=2 May 2018}}{{better source needed|date=August 2019}} Developer Chris Young has ported his infrared transmit-and-receive software to CircuitPython to provide interactivity and to aid those with accessibility issues.{{cite web|last1=Young|first1=Chris|title=Announcing IRLibCP — a Circuit Python Module for Infrared Transmitting and Receiving|url=http://tech.cyborg5.com/2017/06/06/announcing-irlibcp-a-circuit-python-module-for-infrared-transmitting-and-receiving/|website=CY's Tech Talk|publisher=Chris Young|accessdate=2 May 2018|date=6 June 2018}}
Community
The user community support includes a Discord chat room and product support forums.{{cite web|title=Adafruit CircuitPython and MicroPython|url=https://forums.adafruit.com/viewforum.php?f=60|website=Adafruit Support Forums|publisher=Adafruit Industries|accessdate=1 May 2018}} A Twitter account dedicated to CircuitPython news was established in 2018.{{cite web|title=CircuitPython|url=https://twitter.com/CircuitPython|website=Twitter|publisher=Adfafruit Industries|accessdate=1 May 2018}} 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.{{cite web|title=The Python on Microcontrollers Newsletter|url=https://www.adafruitdaily.com/category/circuitpython/|website=Adafruit Daily|publisher=Adafruit Industries|accessdate=17 July 2024}} A Reddit subreddit, r/CircuitPython, provides news on CircuitPython and related news and projects and has about 4,300 members.{{cite web|title=r/CircuitPython|url=https://www.reddit.com/r/circuitpython/|website=Reddit.com|publisher=Adafruit Industries|accessdate=17 July 2024}}
Hardware support
The version 9.1.0 supports a range of platforms, called "ports":{{cite web|title=CircuitPython 9.1.0|url=https://github.com/adafruit/circuitpython/releases/tag/9.1.0|website=GitHub|date=17 July 2024}}
- 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.{{cite web |title=Why are we dropping support for ESP8266? |url=https://learn.adafruit.com/welcome-to-circuitpython/circuitpython-for-esp8266 |website=Adafruit.com |publisher=Adafruit Industries |accessdate=15 April 2019}}
= Blinka Software Abstraction Layer =
CircuitPython code may run on MicroPython or CPython using the Adafruit written Blinka compatibility layer.{{cite web |title=Blinka |url=https://circuitpython.org/blinka |website=CircuitPython |publisher=Adafruit Industries |accessdate=17 July 2024}} 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.{{cite web |title=Blinka |url=https://circuitpython.org/blinka |website=CircuitPython |publisher=Adafruit Industries |accessdate=17 July 2024}} 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.{{cite web |title=CircuitPython Libraries on Linux and Raspberry Pi |url=https://learn.adafruit.com/circuitpython-on-raspberrypi-linux |website=Adafruit Learning System |publisher=Adafruit Industries Industries |accessdate=17 July 2024}}
=Modules (Libraries)=
Adafruit has fostered a community which has contributed software libraries for more than 488 sensors and drivers.{{Cite web |title = Python on Microcontrollers Newsletter |url = https://www.adafruitdaily.com/2024/07/15/python-on-microcontrollers-newsletter-circuitpython-9-1-released-arduino-adopts-qwiic-and-so-much-more-circuitpython-python-micropython-thepsf-raspberry_pi/ |access-date = 17 July 2024}}{{Cite web |title = CircuitPython Libraries |url = https://circuitpython.org/libraries |access-date = 17 July 2024}}
References
{{Reflist}}
External links
- {{GitHub|Adafruit/CircuitPython}}
- {{YouTube|playlist=PLjF7R1fz_OOXrI15wuXeESA0aA4VzcWSi|title=MicroPython}} • Tutorials by Tony DiCola / Adafruit
{{Python (programming language)}}
Category:Microcontroller software
Category:Python (programming language)