Arduino mit OneWireFirmata
OneWireFirmata
mit dem Modul 10_FRM.pm kann man einen Arduino als OneWire-Busmaster für das Modul 00_OWX.pm benutzen. Auf dem Arduino muss dazu eine erweiterte Version der Firmata-Firmware geladen werden. Unterstützt werden im prinzip alle Arduino-Versionen. Auf Arduinos mit nur 16kb RAM (MEGA168P) muss man die Zahl der eingebauten Features reduzieren, auf allen Arduinos mit mehr als 16kb Ram (MEGA328P aufwärts) läuft die Firmware unverändert. Die aktuelle Arduino-IDE bringt zwar schon eine Version der StandardFirmata mit, diese enthält aber noch keine Unterstützung für OneWire. Diese OneWire-unterstützung ist mittlerweile in den 'configurable'-branch von Firmata eingearbeitet. Diese könnt Ihr hier herunterladen: https://github.com/firmata/arduino/archive/configurable.zip Wenn man die in dieser neuen Firmataversion eingebauten Features reduzieren möchte (weil man nur eine MEGA168P verwenden will und z.B. gar keine Servos ansteuern möchte), muss man nur im 'ConfigurableFirmata'-sketch die entsprechenden includes auskommentieren.
Arduino IDE
Zur Installation auf den Arduino wird natürlich erst mal die Arduino-IDE benötigt (http://arduino.cc/en/Guide/Libraries)) hat man das 'libraries' Verzeichnis seiner Arduino-ide-installation gefunden (unter Ubuntu z.B. unter /usr/share/arduino/libraries/), gibt es dort normalerweise schon ein Verzeichnis 'Firmata'. Falls nicht, muss dieses angelegt werden. Die in dem Verzeichniss befindlichen Dateien 'Firmata.h', 'Firmata.cpp' und 'Boards.h' müssen durch die im onewire-scheduler.zip-file enthaltenen Versionen ersetzt werden. Am besten kopiert man einfach den gesammten Inhalt des Ordners 'arduino-onewire_scheduler' in das 'libraries/Firmata'-Verzeichnis (mitsammt des Unterordners 'examples'. Macht man das so, dann findet man nach einem Neustart der IDE den OneWireFirmata-sketch unter 'Datei'->'Beispiele'->'Firmata'->'OneWireSchedulerFirmata'. (Natürlich kann man den Unterordner 'OneWireSchedulerFirmata' auch in sein Sketchbook Unterverzeichnis kopieren. Solange man das Verzeichnis nicht umbenennt (so dass es nicht mehr so wie die darin befindliche 'OneWireSchedulerFirmata.ino'-datei heißt, erkennt die Arduino-IDE das Verzeichnis als korrekten Sketch und man kann es unter 'Datei'->'Sketchbook'->'OneWireSchedulerFirmata' finden.
Naja - hat man es erst mal geschafft, dann muss man nur noch unter 'Tools'->'Board' den eigenen Arduino auswählen und mit dem Upload-knopf (der Rechtspfeil im Kreis oben links) den geladenen Sketch compilieren und auf das Board hochladen. Falls man unter Windows Probleme hat den Arduino über USB zu connecten findet sich hier weitere Informatation: http://arduino.cc/en/Guide/Windows#toc2
FRM
Der Arduino wird in FHEM über das Modul 10_FRM.pm angesprochen (dazu bitte die aktuelle Development-version herunterladen (http://www.dhs-computertechnik.de/downloads/fhem-cvs.tgz) aus dem SVN auschecken oder per updatefhem aktualisieren).
# definiere FRM als IO-Device - Baudrate 57600 ist default in der Standardfirmata define Arduino FRM /dev/ttyUSB0@57600
OWX
Ein im Anschluss daran definiertes FHEM und 1-Wire-device kann dann einfach einen der Arduino-pins als OneWireBusmaster nutzen. Das funktioniert an allen Pins, die digital-io unterstützen. Wenn man das FRM device schon definiert hat, findet man im laufenden FHEM unter den FRM-attributen einen Eintrag: 'onewire-pins', dieser listet alle Pins auf, die OneWire unterstützen:
define OWX <arduino-pin>
Nach dem definieren des OWX-Moduls fängt dieses selbsttätig an über den Arduino-pin nach OneWire-devices zu suchen und im Raum 'OWX' automatisch anzulegen.
Unterstützung einen Arduino mit Ethernetshield oder EM28J60-modul über Ethernet und Firmata anzubinden ist in Arbeit :-)