February 2019 meetup

Matt Trentini presented the news roundup, Damien George presented his latest work-in-progress feature: native modules in MicroPython. Peter van der Burg discussed two of his projects: his Home Status Monitor and an accurate power meter.

News roundup

Matt’s New Hardware

What arrived in Matt’s letterbox this month?

Sipeed MAIX

  • One of the first affordable RISC-V solutions
    • And it’s a cracker: 2x 400MHz, plenty of RAM and flash, AI module, camera
    • See last month for details
  • MaixPy
    • MicroPython port for this chipset
  • Excellent build instructions from the Robot Zero One blog
  • MickMake published a video that gives a good introduction to the hardware
  • MaixPy v0.1 released last week with GPIO, UART, SPI, PWM, Timer, LCD, Camera, MiscoSD (FAT32), Flash (SPIFFS), ESP8285 for wifi. Image convolution acceleration, basic OpenMV support (QRCodes, bar codes, find blobs)
  • MaixPy v0.2 coming with AVI player, recorder, AI model loader, I2S play, record, FFT, AES, SHA256
  • Boris (of LoBo fame) has also released a K210 port integrating some of his ESP32 port features

wESP32

  • Discussed in previous meetups
  • ESP32 + POE Ethernet
  • Separate programmer
  • Header to breakout GPIO
  • Have created a good web site with excellent information
  • MicroPython is the default software stack!
  • Thanks Patrick!

M5Stack Peripherals

  • Needed just two…but they’re so cheap and cool!
    • Joystick
    • Fingerprint sensor
    • Color Sensor
    • IR temp sensor
    • Time of flight laser rangefinder
    • RGB LED hex pad and strip
    • Proto boards, I2C hubs, connectors…

FOSDEM 2019: PyBoard D

The PyBoard D made an appearance at FOSDEM!

ESP32

  • Potential features
    • I2S Implementation by Mike Teachman
    • WPS implementation - PR4464
      • How WPS works
        • Press a button on a router to allow it to respond to a single scan
        • Put device in scan
        • Wifi details are sent to the (one) scanning device
        • Connection is established
        • Router stops
    • RMT
      • Matt has started an implementation
    • Pulse counting
      • Requested, not for the first time
      • Anyone interested in implementing it? Good first module!
    • ESP NOW
      • PR4115
      • Seems to have stalled but it’s so close!
    • BLE
  • Mike Rankin released a new ESP32-PICO-D4 board powered by a coin cell
  • TTGO continues to churn out devices
    • T-Camera Plus
    • 2MP camera, 8MB SPIRAM, 1.3” 240x240 display, microphone, BME280, battery charge
    • Normal or fisheye lens
    • AU$35
    • Another model with a PIR sensor…

Adafruit

  • Scott Shawcroft (@tannewt) recorded a CircuitPython Deep Dive
    • Covers memory use in CircuitPython (and MicroPython)
    • Buckle-up, it’s over 3 hours!
    • Really nice use of Graphviz to visualise memory
  • PyPortal
    • First batch released yesterday
      • Sold out rapidly!
    • SAMD51, ESP32 for wifi, 3.2” 320x240 display, resistive touch
    • Speaker, light sensor, temp sensor, microSD, 8MB flash
    • US$55

LoRa/NW-IoT

  • Ronoth, small group of devs doing LoRa work
    • First shot of the S76S STM32/LoRa dev board
      • Documentation coming too
      • Working with the dev to see if MicroPython is possible
        • 192KB flash/20KB RAM is tight
    • LoStik is available too (USB LoRa device)
  • SnapOnAir Mini
    • Latest in a line of LoRa ‘Walkie Talkie’ text communicators by pwav robot
    • RFM95, 0.96” OLED, currently Arduino-based
    • 25 Euro (~A$40)
      • Note: Requires ESP32 dev board and a few passives
  • DMtech DEV01
    • ESP32 WROVER with NB-IoT modem (Quectel BC66)
    • Still in development, currently gauging commercial interest
    • Announced on forum
  • The Things Network announced new Hardware
    • Outdoor Gateway (US$399)
      • Weather-proof
      • 3G/4G backhaul, onboard GPS
    • Indoor Gateway (US$69)
      • 8-channel, wifi for backhaul
    • Generic Node (US$25)
      • Microchip SAM R34
        • Cortex M0+, 6x6mm, 256KB flash, 40KB RAM
        • Integrated LoRa

