Firmata over Ethernet: Einbindung in Arduino

Begonnen von CaptBlaubaer, 27 Oktober 2013, 00:44:58

Vorheriges Thema - Nächstes Thema

CaptBlaubaer

Github für Windows funktioniert bei mir irgend wie nicht und bringt Fehler wenn ich nach der Anleitung aus https://github.com/firmata/arduino/tree/configurablevorgehe.

Gibt es eine IBM Lösung (Immer Besser Manuell) die aktuellen Dateien in Arduino 1.5.4b einzubinden und zum Laufen zu bringen?

Viele Grüße,
CaptBlaubaer (CBR)

Best regards und viele Gruesse,
CaptBlaubaer (CBR)
_________________________________
FHEM 5.5 Raspberry Pi (B), IOMEGA iConnect, Firmata Arduinos USB/LAN, Gembird USB/LAN, ToDo: FHEM auf FritzBox 7390, 7270

ntruchsess

Nimm mal diesen Link:
https://github.com/firmata/arduino/archive/configurable.zip

Der findet sich auf Github rechts unter der Https-clone-url. Der Button mit der Aufschrift 'Download ZIP'


while (!asleep()) {sheep++};

CaptBlaubaer

#2
Hallo Norbert,

das hatte ich auch schon versucht. Wenn ich die Datei als Library -> "Library hinzufügen" in Arduino einbinde verschwindet nur der Beispiele Eintrag für Firmata.

Anmerkung:
Die Beispiele verschwinden auch, wenn ich das Verzeichnis manuell ins library Verzeichnis kopiere und dann umbenenne. Auch das Anlegen eines src Ordners und verschieben von .h und .cpp Dateien ändern nichts.

Viele Grüße,
CaptBlaubaer (CBR)

Best regards und viele Gruesse,
CaptBlaubaer (CBR)
_________________________________
FHEM 5.5 Raspberry Pi (B), IOMEGA iConnect, Firmata Arduinos USB/LAN, Gembird USB/LAN, ToDo: FHEM auf FritzBox 7390, 7270

ntruchsess

while (!asleep()) {sheep++};

CaptBlaubaer

Hallo Norbert,

danke für Deine Bemühungen.

Unter den von Dir angegebenen Verzeichnissen
Windows:
/Program\ Files/arduino-1.5.x/hardware/arduino/avr/libraries/Firmata
/Program\ Files/arduino-1.5.x/hardware/arduino/sam/libraries/Firmata

befindet sich bei mir auf dem Rechner nichts mit Firmata.

Die mit Arduino 1.5.4b mitgelieferte und funktionierende Firmata Version (2.3.6) und ihre Beispiele, liegt auf meinem Rechner auf
C:\Users\Arduino\Downloads\arduino-1.5.4\libraries\Firmata

Also:
/Program\ Files/arduino-1.5.x/arduino/libraries/Firmata

Sehr verwirrend das Ganze.

Viele Grüße,
CaptBlaubaer (CBR)
Best regards und viele Gruesse,
CaptBlaubaer (CBR)
_________________________________
FHEM 5.5 Raspberry Pi (B), IOMEGA iConnect, Firmata Arduinos USB/LAN, Gembird USB/LAN, ToDo: FHEM auf FritzBox 7390, 7270

det.

Hallo Norbert,
kannst Du bitte für DUMMIES die Einstellungen für die Kombination ENC28J80 + Nano etwas genauer erklären. Das Auskommentieren von i2c und servo bringt wie Du ja im WIKI schreibst Fehler, einmal mit allem compilieren geht, wenn man ein anderes Board einstellt - aber nach Zurückstellen auf den Nano compiliert das neu und die Fehler sind wieder da. Entschuldige meine Unwissenheit.
LG
det.

CaptBlaubaer

Hallo det.,

mich interessiert das auch, weil ich noch ein ENC28J80 Shield rumliegen habe. Aber ich würde mir wünschen, wenn das in einem anderen Thread behandelt würde.

Mir geht's hier um die Einbinden mit dem Standard Arduino Ethernet Shield.

Viele Grüße,
CaptBlaubaer (CBR)
Best regards und viele Gruesse,
CaptBlaubaer (CBR)
_________________________________
FHEM 5.5 Raspberry Pi (B), IOMEGA iConnect, Firmata Arduinos USB/LAN, Gembird USB/LAN, ToDo: FHEM auf FritzBox 7390, 7270

