Portable Escape Game (part 3): Wat moet de koffer allemaal kunnen?

Oke, de koffer kan nu netjes open en dicht. En zelfs met het scherm gemonteerd in de klep!

Uiteraard heb ik een heel idee in mijn hoofd. Maar het is wel slim om dat af en toe eens op te schrijven.
Wat is er allemaal mogelijk. En wat moet de koffer eigenlijk kunnen. En past dat allemaal in de koffer.
En hoe ga ik dat alles aansturen.

Sensoren

Ik had bij Ali Express een starters kit besteld met een Arduino Uno en daarbij zaten ook wat bruikbare sensoren.
De volgende dingen had ik op mijn lijstje staan wat de koffer zou moeten kunnen:

  • De koffer moet automatisch kunnen openen. En een elektrisch slot hebben.
  • Beeld en geluid weergeven d.m.v. laptopscherm en een oude SoundBlaster als audio versterker.
  • 2 Analoge VU meters.
  • Led matrix module in het midden waarop ik bijv. resterende tijd kan afbeelden of codes.
  • Led ring ook in het midden met RGB leds, Om zo de status van een spel of countdown of klok etc. visueel weer te geven.
  • TFT scherm voor bijv. het weergeven van een QR code of een symbool.
  • RF-ID zodat je ook met pasjes etc. een code kunt invoeren
  • 5 Witte Arcade knoppen omgebouwd met een RGB led waardoor deze met elke kleur kunnen oplichten.
  • 4 Extra arcade knoppen met vaste kleuren
  • 20 Banaanstekker bussen. Zodat je doorverbindingen kunt maken tussen deze 20 bussen.
  • 8 tuimelschakelaars met 3 standen. Zodat je bijvoorbeeld een binair woord kunt instellen.
  • Een ruim LCD display om tekst weer te geven
  • 14 keer een 10 slagen potmeter. Zodat je bijv. een coördinaat kunt laten invoeren. 7 potmeters voor de lengtegraad en 7 potmeters voor de breedtegraad
  • 2 digitale potmeters
  • en dan uiteraard de frontplaat met de display en de 4 knoppen aan de buitenkant van de koffer.
  • XYZ Sensor om de positie van de koffer te bepalen
  • GSM module
  • GPS module
  • WIFI
  • Bluetooth
  • FM
  • En een hele berg RGB leds bij elke knop of gedeelte om zo een indicatie of hint te kunnen geven.

Zoals je ziet kun je met al deze sensoren en mogelijkheden wel een oneindig aantal puzzles verzinnen.
Zelfs geocaches hierin te verwerken.

Aansturing

De aansturing daar was ik grotendeels snel uit. De Raspberry Pi is de hoofdcontroller. Daarop draait het spel.
Ik had een tijdje geleden het idee om op de Pi gebruik te maken van Node Red als besturing. Node red is een visuele programmeertaal. Veel professionele escaperooms gebruiken ook Node Red omdat het zo flexibel is.
Later kwam ik daarop terug. Want 1 van de uitdagingen was dat ik weer wilde programmeren en wel in code en daar weer beter in zou worden en kennis te maken met Python.

De Raspberry Pi communiceert zoveel mogelijk via de I2C bus met de andere controllers.
Zo kan deze steeds de status van alle knoppen laten uitlezen door een andere controller en deze data komt dan binnen.

Hier kwam voor mij iets nieuws om de hoek. De Raspberry Pi heeft 3.3 Volt IO poorten. En een ESP32 heeft dat ook. Maar Arduino werkt met 5 Volt IO poorten.
En zo lang de master 3.3Volt stuurt is er niks aan de  hand. Maar als een ander device Master wordt en data stuurt naar de Pi of naar de ESP dan kan het zijn dat deze defect gaat.

En om er zeker van te zijn dat dat niet gebeurt heb ik een zogenaamde bi-directionele level shifter gebruikt.

Hierboven zie je er 1. Wat deze doet is eigenlijk heel simpel.  Als er op de lage ingang een 1 komt met dus een spanning van 3.3 volt dan zet hij deze om op de hoge kant in een 1 van 5 Volt. En andersom. Als er een 1 op de hoge kant komt dan zet hij deze om naar een 1 van 3.3 Volt.  En zo hou je deze 2 spanningen netjes gescheiden en kan er niks kapot gaan.

Deze level shifter heeft dus 4 lage en 4 hoge aansluitingen en verder moet je dan nog 3.3V, 5 V en Ground aanbieden.
En zoals je misschien kunt zien zijn ze zelfs al voorzien van Pull Up resistors van 10 Kohm.

Tot zover de theorie. Ik heb dit getest en het werkt. Maar tot welke snelheid dit goed gaat weet ik niet.
Op zich heb ik ook geen super snelle datasnelheden nodig. Dus als het zou moeten zou ik hier nog iets aan kunnen tweaken.

Mijn eerste idee was om elk deel van de koffer aan te sturen met een Arduino Nano. En deze allemaal via I2C met de Pi te laten communiceren. Maar in het kader van de flexibiliteit EN vooral het stroomverbruik van zoveel controllers ben ik overgestapt op het gebruik van de Arduino Mega. Deze heeft heel veel analoge en digitale IO poorten waardoor het nu mogelijk is om met 2 van deze controllers alles uit te lezen. En dan blijft de I2C bus ook een heel stuk minder bezet.