The best tools to make your project dreams come true

Login or Signup
USD

9/20/2018 | By Maker.io Staff

Python on Hardware

A whole generation of programmers have now grown up with the web, where JavaScript is the de facto language for creating dynamic user interfaces and managing databases. Alongside them is another, even larger, group who have made Python the de facto language of science, engineering, data analysis, and most recently machine learning. The emerging future communities we're seeing are being built not around specific chipsets or boards, but around languages. These modern languages are high level in that they are more than just a syntax-tree and compiler. They are fully-featured development environments that come with comprehensive libraries, code examples and support networks High-level language support is fundamentally disruptive to the way we currently build hardware.

Most people, and most makers, want to solve a problem. Maybe they're sending sensor data to the internet for an IoT device, or listening for radio signals that will move a motorized robot. While, for some, the specifications of the chipset or board really matter - the number of timers, the specs of the ADC controller - the across-the-board increases in microcontroller/microcomputer power and capabilities means that, often times, the specs don't vary that much. In a move that mirrors the changes we saw in the desktop and laptop computer market, our microcontroller hardware has become good enough that we now don't have to worry about the underlying architectures and instead, we can focus on application engineering.

When it comes down to it, the next generation of high powered microcontrollers and microcomputers will be defined, not by their hardware, but by their user experience. UIs will be rich and complex, with TFTs and OLEDs (a single button and buzzer will not suffice). Connectivity is now a given, you must have a stack for managing Internet or Bluetooth. And with such complexity, we need higher level languages. The future of hardware is about accessibility, and we will be programming using an easily accessible, and widely known, high level language like Python.

CircuitPython

Image of CircuitPython logoCircuitPython is Adafruit's branch of MicroPython designed to simplify experimentation and education on low-cost microcontrollers. It's fully interpreted, with the interpreter acting as your RTOS (of sorts). No compiler, linker or IDE required! Now you can code directly on the device itself. CircuitPython makes it easier than ever to get prototyping by requiring no up-front desktop software downloads - open up the embedded code.py text file in any text editor and type away.

It is great for beginners: With CircuitPython you can write clean and simple Python code to control hardware instead of having to use complex low-level languages like Arduino, C or C++. The simplicity of the Python programming language makes CircuitPython an excellent choice for beginners who are new to programming and hardware.

Image of Adafruit parts with Python

Experts love it too: skip the annoyances of long-compile cycles, pointers and memory management - get right to the programming you want to do. CircuitPython is also full-featured and supports all of Python's syntax (Python version 3.4) and implements some useful parts of the Python standard library so even seasoned Python veterans will find CircuitPython familiar and fun to use.

Adafruit's latest boards are the Metro, the Feather, and the ItsyBitsy (from largest to smallest). The Metro board features powerful Microchip Technologies SAMD51 microcontrollers with the ARM Cortex M4 core which includes hardware floating point support and DSP operations.

Running at 120 MHz and containing more RAM and Flash than prior boards, the new Adafruit boards are tailor-made for running CircuitPython quickly and effectively for taxing applications.

On the educational side, the Adafruit Circuit Playground Express provides the power of CircuitPython with the sensors and lights all on-board. It contains the features most requested from the educational community with ease of use and broad software compatibility.

The Adafruit Gemma M0, about the size of a U.S. quarter, is perfect for small wearables. The Trinket M0 is most often used in compact breadboard-friendly designs. Adafruit's Metro M0 Express provides shield-compatibility with the Arduino ecosystem. Finally, the Adafruit Feather M0 Express has dozens of companion boards which take advantage of the Feather system.

Articles

Blogs

Guides

Projects

Community

Books

  • Python for Microcontrollers - by Donald Norris, Discusses how to get started with MicroPython and Pyboard.
  • Programming with MicroPython - by Nicholas H. Tollervey, includes CircuitPython - Discusses the MicroPython language.

Videos

Code

Frameworks

Newsletter

News

Social

Events

