Andreas
December 11, 2018, 8:38pm
1
Foundation
ESP-IDF
The Espressif IoT Development Framework (ESP-IDF ) is the official development framework for the ESP32 chip.
– https://docs.espressif.com/projects/esp-idf/
Lua
NodeMCU
An open-source firmware and development kit that helps you to prototype your IOT product within a few Lua script lines.
– NodeMcu -- An open-source firmware based on ESP8266 wifi-soc.
Documentation: https://nodemcu.readthedocs.io/
MicroPython
MicroPython by Pycom
CircuitPython by Adafruit
CircuitPython 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. 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 w...
https://github.com/adafruit/circuitpython
Andreas
December 11, 2018, 8:55pm
2
MCU support (Ports)
Side-by-side
Notable differences
While all forks will support these architectures …
bare-arm
cc3200
esp32
esp8266
minimal
nrf
pic16bit
qemu-arm
stm32
teensy
unix
windows
zephyr
… CircuitPython will also support Atmel SAMD:
The current stable version [of CircuitPython] is 2.3.1 with support for the Microchip Technology Atmel SAMD21 processor and the ESP8266 microcontroller. Adafruit has announced a major revision, 3.0.0, in alpha with support for the SAMD51 series processor.
– CircuitPython availability for SAMD
– atmel-samd Port for CircuitPython
1 Like
Andreas
December 11, 2018, 9:24pm
3
Thanks for pointing this out to me, @clemens ! If you will get in touch with it, i would like to hear about your experiences.
clemens
December 12, 2018, 10:56am
4
I’m testing some Python snippets for the BeagleBone right now (and my Python knowledge is a beginer level). So it could be interesting to have a single code base for Linux and microcontroller in the future. Perhaps this will by a dialect of Python and not C/C++. But I have too less knowledge to estimate if this is feasible in the near future with the current python frameworks, the target MC and necessary sensors and the existing (Python-)frameworks.
We will – beside the "discrete" Data like temperature, weight, … – also use audio as data source on microcontrollers (!). So my feeling is right now that we can look at and use a broader code base when we count on C/C++. But just a feeling not really evaluated.
From the hardware side the PyCom family is interesting for us and the NB-IoT and LoRa part is interesting. you mentioned the Audio part of NodeMCU as interesting. So we have to see if we can get all in one bag.
Andreas
December 12, 2018, 12:12pm
5
A small correction here: The audio support is implemented by the Espressif Audio Development Framework (ESP-ADF ), see also Audio acquisition with Espressif ESP32 WROOM and WROVER modules .
This functionality probably hasn’t been ported to any of the more highlevel runtime environments like NodeMCU or MicroPython yet. Instead, it is part of the foundational SDK libraries offered by Espressif, where Arduino Core, NodeMCU or MicroPython/CircuitPython are all sitting on top.
State of the onion for CircuitPython
To get up to speed with the current development of MicroPython board support for their most recent family of devices within Adafruit and their CircuitPython fork, we encourage you to read into the following canonical resources.
News
By Scott Shawcroft , the CircuitPython project lead.
Resources
Quotes
Near the end of the year, @ladyada , with @jerryn ’s help, spent time adding library support for the ESP8266 and ESP32 as a WiFi coprocessor. The result was the welcome combination of CircuitPython’s USB with WiFi accessibility. This work highlighted the fact that focusing on a USB workflow streamlines our development process significantly. Without USB, library development is much slower.
So, in 2019 we’re focused on supporting CircuitPython on USB. We’re no longer supporting the ESP8266 as of CircuitPython 4.0.0 and we removed nRF52832 support as well. Doing so frees us up to work on TinyUSB , the USB library shared between the SAMD and nRF52840 support. By sharing this core, we can easily bring USB functionality, like USB MIDI, to all of CircuitPython.
Bottom line
So, we have to adjust our perspective a bit: While we thought Adafruit would make Blinka work on all devices spanning the whole device family from M0/M4 over SBCs like the RaspberryPi and the ESP32, we have to state now that Adafruit CircuitPython is no thing for the ESP32 (yet).
So true.
The list of supported boards is published at CircuitPython Essentials | CircuitPython Essentials | Adafruit Learning System .
Circuit Playground Express, Trinket M0, Gemma M0, ItsyBitsy M0 Express, ItsyBitsy M4 Express, Feather M0 Express, Feather M4 Express, Metro M4 Express, Metro M0 Express, Trellis M4 Express, and Grand Central M4 Express.
Moar CircuitPython ecosystem
The “Blinka” compatibility library
Blinka is a MicroPython compatibility layer intended to provide a CircuitPython-like API for devices which are running CPython or MicroPython.
Many people are now using the CircuitPython libraries on Raspberry Pis thanks to @brennen and @ladyada ’s hard work on Blinka , the CPython compatibility library. Single board computers like the Raspberry Pi are a huge new audience for CircuitPython’s libraries.
In 2019, CircuitPython’s libraries will continue to grow into more areas. Not only will we continue to support new chipsets but we’ll see more high level libraries created to make getting started easier. We saw this with the Circuit Playground Express library and now ServoKit and MotorKit. Later in 2019 we’ll see this apply to displays and BLE as well.
The MU Editor
Adafruit is favouring the MU editor.
Mu is a Python code editor for beginner programmers based on extensive feedback given by teachers and learners.
– https://codewith.mu/
CircuitPython would be all alone without great text editors. Mu has been our goto since last year for its simplicity and focus on the beginner. With it’s 1.0 release last July it brought a simple editor to many beginners. Later in the year Mu released translation support which inspired translations in CircuitPython.
In 2019, we’ll need to push the boundaries of editors to be even easier. For example, there is still room to improve updating CircuitPython and libraries from Mu.
Outlook
One fascinating area for editor experimentation is on touchscreens and over BLE. Touchscreen code editing unlocks a much larger and younger audience for learning to code. Now that we have BLE in CircuitPython, in 2019 we should both consider how BLE can impact the way we write code. Let’s lay the foundation for a wireless workflow so that folks like Josh from EduBlocks and Tim (aka foamyguy, who created an Android python editor ) can iterate on what it means to code on a touchscreen.