CircuitPython

Last updated
CircuitPython
Original author(s) Adafruit Industries
Initial releaseJuly 19, 2017;6 years ago (2017-07-19) [1]
Stable release
9.0.5 [2]   OOjs UI icon edit-ltr-progressive.svg / 22 May 2024;56 days ago (22 May 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.org

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.

Contents

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

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

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

The version 9.1.0 supports a range of architectures, called "ports": [17]

These ports are considered alpha and will have bugs and missing functionality:

Previous versions supported the ESP8266 microcontroller, but its support was dropped in version 4. [18]

Blinka Software Abstraction Layer

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)

Adafruit has fostered a community which has contributed software libraries for more than 488 sensors and drivers. [22] [23]

Related Research Articles

<span class="mw-page-title-main">Python (programming language)</span> General-purpose programming language

Python is a high-level, general-purpose programming language. Its design philosophy emphasizes code readability with the use of significant indentation.

IronPython is an implementation of the Python programming language targeting the .NET and Mono frameworks. The project is currently maintained by a group of volunteers at GitHub. It is free and open-source software, and can be implemented with Python Tools for Visual Studio, which is a free and open-source extension for Microsoft's Visual Studio IDE.

CPython is the reference implementation of the Python programming language. Written in C and Python, CPython is the default and most widely used implementation of the Python language.

<span class="mw-page-title-main">FreeRTOS</span> Real-time operating system

FreeRTOS is a real-time operating system kernel for embedded devices that has been ported to 35 microcontroller platforms. It is distributed under the MIT License.

<span class="mw-page-title-main">PyPy</span> Alternative implementation of the Python programming language

PyPy is an implementation of the Python programming language. PyPy often runs faster than the standard implementation CPython because PyPy uses a just-in-time compiler. Most Python code runs well on PyPy except for code that depends on CPython extensions, which either does not work or incurs some overhead when run in PyPy.

<span class="mw-page-title-main">Arduino</span> Italian open-source hardware and software company

Arduino is an Italian open-source hardware and software company, project, and user community that designs and manufactures single-board microcontrollers and microcontroller kits for building digital devices. Its hardware products are licensed under a CC BY-SA license, while the software is licensed under the GNU Lesser General Public License (LGPL) or the GNU General Public License (GPL), permitting the manufacture of Arduino boards and software distribution by anyone. Arduino boards are available commercially from the official website or through authorized distributors.

<span class="mw-page-title-main">Raspberry Pi</span> Series of low-cost single-board computers

Raspberry Pi is a series of small single-board computers (SBCs) developed in the United Kingdom by the Raspberry Pi Foundation in association with Broadcom. The Raspberry Pi project originally leaned toward the promotion of teaching basic computer science in schools. The original model became more popular than anticipated, selling outside its target market for diverse uses such as robotics, home and industrial automation, and by computer and electronic hobbyists, because of its low cost, modularity, open design, and its adoption of the HDMI and USB standards.

<span class="mw-page-title-main">Adafruit Industries</span> American electronic components and hardware distributor

Adafruit Industries is an open-source hardware company based in New York, United States. It was founded by Limor Fried in 2005. The company designs, manufactures and sells electronics products, electronics components, tools, and accessories. It also produces learning resources, including live and recorded videos about electronics, technology, and programming.

<span class="mw-page-title-main">Julia (programming language)</span> Dynamic programming language

Julia is a high-level, general-purpose dynamic programming language, most commonly used for numerical analysis and computational science. Distinctive aspects of Julia's design include a type system with parametric polymorphism and the use of multiple dispatch as a core programming paradigm, efficient garbage collection, and a just-in-time (JIT) compiler.

<span class="mw-page-title-main">Raspberry Pi OS</span> Debian-based operating system for Raspberry Pi

Raspberry Pi OS is a Unix-like operating system based on the Debian GNU/Linux distribution for the Raspberry Pi family of compact single-board computers. Raspbian was developed independently in 2012, became the primary operating system for these boards since 2013, was originally optimized for the Raspberry Pi 1 and distributed by the Raspberry Pi Foundation. The Raspberry Pi Foundation replaced it 2020 by Raspberry Pi OS.

<span class="mw-page-title-main">Salvius (robot)</span> Open source humanoid robot

Salvius is an open source humanoid robot built in the United States in 2008, the first of its kind. Its name is derived from the word 'salvaged', being constructed with an emphasis on using recycled components and materials to reduce the costs of designing and construction. The robot is designed to be able to perform a wide range of tasks due to its humanoid body structure planning. The primary goal for the Salvius project is to create a robot that can function dynamically in a domestic environment.

<span class="mw-page-title-main">Micro Bit</span> Single-board computer designed by the BBC for use in computer education

The Micro Bit is an open source hardware ARM-based embedded system designed by the BBC for use in computer education in the United Kingdom. It was first announced on the launch of BBC's Make It Digital campaign on 12 March 2015 with the intent of delivering 1 million devices to pupils in the UK. The final device design and features were unveiled on 6 July 2015 whereas actual delivery of devices, initially planned for September 2015 to schools and October 2015 to general public, began on 10 February 2016.

