Mobiles Wifi-Traubenpiano mit Odroid-C1

Heute gibt es etwas ganz Besonderes: Eine ökologisch abbaubare, weil essbare Midi-Tastatur aus Trauben mit Wireless-Lan-Anschluss. Kein Scherz.
Technik:

Odroid-C1  mit Realtime Preemtive Kernel (Echzeit-Betriebssystem) incl. Midisoftware (ca. 40 Euro)
Vier MPR121 Touchcontroller von Freescale bzw. Breakout-Bord von Adafruit  (je ca. 9,50 Euro)
Ein WLAN-Stick (6-7 Euro)
Ein Paket Trauben (vom Türken: lecker!)
Viele Kabel.

UPDATE: Die aktuell überarbeitete Version des Traubenpianos mit HiFi-Shield -> https://blog.georgmill.de/2015/09/07/hifi-graped-piano-with-odroid-c1/

und die aktuelle DeLuxe Version für die Maker Faire Berlin 2015

Funktionsweise:
Die Hardware ->
Die 4 MPR121 Breakout-Boards von Adafruit werden über den I2C-Bus mit nur 2 Kabeln für den Bus und 2 Kabeln für die Stromversorgung an den Odroid-C1 angeschlossen. Wir haben so insgesamt 4 x 12 Anschlüsse für alles mögliche. Eine einfache Berührung des Anschlusses mit dem Finger reicht, um ein Midisignal zu erzeugen. Im Video habe ich zu Testzwecken einfach unsere Trauben in der Küche zur Miditastatur umfunktioniert. Um es optisch und für die Bespielbarkeit übersichtlich zu halten, habe ich nur ca. die Hälfte aller verfügbaren Anschlüsse mit Trauben bestückt (ich hatte auch nicht so grossen Hunger).

Die Software ->
Gesteuert wird das Ganze über ein simples Python-Script, das die Verarbeitung der Sensor-Signale in Midi-Steuerbefehle übernimmt. Zu diesem Zweck werden zunächst die erforderlichen Python Bibliotheken von der Adafruit-Seite  bzw. git clone https://github.com/adafruit/Adafruit_Python_MPR121.git installiert. Um den Sensoren Midi-tauglichkeit zu verleihen, laden wir die python-rtmidi Bibliothek in der Version 0.5b1 oder größer  herunter und kompilieren sie. Diese Bibliothek ist ein Wrapper für RTMidi

