The Squaticle Simulator

by ilyas ben haddou in Circuits > Arduino

78 Views, 1 Favorites, 0 Comments

The Squaticle Simulator

Schermafbeelding 2024-03-25 153554.png
Schermafbeelding 2024-03-25 153732.png

Voor dit project heb ik gewerkt aan het maken van een interactieve portable squad challenger. Met de portable squad challenger is het de bedoeling om zo veel en zo snel mogelijk squads te doen. De Squaticly Symulator houdt bij hoeveel squads je hebt gedaan. Doordat de Squaticly Symulator portable is gemaakt kan je er overal mee naartoe nemen en gebruik van maken. Ook is het een ideaal apparaat om je vrienden te challengen wie het hoogste score kan halen met het aantal squads.

Mijn inspiratie voor dit concept komt voort uit 1 van mijn favoriete games, Final Fantasy 7. In de game heb je een minigame waarbij je squads moet spelen door verschillende knoppen op een versnellend ritme in te drukken. Het is daarbij de bedoeling dat je een zo hoog mogelijke score moet halen zonder het ritme te verliezen.

Graag wilde ik een manier verzinnen om deze minigame die erg geliefd is bij Final Fantasy 7 fans naar de realiteit te halen. Hierdoor kan je daadwerkelijk zelf ook dit op een manier spelen waarbij je feedback krijgt over hoe hoog je score is en of je snel genoeg bent.



Supplies

elektronische componenten:

  • Arduino Uno
  •  LCD Display 16*2 characters met I2C Backpack (witte tekst op blauw backlight)
  •  SHARP IR afstandssensor 10cm tot 80cm
  • switch knop
  • weerstand
  • breadboard printplaat
  • Draadbruggen set
  • powerbank

materialen voor behuizing:

  •  houten planken
  •  scharnieren
  •  schroeven

Gereedschap:

  •  hout zaag
  • hout lijm
  • seconde lijm
  •  Soldeerbout met soldeer
  •  Striptang
  • veil


Onderdelen Testen

Schermafbeelding 2024-03-25 160723.png
Schermafbeelding 2024-03-25 160914.png
Schermafbeelding 2024-03-25 161143.png
Test afstand sensor

Nadat ik voor mijn concept de bestelde componenten heb ontvangen, ben ik ze eerst gaan testen hoe ik ze werkend moet krijgen en hoe de verbindingen moeten.

