Fact-checked by Grok 2 weeks ago

CircuitPython

CircuitPython is an open-source derivative of , providing a beginner-friendly implementation of 3 optimized for low-cost boards to facilitate rapid experimentation, education, and prototyping in embedded systems programming. Developed by with contributions from the MicroPython community, including key figures like Damien George, CircuitPython originated as a of MicroPython to enhance hardware support and ease of use for educational purposes. Its first beta release occurred on , 2017, marking the beginning of its evolution into a stable platform with regular major updates, such as version 10.0.0 in October 2025. Unlike traditional programming, CircuitPython eliminates the need for , allowing users to edit and run code directly on the device via USB, , or , with immediate feedback through a built-in serial console and REPL (Read-Eval-Print Loop). Key features include support for digital I/O, communication protocols like UART, I2C, and , audio input/output, and storage for data logging, enabling applications such as interfacing, interactive displays, and projects. It is compatible with over 600 boards from manufacturers like Adafruit, , and others, and through the Blinka compatibility library, it extends libraries to single-board computers like the . CircuitPython's ecosystem encompasses more than 500 dedicated libraries for hardware components, such as sensors and displays, all designed for seamless integration without additional setup, fostering a vibrant, community-driven open-source project that prioritizes accessibility for beginners, educators, and makers.

Overview

Introduction

CircuitPython is an open-source derivative of , developed by as a beginner-friendly implementation of for microcontrollers. It was initially released on July 19, 2017, under the , enabling accessible programming on low-cost hardware without requiring advanced technical knowledge. The primary goals of CircuitPython focus on targeting beginners, students, and makers in programming, prioritizing ease of use and over low-level efficiency optimizations. This approach lowers by providing an intuitive environment for learning systems concepts through familiar syntax. At its core, CircuitPython includes a 3-compatible compiler, a lightweight runtime interpreter, a Read-Eval-Print (REPL) for interactive sessions, built-in libraries for peripherals like sensors and displays, and file-based deployment that mounts the microcontroller as a USB device for simple editing. Its unique selling points emphasize beginner-friendly features, such as immediate execution without traditional steps, support for interactive via the REPL, and seamless integration with educational like the Circuit Playground Express for hands-on projects. CircuitPython runs on microcontrollers with at least 256 of and 32 of , ensuring compatibility with affordable boards while supporting a wide range of interactive and data-driven applications.

History

CircuitPython originated as a of , developed by in 2017 to address the needs of educational programming and provide hardware-specific optimizations, particularly for boards like the Circuit Playground Express. This initiative was preceded by Adafruit's launch of the Python on Microcontrollers newsletter on November 15, 2016, which built community momentum around using in embedded systems and served as a precursor to the project's formal announcement. The fork aimed to simplify experimentation for beginners while enhancing compatibility with low-cost microcontrollers, responding to the growing demand for accessible Python-based tools in and embedded education. The first stable release, version 1.0.0, arrived on July 19, 2017, initially focusing on support for Adafruit's Circuit Playground and establishing a file-system-based that mounted the device as a USB drive for easy code editing. Subsequent milestones included version 4.0.0 on May 20, 2019, which dropped support for the resource-constrained to prioritize more capable ARM-based boards and improve overall stability. By version 8.0.0, released on February 6, 2023, CircuitPython introduced significant USB device stack improvements, enabling better and reducing common issues. Version 9.0.0 followed on March 18, 2024, enhancing I/O capabilities through expanded support for audio processing, display interfaces, and sensor abstractions, alongside optimizations for memory efficiency and real-time performance that addressed early limitations in resource usage. Development has increasingly incorporated community-driven ports, transitioning many ARM-based board supports from alpha to stable status, which broadened hardware compatibility to over 622 ports by late 2025. The latest stable release, version 10.0.3 on October 17, 2025, includes bug fixes and refinements to these ports, reflecting iterative resolutions to performance challenges like and handling. By 2025, the had grown to over 500 libraries, underscoring CircuitPython's evolution into a robust for educational and hobbyist projects.

Technical Foundations

Core Architecture