Mit diesen Bibliotheken lassen sich sehr einfach in Python Midi Ein- und Ausgaben realisieren. Auch Midi-Ports können damit konfiguriert werden.
Als Midi-Software kommen die Linux Standards jack mit qjackctrl zum einfachen konfigurieren und das Handling der Midi I/Os zum Zuge. Für die Sounderzeugung nutzen wir Zynaddsubfx.
Der Kernel (das Betriebssystem) für den Odroid-C1 ist ein von mir gepatchter Kernel  in der Version 3.10 (alt, aber bezahlt 🙂
Die Patches stammen von https://www.kernel.org/pub/linux/kernel/projects/rt/ und  https://github.com/emlid/linux-rt-odroid-c1 und wurden auf den original Odroid-C1 Kernel von Hardkernel.com  angewendet.

Auf den Desktop des Odroid-C1 greifen wir mit vnc  zu. Wie das relativ einfach geht, steht hier.

Das Ergebnis sieht dann so aus (ohne Worte, aber mit viel Sound):

Update:

Rob Roy, Editor-in-Chief of ODROID Magazine, wrote a comment for my „traubenpiano“:

I would love to be able to bite into a banana and see a disco light show playing in my living room.

So, your wish is my command 😉  …and seriously: DO NOT PLAY WITH MAINS. IT COULD KILL YOU!  Spiele NICHT mit Starkstrom. Es  könnte Dein Leben kosten! This video is fully TRUE! It’s NOT A FAKE!

Of course, this could be improved: Instead of the stepper motor a DC motor could spin faster. You could connect up to 48 banana eaters so the light wouldn’t stop. If it’s dark, the lights would reflect much better.

Touch Midi Sensor aus Aluminiumfolie und Kupferdraht

In diesem Beitrag werden wir uns mal anschauen, wie man mit etwas Draht, einem Widerstand, Kupferband und Aluminiumfolie ein Midi-Instrument baut. Das Schöne an diesem Projekt sind die geringen Baukosten, die fast gegen 0 gehen und die Flexibilität des Sensors.

Um dieses Projekt zu realisieren habe ich eine Arduino-Bibliothek (https://github.com/PaulStoffregen/CapacitiveSensor) von Paul Stoffregen(https://www.pjrc.com/teensy/td_libs_CapacitiveSensor.html) verwendet.

Kirchenorgel spielen mit Obst und Gemüse

Kirchenorgel spielen mit einer Obst- undGemüse Tastatur. Geht nicht? Weit gefehlt. Das MPR121-Breakout Board von Adafruit macht es möglich. 4 Stück davon an den I2C Bus angeklemmt ergeben schon mal 48 Tasten. Hier (https://blog.georgmill.de/2015/06/20/touch-midi-board-arduino-odroid-c1-mpr121/) hatte ich schon die Version mit 2 MPR121-Breakout Boards vorgestellt und im Detail erklärt.  Im Video habe ich ein paar davon an unseren Obst- und Gemüsevorrat im Haus angeschlossen und spiele darauf Kirchenorgel. Aber eigentlich kann man alles daran anschliessen, was elektrisch leitfähig ist: Auch die meschliche Haut, Aluminiumfolie, Stahlgerüste oder elektrisch leitfähige Flüssigkeiten wie Wasser (am besten mit hohem Salzgehalt), Silberleitlack, Grafitpulver und, und, und…

Kostengünstiger geht es aber auch: https://blog.georgmill.de/2015/06/25/touch-midi-sensor-aus-aluminiumfolie-und-kupferdraht/

Spiegelreflex-Laserharfe Teil1

Heute sehen wir uns den ersten Teil zum Bau einer Spiegelreflex-Laserharfe an. Was ist das? Nun, es ist eine Harfe nach diesem Vorbild -> http://www.instructables.com/id/Frameless-Laser-Harp/
also eine rahmenlose Laserlicht-Harfe, die Midisignale erzeugt, wenn man den Strahlengang des Lasers unterbricht. Dazu habe ich mir aus einem sehr preiswerten Steppermotor für knapp 10 Euro (https://www.pollin.de/shop/dt/NTE0OTg2OTk-/Motoren/Schrittmotoren/Schrittmotor_VEXTA_PXB44H_02AA_C8_1_8_6_V_0_8_A.html) und einem selbst geschnittenen Mini-Spiegel ein Laser-Galvanometer gebaut. Angesteuert wird dieser mit einem Darlington-Array (ULN2003A) für 0,25 Euro (http://www.conrad.de/ce/de/product/177970/Linear-IC-STMicroelectronics-ULN2003A-Gehaeuseart-DIL-16-Ausfuehrung-Driver-CMOSTTL-Eingang)
Als Microcontroller kommt hier wieder ein Arduino Uno R3 zum Einsatz (http://www.arduino.cc/en/pmwiki.php?n=Main/ArduinoBoardUno).

Das Vorbild gefiel mir schon gut. Aber es hat einen Nachteil: Die Harfe ist nur bei absoluter Dunkelheit bespielbar. Das wollte ich ohne grossen Kosten- und Zeitaufwand ändern. Beim Experimentieren mit dem kleinen Laser (https://www.elabpeers.com/ky-008-laser-x-laser-detector.html Schutzbrille nicht vergessen!) ist der Strahl zufällig gegen eine Glasscheibe „geflogen“ … und reflektierte perfekt auf den Wohnzimmerschrank daneben. Da kam ich auf die Idee statt der Glasscheibe einen Streifen dünnes Plexiglas aus dem Baumarkt  für ein paar Cent zu kaufen und daraus nach dem Prinzip einer Spiegelreflexkamera (https://de.wikipedia.org/wiki/Spiegelreflexkamera#Funktionsweise) einen flexiblen Spiegel zu Bauen, um einerseits den Strahlengang zu doppeln, andererseits den gedoppelten Strahlengang wieder annähernd auf einen Punkt zu fokussieren. Da dies relativ schwierig und eine exakte Fokkussierung in meinem Fall auch überflüssig ist, verwende ich zum „einfangen“ der fokussierten Strahlen eine simple, kleine Deko-Glasperle aus unserem Wohnzimmerschrank. Dort werden die Strahlen aufgefangen und an eine Fotodiode weitergeleitet.

Mit dieser kann man nun feststellen, wann der Strahlengang unterbrochen wird. Fortsetzung folgt …

Touch Midi Board Arduino-Odroid-C1-MPR121

Heute stelle ich euch das Touch Midi Board vor. Es besteht aus einem Arduino Uno, einem Odroid-C1 und zwei MPR121 Breakout Boards von Adafruit. Eines dieser MPR121 Boards kostet zur Zeit etwa EUR 8,50.
Auf dem Arduino läuft ein Sketch, der für die Verarbeitung der Eingangssignale und die Erzeugung der Midi-Steuersignale zuständig ist.
Erzeugt werden die Signale durch zwei MPR121, die mit insgesamt 24 Kupferleitbahnen verbunden sind.  Die MPR121 Boards werden über den I2C-Bus angesteuert. Es ist möglich, bis zu maximal vier dieser Boards gleichzeitig zu verwenden. Das entspricht dann 48 Eingängen. Berührt man ein Kupferband, wird ein Midisignal ereugt und per USB an den Odroid-C1 Einplatinenrechner weitergeleitet. Auf diesem Rechner läuft ein Ubuntu 14.04 mit selbst kompiliertem Echtzeit-Kernel (Betriebssystem). Der Rechner läßt sich wie seine großen Brüder auch über HDMI an einen Bildschirm oder Fernseher anschliessen und per Maus und Tastatur steuern. Da das Projekt aber auch draussen auf der Strasse eingesetzt werden soll, erfolgt hier die Steuerung über Smartphone oder Tablet per VNC. Der Desktop wird quasi an das Tablet weitergereicht und von dort aus wird per WLAN der der Desktop des Odroid-C1 ferngesteuert.
Die Midisoftware auf dem Odroid-C1 übernimmt die Sounderzeugung.

Zunächst wird das Midisignal vom Arduino per ttyMIDI am USB-Eingang des Odroid-C1 (hier: /dev/ttyACM0) empfangen und verarbeitet. Nachdem der jack-daemon per qjackctrl für die USB-Soundkarte konfiguriert und gestartet wurde lassen sich nun über die grafische Oberfläche alle am Odroid-C1 angeschlossenen Midi-Instrumente als auch zusätzliche virtuelle Midi-Instrumente verwalten. Für die eigentliche Klangerzeugung kommt ZynAddSubFX, ein schöner Software-Synthesizer zum Einsatz. Nachdem die Midi/Audio Ein/Ausgänge sinnvoll miteinander per qjackctrl verbunden sind, wird der Sound an die USB Soundkarte ausgegeben. Der kleine Lautsprecher kann natürlich durch den Anschluss an einen größeren Lautsprecher oder eine HiFi-Anlage ersetzt werden.

Das schöne an diesem Setup ist, dass alle Geräte komplett über einen 5 Volt Akku betrieben werden können. Dieser Aufbau ist also später (in einem entsprechend schicken Gehäuse) für den mobilen Einsatz im Freien verwendbar.

Eine Version mit 4 MPR121-Breakout Boards befindet sich hier: https://blog.georgmill.de/2015/06/25/kirchenorgel-spielen-mit-obst-und-gemuese/

Wem das zu teuer ist: Eine fast kostenlose Variante (Basic One Touch Sensor) befindet sich hier: https://blog.georgmill.de/2015/06/25/touch-midi-sensor-aus-aluminiumfolie-und-kupferdraht/

Schrittmotor-Test – 5 Treiber im Vergleich

Heute vergleichen wir 5 verschiedene Schrittmotortreiber in verschiedenen Preiskategorien und Qualitätsstufen.

1. ULN2003A https://en.wikipedia.org/wiki/ULN2003A
2. ULN2003A testboard https://arduino-info.wikispaces.com/SmallSteppers
3. Pololu DRV 8835  https://www.pololu.com/product/2753
4. Pololu A4988 https://www.pololu.com/product/1183
5. Silent Step Stick auf Basis des TMC 2100 von Trinamic https://de.aliexpress.com/wholesale?catId=0&initiative_id=SB_20200823032152&SearchText=tmc2100

1. + 2. = Einsteiger
3. + 4. = Fortgeschritten
5. = Profi

Die einfachste und kostengünstigste Variante für den Einstieg und erste Erfahrungen mit Steppermotoren ist der ULN2003A  (EUR 0,25). Im Video sieht man den Anschluss des Motors an einen Arduino. Gesteuert wird der Motor über ein kalibriertes Potentiometer. Zur optischen Anzeige dienen drei farbig unterschiedliche LEDs.

Noch einfacher, aber etwas teurer führt das Testboard mit dem ULN2003A (EUR 2,48), welches oft zusammmen mit dem einfachen Stepper Motor BYJ48 für unter EUR 5,00 zu bekommen ist, zu schnellen Erbebnissen ohne viel Aufwand und Wissen um die Elektronik und die elektrophysikalische Funktionsweise eines Steppermotors. Eine anschauliche Einführung gibt es hier -> http://www.instructables.com/id/BYJ48-Stepper-Motor/


Der Pololu DRV 8835  (EUR 7,12) ist eine H-Brücke für den Antrieb und bidirektionale Kontrolle von entweder 2 brushed DC Motoren oder einem Stepper Motor verwendbar. Hier wird nur letzteres behandelt. Das hier verwendete Breakout Board ist eigentlich für den Raspberry Pi B+ gedacht, wird im Video aber mit einem Arduino UNO verkabelt.


Der Pololu A4988 (EUR 9,30) mit Spannungsregulierung ist ein hervorragend konfigurierbarer Motortreiber für Bipolare Steppermotoren. In meinem Zeitrafferschienen-Projekt (https://blog.georgmill.de/2015/04/28/odroid-c1-with-sanyo-denki-stepper-motor-and-diy-timelapse-rail/)  dient er momentan noch als Ansteuerung für einen Sanyo Denki Steppermotor.


In naher Zukunft werde ich den Pololu A4988 aber durch den Silent Step Stick auf Basis des TMC 2100 von Trinamic (EUR 9,95) ersetzen. Dieser Motortreiber verfügt über einen sogenannten stealthChop Modus, der für extrem leisen, nahezu geräuschlosen Lauf des Motors sorgt (leider auf Kosten des Drehmoments). Wenn die Zeitrafferschiene schräg steht, sollte man besser in den spreadCycle Modus wechseln, der  für eine hohe Dynamik und Drehmoment sorgt (aber leider auch wieder etwas lauter ist).

Mittlerweile arbeite ich fast ausschließlich mit den Treiben von Trinamic. Zu dem Zeitpunkt, als dieses Video erstellt wurde, kamen diese Treiber allmählich in Mode im Bereich 3D-Druck. Heute (2020) sind sie quasi Standardtreiber für 3D-Drucker und Linearantriebe. Es gibt sie sehr günstig bei Aliexpress (https://de.aliexpress.com/wholesale?catId=0&SearchText=tmc+stepper)