Ik ben daarvoor eerst begonnen met het aansluiten van de LCD scherm. Om dit te doen moet je bij het aansluiten een library geïnstalleerd hebben op de Arduino zelf. Voor dit heb ik gebruik gemaakt van een library die beschikbaar stond op Github.(https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library

Om de library te installeren moet je in de Arduino IDE bij library's de zip map toevoegen voor de library van de LCD scherm. 

Nadat ik dit heb gedaan, kon ik aan de slag met het testen van tekst op het LCD scherm. Voor dit heb ik gebruik gemaakt van de “Hello World” scetsch voorbeelden uit de library. Ik heb toen de “Hello World” tekst veranderd naar “Squad Counter: 0” om te testen hoe de tekst er uit zou zien op het scherm.

Arduino LCD I2C - Tutorial with Arduino Uno

Na het testen van de LCD scherm ben ik aan de slag gegaan met het testen van de SHARP IR afstandssensor. Ik heb heb hier voor de afstandssensor aangesloten aan de arduino om te testen of ik een respons kreeg voor de hoeveelheid cm’s dat er gemeten wordt.

Om dit te doen heb ik online informatie gebruikt om te kijken hoe de afstand sensor aangesloten moet worden en welke code je moet schrijven voor.

Nu ik de onderdelen van het LCD scherm en de afstandssensoor heb aangesloten en heb getest, weet ik nu hoe ze werken en hoe je er mee moet programmeren. Nu kan ik vervolgens aan de slag gaan met het programmeren van de verschillende systemen om mijn concept werkend te krijgen.

Code Schrijven

Test functie Squad meter
Aan/uit knop

Functie squad meter:

Voor het maken van de systemen ben ik eerst begonnen met het maken van een systeem dat ervoor zorgt dat als de sensor een obstakel meet binnen een bepaalde afstand, er op de squad counter +1 bij komt. Dit deel van het systeem is een essentiële functie voor mijn concept. Zonder dit als basis voor mijn code zou de Arduino niet functioneren zoals het bedoelt is.

Voor het programmeren van deze functie heb ik getest wat de ideale afstand is van afstandsmeter om bewegingen te meten, en of welke snelheid de meeting gedaan moet worden.

Na vele keren testen heb ik de start van de sensormeting gezet op 70cm vanaf de grond en heb ik de meetingssnelheid gezet op 250 millisecondes. Hierdoor heb ik het mogelijk gemaakt dat tijdens het squatten de sensor een beweging ongeveer 80% ziet en feedback geeft het het LCD scherm. Het is nog niet perfect maar wel een goede stap om mee te beginnen. Dit zou later in het proces nog verder verbeterd kunnen worden.


timer / voortgangsbalk:

Na het maken van het systeem voor het opstellen van het aantal squads ben ik aan de slag gegaan met het maken van een functie die een visuele timer weergeeft op de tweede rij van het LCD scherm. Het idee van deze timer is dat door middel van een oplopende balk laat zien hoeveel tijd je nog hebt om een squad te doen. Wanneer je een squad doet binnen de timer, wordt de timer gereset en start die opnieuw met tellen. Wanneer je de squad niet op tijd hebt gedaan, dan stopt de timer en de fouten en wordt alles gereset naar 0 waardoor je opnieuw moet beginnen.

Om dit te maken ben ik begonnen met het maken van een oplopende de timer op de tweede rij van het LCD scherm. Voor dit heb ik de timer zo gemaakt dat er elke 1000 milliseconde 1 balk wordt gekleurd. Dit gebeurt 17 keer achter elkaar tot het vol is en dan stopt de timer.

Omdat dit nog in de testfase is, wordt elke seconde een blokje ingekleurd op de timer balk. Het idee is dat deze timer veel sneller moet lopen dan helemaal werkt.

Vervolgens ben ik aan het systeem toegevoegd dat als er binnen de timer iets op de afstandssensor wordt gemeten, de timer balk opnieuw begint vanaf 0.

Nadat ik dit heb gemaakt in de code werkte grotendeels de arduino zoals het bedoeld was. Er wordt gemeten hoeveel squads iemand heeft, hierbij wordt de timer elke keer gereset als je een squad heb gedaan. En als je te laat bent, stopt de counter en begint de counter opnieuw met tellen vanaf 0.

Echter was er nog een aantal problemen die ik nog had op het moment. Zo functioneerde de tweede rij op het scherm nog niet helemaal. Er ontstaat veel hapering op het scherm en de karakters vallen weg. Ook gebeurt het nog dat er soms te veel squads worden geteld of helemaal niet. Om deze laatste bugs op te lossen heb ik om hulp gevraagd van de docent Verdie om te kijken hoe dit opgelost moet worden.


Bugs oplossen:

Voor het oplossen van de bugs zijn we eerst gaan kijken voor het timerbalk op de 2de rij op de LCD scherm. Hierbij hadden we ontdekt dat ik er in de code elke frame de tijdbalk op het scherm wordt gecleared. Dat heeft ervoor gezorgd dat het begon te haperen.


Aan en uit knop:

Voordat ik wou beginnen met het bouwen en in elkaar zetten van de Arduino ontwerp, kwam ik met de realisatie dat ik graag ook nog een aan en uit knop zou willen. Hierdoor kan je gemakkelijker het apparaat gebruiken en het pauzeren als je stapt met squats.

Omdat ik dit op 1 van de laatste dagen maak voor de deadline, heb ik geen tijd meer gehad om een goed plan te maken hiervoor en de juiste spullen te hebben. Daarom heb ik de optie genomen om voor de aan/uit knop een standaard switch te gebruiken.

Voor het maken van de aan/uit knop heb ik gebruik gemaakt van een simpele tutorial voor het maken van lamp knopje om mijn basis te maken. Arduino Turorial: How to use a button with Arduino Uno

Nadat ik de onderdelen op het breadboard heb toegevoegd door middel van de video ben ik aan de slag gegaan met het implementeren van de functie om het werk te krijgen. zo heb ik door middel van een boolean een in statement gemaakt dat kijkt wat de status is van de knop, en afhankelijk van de status wordt de afstandssensor en LCD actief en inactief. Dit zorgt ervoor dat als je de knop ingedrukt het scherm stopt en de afstand sensor pauzeert.

Er was echter 1 bug die ik kreeg na het implementeren van dit systeem. Het LCD scherm kreeg door middel van deze functionaliteit minder helderheid op het scherm. Dit zorgde ervoor dat je niet veel meer zag op het scherm. Gelukkig heb ik dit na lang onderzoeken kunnen oplossen door aan het begin van de loop een lijn aan code te schrijven die zegt dat de backlight van de LCD op 255 moet. (255 is het maximale van de helderheid op het scherm).


Solderen

powerbank.png
Indeling breadboard.png
printplaat gesoldeerd achterkant.png
printplaat gesoldeerd voorkant.png
draadbruk klaar maken voor solderen.png
fotogalerij solderen knopje.png

Voor het bevestigen en solderen van de Arduino heb ik gebruik gemaakt van mijn eigen soldeer spullen die ik thuis had liggen. Zo heb ik de indeling van mijn breadboard overgeplaatst naar mijn printplaat en ben ik begonnen met dat 1 voor 1 te solderen. Ik heb hiervoor een tekening gebruikt van mijn elektronische schema.

Voor mijn arduino project heb ik als voeding gebruik gemaakt van een powerbank die via USB wordt aangesloten op de arduino. Deze manier was voor mij de beste manier zodat ik het apparaat helemaal portable kon krijgen. Daarnaast kon ik gebruik maken van een powerbank, waarbij de duur van de batterij erg lang mee ging. Hierdoor hoef ik me geen zorgen te maken over batterijniveau.


Het solderen zelf ging erg goed, binnen een korte tijd was alles goed aan elkaar gesoldeerd en heb ik het ook getest of het allemaal werkte. 

1 ding waar ik wel voor heb moeten improviseren was hoe ik de bevestiging ging doen voor het solderen van de aan/uit button switch. omdat ik gebruik maak van een switch die bedoeld is voor op een breadboard, en op een specifieke plek moet komen in mijn verpakking, heb ik een speciale manier toegepast.

Voor het solderen heb ik draadbruggen gebruikt en die eerst gesoldeerd aan het printplaatje. Vervolgens heb ik de andere kant van de draadbruk open geknipt met een striptang zodat ik bij de koperdraden kwam. Daar heb ik toen eerst de draden zelf met elkaar gesoldeerd zodat 1 stevige draad kreeg. Vervolgens heb ik de eindpunt van deze draad gesoldeerd aan de kleine eindpunten van de button switch om verbinding te kunnen krijgen. Dit heb ik 4x gedaan zodat alle eindpunten van de button switch in een stroomcircuit komen te staan.

Door dit te doen kan ik gebruik maken van de button switch en deze plaatste op de gewenste plek waar ik wil. Zelf vond ik dit een erg goede manier om alsnog gebruik te kunnen maken van een button switch zonder een specifieke te hoeven kopen.

Zelf heb ik toen ook nog getest of het werkte en ik was erg blij om te zien dat het solderen erg succesvol was.

Bouwen/bevestigen

formaat doosje hout.png
layout doosje binneninA.png
layout vast bevesticht.png
deksel foto's.png
deksel achterkant foto's.png

Bij het proces van het bouwen heb ik besloten om de behuizing zelf te maken en dat zelf te zagen. Ik heb deze keuze gemaakt omdat ik op het einde van mijn proces niet veel tijd meer heb gehad om gebruik te maken van de laser cutter op school en daarvoor een cursus te volgen.

Ik ben begonnen met het zagen van planken op de maten die het best passen voor mijn behuizing. graag wilde ik een compacte behuizing hebben waar ik alle spullen in kon stoppen zoals het scherm en een powerbank voor de voeding. De behuizing die ik heb gemaakt is een rechthoekig doosje met een deksel aan de bovenkant. Voor binnen in het doosje heb ik een indeling gemaakt met waar alle verschillende onderdelen moeten komen. Zo heb ik de powerbank links onderin geplaatst, de printplaat rechts onder met een verhoging zodat ik die daarop kan vastschroeven, en rechts boven kom de Arduino zelf die ook op een verhoging komt te staan. Door het maken van de verhogingen is het erg gemakkelijk geworden om de onderdelen daarop vast te schroeven.

Graag wil ik een deksel maken aan de bovenkant van het doosje met scharnieren zodat ik makkelijk de powerbank kan verwisselen en vervangen. Ook kan ik hierdoor nog altijd verbeteringen in meerdere onderdelen toevoegen, mocht ik dat willen in de toekomst. Bij het maken van de deksel heb ik een aantal open plekken gemaakt zodat ik daar een aantal van mijn onderdelen doorheen kan laten gaan. Nu is het mogelijk om alleen het schermpje te zien en gebruik te maken van het aan/uit knopje. Ook moest er een plekje komen waar de afstandssensor doorheen kon gaan zodat de lengte tot het hoofd van de gebruiker gemeten kan worden.

Aan de achterkant van de deksel heb ik kleine verhogingen gelijmd zodat daarop schroeven geplaatst kunnen worden. Hierdoor kunnen het LCD scherm en de afstandssensor vast gemonteerd worden. Voor het vastmaken van de knop heb ik een klein plankje vastgelijmd aan de achterkant van het knopje, met daarbij een klein stukje dat uitstak zodat ik daar kan vastmaken aan de deksel zelf. De deksel zelf is doormiddel van de scharnieren met schroeven vastgemaakt. Hiervoor is er nog een extra laag houd aan de achterkant van de deksel geplaatst om meer ruimte te geven voor een schroeven.

Code

Hier is mijn code terug te vinden voor hoe ik het geschreven en de werking er van.

Reflectie/conclusie

Demo test squaticly simulator 1
Demo test closeup squaticly simulator 1

Zelf ben ik erg verrast en blij met mijn ervaring voor het werken aan mijn ittt project. In het begin wist ik eerst nog niet goed wat voor soort concept ik uit wilde werken en of dat leuk en goed genoeg zou zijn. Daarom was ik erg enthousiast toen ik op het idee kwam om een interactieve squad couter te maken. Het leuke aan dit idee was dat je het zelf ook daadwerkelijk kan doen en spelen. Het uitdagen van andere mensen om de hoogste score te halen vond ik een erg interessante uitwerking van dit concept.

Ook was ik erg verrast dat ik het bij het programmeren van de Arduino grotendeels erg goed ging. In het begin moest ik nog wel een beetje onder de knie krijgen hoe het allemaal werkte. Maar na de hand van veel er mee bezig zijn en werken met fysieke spullen, ging het steeds beter en kreeg ik een duidelijker idee over wat ik schreef. Zelf blijf ik het nog erg lastig te vinden om te programmeren maar vond ik dit een leuke manier om er meer ervaring mee te krijgen.

Voor het maken van de behuizing had ik graag gebruik willen maken van de laser cutter. Helaas had ik daar de tijd niet voor om dat te regelen, en heb ik in plaats daarvan zelf handmatig alle hout zelf moeten zagen en de constructie opbouwen en in elkaar zetten. Als ik voor een volgend keer weer aan een project als deze zou werken, zal ik als feedback voor mezelf eerder inplannen hoe ik mijn stappen wil verdelen en welke voorbereidingen ik daarvoor moet doen.

Het eindresultaat is een mooi werkende concept geworden die precies diet als wat ik ik had gedacht in het begin van het proces. Wanneer je voor het apperaat staat en squad, wordt er perfect bij gehouden hoeveel squads je al hebt gedaan dan krijg je een mooie timer te zien die elke keer wordt gereset als je een squad in de timer hebt gehaald.