CircuitPython's core architecture is built primarily , leveraging a portable Python derived from for interpretation and execution. This VM handles Python 3 on resource-constrained microcontrollers, with minimal modifications for ARM-based platforms. The system includes a supervisor module that oversees initialization, USB connectivity, mounting, and automatic execution of user code upon boot. Python bindings are provided through the shared-bindings layer, which exposes low-level abstractions via consistent , while an event-driven scheduler enables non-blocking I/O operations essential for embedded applications. Memory management in CircuitPython employs a fixed heap allocation, typically ranging from 32 KB on boards like those using the SAMD21 microcontroller to 256 KB on higher-end devices such as the , leaving limited space for dynamic objects after accounting for system overhead. Garbage collection is implemented to suit constraints, automatically triggered when heap space is exhausted but manually invocable via gc.collect() to mitigate fragmentation; this process scans for and frees unreferenced objects, though it consumes CPU cycles and is optimized to avoid long pauses in critical loops. To prevent fragmentation, core loops avoid dynamic allocations, favoring pre-allocated buffers and static structures, which ensures predictable behavior in memory-tight environments. The integrates seamlessly with USB, emulating a device named CIRCUITPY that appears as a VFAT-compatible drive on host computers, allowing drag-and-drop loading of code files and libraries without specialized tools. This VfsFat-based implementation handles mounting and unmounting directly, as CircuitPython operates without a traditional OS, and supports automatic execution of code.py from the upon reset. Users can disable the drive via storage.disable_usb_drive() for deployed applications, ensuring the remains accessible only when needed. Performance optimizations target low-power microcontrollers, such as the SAMD21, by supporting standby and deep sleep modes through the alarm module, which shuts down the CPU and most peripherals to minimize current draw while preserving wake-up capabilities via timers or pins. Boot times are typically around 1-2 seconds, including a 1-second delay for safe mode entry, enabling rapid iteration in development. Concurrency is handled without native threading to conserve resources, instead relying on asyncio for cooperative multitasking and event loops that yield control during I/O waits. Security features include a sandboxed that isolates execution on the , restricting access to the host system beyond controlled USB interfaces like and serial REPL, thereby preventing unintended interactions. On supported hardware with secure boot capabilities, such as the Pico 2 (RP2350), optional secure boot mechanisms verify integrity during startup to guard against tampering.

Language Implementation

CircuitPython implements a of Python 3 that is a subset of the language specification, drawing from versions 3.6 and later, with support extending to features introduced in Python 3.10 as of CircuitPython 9.x releases. This includes core constructs such as imports, classes, functions, generators, and comprehensions, enabling familiar syntax for programming. However, advanced features like complex metaclasses, arbitrary-precision integers in all contexts, and C extensions are omitted to accommodate the constrained resources of microcontrollers, prioritizing simplicity and performance over full equivalence. The implementation is derived from but customized by Adafruit for broader hardware compatibility and user-friendliness, ensuring that most standard code runs with minimal modifications on supported devices. The interpreter operates through a read-eval-print loop (REPL) accessible via USB connection, allowing interactive sessions for testing code snippets directly on the device. Upon boot or file changes, Python source files (typically code.py) are compiled on-the-fly to , which the then executes; this process repeats automatically on modifications to support rapid iteration. Error handling follows conventions, displaying tracebacks in the console for , though stack traces may be truncated on memory-limited boards to prevent overflows. The REPL activates after main script execution unless disabled in , providing an immediate feedback loop that distinguishes CircuitPython from traditional compiled languages. CircuitPython includes a selection of built-in modules that mirror subsets of the Python , such as time for basic timing operations, math for mathematical functions, and os restricted to filesystem interactions like directory listing and file manipulation. Hardware-oriented extensions augment this foundation, including digitalio for (GPIO) control, pulseio for PWM signals, and busio for interfacing with I2C, , and UART peripherals, all abstracted to work consistently across supported microcontrollers. These modules are implemented in C for efficiency, with Python bindings exposed via the shared bindings system, ensuring low-level hardware access without requiring users to write C code. Key deviations from standard Python arise from the embedded environment, including the absence of package management tools like pip, where libraries must be manually copied to the device's /lib directory for import. Floating-point operations use IEEE 754 doubles where hardware supports it, but on lower-end microcontrollers with limited RAM, precision and performance may be reduced compared to desktop Python implementations. The asyncio module enables asynchronous programming with async/await syntax for cooperative multitasking, suitable for I/O-bound tasks, but multiprocessing and true threading are unsupported due to the single-core nature of target hardware. These constraints promote lightweight, deterministic code that avoids blocking operations, aligning with real-time embedded requirements. To mitigate load times and memory usage, CircuitPython employs optimization techniques such as pre-compiled caching in .mpy files, generated using the mpy-cross cross-compiler tool. These binary files load faster than raw .py source and consume less storage—often 20-50% smaller—making them essential for resource-constrained boards where every kilobyte matters. Users can compile libraries offline on a host machine and deploy the .mpy versions to the filesystem, reducing compilation overhead and enabling larger projects without exhausting space. This approach balances portability with efficiency, allowing Python's expressiveness in environments where full compilation would be impractical.

Development and Usage

Programming Workflow

