Dokumente, Infos und Links zu meinen Workshops zu den Themen Elektrotechnik,
Arduino, Raspberry Pi, Alternative Controller...
Die Einkaufslisten verlinken zu Amazon, die meisten Komponenten bekommt man aber auch anderswo (und teilweise billiger),
z.B. bei Ebay oder SEGOR in Berlin.
Pimp My Toy (2016)
Girl's Day - Toy Hacking Workshop im Game Science Center Berlin
Ziel: Einbau von Sound- und Lichteffekten in mitgebrachtes Spielzeug oder andere Objekte. Schneller und einfacher Einstieg in die Elektrotechnik, Schaltung und Programmierung von Arduino-Microcontrollern.
Github-Link: https://github.com/finefin/PimpMyToy
Folien (pdf): http://finefin.com/workshops/assets/pdf/PimpMyToy_workshop.pdf
Um einen Arduino mit einem Programm ("Sketch") zu bespielen,
muss zunächst die Arduino-Software installiert werden.
Sind Arduino Nano-Platinen mit CH340-Chipsatz im Einsatz, muss unter Windows und Mac OS X der Chiptreiber installiert werden.
Aktuelle Linux-Distributionen haben den Treiber bereits installiert.
Zur Tonerzeugung wird die NewTone()-Library verwendet, die zur Arduino-Software hinzugefügt werden muss.
Wie man eine Bibliothek hinzufügt, kann man hier nachlesen.
Auf Github liegt das Beispiel-Programm gdaybtn.ino, das mit der Arduino-Software geöffnet werden kann, nachdem das Paket durch Klick auf den grünen Button heruntergeladen wurde.
Das Programm liest den Status eines oder mehrerer Buttons aus, spielt Soundeffekte ab und lässt LEDs blinken - pitches.h, leds.h und sfx.h beinhalten die entsprechenden Programmteile für Sounds und LEDs.
Wir können unsere Komponenten mit den gelisteten Pins verbinden um unterschiedliche Effekte zu erzielen.
So können wir das Spielzeug erstmal umbauen und "programmieren", ohne uns um den eigentlichen Code kümmern zu müssen.
Standard-Pin-Belegung:
Pin | Funktion |
---|---|
D2 | Button 1 |
D3 | Button 2 |
D4 | Button 3 |
D5 | Button 4 |
D6 | Button 5 |
D8 | Sound 1 |
D9 | Sound 2 |
D10 | Sound 3 |
D11 | Sound 4 |
D12 | Sound 5 |
A1 | LED 1 |
A2 | LED 2 |
A3 | LED 3 |
A4 | LED 4 |
Button 1 spielt Sound auf Lautsprecher 1, Button 2 spielt Sound auf Lautsprecher 2 usw. Die LEDs blinken immer alle (aber unterschiedlich schnell) mit jedem Sound. Wenn die Schaltung steht, kann auch der Code angepasst werden.
Um die Platinen mit Strom zu versorgen, können USB-Hubs und -Kabel verwendet werden. Muss das Objekt mobil sein, können auch Powerbanks eingesetzt werden.
Einkaufsliste:
Arduino Nano (Klon) - https://www.amazon.de/dp/B0755XYBG4/
Jumper-Kabel - https://www.amazon.de/dp/B073X7P6N2/
Mini-Lautsprecher - https://www.amazon.de/dp/B00Y0J1B6Y/
Arcade-Buttons - https://www.amazon.de/dp/B071WP4ZW4/
LEDs - https://www.amazon.de/dp/B073B4WQHD/
Alternative Controller (2017)
Tincon / A MAZE. Alternative Controller Workshop 2017
Ziel: Eingabe-Geräte für Computer-Spiele mit Arduinos selber bauen.
Github-Link: https://github.com/finefin/TinconWorkshop2017
Für dieses Projekt geeignet sind Arduinos mit 32U4-Chip (z.B. Pro Micro, Leonardo) - denn diese melden sich am PC als Tastatur an, wenn sie per USB angeschlossen werden. Mit relativ wenigen Zeilen Code können Eingaben am Arduino (z.B. durch Sensoren) als Tastatur-Eingabe weitergereicht werden.
Hardware
Passende Arduino-Boards sind im Internet erhältlich - z.B. via Ebay, hier wird einfach nach "32U4" gesucht. Manche Angebote kommen aus China und es kann einige Wochen dauern, bis von hier geliefert wird. Lieferungen aus Deutschland sind etwas teurer, dafür wird schnell geliefert. Sensoren können einzeln oder "gebrauchsfertig" als Module gekauft werden. Zum Einstieg in die Sensoren-Welt empfiehlt sich ein Sensor-Kit.
Sensoren werden mit Jumper-Kabeln mit dem Arduino verbunden.
Hier eine Beispiel-Schaltung für die meisten Sensor-Module:
Für einfache Buttons kann die Pullup-Schaltung verwendet werden:
Und so ein Accelerometer-Modul könnte eine Maus ersetzen:
Um das Accelerometer-Modul zu nutzen, wird eine weitere Bibliothek benötigt -
hier ein (englisches) Tutorial zu der Komponente.
Software
Zuerst wird die Entwicklungsumgebung Arduino IDE installiert. Das Arduino-Board wird per USB mit dem PC verbunden und in der IDE unter Werkzeuge/Board/Arduino Leonardo ausgewählt. TC_SensorInput.ino wird in der IDE geöffnet und über einen Klick auf den Pfeil oben links ("Hochladen") auf den Arduino übertragen.
Auf manchen Betriebssystemen mit manchen Leonardo-Boards funktioniert das meistens einfach so - sollte das Hochladen aber nicht funktionieren, liegt es wahrscheinlich an dem Tastatur-Modus, mit dem das Board gerade am PC registriert ist. Um das Board in den Übertragungsmodus zu versetzen, wird der Reset-Button auf dem Leonardo gedrückt, sobald der Uplaod startet.
Um den Code an die eigene Schaltung anzupassen, können diese Zeilen verändert werden:
int signalPlayer1 = 8; // der Pin für Player 1
int signalPlayer2 = 9; // der Pin für Player 2
const char keyPlayer1 = 'q'; // die "Taste", die Player 1 drückt
const char keyPlayer2 = 'p'; // die "Taste", die Player 2 drückt
boolean analogInput = false; // sollen analoge Signale verarbeitet werden: analogInput = true;
boolean pullupPinMode = true; // wurde eine Pullup-Button-Schaltung gebaut: pullupPinMode = true;
Ist alles verkabelt und programmiert, können Computerspiele und Anwendungen mit dem neuen Gerät gesteuert werden. Man muss nur darauf achten, dass der Controller die richtigen Tastatur-Befehle an den Computer schickt.
Was leider nicht funktioniert: Sondertasten wie SHIFT oder CTRL sind sogenannte "Modifizierer" (für Großbuchstaben, Sonderzeichen etc.) und können nicht als eigenständige Inputs an den PC gesendet werden.
Einkaufsliste:
Arduino Pro Micro - https://www.amazon.de/dp/B01D0OI90U/
Jumper-Kabel - https://www.amazon.de/dp/B073X7P6N2/
Arcade-Buttons - https://www.amazon.de/dp/B071WP4ZW4/
Sensor-Modul-Kit - https://www.amazon.de/dp/B01M30ZWQR/
Raspi Quiz (2017)
Raspberry Pi Workshop @ StartApp Tagung im Medienzentrum München des JFF
Ziel: Mit Raspberry Pi eine Quiz-Show entwickeln.
Github-Link: https://github.com/finefin/RasPiWorkshop2017
Folien (pdf): http://finefin.com/workshops/assets/pdf/rpi_slides.pdf
In der Game-Jam-Phase dieses Workshops haben wir eine Quiz-Show entwickelt. Jede Gruppe hat eine Teil-Aufgabe übernommen und am Ende konnten wir unser kleines Quiz vor Publikum veranstalten.
Einrichtung des Raspberry Pi
Es gibt viele Linux-Distributionen, die für unterschiedliche Aufgaben genutzt werden können (z.B. RasPi als Spielkonsole, Mediacenter oder Wetterstation) - wir benutzen aber das Standardsystem Raspbian. Dieses enthält alles, was wir brauchen: einen Desktop und Tools zum Entwickeln von Software. Um das Betriebssystem zu installieren, laden wir den Installations-Wizard NOOBS von der Raspberry Pi-Webseite herunter.
Das Ganze ist sehr einfach: Paket entpacken, auf die SD-Karte kopieren, RasPi mit SD-Karte starten und den Anweisungen auf dem Bildschirm folgen. Eine detaillierte Anleitung für NOOBS gibt's hier.
Für Eltern ist die Distribution KANO interessant - dieses Betriebssystem ist speziell für Kinder ausgelegt und vermittelt Programmierkenntnisse auf spielerische Art und Weise. Für die Arbeit an Schulen oder in Workshops empfehle ich aber das schlichtere und weniger verspielte Raspbian.
Entwickeln mit Scratch 2.0
Scratch ist eine Entwicklungsumgebung speziell für Programmier-Anfänger. Es lassen sich damit Programme mithilfe von fertigen Bausteinen zusammensetzen und ausführen. Für den Raspberry Pi gibt es ein Addon für die Nutzung der GPIO-Leiste, das wir unter dem Punkt "Mehr Blöcke"/"Erweiterung hinzufügen" aktivieren, um neue Bauteile zu erhalten.
Physical Computing: Eingabegeräte, Buttons, Sensoren, Aktoren
USB-Peripherie
Da der Raspberry Pi über mehrere USB-Anschlüsse verfügt, kann man dort nahezu jede PC-Peripherie anschließen: Maus, Tastatur, Gamepad, mit nachinstallierbaren Treibern sogar Webcams und Drucker. Da der MakeyMakey sich einfach als Tastatur anmeldet, kann man auch damit direkt loslegen.
GPIO (General Purpose Input Output)
Um einen Sensor, z.B. einen Button, auszulesen benötigen wir zwei Dinge: ein stabiles Signal und eine Schnittstelle zu unserem Programm.
Die Schnittstelle ist die GPIO-Leiste unseres RasPis:
ACHTUNG: es darf niemals eine Spannung höher als 3,3 Volt an einen der GPIO-Pins angelegt werden, da sonst der SoC beschädigt wird! Das ist besonders wichtig zu wissen, weil zwei der Pins 5 Volt liefern. Es gibt also Pins, mit denen sich der RasPi selbst zerstören kann!
Der eigentliche Knackpunkt ist aber das "stabile Signal" - um ein solches zu erhalten, reicht es nicht aus, einen "Stromkreis" zu schließen oder zu öffnen. Da auf einer Microcontroller-Platine und in ihrer Umgebung etliche - natürliche und selbst verursachte - elektromagnetische Felder (EMF) auf den GPIO einwirken, ist eine besondere Schaltung nötig: der Pullup-Widerstand. Ohne ihn hängt immer einer der Zustände (gedrückt, nicht gedrückt) "in der Luft". Dann fungiert der Pin als eine Art Antenne, die EMF-Schwingungen der näheren Umgebung an den GPIO-Pin leitet. Dadurch entstehen Fluktuationen an der Signal-Leitung, die wir (in diesem Fall) nicht haben wollen. Ein Pullup-Widerstand "zieht" das Signal auf eine hohe Spannung, entsprechend können wir an dem Pin ein HIGH auslesen, solange der Button NICHT gedrückt wurde. Drückt man den Button, wird der Pin direkt mit Ground verbunden: am Pin wird 0 Volt (LOW) ausgelesen.
Verbindung zwischen 3,3V und Pin mit einem 10k Ohm-Widerstand, Button zwischen Pin und Ground:
Netterweise hat der RasPi einen internen Pullup-Widerstand. Für kleinere Experimente und Prototypen kann dieser ruhig genutzt werden, um "schnell mal eben" einen Button an einen RasPi zu bauen.
Buttons zwischen Pin und Ground:
Für Projekte, die dauerhaft in Betrieb und möglichst wartungsfrei sein sollen, empfehle ich aber, für jeden Button externe Pullup-Schaltungen zu löten. Zusätzlich sollte eine Schutzdiode zwischen Pin und 3,3V eingesetzt werden, die schädliche Spannungen vom Pin wegführen. Falls es hierzu Fragen geben sollte, kann ich das Thema gerne noch ausweiten ;)
Sensor-Module
Viele Sensoren gibt es als fertige Module auf kleinen Platinen, die man direkt mit Microcontrollern verbinden kann, ohne sich über deren Stromversorgung oder nötige Schutzschaltungen Gedanken machen zu müssen. Neben Buttons gibt es Licht-, Hitze- und Lage-Sensoren. Es gibt Luftdruck-, Abstand- und Magnetfeld-Sensoren. Die meisten davon benötigen nur eine Verbindung mit der Stromversorgung (+/-) und eine Datenleitung zu einem Pin. Viele Sensoren funktionieren auch sowohl mit 3,3-Volt- als auch mit 5-Volt-Logik und können daher mit RasPis und Arduinos eingesetzt werden. Beim Kauf sollte man aber trotzdem darauf achten, dass die Module kompatibel mit dem Raspberry Pi sind.
Aktoren
Auch für den Output gibt es viel zu entdecken: LEDs, Motoren/Servos, Sound. Mit Relais-Modulen lassen sich andere Geräte an- und ausschalten, Motoren mit einer Unwucht vibrieren wie ein Handy, mit Infrarot-LEDs kann man den Sender im Fernseher ändern oder ein Lautsprecher piepst wie R2D2. Auch Aktoren gibt es bereits fertig verdrahtet auf kleinen Platinen.
Einkaufsliste:
(kommt bald...)