Automatisch springen in de T-Rex Game: cactussen detecteren met een Raspberry Pico CicuitPython HID-controller

5 September 2024

Repeterende activiteiten zijn bedoeld om geautomatiseerd te worden. Dit geldt ook voor het indrukken van de Up- en Down-toetsen in de Google T-Rex Game, waarin een dinosaurus over cactussen moet springen. De cactussen verschijnen op willekeurige intervallen en hebben bovendien verschillende breedtes. Opperste concentratie is vereist bij het indrukken van de juiste toetsen. Aangezien de cactussen altijd dezelfde kleur hebben (donkergrijs) en altijd over hetzelfde pad op de dino afkomen, is het echter mogelijk om dit elektronisch te registreren.

Voor het registreren van de voorbijflitsende cactussen gebruik ik een Light Dependent Resistor (LDR). Deze lichtgevoelige weerstand verandert van waarde afhankelijk van de hoeveelheid invallend licht. Bij weinig licht is de weerstand hoog, bij veel licht juist heel laag. In mijn geval gebruik ik een LDR van 20 kΩ. Met behulp van een pull-up-weerstand creëer ik een weerstandsbrug, die een spanningspunt oplevert dat direct afhankelijk is van het invallende licht op de LDR. Dit variabele spanningspunt verbind ik vervolgens met een van de analoge ingangen van de Raspberry Pico.

De Raspberry Pico is een kleine embedded processor waarmee je, met behulp van een HID-bibliotheek, een toetsenbord kunt simuleren. Zo kan ik doen alsof ik achter het toetsenbord zit en een toets indruk. De Raspberry Pico programmeer ik in dit geval met CircuitPython. Dit is een handige en overzichtelijke programmeertaal, waarvoor een breed scala aan bibliotheken beschikbaar is voor het aansluiten van sensoren, actuatoren, drivers en communicatie via UART, Wi-Fi of Bluetooth. Vandaag gebruik ik de seriële poort om de gemeten waarden van de LDR terug te lezen, zodat ik kan vaststellen wat de triggerwaarde is waarmee wordt gedetecteerd dat er een cactus passeert.

Voor mij blijkt deze triggerwaarde 1380 te zijn. Elke keer dat de gemeten waarde boven de 1380 komt, is dat een signaal dat de UP-toets moet worden gesimuleerd. De HID-bibliotheek van CircuitPython is zeer flexibel: naast het simuleren van één toets, kunnen ook meerdere toetsen of complete teksten worden gesimuleerd. In mijn geval is het simuleren van de UP-toets voldoende. Voor de plaatsing van de sensor gebruik ik een magnetische voet en scherm ik de LDR af met een stukje krimpkous om invallend licht te vermijden. Dankzij de magnetische voet kan ik het meetmoment beïnvloeden, en daarnaast heb ik in het algoritme een variabele ingebouwd die aangeeft hoeveel tijd er moet zitten tussen het registreren van de cactus en het indrukken van de toets.

Het uitvoeren van deze T-Rex Dino-trigger is bedoeld voor educatieve doeleinden. Maar het registreren van veranderingen in licht, het meten van een analoge spanning en het geautomatiseerd indrukken van toetsen op basis van een algoritme is breed toepasbaar. In verschillende projecten heb ik deze HID-functie al gebruikt om onderdelen van processen te automatiseren. De T-Rex Dino-trigger biedt een leuke en interessante manier om kennis te maken met embedded processing, sensortechnologie en de interface tussen verschillende apparaten.