The programming workflow for CircuitPython begins with installing the on a compatible board. Users download the latest .uf2 file specific to their board from the official CircuitPython downloads page at circuitpython.org. To install, the board is placed into mode—typically by double-tapping the reset button on most boards or holding the BOOTSEL button while resetting on RP2040-based devices—which mounts a boot drive visible as a USB device. The .uf2 file is then dragged and dropped onto this drive, after which the board resets automatically, and the CIRCUITPY drive appears, ready for file operations. Code development involves editing Python files directly on the CIRCUITPY drive using any , with CircuitPython supporting beginner-friendly options like or , or advanced ones like with extensions for and serial integration. The primary file, code.py, runs automatically upon boot or save; modifications, such as adjusting delays in a loop, are saved to the drive, triggering an immediate auto-reload for live testing without manual resets. This file-based workflow leverages the board's USB , allowing seamless iteration between development on a host computer and execution on the device. Debugging relies on built-in tools accessible via the USB serial connection. The serial console outputs print statements from code.py, enabling real-time monitoring of variables, data, or execution flow for print-based . To enter the REPL (Read-Evaluate-Print-Loop) for interactive testing, users connect to the serial console and press Ctrl+C to interrupt the running program, then any key at the prompt to access the >>> shell, where commands can be executed line-by-line; Ctrl+D exits and reloads the code. Visual error indicators include the onboard status LED, which blinks in specific patterns (e.g., red for runtime errors like NameError) to signal issues without console access. Additionally, the detects code lockups by monitoring for feed() calls; if not fed within the set timeout, it triggers a to prevent hangs from infinite loops or crashes. For deployment, a simple example is blinking the onboard LED, which imports the board and digitalio modules to configure and toggle the pin:
python
import board
import digitalio
import time

led = digitalio.DigitalInOut(board.LED)
led.direction = digitalio.Direction.OUTPUT

while True:
    led.value = True
    time.sleep(0.5)
    led.value = False
    time.sleep(0.5)
This script runs on save and demonstrates basic . For sensors, handling interrupts uses modules like countio to detect pin changes asynchronously; for instance, connecting a motion to a pin and registering a callback increments a counter on rising edges, allowing non-blocking event detection in loops. Best practices emphasize modular organization to fit within flash constraints. Code and libraries are placed in the lib folder on the CIRCUITPY drive, with separate .py files or packages for reusability—e.g., grouping drivers into a dedicated module. To manage size, compile .py files to .mpy format using mpy-cross, reducing footprint for complex projects; limit code size to fit within available (often 100-256 depending on board) to avoid MemoryError during execution, and ensure total files fit within the board's filesystem space (e.g., 256 or more allocated). Always eject the drive safely before disconnecting to prevent corruption.

Libraries and Extensions

CircuitPython provides a rich ecosystem of libraries that abstract interactions, enabling developers to with peripherals such as sensors, displays, and actuators without low-level programming. These libraries are divided into built-in modules, which are included in the for core functionality, and third-party extensions, primarily from the Adafruit bundle and contributions. This separation allows for efficient resource use on resource-constrained microcontrollers, where libraries must be selected and deployed judiciously. The built-in libraries form the foundational set, comprising over 80 modules, varying by board, in CircuitPython version 10.0 and later, implementing subsets of Python standard libraries alongside hardware-specific abstractions. Key examples include busio for hardware-accelerated I2C and protocols, pulseio for (PWM) and pulse counting, audioio for audio playback and mixing, and storage for file system operations on the device's . These modules are written in C for performance and are always available, providing essential APIs for , timing, and device management without additional installation. Version 10.0, released in October 2025, introduced enhancements to built-in modules for audio, , and networking, expanding usage possibilities. The third-party ecosystem significantly expands capabilities, with over 540 libraries available as of October 2025, predominantly maintained by Adafruit and hosted in community repositories on . Notable Adafruit libraries include drivers for sensors like the BMP280 barometric pressure sensor and displays such as the SSD1306 , which simplify integration by handling protocol details and . Installation involves downloading version-specific bundles and copying compiled .mpy files to the lib folder on the device's CIRCUITPY drive, supporting offline deployment suitable for environments. Community contributions further diversify options, covering niche like LED strips and custom boards. Extension mechanisms in CircuitPython emphasize static deployment over , with no support for runtime installations or network-dependent package managers to maintain simplicity and security. Libraries are distributed in CircuitPython-specific bundles, often as pre-compiled .mpy binaries to reduce , and can be selectively included based on project needs. Representative extensions include the adafruit_neopixel library for controlling addressable LED strips via the built-in neopixel_write module, and adafruit_circuitplayground for board-specific features on devices like the Circuit Playground Express, which bundle sensors, lights, and speakers into high-level APIs. Version compatibility is ensured through tagged releases, with libraries compiled for specific major CircuitPython versions (e.g., 9.x or 10.x) to account for changes in .mpy formats. is maintained across major releases where possible, allowing libraries from prior to function with updates, though users are encouraged to match bundle versions to the firmware for optimal performance. Limitations arise from the embedded nature of CircuitPython, including strict size constraints where libraries must fit within available —often prompting the use of compact .mpy files over .py—and the absence of network-dependent installations, requiring all dependencies to be pre-loaded manually. These design choices prioritize reliability on low-power devices but necessitate careful selection to avoid exceeding or limits.