ntruchsess

#7
Zitat von: det. am 27 Oktober 2013, 19:09:44
Hallo Norbert,
kannst Du bitte für DUMMIES die Einstellungen für die Kombination ENC28J80 + Nano etwas genauer erklären.
1. den ConfigurableFirmata sketch öffnen, anpassen (UIPEthernet.h durch entfernen des Kommentars aktivieren, Ethernet-config anpassen und die Features, die man nicht braucht auskommentieren). Anschließend als eigenen Sketch speichern.
2. den unveränderten ConfigurableFirmata-sketch (über 'Examples'->'Firmata') noch mal öffnen und compilieren. (Das kompiliert dann auch Servo.cpp usw...)
3. Jetzt kann man den angepassten Sketch (der z.B. Servo gar nicht braucht) compilieren, weil das compilierte Servofeature (aus Firmata/utilities) schon im tmp-Verzeichnis liegt.

Auf dem Nano wirds Speichermäßig recht eng. DNS und DHCP sind da nicht drin, wenn man mehr als nur Digital-IO machen will. Um das komplett rauszulassen (inklusive des UDP-codes aus der uip.c), muss man in der UIPEthernet/utilities/uip-conf.h das define UIP_CONF_UDP auf 0 setzen. Damit spart man ca. 5kb Flash.

Beim Standard-Ethernet-shield entfernt man die Kommentare bei 'spi.h' und 'Ethernet.h'. Da ist es speichermäßig entspannter (den tcp-stack erledigt da ja die Hardware)
while (!asleep()) {sheep++};

ntruchsess

Zitat von: CaptBlaubaer am 27 Oktober 2013, 19:09:13
Die mit Arduino 1.5.4b mitgelieferte und funktionierende Firmata Version (2.3.6) und ihre Beispiele, liegt auf meinem Rechner auf
C:\Users\Arduino\Downloads\arduino-1.5.4\libraries\Firmata
das Arduino-basis Verzeichnis kannst Du bei der Installation vermutlich frei wählen? Ich hab kein Windows um das nachzuvollziehen, ich hab die vorgenannten Verzeichisse aus der Firmata-readme kopiert.

Naja - jedenfalls muss das Verzeichniss, in dem die mitgelieferte Firmata (Version 2.3.6) liegt ersetzt werden. Egal wohin Du das installiert hast. Dann taucht die ConfigurableFirmata nach einem Neustart der IDE unter den Firmata-Beispielen auf.

- Norbert
while (!asleep()) {sheep++};

CaptBlaubaer

Hallo Norbert,

wie ich schon geschrieben habe funktioniert das auch nicht
ZitatAnmerkung:
Die Beispiele verschwinden auch, wenn ich das Verzeichnis manuell ins library Verzeichnis kopiere und dann umbenenne. Auch das Anlegen eines src Ordners und verschieben von .h und .cpp Dateien ändern nichts.

Wenn ich nach einem Neustart von Arduino versuche die Library einzubinden kommrn folgende Fehlermeldungen:
ZitatArduino: 1.5.4 (Windows 7), Board: "Arduino Mega 2560 or Mega ADK"
Invalid library found in C:\Users\Arduino\Downloads\arduino-1.5.4\libraries\Firmata: Invalid file '.gitignore'.
Invalid library found in C:\Users\john\Documents\Arduino\libraries\Firmata: Missing 'src' folder

Ich vermute mal das ist auch der Grund weshalb die Beispiele nicht angezeigt werden.
Best regards und viele Gruesse,
CaptBlaubaer (CBR)
_________________________________
FHEM 5.5 Raspberry Pi (B), IOMEGA iConnect, Firmata Arduinos USB/LAN, Gembird USB/LAN, ToDo: FHEM auf FritzBox 7390, 7270

ntruchsess

#10
Ich hab grade mal einen Windows-rechner zur Verfügung um das nach der Arduino-IDE-1.5:-Library-specification zu testen.
also Firmata.h, Firmata.cpp, Boards.h und das utility-verzeichnis nach:
<arduino-1.5.4-installation>\libraries\Firmata\src
und die library.properties nach <arduino-1.5.4-installation>\libraries\Firmata\

Dann werden die Firmata-examples gefunden, allerdings gibt es beim compilieren einen Fehler, weil die 1.5.4er IDE offenbar nicht mehr impliziet das 'utility' vor die Pfade stellt. Nimm einfach die 1.0.5er IDE bis dafür eine saubere Lösung da ist, da passt die Verzeichnissstruktur (einfach alles ins 'Firmata'-library-verzeichnis).

