Onze oudste dochter Janne houdt enorm veel van het gezelschapsspel Bunny Hop. Dit is een spel waarbij je om de beurt een kaart trekt en dan het aantal vakjes dat daar op staat vooruit mag. Af en toe trek je een wortel en dan mag je aan de wortel draaien en verschijnen er op het speelveld gaten.

Echt allemaal tof, maar waarom die kaartjes? Nu ligt ons veel te klein tafeltje altijd direct vol met stapels kaarten en het zijn er ook nooit genoeg, waardoor je halverwege de stapel nog eens kan omdraaien. Een simpele dobbelsteen had hier waarschijnlijk volstaan. #firstworldproblems.

Maar frustraties zijn er om weg te nemen. Ik had eerder vorige week namelijk een nieuw ontwikkelbord besteld: de M5Core. Dat is een ESP32 (dus WiFi, Bluetooth en 32-bit dualcore processor) gecombineerd met 320x240px touchscreen, enkele knoppen, een speaker en SD-kaartslot voor 30 euro.

Het mooie aan het systeem dat M5Stack heeft uitgedokterd met de M5Core is dat het er sowieso beter uitziet dan dingen die je zelf knutselt, en dat het modulair is. Onderaan kan je namelijk een hoop modules klikken, zoals een batterij, GPS, of de Faces plate, die batterij en extra uitbreidingsplaats combineert. Gewoon klikken en gaan.

M5Core met Faces plate en een draaiknop (rotary encoder) plate

Als je wil knutselen, maar weinig zin hebt om te solderen of met breadboards en duizend draden in de weer te zijn is dit echt wel top. En het is heel redelijk geprijsd: de M5Core kost zoals gezegd 30 euro, de Faces-plate met oplaadbare batterij 11 euro en de draaiknop (met 6 RGB-leds) 10 euro. Geen geld voor wat je krijgt.

Maar dus ... ergens zat al even in mijn achterhoofd dat ik die verdomde kaartjes wou vervangen door iets elektronisch. De M5Core was een ideale aanleiding om er eens aan te beginnen.

Het maken

Eindelijk kwam die scanner hier eens van pas. De vier kaartjes erop gelegd en gescand:

Uitgeknipt in Photoshop en verkleind naar het haarscherpe 320x240:

Vervolgens aan de slag gegaan in de Arduino IDE.  Omdat ik toch die draaiknop al had liggen, en zo'n grote knop makkelijk is voor kinderhandjes gebruikte ik die. De code staat hier:

TimBroddin/m5core-bunny-hop
Bunny hop dice roller. Contribute to TimBroddin/m5core-bunny-hop development by creating an account on GitHub.

Mijn bemerkingen:

  • De SDK die M5Stack gemaakt heeft (en de talloze voorbeelden) is echt top. Dit maakt ontwikkelen op hun kit echt wel heel eenvoudig.
  • De afbeeldingen erin krijgen was weinig gedoe, het scherm kan namelijk rechtstreeks JPEG schrijven en ze hebben een handig script voorzien om jpeg om te zetten naar een arraybuffer. Gezien de 1MB opslagcapaciteit van de ESP32 is dit een lifesaver.
  • Ik had in plaats van de knop natuurlijk ook het touchscreen kunnen gebruiken, maar iets tactiel maakt het toch wel echter.

Het resultaat

Misschien nogal overkill voor zoiets stom, maar het spel Bunny Hop is nu wel 5 keer leuker. Iedereen content!


Er is trouwens al even een opvolger: de M5Core2, die voegt nog onder andere een microfoon en RTC toe, maar is door een ontwerpfout niet op elke module te plaatsen. Mede daardoor is die momenteel slecht leverbaar, maar hij staat wel hoog op m'n wishlist.

Een ander fijn product is de M5Paper, die een ESP32 combineert met een e-ink display en ingebouwde batterij. Zo ééntje is ondertussen (natuurlijk) al onderweg naar hier.