Hardware Support

Compatible Devices

CircuitPython primarily supports microcontroller boards based on series processors, including the SAMD21 and SAMD51 families (Cortex-M0+ and M4, respectively), (dual Cortex-M0+), and variants such as , , and H7 (Cortex-M4 and M7). It also extends compatibility to architectures, notably through Espressif's ESP32-C3 and ESP32-C6 chips, as well as support for boards like the RP2350 with its dual cores. As of version 10.0.3 (October 2025), CircuitPython supports 622 boards, encompassing examples such as the Adafruit series, QT Py modules, and the (via nRF52840 port). The minimum hardware specifications for compatibility include at least 256 KB of and 32 KB of , as exemplified by the baseline ; boards falling short, like the with its constrained 50-80 KB , were dropped starting in version 4.0 due to insufficient resources for core functionality and operations. Porting CircuitPython to new devices is a community-driven effort coordinated through the Adafruit repository, involving the creation of board-specific definition files, detailed pin mappings for peripherals like GPIO, I2C, and , and compilation of binaries. Notable integrations highlight educational and maker-oriented hardware, such as the Circuit Playground Express (SAMD21-based for interactive learning projects) and the Pico (RP2040 ported for versatile prototyping). Alpha-level ports, first introduced in version 9.1.0 and continuing in later releases such as 10.0.3, support over 20 additional devices across experimental architectures like (Raspberry Pi ARM, planned for removal in version 11.0) and , though these remain in early stages with potential bugs. Stability is maintained through distinct build types: stable releases for production use, unstable daily builds for testing new features, and for ongoing development, all available as .uf2 files typically ranging from 200-500 KB for compact boards, ensuring easy drag-and-drop installation via USB.

Software Abstractions

The Blinka layer, introduced by Adafruit in 2019, provides a CPython-compatible that emulates CircuitPython's APIs on Linux-based single-board computers (SBCs) such as the and BeagleBone. It achieves this by leveraging underlying system libraries like libgpiod for GPIO operations and spidev for SPI communication, allowing developers to access peripherals through familiar CircuitPython interfaces without porting code. In terms of functionality, Blinka supports key interfaces including I2C, , and GPIO via system-level calls, enabling the direct reuse of CircuitPython libraries for tasks like sensor integration. For example, code designed to read data from an I2C on a can run unchanged on a , interfacing with the same library abstractions. This compatibility extends to other peripherals such as UART, PWM, and analog I/O, facilitating seamless library portability across platforms. Common use cases for Blinka include prototyping hardware interactions on desktop or SBC environments before deploying to resource-constrained microcontrollers, as well as developing hybrid projects that combine SBC processing power with microcontroller peripherals. These scenarios benefit from the ability to test and iterate code in a more powerful computing context, such as simulating sensor data flows on a prior to final MCU implementation. However, Blinka has notable limitations, including the absence of execution guarantees due to the underlying kernel's scheduling, which can introduce higher compared to native environments. It requires 3.7 or later and is installed via as the Adafruit-Blinka package, but performance may degrade for high-speed operations like rapid digital I/O toggling. Extensions to Blinka include CircuitPython-on-host capabilities for simulating hardware interactions on standard desktop systems, further aiding development workflows. Additionally, integrations like Blinka_Displayio enable graphics and display handling, porting CircuitPython's displayio module to support visual prototyping on SBCs.

Community and Ecosystem

Support Networks

CircuitPython benefits from a robust array of official and community-driven support networks that facilitate learning, troubleshooting, and collaboration among users. The primary hub is Adafruit's Discord server, which has been active since 2017 and boasts over 39,000 members as of late 2025, featuring a dedicated #CircuitPython channel for 24/7 real-time chat, support, and weekly podcasts on topics ranging from beginner queries to advanced debugging. Additionally, the official forums hosted at learn.adafruit.com provide structured discussion threads for CircuitPython-specific issues, including hardware integration and code optimization, serving as a long-standing resource for detailed Q&A since the project's inception. Complementing these, Adafruit's weekly newsletter, launched in 2018, delivers curated updates on tips, projects, and ecosystem news every Monday, helping users stay informed without overwhelming inboxes. Social media engagement occurs via the official @circuitpython account on X (formerly Twitter), where announcements, quick tips, and community highlights are shared regularly to foster broader interaction. Documentation forms the backbone of CircuitPython's support infrastructure, ensuring accessible entry points for users at all levels. The central portal at circuitpython.org offers comprehensive guides, firmware downloads for over 600 compatible boards, and step-by-step installation instructions, making it the go-to resource for initial setup and reference. The project's repository at adafruit/circuitpython serves as a collaborative nexus, hosting issue trackers for bug reports and feature requests, along with a for technical deep dives into core modules and processes, encouraging direct input on . For informal discourse, the r/CircuitPython subreddit, with over 5,000 subscribers as of November 2025, acts as a forum for sharing projects, seeking advice, and discussing news, providing a Reddit-based complement to more formal channels. Educational resources emphasize hands-on learning to build foundational skills in CircuitPython. Beginner tutorials on learn.adafruit.com cover essentials like controlling LEDs via digital outputs and integrating sensors such as temperature or motion detectors, often with code snippets and wiring diagrams to guide newcomers through interactive experiments. Adafruit's YouTube channel features extensive video series, including walkthroughs of weekly meetings and project builds, which demystify concepts through visual demonstrations and live troubleshooting sessions. Integration with user-friendly tools like the Mu editor enhances accessibility, as it provides a simple IDE tailored for CircuitPython boards, supporting modes for plotting data, REPL interaction, and direct file uploads to microcontrollers. Community events further strengthen support by promoting in-person and virtual collaboration. Adafruit actively participates in Maker Faires worldwide, showcasing CircuitPython demos, workshops, and interactive exhibits to inspire attendees and connect users with experts. Dedicated hackathons and hack chats, such as those hosted on , focus on CircuitPython projects, encouraging and knowledge exchange in time-bound challenges. Efforts toward inclusivity are evident in accessibility-focused support, particularly through developer Chris Young's contributions. Young's IRLibCP library, ported to CircuitPython, enables infrared signal transmission and reception, powering assistive devices that allow users with disabilities to control TVs, emulate mouse/keyboard inputs, and interact with environments via IR remotes, thereby broadening the platform's reach to diverse users.