Und lösche dein zweites 'Firmata'-Verzeichnis im Users-Zweig - zwei mal die gleiche Library wird die IDE vermutlich durcheinanderbringen.

Das Thema 'Firmat und 1.5.x library-Format' wird übrigens hier auf Github getrackt: https://github.com/firmata/arduino/issues/56 Es wäre sinnvoller das da weiterzudiskutieren, damit die anderen Firmata-entwickler (insbesonders Jeff Hoeffs, der grade bei solchen grundsätzlichen Themen den Hut auf hat) mit eingebunden sind. Ich kann mich darum (also das 1.5.xer Library-format) im Moment nicht vernünftig kümmern - zu viele andere Baustellen.

Gruß,

Norbert
while (!asleep()) {sheep++};

CaptBlaubaer

Kaum macht man etwas richtig, schon geht's!  :o

Zitat von: ntruchsess am 28 Oktober 2013, 09:39:39
Nimm einfach die 1.0.5er IDE bis dafür eine saubere Lösung da ist, da passt die Verzeichnissstruktur (einfach alles ins 'Firmata'-library-verzeichnis).


Norbert, vielen Dank für Deine Mühen.

Mit der Aduino 1.0.5 ging es auf Anhieb.  Für mich genügt das zum Spielen bis auf Weiteres.