<span class="mw-page-title-main">NodeMCU</span> Open-source IoT platform

NodeMCU is a low-cost open source IoT platform. It initially included firmware which runs on the ESP8266 Wi-Fi SoC from Espressif Systems, and hardware which was based on the ESP-12 module. Later, support for the ESP32 32-bit MCU was added.

<span class="mw-page-title-main">ESP8266</span> System-on-a-chip microcontroller model with Wi-Fi

The ESP8266 is a low-cost Wi-Fi microcontroller, with built-in TCP/IP networking software, and microcontroller capability, produced by Espressif Systems in Shanghai, China.

<span class="mw-page-title-main">Thonny</span> Python IDE

Thonny is a free and open-source integrated development environment for Python that is designed for beginners. It was created by Aivar Annamaa, an Estonian programmer. It supports different ways of stepping through code, step-by-step expression evaluation, detailed visualization of the call stack and a mode for explaining the concepts of references and heap.

MicroPython is a software implementation of a programming language largely compatible with Python 3, written in C, that is optimized to run on a microcontroller.

<span class="mw-page-title-main">ESP32</span> Low-cost, low-power SoC microcontrollers with Bluetooth and Wi-Fi

ESP32 is a series of low-cost, low-power system on a chip microcontrollers with integrated Wi-Fi and dual-mode Bluetooth. The ESP32 series employs either a Tensilica Xtensa LX6 microprocessor in both dual-core and single-core variations, an Xtensa LX7 dual-core microprocessor, or a single-core RISC-V microprocessor and includes built-in antenna switches, RF balun, power amplifier, low-noise receive amplifier, filters, and power-management modules. ESP32 is created and developed by Espressif Systems, a Chinese company based in Shanghai, and is manufactured by TSMC using their 40 nm process. It is a successor to the ESP8266 microcontroller.

<span class="mw-page-title-main">MySensors</span>

MySensors is a free and open source DIY software framework for wireless IoT devices allowing devices to communicate using radio transmitters. The library was originally developed for the Arduino platform.

<span class="mw-page-title-main">Webduino</span>

The BPI Bit is an ESP32 with Xtensa 32bit LX6 single/dual-core processor based embedded system

<span class="mw-page-title-main">RP2040</span> ARM-architecture microcontroller by the Raspberry Pi Foundation

RP2040 is a 32-bit dual ARM Cortex-M0+ microcontroller integrated circuit by Raspberry Pi Ltd. In January 2021, it was released as part of the Raspberry Pi Pico board.

References

  1. Shawcroft, Scott (19 July 2017). "CircuitPython 1.0.0!". Adafruit Blog. Adafruit Industries. Retrieved 1 May 2018.
  2. "Release 9.0.5". 22 May 2024. Retrieved 20 June 2024.
  3. 1 2 "adafruit/circuitpython". GitHub . Adafruit Industries . Retrieved 2 May 2018.
  4. George, Damien P. (4 May 2014). "circuitpython/LICENSE". GitHub . Retrieved 1 May 2018.
  5. "CircuitPython is an education friendly open-source derivative of MicroPython". GitHub . Retrieved 30 April 2018.
  6. "CircuitPython". Read the Docs . Adafruit Industries. Retrieved 1 May 2018.
  7. George, Damien (20 May 2016). "Damien P. George". Damien P. George. Retrieved 1 May 2018.
  8. "Adafruit CircuitPython". MicroPython Forum. MicroPython.org. Retrieved 2 May 2018.
  9. Lewis, James (14 February 2018). "Circuit Python adds Python to Microcontrollers". The Bald Engineer. Retrieved 2 May 2018.
  10. Ganne, Simon. "Can I use circuitPython code on my raspberry?". Element 14 Community. Element 14.
  11. Dopieralski, Radomir. "CircuitPython LAMEBOY". BitBucket. BitBucket. Retrieved 2 May 2018.
  12. 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.
  13. "Adafruit CircuitPython and MicroPython". Adafruit Support Forums. Adafruit Industries. Retrieved 1 May 2018.
  14. "CircuitPython". Twitter . Adfafruit Industries. Retrieved 1 May 2018.
  15. "The Python on Microcontrollers Newsletter". Adafruit Daily. Adafruit Industries. Retrieved 17 July 2024.
  16. "r/CircuitPython". Reddit.com. Adafruit Industries. Retrieved 17 July 2024.
  17. "CircuitPython 9.1.0". GitHub. 17 July 2024.
  18. "Why are we dropping support for ESP8266?". Adafruit.com. Adafruit Industries. Retrieved 15 April 2019.
  19. "Blinka". CircuitPython. Adafruit Industries. Retrieved 17 July 2024.
  20. "Blinka". CircuitPython. Adafruit Industries. Retrieved 17 July 2024.
  21. "CircuitPython Libraries on Linux and Raspberry Pi". Adafruit Learning System. Adafruit Industries Industries. Retrieved 17 July 2024.
  22. "Python on Microcontrollers Newsletter" . Retrieved 17 July 2024.
  23. "CircuitPython Libraries" . Retrieved 17 July 2024.