Contributions and Future Directions

Contributions to CircuitPython occur primarily through its repository, where developers submit pull requests to add or improve core ports, expand device libraries, and fix bugs. The standard workflow involves forking the repository, creating a feature branch, implementing changes, and submitting a pull request for review by maintainers, ensuring code quality and compatibility across supported hardware. The project enforces the , which emphasizes kindness, inclusivity, and respectful collaboration to foster a supportive for all participants. Testing forms a critical part of the contribution process, with contributors encouraged to validate changes using the BoardTest library to confirm port functionality, pin mappings, and bus operations on physical devices; additional testing occurs through community feedback and issue reporting on . Key development efforts are driven by the Adafruit team, led by Scott Shawcroft, who oversees core implementation and has guided the project's evolution since its inception. Community members have extended support to over 600 boards through collaborative porting efforts, while library maintainers contribute to the Adafruit CircuitPython Bundle by developing and updating drivers for sensors, displays, and peripherals. The ecosystem's growth underscores its impact, with supported boards expanding from around 100 in 2017 to more than by 2025, enabling broader accessibility for makers and educators; the core alone reflects contributions from hundreds of developers, amplifying in programming. Looking ahead, CircuitPython's roadmap emphasizes enhanced support for emerging architectures like , with ongoing ports to boards such as the PyFive-RISC-V to broaden compatibility beyond traditional and SAMD chips. The release of CircuitPython 10.0 in mid-2025 further advances convergence with by incorporating additional standard library features while optimizing for constraints. Improvements in USB handling, including better integration with interfaces on modern devices, are prioritized to simplify connectivity and power management. Sustainability initiatives focus on low-power optimizations, such as refined sleep modes and energy-efficient primitives, to align with eco-friendly applications on battery-constrained . Efforts toward greater convergence with continue, aiming to incorporate more features while maintaining microcontroller-specific constraints. Challenges persist in balancing the language's beginner-friendly —through simple syntax and immediate feedback—with performance demands for resource-intensive tasks on limited . Supply chain disruptions for microcontroller components also pose hurdles, affecting board availability and testing for new ports.