Ich lasse den Thread noch offen, bis das mit der 1.5.4 geklärt ist.
Für meine weiteren Fragen (ja, jetzt kommt's dicke) mach ich einen neuen Thread auf.
Best regards und viele Gruesse,
CaptBlaubaer (CBR)
_________________________________
FHEM 5.5 Raspberry Pi (B), IOMEGA iConnect, Firmata Arduinos USB/LAN, Gembird USB/LAN, ToDo: FHEM auf FritzBox 7390, 7270

Achim

#12
Hallo,

ich habe gestern und heute auch sehr viel Zeit damit verbracht, das "arduino_configurable_unified_ethernetclient" in die Arduino IDE zu integrieren (Windows 7, IDE 1.5.4 Neuinstallation). Ich habe mit zwei grundlegenden Fehlern gekämpft:

1. Beim Einbinden in den Pfad "C:\Program Files\Arduino\Libraries" war das Verzeichnis in der IDE unter Beispiele nicht sichtbar
2. Bei Aufrufen aus einem anderen Pfad kam beim Compilieren Unmenge an Fehlern.

Die Lösung war ganz einfach, nur sehr schwer zu finden.

1. kompletter Inhalt des Verzeichnisses "C:\Program Files\Arduino\Libraries\Firmata" löschen
2. Einfügen aller Dateien aus dem ZIP-File ""arduino_configurable_unified_ethernetclient.zip" in das Verzeichnis "..\Firmata"
3. Löschen der Datei "library.properties" im Verzeichnis "..\Firmata" -> Damit war das Verzeichnis in der IDE unter "Beispiele" sichtbar.

Vom Syntax her ist die Datei in Ordnung. Ich habe auch versucht, die Dateien nach der neuen Verzeichnisstruktur zu "verteilen". Brachte alles nichts, der Pfad war unter Beispiele erst sichtbar, nachdem ich die Datei gelöscht habe.

Wenn man dann das Beispiel "ConfigurableFirmata" daraus öffnet und compiliert gibt es dabei auch keine Fehler mehr.

Mit dem UIPEthernet wird der Sketch wesentlich kleiner (Sketch uses 22.930 bytes) als mit dem"Standard" Ethernet (Sketch uses 30.256 Bytes). Kann das jemand bestätigen?
[..edit..]
Die Größe des Sketches mit dem UIPEthernet stimmt nicht. Nach Aufbau der Hardware und erneutem Compilieren kommt immer (Sketch uses 40.916 Bytes) heraus.
[..]
Getestet habe ich die Sketche noch nicht (muss erst die Hardware noch zusammenstecken). Die Dateien aus "arduino_uip_master.zip" habe ich logischerweise auch unter "..\Arduino\Libraries" eingebunden

Gibt es eine einfache Möglichkeit, die Sketche über Ethernet zu testen, ohne FHEM? Ich habe bisher nur Perl (und andere) Scripte für USB Verbindungen gefunden.

MfG Achim
1x RPi V1, COC, 6x FHT, 1x S300TH, 2x DS18B20, 1x KS300
1x Arduino Nano mit Firmata, 2x DS2423old, 4x DS18B20, HIH5030, verschiedene Ein/Ausgangsschaltungen am Arduino
Mysensors-Seriell Gateway, Si7021, BH1750, Relais

Achim

Hallo,

nach Aufbau der Hardware (Nano und ENC28J60 Shield) habe ich versucht, den Sketch so zu compilieren, das er auf das Board passt.

1. Aktion
-- Original ConfigurableFirmata mit Anpassung der Netzwerksetttings
-- UIPEthernet/utilities/uip-conf.h das define UIP_CONF_UDP auf 0 setzen
-> beim Compilieren tritt dann folgender Fehler auf:
ZitatArduino: 1.5.4 (Windows 7), Board: "Arduino Nano, ATmega328"

C:\Program Files\Arduino\libraries\UIP_Ethernet\utility\uip.c: In function 'uip_process':
C:\Program Files\Arduino\libraries\UIP_Ethernet\utility\uip.c:915: error: label 'udp_input' used but not defined
-> Da komme ich nicht weiter.  Hat da jemand die Lösung?

2. Aktion
-- Original ConfigurableFirmata mit Anpassung der Netzwerksetttings
-> Compilieren läuft durch aber mit dem Fehler:
ZitatSketch uses 40.916 bytes (133%) of program storage space. Maximum is 30.720 bytes.
-> kopierter ConfigurableFirmata mit Auskommentieren von AnalogInput, AnalogOutput, Servo und Stepper. Laut Norbert sollte diese Reihenfolge so funktionieren, leider kommt dabei der Fehler
ZitatIn file included from C:\Program Files\Arduino\libraries\Firmata\utility\ServoFirmata.cpp:19:
C:\Program Files\Arduino\libraries\Firmata\utility/ServoFirmata.h:36: error: ISO C++ forbids declaration of 'Servo' with no type
C:\Program Files\Arduino\libraries\Firmata\utility/ServoFirmata.h:36: error: expected ';' before '*' token
zwischen den beiden Compilerläufen habe ich nichts an der IDE gemacht.
-> Auch hier komme ich nach verschiedenen Test nicht weiter. Hat da jemand die Lösung?

MitAnalogIn/Output und Stepper auszukommentieren wird der Sketch nicht klein genug. Bei FirmataExt und FirmataScheduler bin ich mir nicht sicher, ob die beiden Module benötigt werden. I2C auskommentieren ist dasselbe Problem wie bei Servo.

Da bleibt mir erstmal nichts anders übrig als die Hardware mit dem WIZ5100 aufzubauen. Ich hoffe es finden sich noch Lösungen für die ENC28J60 Umgebung.

MfG Achim

PS.: Ich möchte über 1-Wire die Zähler und In/Output Boards im Keller über einen Arduino mit dem RPi in der Wohnung verbinden. Ich bekomme leide keine 1-Wire Leitung in den Keller.
1x RPi V1, COC, 6x FHT, 1x S300TH, 2x DS18B20, 1x KS300
1x Arduino Nano mit Firmata, 2x DS2423old, 4x DS18B20, HIH5030, verschiedene Ein/Ausgangsschaltungen am Arduino
Mysensors-Seriell Gateway, Si7021, BH1750, Relais

ntruchsess

#14
1. setze auch UIP_CONF_BROADCAST auf 0 (habe ich bei meinem letzen Commit in die uip-conf.h mit reingenommen, braucht es um UDP-broadcast-packete zu empfangen - wird leider mit UIP_CONF_UDP nicht automatisch mit auskommentiert, das werde ich aber anpassen)

2. Öffne das ConfigurableFirmata example in einem 2. IDE-fenster und compiliere es einmal unverändert mit allen Features. Bis zum nächsten Neustart der IDE oder zum Wechsel des ausgewählten Boards kannst Du den abgestrippten ConfigurableFirmata-sketch compilieren.

FirmataExt wird für FRM benötigt, FirmataScheduler nicht.

Du kannst ruhig die ConfigurableFirmata aus dem configurable-branch nehmen, der EthernetClient ist da schon reingemerged. Der configurable_ethernet_client-branch ist mit dem merge obsolet, den habe ich grade gelöscht.

- Norbert

Edit: link korrigiert
while (!asleep()) {sheep++};