WHY2025 badge upgrades (+ MeshCore)

WHY2025 ligt alweer 4 maanden achter ons. Prima tijdstip om eens dingen te gaan doen met de badge.

Dit topic is vooral om bij te houden wat ik gedaan heb (en wat ik nog wil doen).

Waarom? (WHY, hihi)

Ik was half aanwezig bij de meshcore workshops bij eth0 en op de space. Ik dacht eerst niet geïnteresseerd te zijn omdat ik nog meer hardware zou moeten aanschaffen, maar iemand (ik weet niet meer wie, maar bedankt!) vertelde me dat de badge in principe ok meshcore kan draaien.

Wat dan?

MeshCore

  • Board definitie (die door iemand anders al deels gemaakt was) verder uitgewerkt
    • Hij noemt zichzelf geen Xiao C6 meer
  • Naast BLE ook varianten voor USB (extern serieel) en intern serieel toegevoegd
    • (in de Android/iOS/web app is dit ‘experimenteel’ maar met meshcore-cli werkt dit gewoon net zo goed als BLE, het is tenslotte hetzelfde protocol bovenop een eenvoudiger transportlaagje)

BadgeVMS

Voor context: de badge heeft 2 ESP32’s, een P4 als main processor (met scherm en toetsenbord), en een C6 als coprocessor (met Wifi en LoRa).

  • De P4 kan nu starten zonder te crashen als de C6 niet de wifi firmware draait
  • De settings app kan nu dealen met de afwezigheid van wifi
  • De settings app kan nu instelbaar de C6 flashen met meshcore of wifi firmware
  • MeshCore en Micropython zijn nu submodules, en worden automatisch gebouwd en geflasht mee met de rest
  • Apps in de launcher kunnen nu dealen met interpreters en argumenten
  • UART driver gemaakt zodat een BadgeVMS app met de C6 kan praten
    • Erg eenvoudig en incompleet, het heeft enkel een read() en write(), alle configuratie is hardcode. uiteraard TODO voor later, maar het werkt alvast voor de MeshCore firmware
  • TODO: drivers voor GPIO (voor de vibrator en ledjes)

MicroPython

De badge draait een MicroPython port die anders is dan de upstream ESP32 port. Het is geen bare metal firmware maar een BadgeVMS app. Het komt met een terminal emulator en een REPL, maar tot voor kort was dat eigenlijk alles.

  • De compositor module uitbreiden zodat de framebuffer ook echt werkt
  • Keyboard event handling toegevoegd
  • UART module toegevoegd
    • niet API-compatible met de machine.UART die je wellicht kent, dit is ook een TODO voor later
  • Upgrade van upstream MicroPython 1.25 naar 1.27
    • Het badge MicroPython repo is gemaakt met git subtree ipv git submodule. Dat was ff wennen maar werkte prima.
  • TODO: uitzoeken waarom lokale imports niet werken. Heeft te maken met de syntax voor filesystem paden in de vorm APPS:[meshcore_ui]app.py terwijl de code slashes verwacht
  • TODO: een module voor GPIO (voor de vibrator en ledjes)

Hardware

Al het bovenstaande is voornamelijk yakshaving om een MeshCore UI app te bouwen in MicroPython.

Doelen:

Stretch goals:

  • Compatible met andere hardware:
    • Tanmatsu
    • T-deck
    • …suggesties?

Ik was gisteren bij TkkrLab om de batterijtjes op te halen (en ook gewoon omdat gezellig) en renze was bezig met lora support in de Espressif hosted firmware, voor de C6 van de Tanmatsu. Goeie kans dat ik dat werk kan hergebruiken en dan hebben we lora en wifi tegelijk. Tegelijk kan Renze dan wellicht mijn MeshCore UI werk hergebruiken, en dan heb je dezelfde MeshCore UI op de Tanmatsu/Konsool en WHY2025 badge.

7 Likes

En dat is nog aan het lukken ook :slight_smile:

(zie video daar)

3 Likes

Heel cool. Leuk om mee te lezen, want hoe meer opties voor bruikbare meshtastic op de badge hoe beter :heart: