donderdag 20 juli 2017

Tetris spelen op een 'Touch LED Tafel'

We passen een bestaand project aan, het zgn Arbalet project - Touch LED table - Retrogaming and ambiant light.

 Benodigdheden:

  •  een pc of een raspberry pi met voeding, scherm, muis en toetsenbord
  • een arduino leonardo
  • tafeltje met houten blad, houten plank
  • individueel adresseerbare RGB 150 LED Strip 5V met 150 ledjes (WS2812B) + voeding
  •  karton en matte plastiek


Het arbalet project gebruikt een laser cutter om het frame boven de ledjes te maken maar je kan ook gewoon karton, schaar en cuttermes gebruiken. In plaats van glas of plexiglas kunnen we oude matte halfdoorzichtige schoolmapjes gebruiken.

Voor de optionele "touch keys" maakt arbalet gebruik van een MPR121 en 6 stuks geleidende ITO plastiek. We hebben dit materiaal maar bij mij werkte dit niet consistent genoeg om er Tetris mee te spelen. Een alternatief dat wel werkte was een makey makey.



Het arbalet project gebruikt geen raspberry pi maar een gewone pc om het spel op te starten. Dit moet je na elk afgelopen game opnieuw doen. We verkiezen een raspberry pi: die kan je in principe automatisch met een bepaald programma opstarten en herstarten.

Stappenplan:
  • arduino installeren op pc of raspberry pi
  • met een arduino leren werken
  • leren LED strips programmeren met behulp van de NeoPixel arduino bibliotheek (+ die 'bibliotheek' installeren)
  •   de led strips op het tafeltje kleven en aan elkaar solderen - we leren aan de hand van een youtube filmpje een beetje solderen
  • een kartonnen frame knutselen (dit kan zowel vroeger als later in het project)
  • arbalet bibliotheek installeren op pc of raspberry pi
  • arbalet arduino programma ('firmware') uploaden op de arduino leonardo
  • configureren en testen
  • EXTRA: "touch" toevoegen
  • EXTRA: het project automatisch laten starten en herstarten
  • EXTRA: een ander programma dan Tetris programmeren
  • Arduino installeren op pc of raspberry pi en ermee leren werken
Je kan de arduino IDE software downloaden van de officiële website en installeren op je pc.

Voor de raspberry pi werkt dat anders.
Het besturingssysteem van een raspberry pi staat op een sd-kaartje. Download het "raspbian jessie met desktop"-zipbestand van de officiële site: https://www.raspberrypi.org/downloads/raspbian/
Op deze plaats vind je ook de methode om het zipbestand op een sd-kaartje te copiëren.
Raspbian is een versie van Linux speciaal gemaakt voor de hardware van de raspberry pi. Als je nog nooit met linux hebt gewerkt dan kan deze introductie handig zijn.
Om software te installeren en configureren maken we gebruik van een "terminal' waarin we commando's intikken.
Om arduino te installeren is dit eenvoudig: sudo apt-get install arduino
  •  met een arduino leren werken
Als je nog nooit met een arduino gewerkt hebt, kan je best eerst hier leren ledjes programmeren met een arduino uno.
  • LED strips programmeren
LED strips programmeren lijkt op het eerste zicht veel moeilijker te worden want 150 RGB-ledjes: hoeveel arduino-aansluitingen hebben we dan wel niet nodig? Dat valt goed mee. De reden is dat we gebruik kunnen maken van een arduino-bibliotheek('library') die bijna al het werk van ons overneemt. Een bibliotheek specifiek om LEd-strips te programmeren is Adafruit NeoPixel.



Ga naar  https://github.com/adafruit/Adafruit_NeoPixel en download het zip-bestand.
Mogelijk kan je het niet downloaden op een raspberry pi omdat de standaard browser niet meer wordt ondergesteund. Installeer dan Iceweasel (=firefox) in een terminal venster: sudo apt-get install iceweasel

Open de arduino IDE en importeer de bibliotheek: schets > bibliotheek importeren > add library. Je kan het zip-bestand importeren of het zip-bestand uitpakken en dan de map importeren. Mogelijk moet je de map hernoemen en de tekens '-' en '_' verwijderen uit de naam.
Als het gelukt is kan je nu onder schets > Bibliotheek importeren de bibliotheek 'AdafruitNeoPixelmaster' vinden.
Onder bestand > voorbeelden vind je nu ook een map AdafruitNeoPixelmaster met enkele voorbeeld-arduino-sketches.

Een andere voorbeeld-sketch kan je hier vinden: de ledstrip_pin staat op pin 12 en in het voorbeeld is het aantal leds 210. Als je bijvoorbeeld alle 5 led-strips aan elkaar koppelt heb je 150 leds.
Open het  bestand  in de arduino ide en kies: Extra>board>Arduino Leonardo en daarna 'uploaden'.