General

  • ucryptoauthlib

    • Pure MicroPython
    • Lightweight driver for Microchip Crypto Authentication
    • Supports ATECC508A and ATECC608A
    • ECDH support (Elliptic Curve Diffie-Hellman)
  • Async IO in Python
    • In depth article about Asyncio in Python
    • By the Real Python folks who have a ton of great content
      • In general, they have excellent Python articles
    • Although written for Python it provides a solid basis for MicroPython
      • And much of it is directly usable
  • More W600 Cortex M3+ wifi boards announced
  • MicroPython on Sonoff
    • There have been a few guides but this is an excellent addition
  • Ivy5661: Potential new target for MicroPython?
    • Forum post
    • ARM Cortex M4 @ 416MHz, 802.11ac, Bluetooth 5, 963KB RAM (400KB available)
    • Linaro 96boards format - expansion socket with UART, I2C, SPI, I2S, GPIO
    • But limited documentation
    • Seeed Studio are selling the Ivy5661 for US$35
  • Calliope
    • Board designed for education (‘improved micro:bit’)
    • NRF51822 (Cortex M0, 6KB RAM, 256KB flash)
    • Speakers & Mic, motor controller, USB, compass, motion, acceleration, temperature and brightness sensor, LED array
    • Most examples use Open Roberta, a block-based programming language
  • trigBoard - Ultra Low Power ESP8266 IoT Platform
    • Triggers on a GPIO change, pushes a notification over wifi
    • 1uA quiescent
    • Documentation
    • US$20
  • micropython-iot
    • New MicroPython library by Peter Hinch and Kevin Köck
    • Full-duplex communication link between wifi boards and a server
    • Temporary wifi or server outages are tolerated without message loss
    • Tested with ESP8266 and Pyboard D
  • Electronut released Papyr an nRF52840 board with e-paper
    • Raytac MDBT50 module
    • 1.54” 200x200 e-paper
    • Runs on a coin cell
    • Application to ‘draw’ on epaper from mobile app
    • ~US$40 (US$62 with case and programmer)
  • Mu Editor now supports MicroPython
    • On at least the ESP32/ESP8266
  • Display library news
    • HyperDisplay announced by Sparkfun
      • C-library providing graphics primitives, basic window management, buffering, some drivers
    • GuiLite
      • Small, lightweight embedded GUI, 5K LOC
    • M5ez
      • Arduino library targeting the M5Stack system
      • Designed around M5Stack hardware, including an ingenious three-button keyboard
    • M5Flow
      • Visually design an interface for the M5Stack
      • Officially supported
      • Blockly currently supported but MicroPython looks close
      • Nice to get started
    • Adafruit’s display.io
      • (Feature next month)
    • LittlevGL

Conference news

Interesting Projects

  • OutoftheBOTS’ 5x5x5 Rubik’s cube solver
    • 7x steppers, 3D printed gears and grippers, custom ESP32 WROVER-based board
    • Recently optimisations dropped the solving time from >14 mins to <5
    • Forum, Latest video
  • CastVolumeKnob
    • Wireless volume knob to control a Chromecast device
      • Visual feedback with a NeoPixel ring
      • Neat 3D print
    • ESP8266, MicroPython, ATTiny85 to keep power down in sleep
  • ESP32 WiPhone
    • Still in development
    • Calls using wifi/SIP
    • Even designing molds themselves and documenting how to do so
  • Custom firmware for cheap fitness trackers
    • Aaron Christophel gives you all the tools to repurpose that $30 nRF52 fitness tracker
      • 512KB flash, 64KB RAM, 0.96” IPS SPI display, motion sensor, pulse sensor, battery charger, touch integrated
      • MicroPython will happily run on this device…

Wrap up

ARM Cortex-M0 is 10 years old (that model doesn’t run MicroPython…yet!)

Native Modules in MicroPython

Damien George presented his work-in-progress solution to loading native code from MicroPython modules. Currently all native code has to be compiled in to the MicroPython firmware binary which can make it harder to integrate high-performance code. This solution will allow modules containing native code and/or MicroPython code (and Viper, Thumb and XTensa code…) to be compiled into mpy files that can be loaded at runtime.

Potentially this is a huge feature that would mean modules can be built and packaged with native and Python components! Even MicroPython itself could possibly be trimmed down since modules can now be efficiently packaged outside of the firmware binary.

Very exciting to us MicroPythonistas!

Although it’s difficult to make out the contents of the screen, hopefully the details are less important than following along for the general gist of the feature. We’ll try to record the screen directly in the future.

Take a look at PR 4535 for details.

Two Projects by Peter

Peter van der Burg presented two of his MicroPython-powered projects: 1) a Home Status Monitor and 2) a Power Meter.

It was a really interesting talk covering MicroPython on the ESP8266, querying data from the real world, heaters in fridges, electronic design with sensitive comparators and how family life can be streamlined with some pragmatic solutions!

Written on February 27, 2019