Products

  • MicroPython
  • 1528-2138-ND: ATSAMD21G18 Metro M0 Express SAM D MCU 32-Bit ARM® Cortex®-M0+
  • 1528-2578-ND: Adafruits ADABOX 006 -CircuitPython kit with Circuit Playground Express
  • 1528-2622-ND: ADABOX 007 - SPY Starter kit
  • 1528-2554-ND: ATSAMD21 ItsyBitsy M0 Express SAM D MCU 32-Bit ARM® 
  • 1528-2619-ND: ATSAMD51J19 ItsyBitsy M4 Express SAM D MCU 32-Bit ARM® Cortex®-M4
  • 1528-2605-ND: ATSAMD51J19 METRO SAM D MCU 32-Bit ARM® Cortex®-M4 
  • 1528-2280-ND: Adafruit's ATSAMD21 Circuit Playground Express SAM D MCU 32-Bit ARM® Cortex®-M0+ Embedded Evaluation Board
  • 1528-2126-ND: Adafruit's ATSAMD21G18 Feather M0 Express SAM D MCU 32-Bit ARM® Cortex®-M0+ Embedded Evaluation Board
  • 1528-2348-ND: Adafruit's ADAFRUIT GEMMA M0 - MINIATURE WE
  • 1528-2361-ND: Adafruit's TRINKET M0 ATSAMD21E18 DEV BOARD
  • 1528-1580-ND: Adafruit's ADAFRUIT FEATHER M0 WIFI - ATSAM
  • 1528-1530-ND: Adafruit's ESP8266 FEATHER HUZZAH LOOSE HDR
  • 1528-1901-ND: Adafruit's ESP8266 FEATHER HUZZAH FIXED HDR
  • 1528-1902-ND: Adafruit's ESP8266 FEATHER HUZZAH STACK HDR
  • 1528-1539-ND: Adafruit's ATSAMD21G18 Data Logger Memory Evaluation Board
  • 1528-1531-ND: Adafruit's ATSAMD21G18 Feather M0 Basic Proto SAM D MCU 32-Bit ARM® Cortex®-M0+ Embedded Evaluation Board
  • 1528-1565-ND: Adafruit's STM32F405 PyBoard STM32F4 MCU 32-Bit ARM® Cortex®-M4 Embedded Evaluation Board
  • 1528-2286-ND: Adafruit's MICROPYTHON PYBOARD LITE V1.0 WI
  • BBB01-SC-505-ND: GHI Electronics' AM3358BZCZ BeagleBone Black Sitara™ MPU ARM® Cortex®-A8 Embedded Evaluation Board
  • BBBWL-SC-562-ND: GHI Electronics' OSD3358 BeagleBone Black Wireless (BBBW) - MPU ARM® Cortex®-A8 Embedded Evaluation Board
  • BBBLE-SC-568-ND: GHI Electronics' OSD3358 BeagleBone Blue - MPU ARM® Cortex®-A8 Embedded Evaluation Board
  • 1690-1000-ND: Raspberry Pi's BCM2837 Raspberry Pi 3 Model B - MPU ARM® Cortex®-A53, VideoCore Embedded Evaluation Board
  • 1690-1025-ND: Raspberry Pi's BCM2837B0 Raspberry Pi 3 Model B+ - MPU ARM® Cortex®-A53, VideoCore Embedded Evaluation Board
  • 1910-1000-ND: Pi Supply's BCM2835 Raspberry Pi Zero W - MPU ARM11 Embedded Evaluation Board
  • 1910-1001-ND: Pi Supply's BCM2835 Raspberry Pi Zero - MPU ARM11 Embedded Evaluation Board
  • 1050-1137-ND: Arduino's ATSAMD21 Arduino MKR Zero SAM D MCU 32-Bit ARM® Cortex®-M0+ Embedded Evaluation Board
  • 1528-2095-ND: Adafruit's FEATHER NRF52 BLUEFRUIT LE - NRF