The Badge

Let op: de letter 'C' aan het einde is geen revisienummer. Waveshare verkoopt ook een standaard 1.75-model, maar dit is een ander bord:

Kenmerk1.75C1.75
BehuizingCNC-aluminium, badge-vormKaal printplaat
Flash32 MB16 MB
PSRAM8 MB octal8 MB octal
microSDGeenTF-slot
RTCGeenPCF85063

Twee van deze verschillen zijn cruciaal. De partitietabel gaat uit van 32 MB, waarvan het grootste deel wordt gebruikt voor het opnamegedeelte; een bord van 16 MB kan deze build dus niet accepteren. Daarnaast is het ontbreken van een RTC (Real Time Clock) de reden waarom de badge via het netwerk de tijd ophaalt — als je de stroom van een 1.75C onderbreekt, start hij weer op in het jaar 1970.

Algemeen gebruik

Het is een object om te dragen. De batterij gaat ongeveer een dag mee per lading. Het apparaat wekt op naar een klok en is ontworpen om een handvol dingen goed te doen, in plaats van veel dingen matig.

Het project begon als een 'air mouse'. Het aansturen van een pc vanaf een telefoon via RDP vereist constant schakelen tussen aanraakmodus en aanwijzermodus; daarom was er behoefte aan iets dat simpelweg kon aanwijzen. De overige functies zijn toegevoegd op basis van praktisch nut (met uitzondering van voice-assistents en LLM-chats waar veel demo's voor dit bord om draaien).

Een ander belangrijk aspect was het stroomverbruik. Geen van de eigen ESP-IDF voorbeelden van Waveshare activeert CONFIGPMENABLE of 'tickless idle', en het voorbeeld dat de twaalf ongebruikte AXP2101-rails uitschakelt, volgt niet het pad van de BSP. Door het paneel echt uit te schakelen, in combinatie met 'light sleep' en het uitschakelen van die rails, is de stand-by tijd verhoogd van 11,9 uur naar 19,6 uur (dit is een vergelijking binnen deze firmware, niet ten opzichte van de fabrieksinstellingen).

Functionaliteiten

Trackpad / Air Mouse

Via Bluetooth HID. Gebruik het apparaat als een touchpad of wijs ermee naar het scherm — de gyroscoop stuurt de cursor aan. Bij het aansturen van een laptop via het glas bevindt de cursor zich links en het rechtermuismenu rechts. Beiden maken gebruik van dezelfde BLE HID-verbinding: houd het apparaat vast en wijs, of wrijf over het oppervlak als een touchpad.

Excel-toetsen

Een ring van twaalf toetsen die een soft-keyboard van een telefoon niet heeft, via dezelfde HID-verbinding:

  • F1, F2, F4, F5, F12
  • Esc, Tab, Ent, Del
  • Ctrl+; (vandaag)
  • Ctrl+[ (precedents traceren)
  • Ctrl+F4

Zonder de F4-toets is het via RDP vanaf een telefoon niet mogelijk om een formule aan te raken.

Klok

Eén applicatie met vier schermen die verticaal geswiped kunnen worden:

  • Een zeven-segment display.
  • Een timer waarvan de ring sluit naarmate de tijd verstrijkt.
  • Een stopwatch met rondetijden.
  • Een alarm dat door de launcher wordt bewaakt, zodat het afgaat zelfs als de app gesloten is.

Recorder

Neemt op in 16 kHz IMA-ADPCM naar het flashgeheugen, met een capaciteit van ongeveer 52 minuten. Na aansluiting op een pc verschijnt het apparaat als een read-only USB-schijf vol met .WAV-bestanden.

Games

  • Bricks: een ring-paddle, vijf levels en drie ballen.
  • Pinball: op een ronde tafel.
  • Tilt marble maze: een knikkerdoolhof.
  • Bubble wrap.

Fidgets

Een waterplas en een klein zonnestelsel, beide aangestuurd door de accelerometer. De planeten maken gebruik van NASA-kaarten; als deze worden verwijderd, valt het systeem terug op tekeningen in code.

Calculator (Calc)

Omdat een 4×4 raster de hoeken verliest op een rond scherm, staan de cijfers in drie kolommen in het midden en bevinden de operatoren zich aan de flanken.

Instellingen (Settings)

Helderheid, geluid, scherm-uitvertraging, tijdzone, Wi-Fi en Bluetooth-koppeling. Elke rij toont direct de huidige waarde, zodat er niets geopend hoeft te worden alleen om een instelling af te lezen.

Meer informatie en screenshots zijn te vinden op: https://curisama.github.io/The-Badge/

Connectiviteit

Er is geen cloud-integratie. Wi-Fi wordt slechts voor één doel gebruikt: het instellen van de klok wanneer deze niet meer actueel is, plus de initiële scan bij het kiezen van een netwerk (wat direct op de badge gebeurt).

Installatie

Flashen zonder build

Wie alleen de firmware op een bord wil installeren, kan gebruikmaken van een browser-flasher (geen toolchain of installatie vereist): https://curisama.github.io/The-Badge/flash/

Dit vereist Chrome of Edge (WebSerial is niet beschikbaar in Safari of Firefox). Voor andere browsers kunnen de binaries uit een 'release' worden gedownload en geïnstalleerd met esptool; de offsets staan op de pagina vermeld.

Zelf bouwen (Build)

Je hebt ESP-IDF 5.5 nodig. Alle overige afhankelijkheden worden bij de eerste build automatisch opgehaald.

git clone https://github.com/curisama/The-Badge
cd The-Badge
cp main/secrets.example.h main/secrets.h   # optioneel, mag leeg blijven
idf.py build
idf.py -p /dev/ttyACM0 flash               # COMx op Windows

tools/setup.sh voert dezelfde stappen uit en herkent automatisch het besturingssysteem. De eerste build downloadt ongeveer 20 MB aan componenten en duurt enige tijd; daarna is het proces snel.

Let op: De partitietabel is ingesteld op de 32 MB van de 1.75C. Op een standaard 1.75 past de opnamepartitie niet en zal de build niet flashen.

Simulator

De volledige gebruikersinterface kan gebouwd en gedraaid worden op een pc, zonder dat er hardware nodig is. Dit is de manier waarop het grootste deel is geschreven en getest.

python3 sim/build.py
./sim/badge_sim                 # schrijft screenshots naar shots/
PORT=8792 python3 sim/server.py # open daarna http://localhost:8792

De simulator bevat een virtuele IMU en batterij, waardoor tilt-games en stroomgerelateerde schermen ook hier werken.

Opnames

Opnames verlaten het apparaat nooit automatisch. Open de recorder, druk op 'export', en de badge herkent zichzelf als een read-only USB-schijf; de bestanden verschijnen als REC0001.WAV en kunnen met elke mediaspeler worden afgespeeld. Druk op 'done' om terug te keren naar de seriële poortmodus.

Juridische waarschuwing: Het opnemen van andere personen is afhankelijk van de lokale wetgeving. In sommige regio's is toestemming van één partij voldoende; in andere regio's moet elke deelnemer akkoord gaan. Controleer de wetgeving in jouw regio voordat je deze functie gebruikt.

Projectstructuur

  • main/: Firmware.
  • apps/: Eén bestand per applicatie.
  • lcdface.c: De klokwijzerplaat, getekend als vormen.
  • port.h: Alle hardware-specifieke zaken bevinden zich achter dit bestand.
  • port_esp.c: Het gedeelte voor het fysieke bord.
  • sim/: Dezelfde UI voor pc.
  • port_sim.c: Het simulator-gedeelte van port.h.
  • tools/: Asset baking, regressiecontroles, setup.
  • docs/SETUP.md: Installatie van de toolchain per besturingssysteem.

port.h fungeert als de naad. Als een bestand buiten port_esp.c direct met de hardware communiceert, wordt dit beschouwd als een bug.

Controle en Tests

tools/regress.sh leest de bronbestanden en stuurt vervolgens de simulator aan om fouten te vinden die niet via patronen kunnen worden herkend. Dit proces duurt ongeveer een halve minuut en detecteert problemen die in het verleden daadwerkelijk zijn opgetreden. Het is minder een testsuite en meer een 'lijst van littekens'.

Licentie

MIT, zie LICENSE. Componenten van derden staan vermeld in NOTICE; deze worden niet herverdeeld in deze repository.