USB, NodeJS und der Raspberry Pi

 

Nach meinen letzten Experimenten mit einem XBOX360-Controller und dem USB-Shield auf einem Arduino wollte ich mal sehen ob man den Controller nicht auch an einem Raspberry Pi mit NodeJS auslesen kann. Die überlegung ist mittlerweile die Basisstation für den Roboter komplett auf einem RasPi zu realisieren. Hier sind mehr „Schweinereien“ möglich als auf einem Arduino Board. Ich denke da an die Steuerung per Webinterface etc.pp.

Also „Tante Google“ angeworfen und ein wenig geschaut.

Mein erster Treffer war das NodeJS-Modul „node-hid„. Das Modul soll einfachen Zugriff auf USB-HID-Devices wie Tastatur, Maus und andere Controller geben – also eigentlich auch auf den XBOX-Controller. „To cut a long story short“: Hat nicht kompiliert. Stundenlang weitergesucht und gepatch – hat dann kompiliert aber nicht funktioniert – erstmal alles in die Ecke gefeuert und andere Dinge gemacht… KACKE

Kacke

Nächster Versuch

Heute wieder ein wenig rumgesucht, sowas lässt mir ja keine Ruhe. Gibt es eine Alternative zum „node-hid“ Modul?

USB, NodeJS und der Raspberry Pi weiterlesen

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.

Steuerung per Gamecontroller weiterlesen

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

i2c – Lichtsteuerung für den Robot weiterlesen

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

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

Projekt – Der Zitronenwächter weiterlesen