Bouw een Arduino-aangedreven LEGO Arcade Game Box – DIY Kit met Nano, Batterij, LCD en Meer
Onderdelen en Benodigdheden
| Arduino Nano R3 | 1 |
| TP4056 accu oplaad- en ontlaadcontroller | 1 |
| SparkFun Grote Rode Koepelknop | 4 |
| Adafruit Standaard LCD - 16x2 Wit op Blauw | 1 |
Nodige Tools en Machines
- Soldeerbout (standaard)
Apps en Online Services
- Arduino IDE
Over dit Project
Als je kinderen hebt, sta je waarschijnlijk voor dezelfde problemen als wij met de Lego sets die je voor ze kocht. Ze bouwen ze en spelen ermee, maar na een tijdje veranderen de sets in een enkele berg stenen. De kinderen worden ouder en je weet niet wat je met deze berg moet doen.
We besloten de ongewenste Lego stenen te recyclen en een arcade game te maken.
Deze stapsgewijze handleiding is het resultaat van diverse maanden werk om het spel herhaalbaar en zeer laagkost te maken. Iedereen zou dit project kunnen herhalen! De code is zo geschreven dat hij geen afhankelijkheden heeft en op elk Arduino bord compileert. En natuurlijk zijn de spellen intensief getest door onze kinderen :-)
Hoe verschilt dit spel van vele anderen die eerder gepubliceerd zijn?
Allereerst zitten er 5 spellen ingebouwd:
- Geheugenspel ("Simon-Says"-achtig, vergelijkbaar met Touch Me spel)
- Reactiespel (vergelijkbaar met Whack-a-Mole spel)
- Wedstrijd/Competitie spel (voor 2-4 spelers)
- Melodiespel (druk en speel vrije modus voor peuters en kleuters)
- Oorlogsspel (voor 2-4 volwassenen)
Tweedens, het heeft een geweldig ontwerp (vanuit ons perspectief) en kan eenvoudig herhaald worden.
Derde, het is aardvriendelijk omdat het je toestaat het plastic te recyclen.
Aan het eind van deze handleiding is er ook een stapsgewijze video voor als je het videopreferentieformaat.
Stap 1: Onderdelenlijst
Als je dit project leuk vindt maar geen berg ongewenste Lego stenen hebt, is de makkelijkste optie de Lego Classic 10704 set met 900 stukken te kopen.
Hier is de lijst met items die je nodig hebt om dit project te maken:
- 1kg (2lb) ongewenste Lego stenen (of vergelijkbare stenen van een ander merk zoals Mega Bloks)
- 25 x 25 cm basisplaat voor Lego (of vergelijkbaar van een ander merk). Lego basis heeft 32 x 32 stippen. Als je hem niet hebt - de basis kost ongeveer $3 incl. verzending als je online koopt (zoekterm "32 25 blocks")
- 30 x 30 cm transparant plexiglas stuk (5 of 6mm dik)
- 4 x grote arcade-style 60mm drukknoppen (ik raad rood, groen, blauw, geel aan) (zoekterm voor online winkels: "60mm arcade button"). Dit is het duurste onderdeel van deze build van ongeveer $2 per stuk.
- 2 x momentane drukknop 16mm straal (ik raad Wit en Zwart aan) (zoekterm: "16mm push button")
- Aan/uit wipschakelaar 27x21mm montagegrootte (ik raad transparant rood met 4 pinnen aan) (zoekterm: "rocker switch 16a")
- Arduino Nano
- 1602 LCD display en I2C verbindingsmodule
- 2 x 4ohm 5W luidsprekers, formaat 30 x 70 mm (je kunt elke andere kleine gebruiken maar de CAD tekening is gedaan voor 30x70mm)
- 8 x 6 cm prototype printplaat of een 830 pins breadboard
- 2x 18650 herlaadbare batterijen (kunnen gerecycled worden uit een dode laptopbatterij)
- Dubbele 18650 batterijhouder (zoekterm: "holder 2 x 18650")
- TP4056 oplaadcontroller en ontlaadbeschermer
- 5V opwaartsconverter (kleinste 500mA volstaat)
- Klein gereedschap: wat draden, Mini-USB kabel of zelfgemaakte stekker, Micro-USB socket op PCB breakout, M3 bouten/moeren/ringetjes, 4 x dekselschroeven
- Weerstanden: 6 x 100 ohm, 1 x 1k, 3 x 10k
Stap 2: De Doos Bouwen
Dit is het makkelijkste deel van het project dat je aan je kinderen kunt delegeren.
Neem de Lego 32x32 punt basisplaat en bouw de muren met de gerecyclede onderdelen. Je moet in totaal ongeveer 9 lagen hebben. We kozen lichtgrijs voor de basis zodat de willekeurig gekleurde stenen muren de hoofdfocus zijn.
Geen doos zal hetzelfde zijn. Wees creatief bij het bouwen van de lagen. Recycleer zelfs kleine onderdelen - ze zien er cool uit. Ook onregelmatige vormen zien er leuk uit. Voeg ramen, voorruitjes van auto's, deuren en dozen toe.
De doos moet minstens één volwassen Lego deur hebben. Dit is nodig om de wipschakelaar in de muur te monteren.
Stap 3: De Bovenste Deksel Maken
De bovenste deksel is gemaakt van 5 of 6 mm plexiglas (transparante acrylaatplaat). Download de CAD tekening, zet het op een USB-stick en ga naar de dichtstbijzijnde CNC-zaak - zij zullen het voor je uitfrezen. De CAD tekening bevat ook de wipschakelaar montageplaat (zie foto).
Je moet nog wat afwerking aan de bovenste plaat doen. Doen de randafschuining met schuurpapier en een houten blok. Boor ook de gaten voor de luidsprekers en het 1602 display. Het 1602 display vereist ook een kleine driehoekige uitsparing aan de zijkant van het LCD-venster in de acrylaatplaat (zie foto). Ik deed dit op halve diepte met de draaiapparaat (dremel) en een kleine freesbit.
Stap 4: Alle Componenten aan de Bovenste Deksel Toevoegen
Monteer de 4 grote arcade knoppen, 2 spel wijzigings/selectie knoppen, 2 luidsprekers en een 1602 LCD+I2C module. Alles wordt vastgezet met M3 schroeven + M3 ringetjes en moeren aan de achterkant.
Voordat je de arcade knoppen installeer - verwijder de LED licht behuizingen. Je moet ze een beetje aanpassen - zie volgende stap.
Stap 5: De LED's in de Arcade Knoppen Aanpassen
Deze arcade knoppen zijn ontworpen om op 12V te werken. Ze zullen werken met 5V wat de standaardspanning is voor dit project, maar ze zullen te dim zijn. Dus ik verwijderde de LED sockets uit de arcade knoppen, schuif de LED behuizingen uit en verwijderde de LEDs met weerstanden. De 460ohm weerstanden moeten ontzolderd en vervangen worden door 100ohm. Eenmaal gedaan, monteerde ik alles terug en installeerde de LEDs met behuizingen in de knoppen.
Stap 6: (Optioneel) Bedieningsknop Labels
Je hebt misschien de labels op de 2 bedieningsknoppen opgemerkt. Onze eerste versie van de build had ze niet, maar ik besloot ze toe te voegen toen ik de build een tweede keer herhaalde.
Beide knoppen hebben meerdere functies afhankelijk van de staat van het spel. Witte knop start het geselecteerde spel of bevestigt de selectie tijdens sommige spellen. Zwarte knop wijzigt het geselecteerde spel of verlaat het spel tijdens het spelen.
Om ronde labels te maken heb je een dun aluminium bladje nodig (max 1mm dik), een gatzaag boorbits, getrapte boorbits en letterstempels (zie foto). Eerst knip je de cirkel met de gatzaag. Daarna vergroot je de binnenste diameter met de getrapte boor en dan gebruik je letterstempels om labels te maken. Om letters zichtbaarder te maken, gebruik een permanente zwarte marker (sharpie).
Stap 7: De Breakout Board Maken
Je hebt hier twee opties. Of je gebruikt het breadboard en bedraad de Arduino met kabels door het breadboard, of je installeert een kleine breakout aan de achterkant van het LCD paneel.
Voor de eerste build gebruikten we het breadboard (zie foto). Voor de tweede build besloten we meer tijd te besteden aan het maken van een breakout board. De functionaliteit verandert niet, maar er zijn minder draden en de breakout is verstopt onder het LCD paneel.
Als je kiest voor de breakout board, neem de 8x6 prototype board en knip het zoals op de foto getoond. Groter deel wordt gebruikt voor de breakout en kleiner deel voor het maken van de voeding.
Soldeer de Arduino Nano op deze proto board.
Stap 8: De Verbindingen Bedraden
Bereid enkele kabels voor en bedraad je opstelling, schakelaars en verbindingen naar de Nano volgens het diagram.
Sinds ik begon met Ethernet twisted pair kabels te gebruiken, ben ik mijn hoofdpijn kwijt over waar ik draden voor mijn projecten vandaan haal. Ze zijn verschillende kleuren en zijn multicore dus ze breken niet makkelijk. Het enge ding waar je op moet letten bij werken met hen is dat solderen heel snel moet gaan zodat je de isolatie niet verbrandt.
Let op hoe de 100ohm weerstanden bedraad zijn voor de verbindingen naar de luidsprekers.
Enkele opmerkingen over verbindingen:
- Zwarte/Witte Bedieningsknoppen zijn verbonden van pinnen D2/3 direct naar Ground omdat interne Pull-up weerstanden in de Nano worden gebruikt.
- A4/5 zijn verbonden met de I2C SDA/SCL pinnen. Dit is nodig voor de LCD I2C module.
- Luidsprekers moeten verbonden worden met D10/11 omdat deze pinnen PWM ingeschakeld hebben.
- Het is aan te raden om een kleine koperen lijn als Ground rail toe te voegen voor eenvoudigere verbinding van alle Ground draden (er zullen er ongeveer 5 zijn).
Stap 9: De Knoppen Bedraden
Alle Arcade Knoppen zijn verbonden met een enkele pin A1 via een serie weerstanden. A1 is ingesteld als Interne Analog Pull-up. Dit is een van die weinig bekende features van Arduino die ons hielp om het aantal draden naar de knoppen te besparen.
De opstelling is als volgt: van A1 naar eerste knop door 1k weerstand. Van knop1 naar knop2 door 10k. Van knop2 naar knop3 door 10k en van knop3 naar knop4 door 10k. Elke knop in "dicht" staat kortsluit naar de Ground. Aangezien er al Ground op elke knop zit voor de LED's, is de tweede pin van elke schakelaar verbonden met de ground van de LED. Bekijk het diagram om de bedrading te begrijpen.
Op dit moment, het insteken van een Mini-USB kabel in de Arduino Nano zou je in staat moeten stellen het spel te spelen na het uploaden van de sketch. Alles wat je nodig hebt is een voeding om het spel draagbaar te maken.
Stap 10: De Batterijen Installeren
Ik gebruikte twee gerecyclede 18650 cellen uit dode laptopbatterijen. Dit zijn lagere capaciteitscellen (rond 600mAh) die ik niet wilde gebruiken voor hogere belasting toepassingen. Het apparaat verbruikt niet zoveel stroom dus dit zou voldoende moeten zijn om het spel dagenlang te laten draaien.
De batterijen worden geïnstalleerd in een dubbele 18650 batterijhouder en er is een connector voor eenvoudige bevestiging aan de voeding.
Stap 11: De USB Socket Extender Installeren
Het spel moet kunnen opladen en firmware upgraden zonder demontage. Dus ik boorde een van de stenen uit om de Micro-USB connector te verstoppen.
Om de USB van de stenenmuur naar de Arduino Nano te verlengen, nam ik een Mini-USB kabel en knipte het USB-A einde (de grote USB connector) af en strippte de draden. In mijn geval waren rood/zwart stroom en wit/groen D+/- verbindingen.
D+/- moeten op de Micro-USB breakout gesoldeerd worden. De 5V en ground (rood/zwart) moeten door de voeding gaan.
Waarom werd de Micro-USB breakout gekozen als de Nano Mini-USB gebruikt? Simpelweg omdat Micro-USB overal in onze huishoudens is - het wordt gebruikt om telefoons en andere apparaten op te laden. Dus je kunt het spel opladen en de firmware upgraden met je telefoonkabel :-)
Stap 12: De Voeding Maken
Ik nam de kleinere prototype board en soldeerde er direct de TP4056 batterij oploader en beschermingsmodule op en ook de 5V booster.
Input naar TP4056 gaat van de Micro-USB socket. Het batterijkabeltje is bevestigd aan TP4056 pinnen gemarkeerd als B+/-. Pinnen gemarkeerd als OUT+/- gaan naar de wipschakelaar. Van de wipschakelaar gaan de +/- verbindingen naar de 5V booster module en van de booster output worden de rood/zwart draden van de gestripte USB kabel aangesloten.
Bekijk het diagram om de bedrading te begrijpen.
Stap 13: De Micro USB Breakout Epoxeren
Ik gebruikte wat epoxy om de Micro-USB breakout in de Lego steen te fixeren. Na uitharden zal de socket steviger zijn dan degene in mobiele telefoons, dus de kinderen kunnen het spel opladen en het zal niet breken.
Ik raad aan om quick-cure epoxy te gebruiken voor dit deel. Als je het niet hebt, voeg dan iets meer hardener toe aan het hars en laat het even zitten.
Stap 14: De Wipschakelaar Installeren, De Voedingsharness Aansluiten
Deze schakelaar is massief. Hij is ontworpen voor 250V netspanning. Maar ik gebruikte toch dit model omdat het er geweldig uitziet en perfect past in een standaard Lego City deur. Dus ik stak de schakelaar in de montageplaat en fixerde de plaat aan de stenenmuur met de 2 schroeven (muren waren voorgeborduurd).
Ook de harness kon nu eindelijk geïnstalleerd worden evenals de Micro-USB breakout die in de Lego steen geepoxideerd was. Let op hoe enkele extra stenen gebruikt werden om de componenten aan de basis te bevestigen.
Stap 15: Het Deksel Sluiten
Steek de Mini-USB kabel in de Arduino Nano die aan de bovenste deksel vastgezet is en sluit het deksel.
Ik boorde 4 gaten in de muren en gebruikte 4 schroeven om de top aan de doos te fixeren.
Stap 16: De Code
De eerste versie van het spel is door mij geschreven, gevolgd door 4 nieuwe versies van mijn vriend Alex die 4 extra spellen toevoegde en de code tot perfectie opschoonde. We gebruikten ook het werk van Reyboz voor de geluiden - het geluidsniveau dat met deze code geproduceerd wordt is verbazingwekkend vergeleken met wat standaard met de Tone bibliotheek van Arduino komt.
Zoals vermeld, is de code maandenlang geoptimaliseerd na uitgebreide QA tests door de kinderen en momenteel hebben we versie 4 naar GitHub geüpload.
Meest recente versie van Broncode: https://github.com/LenkaDesign/Arduino-Arcade-Lego-Games-Box
Je hoeft alleen de 1602 I2C LCD bibliotheek te installeren (beschikbaar in de Arduino IDE bibliotheekbeheer) en dan onze code uploaden.
Eerst upload je de button-calibration.ino en noteer op een papier de waarden die elke Arcade Knop produceert. Dit script wist ook de EEPROM zodat topscores gereset worden.
Daarna wijzig je in Game-Settings.h de waarden van de gekalibreerde knoppen en upload je de hoofdbestand Lego-Games-Box.ino en je kunt beginnen met spelen (mits je alles volgens het schema hierboven aangesloten hebt).
Let op: als je dit spel voor kinderen maakt, verwijder dan in Game-settings.h de laatste entry uit String GameTitle[] = {"Memory Game", "Reaction Game", "Tournament Game", "Melody Game", "Nuclear War Game"}; Deze laatste entry heeft regels waarbij elke speler vijanden selecteert en zou te vijandig kunnen zijn voor kinderen.
Stap 17: Gedetailleerde Hoe-te Video
Als je het makkelijker vindt om de video te kijken in plaats van instructies te lezen, hier is de videoversie van deze build.
Stap 18: Spelregels
Momenteel zijn er 5 spellen geïmplementeerd. Als je meer ideeën hebt voor spellen die met deze box gemaakt kunnen worden - laat het ons weten in de reacties. Ik ga kort elk spel uitlegen met de regels en hoe te spelen.
Draai de wipschakelaar aan de kant om de Lego Arcade Games Box aan te zetten. Alle spellen worden vergezeld door geluiden uit het nostalgische Mario spel. Bij opstart moet je de opstartmelodie van het Mario spel horen.
Eenmaal gestart, zie je op het LCD display welk spel geselecteerd is. Om het spel te wijzigen, druk op de zwarte knop.
Als je besloten hebt welk spel je wilt spelen, druk gewoon op de witte knop om te starten.
Als je het spel dat al draait wilt verlaten - druk op de zwarte knop.
Bij opstart kun je het geluid uitschakelen (nachtmodus) door op de rode knop te drukken.
Geheugenspel ("Simon-Says"-achtig, vergelijkbaar met Touch Me spel)
De regels zijn bekend en simpel. Het spel toont je een reeks noten/lichten en je moet het herhalen. Elke keer wordt er één extra toon/licht aan de reeks toegevoegd. Hoe langer je overleeft, hoe beter je geheugen is. Het is uitstekend voor het trainen van het korte-termijngeheugen van kinderen en volwassenen.
Reactiespel (vergelijkbaar met Whack-a-Mole spel)
Je moet snel genoeg zijn om elke knop die oplicht te raken. Hoe langer je speelt, hoe sneller de knoppen oplichten. Dit is geweldig voor het trainen van de reactiesnelheid van kinderen en volwassenen.
Wedstrijd/Competitie Spel (voor 2-4 spelers)
Je krijgt 5 rondes. Iedereen moet zijn knop echt snel indrukken na het startsignaal (Munt melodie uit Mario). Wie de knop als eerste indrukt wint de ronde. Het aantal overwinningen wordt aan het einde van 5 rondes berekend en de winnaar wordt aangekondigd.
Melodiespel (Druk en Speel vrije modus voor peuters en kleuters)
Deze is uitstekend voor peuters - het speelt wisselende toonreeksen als je een knop ingedrukt houdt. Na initiële tests met kinderen realiseerden we ons dat onze kleinste van 1 jaar echt wilde spelen maar niet begreep HOE. De regels van dit spel zijn - GEEN REGELS. Je kunt elke knop indrukken en het zal geluiden produceren.
Oorlogsspel (voor 2-4 volwassenen)
Mijn vriend Alex, die de opvolgende versies van deze games box programmeerde, bedacht het idee voor dit spel tijdens de Trump/Kim crisis over wie de grootste nucleaire knop had. De regels vereisen een aparte video voor uitleg (je kunt hem hier en hier vinden) maar in een notendop: je selecteert het aantal spelers aan het begin en tijdens elke ronde selecteert iedereen zijn vijand. Eenmaal iedereen zijn vijand geselecteerd heeft, beginnen de raketen te vliegen. Degene die als vijand geselecteerd is, heeft een paar momenten om de knop te raken om de intersectie rakete af te vuren en zijn/haar land te redden. De rondes gaan door tot er maar één land overblijft.
Stap 19: Eindresultaat
We zijn 3 vrienden die de tijd namen om het spel voor onze kinderen te bouwen. We hopen echt dat je het spel zoveel zult leuk vinden dat je je eigen versie bouwt met deze instructies. Als je vragen of suggesties hebt - post ze dan in de reacties.
Code
Github
https://github.com/LenkaDesign/Arduino-Arcade-Lego-Games-Box
Aangepaste Onderdelen en Behuizingen
CAD bestand: top-template2_Ku502q1zeA.dxf
Schema's
Schema's beschikbaar als afbeeldingen.
Productieproces
- De Sapdoos Revolutie: Geschiedenis, Ontwerp en Milieueffect
- Pinball: Geschiedenis, Ontwerp en Productie van een Klassiek Arcade Spel
- DIY Wall-E Geïnspireerde Raspberry Pi CD-Doos Robot
- Bouw een Squid Game-thema Interactieve Pop met Arduino UNO – DIY Project
- Giftduino: De Ultieme Arduino Cadeau-set voor Hobbyisten en Docenten
- Bluetooth-gecontroleerde Arduino Spybot bouwen
- FlickMote: Gebarengecontroleerde IR-afstandsbediening voor Slimme Huizen
- DIY Arduino TV-B-Gone: Universele TV-uit-schakelaar
- Bouw een Aangepaste LED Hoofdklok met Alarm – Zichtbaar vanaf 12 Meter
- Bouw een Geautomatiseerde LEGO Star Wars Kanon met Arduino Uno
- Compact Weerstation: Arduino Nano & ESP8266 Met BMP280 Barometrische Sensor & OLED/Nokia LCD Display