Sascha Vasylenko, Klasse 10d
Abb. 1: Joy-Pi-Koffer
Der Joy-Pi ist ein von der Firma Joy-IT hergestellter "Experimentier-Koffer": ein Raspberry Pi, der mit verschiedenen Sensoren und sonstigen Geräten verbunden ist, um die Umgebung zu beeinflussen.
Diese Sensoren, die an den Raspberry Pi durch die sogenannte GPIO-Pins verbunden sind, kann man in seiner Lieblings-Programmiersprache so programmieren, dass sie interessante Sachen machen können. Meine Auswahl der Sprache war Processing. Processing erleichtert das Programmieren von Grafiken.
Abb. 2: Joy-Pi von oben
Der Joy-Pi stellt die verschiedenste Module zur Verfügung. Unten werden alle genannt.
Abb. 3: Joy-Pi Module
Nummer | Modul | ggf. GPIO-Nr. |
---|---|---|
1 | Raspberry Pi | |
2 | LED Anzeige: zeigt Status der Pins an | |
3 | Breadboard (um elektronische Geräte einzubauen) | |
4 | LCD Bildschirm | SDA1: 2, SCL1: 3 |
5 | Stromversorgung | |
6 | LED Matrix | 7 |
7 | 7 Segment Anzeige | SDA1: 2, SCL1: 3 |
8 | Vibrationsmotor | 27 |
9 | Lichtsensor | SDA1: 2, SCL1: 3 |
10 | Buzzer (erzeugt Geräusche) | 12 |
11 | Schallsensor | 24 |
12 | Bewegungssensor | 23 |
13 | Ultraschallabstandsensor | Echo: 12, TRIG: 16 |
14/15 | Servo - Schnittstellen | Servo1: 26, Servo2: 25 |
16 | Schrittmotor - Schnittstelle | STEP1: 5, STEP2: 6, STEP3: 13, STEP4: 19 |
17 | Neigungssensor | 22 |
18 | Infrarotsensor | 20 |
19 | Berührungssensor | 17 |
20 | Temperatur- & Luftfeuchtigkeitssensor | 7 |
21 | Relais | 21 |
22 | Tasten-Matrix | Reihe1: 27, R2: 22, R3: 5, R4: 6, Spalte1: 25, S2: 26, S3: 19, S4: 13 |
23 | Unabhängige Tasten | Oben: 26, Unten: 13, Links: 25, Rechts: 19 |
24 | RFID-Modul | 8 |
25 | Schalter |
Daten aus Joy-Pi Manual - 2. Details
Da die GPIO-Pins nicht ausreichen für all die Module, werden Schalter benutzt, um zwischen den Modulen zu wechseln (siehe Nummer 25).
Jetzt wollen wir aber was mit den Modulen machen. Dafür benutzen wir hier Processing.
Zunächst installieren wir Processing für den Raspberry Pi. Es existieren schon neuere Versionen, aber wir holen uns hier Version 3.5.3 von pi.processing.org. Nachdem wir es entpacken und "install.sh" ausführen, sind wir bereit mit den Programmieren anzufangen.
Als Beispielsaufgabe wollen wir den Buzzer anmachen, wenn die obere Taste betätigt wird.
Der erster Schritt ist es, die Library von GPIO zu importieren, sodass Processing was mit den GPIO-Pins anfangen kann. Dafür schreiben wir:
import processing.io.*;
Der nächster Schritt ist es, die benötigte Pins für sich zu beansprechen und festzustellen, ob wir einen Wert davon ablesen wollen (Input) oder Befehle aussenden wollen (Output).
Wenn wir den Buzzer (Nummer 10) und die obere Taste (Nummer 23) benutzen wollen, dann brauchen wir ihre GPIO-Nummer. Diese lauten jeweils GPIO12 und GPIO26. Den Buzzer senden wir den Befehl, laut zu werden, also ist dessen Pin ein Output-Pin. Wir wollen einen Wert von der Taste ablesen, d.h. die Taste ist unser Input. In Processing formulieren wir das so:
GPIO.pinMode(12, GPIO.OUTPUT);
GPIO.pinMode(26, GPIO.INPUT_PULLUP);
Jetzt sollen wir den Wert von der Taste ablesen, um zu schauen, ob es betätigt ist oder nicht.
Die GPIO-Pins haben zwei mögliche Zustände: HIGH und LOW. Unsere Taste ist im Zustand HIGH bei Leerbefehl und LOW bei Betätigung. In Processing können wir die Taste mit diesen Code abfragen:
GPIO.digitalRead(26)
Den Zustand können wir gleich mit "if" überprüfen lassen:
if (GPIO.digitalRead(26) == GPIO.LOW) {}
Der letzter Schritt ist es, den Buzzer bei Betätigung anzumachen, und sonst aus.
Den Buzzer erteilen wir Befehle, indem wir sein GPIO-Pin zu HIGH oder LOW stellen. Dabei ist HIGH der eingeschalteter Zustand und LOW selbstverständlich der ausgeschalteter Zustand. Wir setzen den Zustand mithilfe von:
GPIO.digitalWrite(12, GPIO.HIGH);
Nach all diesen Schritten sieht das Programm jetzt so aus:
Abb. 4: Programm
Wenn wir das jetzt ausführen, können wir beobachten, dass der Buzzer nur genau dann läutet, wenn man die Taste drückt. Uns so haben wir unser erstes Programm mit Verwendung der GPIO-Pins geschrieben.
Zum Schluss lässt sich sagen, dass Joy-Pi ein gut ausgestattetes Kit für das Programmieren mit einfachen Sensoren und Modulen ist. Ich finde aber, dass es ein zu großer Schritt ist, in Processing mit GPIO-Pins zu arbeiten. Stattdessen würde ich Scratch als eine Einführung dazu mehr sinnvoll finden. Processing hat dann natürlich den Vorteil, dass man komplexere Programme schreiben kann als in Scratch.
Wenn keine Quellen zu einen Bild angegeben sind, dann ist es ein eigenes Bild.