References

  1. [1]
    CircuitPython
    CircuitPython is a programming language designed to simplify experimenting and learning to code on low-cost microcontroller boards.Downloads · Libraries · Documentation · Blinka
  2. [2]
    Welcome to the Adafruit CircuitPython Beta!
    Jan 9, 2017 · Today we've released the first beta version of CircuitPython! CircuitPython is based on the open-source MicroPython which brings the popular ...
  3. [3]
    CircuitPython 9.0.0 Released! - Adafruit Blog
    Mar 18, 2024 · From the GitHub release page: This is CircuitPython 9.0.0, the latest major revision of CircuitPython, and is a new stable release.
  4. [4]
    Welcome to CircuitPython! | Adafruit Learning System
    CircuitPython is a programming language designed to simplify experimenting and learning to program on low-cost microcontroller boards.
  5. [5]
    CircuitPython - Libraries
    The CircuitPython Library Bundle contains all current libraries available for CircuitPython. They are designed for use with CircuitPython and may or may not ...
  6. [6]
    CircuitPython 1.0.0! - Adafruit Blog
    Jul 19, 2017 · CircuitPython 1.0.0! From the GitHub release page: This is the first stable release of CircuitPython! That means we believe everything works ...
  7. [7]
    MicroPython & CircuitPython License
    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”).
  8. [8]
    Welcome to CircuitPython! - Adafruit Learning System
    This guide will walk you through how to get started with CircuitPython. You'll learn how to install CircuitPython, get updated to the newest version of ...What is CircuitPython? · Installing CircuitPython · CircuitPython Libraries
  9. [9]
    Chipsets | Which CircuitPython Board is Right for You?
    There are memory limitations - it caps out at 256KB of flash and 32KB of RAM. Flash is important for multiple reasons, including determining the number of ...Missing: hardware | Show results with:hardware
  10. [10]
    The Past, Present, And Future Of CircuitPython - Hackaday
    Aug 1, 2023 · Specifically Adafruit wanted to be able to use the same libraries they had already ported over to standard Python, but that wouldn't be possible ...
  11. [11]
    CircuitPython 4.0.0 released!!! - Adafruit Blog
    May 20, 2019 · 4.0.0 is the latest major revision of CircuitPython and a new stable release! Download it now from circuitpython.org.
  12. [12]
    CircuitPython 8.0.0 Released! @circuitpython - Adafruit Blog
    Feb 6, 2023 · WARNING: The flash partitioning for 2MB and 4MB flash ESP32 and ESP32-C3 boards has changed since 8.0.0-beta.2. When you load 8.0.0-beta.3 or ...
  13. [13]
    Downloads - CircuitPython
    Adafruit QT Py ESP32-S2 (including uFL version). By Adafruit · Image of Board. Adafruit QT Py ESP32-S3 4MB Flash/2MB PSRAM. By Adafruit · Image of Board ...Pico By Raspberry Pi · Pico W By Raspberry Pi · Feather RP2040 By Adafruit
  14. [14]
    500 CircuitPython Libraries! #CircuitPython #Python @Adafruit
    Oct 24, 2024 · The CircuitPython community reached a big milestone together! There are 503 CircuitPython Libraries! The CircuitPython Library Bundle and ...
  15. [15]
    Architecture — Adafruit CircuitPython 1 documentation
    There are three core pieces to CircuitPython: The first is the Python VM that the awesome MicroPython devs have created. These VMs are written to be portable so ...
  16. [16]
    gc – control the garbage collector - CircuitPython
    The `gc` module controls garbage collection. Use `gc.enable()` to enable, `gc.disable()` to disable, and `gc.collect()` to run garbage collection.Missing: management | Show results with:management
  17. [17]
    Memory-saving tips for CircuitPython | Adafruit Learning System
    Apr 17, 2021 · Memory-saving tips for CircuitPython · Memory: Reducing fragmentation · Memory allocation failed, but I have plenty of memory free! (memory ...
  18. [18]
    Workflows — Adafruit CircuitPython 1 documentation
    Jun 24, 2022 · CircuitPython exposes a standard mass storage (MSC) interface to enable file manipulation over a standard interface. (This is how USB drives ...
  19. [19]
    Standard Libraries — Adafruit CircuitPython 1 documentation
    ### Summary of Standard Library Modules in CircuitPython
  20. [20]
    CircuitPython — Adafruit CircuitPython 1 documentation
    ### Summary of CircuitPython Core Components, Features, and Requirements
  21. [21]
  22. [22]
    CircuitPython Libraries | Welcome to CircuitPython!
    CircuitPython libraries work in the same way as regular Python modules so the Python docs are an excellent reference for how it all should work.
  23. [23]
    Library File Types and Frozen Libraries | Welcome to CircuitPython!
    Between that and the minor optimisation that comes with the .mpy format, it uses less memory than a .py file. One caveat is that .mpy files are not human- ...Missing: optimization | Show results with:optimization
  24. [24]
    Design Guide — Adafruit CircuitPython 1 documentation
    This guide covers a variety of development practices for CircuitPython core and library APIs. These APIs are both built-into CircuitPython and those that are ...
  25. [25]
    Installing CircuitPython | Welcome to CircuitPython!
    Generally Adafruit will support the last two major versions. Some of the CircuitPython compatible boards come with CircuitPython installed. Others are ...
  26. [26]
    Creating and Editing Code | Welcome to CircuitPython!
    This section covers how to create and edit your first CircuitPython program. To create and edit code, all you'll need is an editor. There are many options.Missing: workflow | Show results with:workflow
  27. [27]
  28. [28]
    Interacting with the Serial Console | Welcome to CircuitPython!
    The serial console displays code output, sensor data, and is used for print debugging to see where code fails.
  29. [29]
    The REPL | Welcome to CircuitPython! - Adafruit Learning System
    To use the REPL, you first need to be connected to the serial console. Once that connection has been established, you'll want to press CTRL+C. If there is code ...
  30. [30]
    Welcome to CircuitPython! | Adafruit Learning System
    No readable text found in the HTML.<|separator|>
  31. [31]
    Cooperative Multitasking in CircuitPython with asyncio
    For example, a pin connected to an external sensor may change, indicating that the sensor has new data. The interrupt handler itself could read the data and ...
  32. [32]
    Creating and sharing a CircuitPython library
    ### Summary of Best Practices for CircuitPython Library Creation
  33. [33]
    Memory-saving tips for CircuitPython - Adafruit Learning System
    Apr 17, 2021 · To save storage space, be sure to use the .mpy file for all your libraries placed in the /lib folder. For all libraries supported by Adafruit or ...
  34. [34]
    Standard Libraries — Adafruit CircuitPython 1 documentation
    The libraries below implement a subset of the corresponding standard Python (CPython) library. They are implemented in C, not Python.Json · Io – input/output streams · Gc – control the garbage...
  35. [35]
    Core Modules — Adafruit CircuitPython 1 documentation
    These core modules are intended on being consistent across ports and boards. A module may not exist on a port/board if no underlying hardware support is present ...Standard Libraries · Socketpool · Canio – CAN bus access · Audiopwmio
  36. [36]
    adafruit/Adafruit_CircuitPython_Bundle: A bundle of useful ... - GitHub
    This repo bundles a bunch of useful CircuitPython libraries into an easy to download zip file. CircuitPython boards can ship with the contents of the zip.
  37. [37]
    Releases · adafruit/Adafruit_CircuitPython_Bundle - GitHub
    No results found. View all tags · November 05, 2025 auto-release Latest · Latest ... Please download the one that matches the major version of your CircuitPython.<|control11|><|separator|>
  38. [38]
    ST Microelectronics STM32 — Adafruit CircuitPython 1 documentation
    Supported Ports; ST Microelectronics STM32. ST ... Currently, only the F4, F7, and H7 families are supported, powered by the ARM Cortex M4 and M7 processors.
  39. [39]
    ESP-C3-32S (2M) By Ai-Thinker - CircuitPython
    This is an entry-level development board based on Espressif ESP32-C3 SoC, which is equipped with a RISC-V 32-bit single-core processor, operating frequency up ...<|control11|><|separator|>
  40. [40]
    Raspberry Pi launches its first RISC-V multicore chip ...
    Aug 9, 2024 · Raspberry Pi has stepped up its chip development with a quad core microcontroller with two ARM Cortex-M33 cores and two in-house RISC-V cores.Missing: ports | Show results with:ports
  41. [41]
    CircuitPython for ESP8266 | Welcome to CircuitPython!
    Why are we dropping support for ESP8266? CircuitPython on ESP8266 has not been a great experience for users. It's hard to send files to the device because ...Missing: 4.0.0 | Show results with:4.0.0
  42. [42]
    How to Add a New Board to CircuitPython - Adafruit Learning System
    This guide will walk through the process of adding a board to CircuitPython. You will need to be familiar with Git and GitHub to do this process.
  43. [43]
    Pico Download - CircuitPython
    All previous releases of CircuitPython are available for download from Amazon S3 through the button below. For very old releases, look in the OLD/ folder for ...
  44. [44]
    CircuitPython 9.1.0 Beta 1 Released! - Adafruit Blog
    Apr 18, 2024 · These ports are considered alpha and will have bugs and missing functionality: broadcom : Raspberry Pi boards such as RPi 4, RPi Zero 2W ...
  45. [45]
    CircuitPython 10.0.1 Released! - Adafruit Blog
    Oct 9, 2025 · From the GitHub release page: This is CircuitPython 10.0.1, the latest bugfix revision of CircuitPython, and is a new stable release.
  46. [46]
    Blinka - CircuitPython
    Blinka brings CircuitPython APIs and, therefore, CircuitPython libraries to single board computers (SBCs). It is a pip installable Python library that runs in ...
  47. [47]
  48. [48]
    Overview | CircuitPython Libraries on Linux and Raspberry Pi
    2–3 day delivery 30-day returnsYou'll use a special library called adafruit_blinka (named after Blinka, the CircuitPython mascot) that provides a layer that translates the CircuitPython ...
  49. [49]
    Runtime utility objects for re-implementation of CircuitPython API
    adafruit_blinka - Runtime utility objects for re-implementation of CircuitPython API¶ ... An object that automatically deinitializes hardware with a context ...
  50. [50]
    CircuitPython Libraries on Linux and Raspberry Pi
    Blinka is a software library that emulates the parts of CircuitPython that control hardware. Blinka provides non-CircuitPython implementations.
  51. [51]
    Adafruit-Blinka - PyPI
    Introduction. Documentation Status Discord Build Status Code Style: Black ... gz . File metadata. Download URL: adafruit_blinka-8.67.0.tar.gz; Upload date: Oct 29 ...
  52. [52]
    [PDF] CircuitPython Libraries on Linux and Raspberry Pi - Adafruit
    Oct 1, 2025 · If you are using Blinka in MCP2221 mode, then keep in mind these basic limitations. GPIO speed is not super fast, so trying to do arbitrary ...
  53. [53]
    Installing Blinka on Raspberry Pi | CircuitPython Libraries on Linux ...
    At this time, Blinka requires Python version 3.7 or later, which means you will need to at least be running Raspberry Pi OS Bullseye.
  54. [54]
  55. [55]
    adafruit-blinka-displayio - PyPI
    Adafruit Blinka. Installing from PyPI. On supported GNU/Linux systems like the Raspberry Pi, you can install the driver locally from PyPI.
  56. [56]
  57. [57]
    Awesome CircuitPython
    CircuitPython is Adafruit's branch of MicroPython designed to simplify experimentation and education on low-cost microcontrollers.
  58. [58]
    Contribute to the CircuitPython weekly newsletter! @adafruit on ...
    Mar 22, 2018 · Each week we have Python + hardware news, MicroPython news, and of course CircuitPython news. From cool jobs, to projects, to events – it's all ...
  59. [59]
    CircuitPython - X
    Jan 28, 2025 · News & info on CircuitPython, hosted by Blinka. For questions/assistance, please visit the Adafruit forum at https://t.co/UAro2m8phf.Missing: handle | Show results with:handle
  60. [60]
    CircuitPython - Reddit
    Apr 7, 2018 · The project involves regular Python running on one device and separate hardware devices running CircuitPython. They connect via USB and ...
  61. [61]
    Installing the Mu Editor | Welcome to CircuitPython!
    Mu is a simple code editor that works with the Adafruit CircuitPython boards. It's written in Python and works on Windows, MacOS, Linux and Raspberry Pi.Missing: resources YouTube
  62. [62]
    Maker Faire - Adafruit Blog
    November 15, 2023 AT 9:52 am. Making Music with CircuitPython and the Raspberry Pi Pico #CircuitPython @coopersnout ; November 7, 2023 AT 9:37 am. An upscaled ...
  63. [63]
    cyborg5/IRLibCP: A Circuit Python module for sending and ... - GitHub
    IRLibCP -- a Circuit Python Module for Receiving, Decoding and Sending Infrared Signals. IRLibCP is copyright 2017 by Chris Young. It it is translation of the ...Missing: accessibility | Show results with:accessibility
  64. [64]
    Chris Young - Adafruit Learning System
    This assistive technology device allows disabled users to control TV, cable, Blu-ray, DVR using infrared remote control as well as mouse and keyboard emulation ...
  65. [65]
  66. [66]
  67. [67]
    Introduction — Adafruit BoardTest Library 1.0 documentation
    Copy the desired test file to CIRCUITPYTHON device drive and import the test in your own code. Each test can be run with the run_test(pins) function. The ...Missing: TestBed program
  68. [68]
    Contributing — Adafruit CircuitPython 1 documentation
    Licensing . By contributing to this repository you are certifying that you have all necessary permissions to license the code under an MIT License. You still ...
  69. [69]
    Scott's #CircuitPython2024 @tannewt - Adafruit Blog
    Jan 24, 2024 · I've spent the last seven-ish years of my career working to make computing more accessible through CircuitPython. Losing my mom has made me ...Missing: contributors | Show results with:contributors
  70. [70]
    There are now 600 CircuitPython compatible microcontroller boards ...
    Mar 21, 2025 · Supported chips include: Espressif, Microchip SAMDs, Nordic, NXP, RP2040, ST, iMX RT and more! From Wi-Fi to BLE to LoRA, there is an easy and ...
  71. [71]
    400 CircuitPython Compatible Boards, Hackaday Supercon and ...
    May 16, 2023 · There are now over 400 CircuitPython compatible microcontroller boards. The growth of CircuitPython compatible boards since 2017. It's ...
  72. [72]
    Contributors to adafruit/circuitpython
    - Total number of contributors: Not explicitly stated in the provided content.
  73. [73]
    PyFive-RISC-V/circuitpython - GitHub
    Please support both MicroPython and Adafruit. Get CircuitPython. Official binaries for all supported boards are available through circuitpython.org/downloads.Missing: ARM Cortex-<|control11|><|separator|>
  74. [74]
    CircuitPython 8.2.0-beta.1, Focus on RISC-V and More ...
    Jun 13, 2023 · It has some built in sensors, 4MB of flash, and a lipo charger circuit. Although the official website only mentions C and MicroPython support, ...
  75. [75]
    CircuitPython: Programming Hardware in Python - Hacker News
    Jan 27, 2021 · CircuitPython and MicroPython are great for hobbyists or if you need to prototype something quickly. It becomes very limiting for bigger embedded applications.
  76. [76]
    Overcoming the challenges of a volatile supply chain
    Sep 21, 2022 · Access to accurate and timely component supplier intelligence enables companies to make informed and cost-effective component selections early ...Missing: CircuitPython | Show results with:CircuitPython<|separator|>