DIY Tabletop game met Stepper Motors (Hyperlaps)
Elk jaar hoor ik van collega’s: “En wat heb of ga je dit jaar maken?” en elk jaar wil ik mijzelf weer wat nieuws leren of een uitdaging geven. Zoals een eigen gemaakte digitale flipperkast. Dit jaar is het geworden: een tabletop game maken die aangedreven wordt door 4 stepper motoren en te spelen is met max. 4 spelers tegelijk.
Dit idee is niet zelf verzonnen en is begonnen met een tutorial van een fransman. Het spel is van origine genaamd “Hyperlaps”. Het ziet er als volgt uit:
Hyperlaps tabletop game tutorial
Meer informatie over het spel is hier te vinden: https://hyperlaps.io/en/. Op deze website wordt een tutorial aangeboden voor het zelf maken van een tabletop game (let op: hiervoor moet worden betaald!) en lijsten van alle benodigde materialen. Daarnaast is een 3D printer ook nodig om verschillende objecten uit te printen, zoals het ronde ding dat de speler bestuurd.
De tutorial is helemaal gevolgd en alles is gemaakt met hier en daar een kleine aanpassing, bijv. een switch i.p.v. een laser aangezien deze toen der tijd aardig aan de prijs waren. De PCB’s (printplaten) heb ik laten maken in China (ook hiervoor is alles aangeleverd).
Joystick's
Eenmaal het tabletop spel project afgerond, ging ik toch kijken wat anders kon. De joystick’s waren niet prettig in de omgang en niet af, en toen wilde de bluetooth niet goed connecten. Daarnaast worden PSP joystick gebruikt die aan de prijzige kan waren/zijn.
Ik had nog een 2lijns LCD scherm liggen en het leek mij wel leuk om een joystick te hebben met zo’n scherm erop. Een eerste prototype was gemaakt op een breadboard en daarna ben ik bezig gegaan in Fusion360 om een omhulsel ervoor te maken.
Alles moest van mij bedraad worden, zodat ik geen bluetooth meer hoefde te gebruiken voor het tabletop spel. Uiteraard zitten hier voor en nadelen aan. Het voordeel voor mij was meer dat ik maar 1 Arduino Mega nodig had om alles aan te sturen en geen 8 losse ESP32’s.
Arduino Mega
Het extra scherm gaf ook meer mogelijkheden dan alleen maar de levens van de speler te tonen. Denk hierbij eens aan een selecteerbare naam, de huidige status van het spel.
Naast dit scherm wilde ik nog een scherm erbij hebben die een globaal overzicht van het spel aangeeft en niet alleen maar 1 speler. Er kwam dus nog een Arduino Mega bij (dit kan ook een UNO zijn bleek later). Deze Mega wordt aangestuurd door de Mega die de spelers aanstuurd. Hieronder is een vereenvoudigd diagram te vinden, welke laat zien hoe de verbindingen tussen elkaar liggen. De onderlinge communicatie tussen de Mega’s wordt serieel gedaan d.m.v. de Rx en Tx uit en ingangen.
Het daadwerkelijke scherm wat gemaakt is ziet er als volgt uit (de inhoud van het TFT scherm was moeilijk op de foto krijgen):
Dit omhulsel is ook in Fusion360 gemaakt en uitgeprint met een 3D printer.
Allerlei losse componenten her en der en losse draden houdt niemand van, het moest mooier en netter om alles goed samen te laten werken. De 4 aparte moederboorden werden samengevoegd tot 1 Arduino mega, maar dan zat je nog met de losse drivers voor de stepper motoren. Hier komt EasyEDA om de hoek kijken, met deze software kan je je eigen printplaten ontwerpen en eventueel direct doorsturen om ze te laten etsen. Een aantal tutorials van youtube verder en we hebben een nieuwe printplaat ontworpen die alles samenvoegd op 1 board.
Printplaat
Deze printplaat is vervolgens ontwikkeld in China en thuis verder in elkaar gezet, de meeste componenten hadden we nog van de vorige moederboards. Een dag solderen verder en we hebben een werkend moederboard die alles aanstuurd vanuit 1 Arduino Mega.
De Mega zit onder de printplaat en kan worden gezien als een shield voor de Mega nu. Een volledig beeld van alle bedrading is als volgt:
Hier komt dan het speelveld bovenop en de draden en elektonica zijn verder niet zichtbaar meer.
Verschil originele tabletop game
Wat is hier dan anders aan dan het originele spel en bied het ook voordelen?
- de prijs wordt gedrukt aangezien hier andere, maar veel goedkopere, componenten gebruikt worden
- Zodra een speler zich aanmeld om mee te spelen, kan hij/zij een naam kiezen uit een lijst die zelf via code op te maken is. Dit vinden de kinderen erg leuk.
- Deze namen worden ook weergegeven op het globale scherm
- Solo spel is nu ook mogelijk. Er zijn momenteel twee varianten, solo of multi, maar meer kan toegevoegd worden in de toekomst (time based bijv).
- Eén code base voor het moderboard ipv 4, welke tevens helemaal opnieuw geschreven is.
- Op het globale scherm zijn de levens te zien van alle spelers die mee doen
Zou je dit ook willen maken of wil je je wel eens verdiepen in alles wat hiervoor extra gemaakt is? Dat kan, de broncode, de modellen, de printplaat is allemaal terug te vinden op Github.
Vincent van Soolen, Developer