Arduino Firmata mit ENC28J60

Begonnen von Achim, 03 Februar 2015, 21:37:55

Vorheriges Thema - Nächstes Thema

Achim

Hallo,

seit ich am Sonntag meinen 1-Wire Bus am Arduino erweitert habe (1x DS2438 und 1x DS18B20 hinzugefügt), ist der Arduino schon 2x abgestürzt, bzw. es kommt keine Verbindung mit FHEM (RPI) zustande. Ein Reset am Arduino und es ging wieder.
Gleich vorab, ich habe die vielen Threads über die Probleme mit dem 1-Wire Bus durchgelesen. Oft/meist sind es Hardwareprobleme mit fehlerhafter Busstruktur und "Kontaktprobleme". Da war ich schon dran und habe es kontrolliert aber noch nicht zurück gebaut (Braucht Zeit und die habe ich erst wieder am Wochenende).

Nur vorab mal eine Frage zu der Anzahl von 1-Wire Elementen auf dem Bus. Ich habe folgendes an dem Bus hängen:define Heizraum_DS2 OWTHERM DS18B20 360421060000 120
define Heizraum_LF_DS2 OWMULTI DS2438 A5C7C6010000 120
define Hobbyraum_DS2 OWTHERM DS18B20 9AF03D040000 120
define Warmwasser_Bad_DS2 OWTHERM DS18B20 26BA23040000 60
define Warmwasser_Kueche_DS2 OWTHERM DS18B20 3D1564040000 60
define OWX_Z1 OWCOUNT DS2423eold A2D988000002 60
define OWX_Z1 OWCOUNT DS2423eold A2D988000002 60
define OWX_Z2 OWCOUNT DS2423eold A2D987000002 300
define OWX_Z2 OWCOUNT DS2423eold A2D987000002 300


Ist das vielleicht zu viel für die Firmataanbindung und dem relativ wenigen freien Speicher auf dem Arduino. Hat da jemand Erfahrungen mit "Mengen". So als Richtwert. 6x In und 4x Out sind auch noch am Arduino angeschlossen und im FHEM definiert.

Ich habe noch die Version 2.05 der Arduino "Firmware". Bringt da die Version 2.06 evtl. eine Verbesserung? Ich will nur nicht "unnötig" Dinge ändern und zum Schluss ist gar nicht mehr nachvollziehbar woher der Fehler kommt.

Viele Grüße
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

Wzut

Lies mal http://forum.fhem.de/index.php/topic,31715.0.html
Wichtig ist Speicher zu sparen , d.h. alles abschalten was du nicht brauchst und die Anzahl der UDP Verbindungen runtersetzen. Zusätzlich bringt dir der Wechsel von 2.05 auf die aktuelle Version noch die Bugfixes für den ENC28J60
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Achim

Hallo,

das habe ich alles gemacht. Der Arduino mit der Firmata ist über ein Jahr (fast) problemlos gelaufen. Erst nach Hinzufügen eines DS18B20 und DS2438 ging es mit den Abstürzen los. An dem Arduino selbst habe ich nichts geändert.
Ich habe gehofft, das vielleicht ein paar Forumsleser, die auch Firmata mit dem ENC28J60 im Einsatz haben, ihre 1-Wire "Mengenkonfiguration" posten. Nur mal um ein ungefähres Gefühl über das Machbare zu bekommen.

Viele Grüße
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,

nachdem mein Arduino nach dem Erweitern der 1-Wire Komponenten immer noch regelmäßig abstürzt, habe ich ihn jetzt auf die Version 2.06 aktualisiert.

Ich habe folgende Optionen im Firmata-Sketch aktiviert bzw. auskommentiert.:
#include <utility/DigitalInputFirmata.h>
DigitalInputFirmata digitalInput;

#include <utility/DigitalOutputFirmata.h>
DigitalOutputFirmata digitalOutput;

//#include <utility/AnalogInputFirmata.h>
//AnalogInputFirmata analogInput;

//#include <utility/AnalogOutputFirmata.h>
//AnalogOutputFirmata analogOutput;

#include <Servo.h> //wouldn't load from ServoFirmata.h in Arduino1.0.3
//#include <utility/ServoFirmata.h>
//ServoFirmata servo;

#include <Wire.h> //wouldn't load from I2CFirmata.h in Arduino1.0.3
//#include <utility/I2CFirmata.h>
//I2CFirmata i2c;

#include <utility/OneWireFirmata.h>
OneWireFirmata oneWire;

//#include <utility/StepperFirmata.h>
//StepperFirmata stepper;

#include <utility/FirmataExt.h>
FirmataExt firmataExt;

Bei der Version 2.05 habe ich beim Kompilieren
ZitatDer Sketch verwendet 24.344 Bytes (79%) des Programmspeicherplatzes. Das Maximum sind 30.720 Bytes.
Globale Variablen verwenden 1.629 Bytes (79%) des dynamischen Speichers, 419 Bytes für lokale Variablen verbleiben. Das Maximum sind 2.048 Bytes.
Wenig Speicher verfügbar, es können Stabilitätsprobleme auftreten
Nach dem Umstieg auf die 2.06 Version sind ein paar mehr Bytes frei.
ZitatDer Sketch verwendet 23.162 Bytes (75%) des Programmspeicherplatzes. Das Maximum sind 30.720 Bytes.
Globale Variablen verwenden 1.545 Bytes (75%) des dynamischen Speichers, 503 Bytes für lokale Variablen verbleiben. Das Maximum sind 2.048 Bytes.
Wenig Speicher verfügbar, es können Stabilitätsprobleme auftreten.

in der Datei uipethernet-conf.h habe ich folgendes definiert.
Zitat#define UIP_SOCKET_NUMPACKETS    4
#define UIP_CONF_MAX_CONNECTIONS 1 (bei 2.05 noch 2)

/* for UDP
* set UIP_CONF_UDP to 0 to disable UDP (saves aprox. 5kb flash) */
#define UIP_CONF_UDP             0
#define UIP_CONF_BROADCAST       0
#define UIP_CONF_UDP_CONNS       0
Ich hoffe das der Nano jetzt wieder stabil läuft, auch mit der höheren Anzahl der 1-Wire Komponenten.

Viele Grüße
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,

nur ein kurzes Update. Seit dem Update auf 2.06 und noch etwas mehr freien Speicher für lokale Variablen läuft der Arduino seit 2 Wochen wieder ohne Abstürze.

Viele Grüße
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