Je kan enkele led-strips aan elkaar koppelen en verbinden met de arduino leonardo op deze manier:
  • verbind het groene kabeltje van de led-strip met het breadboard, een resistor van 470 Ohm en de arduino pin 12
  • verbind de arduino GND met het breadboard en de - van de capacitor, de - van de power supply en de witte kabel van de ledstrip
  • sluit de rode kabel van de ledstrip aan op het breadboard en de + van de power supply en de + van de capacitor
leds_Wiring-Diagram.png






Bekijk de loop() functie eens en experimenteer een beetje.

  • Knutsel tijd !
Bekijk het filmpje en lees de assembly guide van het Arbalet project.

Wij moeten het stellen zonder laser cutter maar we hebben karton, schaar, cuttermes en soldeergerief.

Bekijk ook eventueel deze soldeer-instructie-video:



  • installeren Arbalet (=ARduino-BAsed LED Table) software op pc of raspberry pi
In deze wiki worden de stappen uit de doeken gedaan om de arbalet SDK te installeren. Ze gaan eigenlijk uit van een unix-omgeving ; de windows-ondersteuning is 'expermenteel'.
Op een raspberry pi betekent dit volgende stappen (in een terminal-venster):
  • sudo apt-get update
  • sudo apt-get install git python2.7 python-setuptools ipython-notebook python-pygame python-numpy python-xlib python-bottle python-opencv python-pyaudio python-dev
  •  pwd (toont waar je bent: /home/pi) 
     mkdir Arbalet && cd Arbalet
     git clone --recursive https://github.com/arbalet-project/arbasdk.git
     git clone https://github.com/arbalet-project/arbapps.git
     git clone https://github.com/arbalet-project/arbadoc.git
     
  • pwd (toont waar je bent: /home/pi/Arbalet) 
    cd arbasdk
    sudo python setup.py install
    cd ../arbapps
    sudo python setup.py install 
    
    
Om de installatie te testen spelen we Tetris:
python -m arbalet.apps.tetris

Het programma start de programeeromgeving en -taal python dat het programma arbalet.apps.tetris afspeelt met paramater m.
Andere spellen of animaties kan je vinden in /home/pi/Arbalet/arbapps/arbalet/apps
De -m betekent 'simulatie'.


  • arbalet arduino programma ('firmware') uploaden op de arduino leonardo
Met de vorige commando's hebben we ook de nodig arduino-bibliotheken geïnstalleerd. Ze staan alleen op de verkeerde plaats, nl. /home/pi/Arbalet/hardware/arduino ipv /home/pi/sketchbook/libraries

We kunnen 3 'symbolisch links maken':
  • ln -s /home/pi/Arbalet/hardware/arduino/arbalet /home/pi/sketchbook/libraries/arbalet
  •  ln -s /home/pi/Arbalet/hardware/arduino/Adafruit_NeoPixel /home/pi/sketchbook/libraries/Adafruit_NeoPixel
  • ln -s /home/pi/Arbalet/hardware/arduino/Adafruit_MPR121 /home/pi/sketchbook/libraries/Adafruit_MPR121
Daarna vinden we wel het programma Arbalink_WS2812B onder Bestand>Voorbeelden>arbalet
We openen het en sluiten onze arduino leonardo aan.
We kiezen Extra>Seriële poort en Extra>Board>Arduino Leonard en dan 'Uploaden'

  •  tetris spelen
Om de installatie te testen spelen we Tetris, dit keer met de TetrisTafel:
python -m arbalet.apps.tetris -w

  • EXTRA: "touch" toevoegen
Door een makey makey  te verbinden op een usb-poort van de raspberry pi (of pc) kan je een zelfgemaakt 'touch' toetsenbord toevoegen.
Hier vind je een quick-start to Makey Makey.

Een ingebouwd alternatief is de MPR121 ' capacitive touch sensor controller' maar ik had daar geen goede resultaten bij.
De MPR121 wordt zo aangesloten op de arduino leonardo :
MPR121 --> arduino leonardo
3,3V              5V
SCL               3 (digitaal)
SDA               2 (digitaal)
ADDR            -
IRQ                -

python -m arbalet.apps.tetris -w -c config150touch.json start een speciale versie met 'touch'

Na aanpassingen in het bestand 
/home/pi/Arbalet/arbasdk/arbalet/config//config150touch.json
moet je steeds een update van de softwaredoen:
cd ~/Arbalet/arbasdk/ && sudo python setup.py install
 
  • EXTRA: het project automatisch laten starten en herstarten
todo

  • EXTRA: een ander programma dan Tetris programmeren 
In deze wiki (helemaal onderaan) kan je leren zelf programma's te schrijven voor deze Arbalet (=ARduino-BAsed LED Table)

Geen opmerkingen:

Een reactie posten