Steuerung per Gamecontroller

Wie geht denn das?

In einem vorherigen Post habe ich bereits den Anschluss des USB-Host-Shields an einen Arduino Mega beschrieben. Ziel war es einen XBOX360-Controller zum Steuern des Roboters zu verwenden. Die Usb-Host-Library bringt einige Module für die Kommunikation mit verschiedenen USB-Geräten mit. Darunter auch eine Library für die XBOX-Controller. Die ausgelesenen Steuerdaten eines Steuerkreuzes werden dann mit einem APC220-Funkmodul an den Roboter geschickt und dort an den Motorcontroller weitergereicht.

Weiterlesen

Die i2C-Blinkbox

i2c – Lichtsteuerung für den Robot

Der Rollstuhl den ich als Basis für die ganze Geschichte nehme hat eine fast komplette “Lichtsignalanlage” (schönes Wort). Blinker und Licht (Vorne und Hinten). Bremslichter gibt es leider nicht.

Es musste also eine Lösung her um das Licht (und evtl. noch andere “Großverbraucher”) schalten zu können. Das Licht läuft auf 24Volt, also wiedereinmal ein wenig viel um das direkt an den Arduino anzuklemmen. Lösungen sind da entweder Relais oder MosFETs. Ausserdem muss das ganze in ein ordentliches Gehäuse verpackt werden. Die Ansteuerung und die Versorgung soll über den I2C-Bus erfolgen. Das braucht nur 4 Kabel und spart einen UART-Port.

 

Die i2C-Blinkbox

Die i2C-Blinkbox

Weiterlesen

Sparkfun USB-Host-Shield

USB Host Shield an Arduino Mega

Ich hatte ja bereits überlegt die Fernsteuerung durch einen anderen Controller zu ersetzen. Dazu muss der XBOX360-Controller irgendwie an einen Arduino angeschlossen werden. Sparkfun hat hierfür das “USB-Host-Shield” im Angebot.

 

Das Teil passt”gestapelt” auf einem normalen Arduino; der Arduino Mega hat die SPI-Pins allerdings an anderer Stelle. Da ich aber eh nicht vorhabe das Teil direkt auf den Arduino zu stecken, ist das Problem mit ein wenig Bastelei leicht zu lösen.

Heute kam die Lieferung von Watterott (mal wieder schweineschneller Versand, vielen Dank!). Also “nur mal schnell” das USB-Host-Shield an meinem Arduino Mega ausprobieren. Sollte angeblich ganz einfach sein. Auf der Produktseite von Sparkfun stand der Link zur “USB-Host-Library 2.0″, die Verkabelung war soweit bekannt, sollte also alles überhauptkgarkeinnicht Problem sein…

Nach 2 Stunden lagen die Nerven blank… Ich habe Blogs und Foren durchstöbert, Tips, Tricks und Voodoo versucht – Nüscht… Der Testcode hat sofort nach dem Booten einen Fehler geschmissen. SPI-Kommunikation gescheitert… Kackewurst! Support von Circuits@Home für deren Library war nicht zu erwarten da die selber ein eigenes USB-Shield verkaufen und andere nicht unterstützen. Version 1 ausprobiert, Kabel umgesteckt, externe Spannungsversorgung angeklemmt, um den Tisch getanzt…. NICHTS

Dann der entscheidene Hinweis:

 

Aha! Also schnell alles nach folgenden Pin-Mapping zusammengesteckt:

USB Shield Arduino MEGA Info
7 RESET
9 9
10 10
11 51 MOSI
12 50 MISO
13 52 SCK

Nun läufts :)

die Maus-Demo funktioniert super, den Rest werde ich mal weiter ausprobieren. GPS, Joysticks, Tastaturen, sogar teurere Kameras sollen sich komplett damit steuern lassen. Bei Circuits@Home gibt es weitere Projekte zu dem Thema!

 

Links

Zitronenwächter

Projekt – Der Zitronenwächter

Die Zitronen kommen zum Überwintern in den Heizungskeller. Letztes jahr haben wir leider öfter die Bewässerung vergessen, entsprechen sahen die Dinger dann auch aus *hust* Das muss besser überwacht werden!

Die Aufgabenstellung

Zu allererst soll die Feuchtigkeit der Pflanzenerde gemessen werden. Dazu bietet sich der Bodenfeuchtesensor des Grove-Systems an.

Als zweites soll die Umgebungstemperatur und die Luftfeuchte in dem Raum gemessen werden.

Die Daten sollen über Funk an meinen Raspberry-Nodejs-Homeserver übermittelt und über Internet an den COSM-Dienst gesendet werden.

Wenn Schwellenwerte für Bodenfeuchte usw. über oder unterschritten werden sollen E-Mails verschickt werden.

Bonus: Eventuell automatisch bewässern. Im Keller gammelt noch eine kleine Gartenteichpumpe rum. Mal zerlegen und nachsehen “wie´s is” 😉

Die Lösung

Weiterlesen

Sensor Trocken

Test des Bodenfeuchtesensor

Der “Grove “Moisture Sensor” ist da. Erstmal sehen was man damit so anstellen kann :)

Ds ganze ist recht einfach aufgebaut: Zwei “Spitzen” mit leitenden Material, zwei Widerstände und ein Transitor als Signalverstärker.

 


Testaufbau

Das Grove Sensorshield auf den Arduino Mega gesteckt, Sensor auf den Analog 1 Port und den Grove LedBar auf Digital 12/13. Dazu ein Glas Wasser. Ich wollt keinen Blumenpott mit aufs Sofa nehmen, das gibt Flecken und dann Ärger 😉

Sensor trocken

Sensor nass

Da der Sensor an einem Analogport des Arduino angeschlossen ist, kommen wieder Messwerte von 0-1023 im Programm an. Der Sensor misst im Prinzip nur die Leitfähigkeit eines Mediums zwischen den beiden “Spitzen”. Sensorwert 0 = Leitet nicht, 1023 = Leitet wie Sau.

Der Hersteller gibt folgende Werte an:

  1. 0 ~300 : trockene Erde
  2. 300~700 : feuchte Erde
  3. 700~950 : nasse Erde, im Wasser

In normalen Leitungswasser hatte ich einen Wert von ca. 450. Das ist eine ziemliche Abweichung zu den Werten der Tabelle. Woran liegts?

Das Wasser aus unseren Leitungen hat einen recht geringen Mineralgehalt, ist also ziemlich “weich”. Um das zu ändern habe ich einfach einen guten Schluck Mineralwasser in das Glas geschüttet. Und schon war der Messwert bei 750. Geht doch :)

Democode

Mein einfacher Democode. Der Sensor steckt am Port A0 des Arduino. Die gemessenen Daten werden über den Serialport ausgegeben. Als externe Anzeige benutze ich wie oben beschrieben noch den Grove LedBar. (Die Library dazu gibt es hier)

Links

Herstellerwiki: http://seeedstudio.com/wiki/Grove_-_Moisture_Sensor