Ethersex, Firmata, Arduino

Begonnen von le66ck, 13 September 2014, 12:18:53

Vorheriges Thema - Nächstes Thema

le66ck

Hallo Ricardo

ZitatEthersex bietet enormes Potenzial (da kommt auch Firmata nicht mit)

Welches Potential...?
Ich habe gerade ein Arduino Uno mit Ethernet-Shield in Betrieb genommen und bin noch begeisert!
- 1Eingang als Warmwasserzähler (Verbrauch)
- 1Ausgang für Warmwasserpumpe
- I2C nach 1Wire mit DS2482 für mehrere DS18S20 (Außentemperatur und Heizung allg.)
- 1Ausgang für Modellbauservo
Bisher saß das Problem entweder vorm Lötkolben oder/und Bildschirm!

CK
1 BPi mit SSD und CSM-Funkmodul für Fhem + Baïkal für CalDAV
6 HM-LC-Dim1TPBU-FM, 8 HM-CC-RT-DN, 4 HM-LC-Sw1PBU-FM,
6 HM-SEC-SCo, 1 HM-Sen-MDIR-WM55, 1HM-SCI-3, 1 HM-ES-PMSw1-Pl

kpwg

Zitat von: le66ck am 13 September 2014, 12:18:53
Welches Potential...?
Ich habe gerade ein Arduino Uno mit Ethernet-Shield in Betrieb genommen und bin noch begeisert!
Denk' ich mir. Da hat sich in letzter Zeit enorm viel getan- nicht zuletzt dank dieses Forums hier. Ganz großer Vorteil: schnellste Ergebnisse! Die Arduino-Umgebung läuft in 5min, die Hardware kommt für'n Zehner aus China.  Mir ist das trotzdem zu beschränkt, zumal E6 auch auf beliebiger Arduino-Hardware läuft. (Bild anbei; kostet in Summe wohl 7 Euro) Mit dem m328p ist man eben festgelegt, was i/o und Speicher betrifft. Bei E6 nimmste einfach einen m644 für mehr Speicher oder diverse Portexpander für mehr Pins.
Zitat von: le66ck am 13 September 2014, 12:18:53
- 1Eingang als Warmwasserzähler (Verbrauch)
Kein Problem mit einem kleinen C6-Script eines Zählers. Den kann man dann auch von FHEM aus mit dem Zählerwert füttern und ist so vom Abfrageintervall völlig unabhängig, da das reading stets dem tatsächlichen Zählerwert entspricht. Die Rechnerei im stateFormat bzw. state beschränkt sich dann auf das Verschieben des Kommas.
Zitat von: le66ck am 13 September 2014, 12:18:53
- 1Ausgang für Warmwasserpumpe
Würde ich mit named-pin machen. Klappt bei mir sehr zuverlässig. Ich schalte damit mehrere IRLZ34 und LED-Beleuchtung.
Zitat von: le66ck am 13 September 2014, 12:18:53
- I2C nach 1Wire mit DS2482 für mehrere DS18S20 (Außentemperatur und Heizung allg.)
Mit 4x DS18x20 läuft das hier an der Heizung sehr gut. Im Polling-Modus kümmert sich E6 um das Auslesen der Sensoren und stellt die Daten fix&fertig bereit. Den DS2482 braucht's bei E6 nicht. Da geht I2C und 1W- gleichzeitig. Mit einem Levelkonverter könnte noch ein BMP180 dran. Oder neuerdings Multi-DHT mit mehreren DHT22 (einer pro Prozessorpin, da kein Bus). Die liefern gleich noch die Feuchte mit. Oder ein SHT21- der ist genauer (kostet aber auch deutlich mehr). Das könnte man beliebig fortführen. Beide Systeme haben verschiedene Ansätze und Möglichkeiten, Vor- und Nachteile.
Zitat von: le66ck am 13 September 2014, 12:18:53
- 1Ausgang für Modellbauservo
Motorbridge bzw. Servo habe ich in den E6-Sourcen gesehen. Selbst nie getestet, sollte aber laufen.
Zitat von: le66ck am 13 September 2014, 12:18:53
Bisher saß das Problem entweder vorm Lötkolben oder/und Bildschirm!
Kenne ich nur zu gut.  ;) Aber man fuchst sich rein und irgendwann kann man über seine eigenen Anfänge schmunzeln. Der Zeitaufwand ist enorm und ohne Hilfe des #ethersex IRC und der zahlreichen Tips von Boris hätte ich das nie geschafft.

Viele Grüße, Ricardo



Dr. Boris Neubert

Off-Topic:

Ha, wie spaßig: ich habe mir vorgestern auch so einen Ethernet-Adapter und einen zweiten Arduino Nano in China bestellt. Außerdem für ca. 5 EUR einen über serielle Schnittstelle (nicht SPI) ansprechbaren WiFi-Adapter mit einigermaßen viel eingebauter Intelligenz.

Ich werde wohl die Arduino-Bibliotheken sowie Norberts Ethernet-Library benutzen: das ist Rapid Application Development. Habe gute Erfahrungen damit gemacht, meinen abgerauchten 1-wire-Counter durch einen Nano mit selbstgeschriebener Firmware und Auswertung per ECMD (damit's wieder on-topic wird ;-) zu ersetzen. Der schaltet dann auch über noch so ein 5-EUR-Relais-Modul gleich die Lüfter im Rack ein, wenn die Maschinen zu warm haben.

Was ist denn das Teil links unten auf dem Bild?

Grüße
Boris

Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

kpwg

Zitat von: Dr. Boris Neubert am 14 September 2014, 18:57:08
Was ist denn das Teil links unten auf dem Bild?
Ein kleiner Schaltregler für die nötigen 3.3V des ENC28J60: http://www.ebay.de/itm/400362498785
Mit Längsregler ist mir das zu "warm".  ;D

Gibts auch noch kleiner, aber ungetestet: http://www.ebay.de/itm/390835549670

Viele Grüße, Ricardo

Dr. Boris Neubert

Hast Du Erfahrungen damit, ob die von einem über den USB-Anschluss versorgten Arduino Nano bereitgestellten 3,3 V ausreichen, das Ethernet-Modul zu treiben?

Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

kpwg

Zitat von: Dr. Boris Neubert am 14 September 2014, 20:43:25
Hast Du Erfahrungen damit, ob die von einem über den USB-Anschluss versorgten Arduino Nano bereitgestellten 3,3 V ausreichen, das Ethernet-Modul zu treiben?

Erfahrung nicht, aber ich habe gleich mal recherchiert und gemessen: das Datenblatt meint, das die 3.3V des FT232RL mit 50mA maximal belastet werden dürfen. Das ist nicht viel. Gemessen habe ich 119mA bei 3.3V am oben gezeigten ENC28J60 Modul. Mit meinem kleinen Schaltregler vom Beitrag oben erreiche ich an 12.1V eine Stromaufnahme von 43mA, was einem Wirkungsgrad von lediglich 75% entspricht.   :'(

Mann ist der Thread oT  ;D
Es gehört jedoch irgendwie dazu...

Viele Grüße,

Ricardo

Dr. Boris Neubert

So, wieder on-topic.

Verstehe.

Es gibt auch 3,3V-Arduino-Nano-Klone ohne USB. So wie der in Deinem Bild. Schaltregler habe ich.

Aber wie kommt die Firmware auf das Teil - kann keinen ISP-Pinheader erkennen.

Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

ntruchsess

Zitat von: Dr. Boris Neubert am 15 September 2014, 22:22:30
Aber wie kommt die Firmware auf das Teil - kann keinen ISP-Pinheader erkennen.

am einfachsten kann man den Mini Pro über die serielle Schnittstelle in Verbindung mit dem Arduino Bootloader flashen.

Gruß,

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

Dr. Boris Neubert

Hmm, kommen die China-Klone denn mit Bootloader? Dachte, dass die muCs vor dem Auflöten geflasht werden und dieser Schritt bei den Billigteilen entfällt.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

ntruchsess

Zitat von: Dr. Boris Neubert am 16 September 2014, 09:15:11
Hmm, kommen die China-Klone denn mit Bootloader?

Ich hab einen Mini-pro aus China von eBay, da war der Bootloader schon drauf.

Zitat von: kpwg am 14 September 2014, 18:02:22
Mit dem m328p ist man eben festgelegt, was i/o und Speicher betrifft. Bei E6 nimmste einfach einen m644 für mehr Speicher oder diverse Portexpander für mehr Pins.

Nicht dass ich jetzt behaupten würde Arduino wäre per se besser, aber den Punkt möchte ich gerne richtigstellen. Beim Arduino bist Du nicht auf dem m328p beschränkt. Gibts auch mit ATmega2560 oder ARM 32bit (Arduino Due). Mit avr-netino läuft die Software auch auf einem AVR-Net-IO (auch mit dem m644 wenn man es braucht) und anderen auch für E6 geeigneten Boards (gilt ja auch in die andere Richtung ;-)). So rein an der Hardware kann man also gar nichts festmachen.
Die Arduino-Plattform ist primär einfach für Anfänger nutzbar und hat sich daher 'viral' unheimlich verbreitet, echte technische Vorteile gegenüber einem Net IO sehe ich nicht, das sind eher die Soft-facts die das attraktiv machen. Ob E6 oder Firmata im konkreten Fall besser passen hängt stark vom Anforderungsprofil ab. E6 arbeitet halt autonom, Firmata ist praktisch eine aktive IO-Erweiterung des PCs, die ohne Rechnerkopplung gar nichts tut. Dafür Firmata ist halt sehr schnell, die Reaktionszeiten auf Zustandsänderungen an den I/O-ports sind praktisch nur durch die Bandbreite und Latenz der Rechneranbindung beschränkt. Geschwindigkeit beim Messen ist aber natürlich etwas, was man in der Hausautomation in vielen Fällen gar nicht so sehr braucht. Es ist natürlich schick, wenn man auf einen manuel zu betätigenden Schalter oder einen Rotationsencoder im ms-Bereicht (und damit gefühlt in Echtzeit) reagieren kann, in anderen Szenarien (z.B. Temperaturmessung) ist das aber typischerweise einfach irrelevant. Abgesehen davon ist eine Lösung, die nur funktioniert, wenn FHEM läuft in vielen Fällen gar nicht akzeptabel. Ich würde meinen Heizkessel z.B. niemals unmittelbar über Firmata steuern.

Gruß,

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

strauch

Ich benutze auch mehrere Arduinos mit diesem LAN Interface: http://www.ebay.de/itm/Ethernet-Shield-for-Arduino-Nano-UNO-R3-work-as-ENC28J60-RJ45-Webserver-/111242798349

Mit einem DHT22 benutze ich einen als Sensor und steuere darüber einen FHT-8v in dem Raum an. Als Fensterkontakt reicht ein Reedkontakt z.B: http://ehomeportal.de/Funk-System-FS20/Heizung-regeln/Ein-Aufbau-Alarmkontakt-weiss.htm?shop=shop&SessionId=&a=article&ProdNr=68-398-83&t=1597&c=1621&p=1621

Dann lese ich noch peer Reedkontakt den Gaszähler aus. Wobei ich mangels Programmierkenntnisse 2 Arduinos benutze, auf dem einen läuft Firmata für Fenster und Gaszähler und auf dem anderen was selbstgefrickeltes für den DHT22, den ich per at Befehl alle 5min abfrage.

Einen dritten Arduino mit Webinterface nutze ich um meinen Hifiverstärker per RS232 zu steueren, aber da bin ich noch am Anfang.
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

Dr. Boris Neubert

Zitat von: ntruchsess am 16 September 2014, 10:42:07
Ich hab einen Mini-pro aus China von eBay, da war der Bootloader schon drauf.

OK, danke, Norbert. Die Teile werden mal in einer 5V- und mal in einer 3,3V-Ausführung angeboten. Entsprechend sind die Quarze auf hohe oder niedrige Taktfrequenz ausgelegt.

Ich beabsichtige, den Arduino mit einem ENC28J60-Modul in 3,3V-Ausführung mit Deiner Ethernet-Library zu betreiben, und ich will nicht zwei Spannungsversorgungen benötigen sondern nur 3,3V. Genügt dafür der niedrige Takt (8 MHz)? Dann bestelle ich mir die Boards in 3,3V-Ausführung. Sonst muss ich entweder noch einen Schaltregler spendieren oder die Spannungsdifferenz zu 5V an einem Längsregler verheizen.

Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

ntruchsess

8Mhz reichen grundsätzlich mal, geht natürlich etwas auf den Durchsatz (der SPI-Bus wird damit ja auch langsamer) (aber Du wirst eh kein Video streamen wollen ;-)). Wie stabil das läuft kann ich Dir nicht sagen, auf dem Mini-Pro ist ja auch nur ein SMD-Längsregler der für 150mA spezifiziert ist. Die sollten für den ENC28J60 knapp reichen. Die durchschnittliche Stromaufnahme des ENC28J60 ist ja niedriger, bei meinen Versuchen mit dem 3,3V Ausgang auf den 5V Arduino Nanos liefs jedenfalls solange man nicht gleichzeitig über die USB-Schnittstelle kommunizieren wollte. Die Versorgungsspannung sollte halt schon nah an den 3,3V dran sein, damit der Regler nicht überhitzt. Und die Ausgänge sollten auch nur hochohmige Lasten treiben, damit der Strom tatsächlich fürs Ethernet reserviert bleibt.

Gruß,

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

Dr. Boris Neubert

Danke für die Auskünfte.

Ich sehe auf https://www.sparkfun.com/products/11114, dass der originale Arduino Pro Mini 328 in der 3,3V-Ausführung einen Lötpunkt (SJ1) besitzt, wo direkt 3,3V unter Umgehung des Reglers eingespeist werden können.

Ich werde dann mal mein Glück versuchen und ein paar Chips in der Knabbertüte bestellen  ;)

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

ntruchsess

übrigens: hier ist beschrieben, wie man den Mini auch direkt per Hardware-programmer flashen kann (falls man sich z.B. mal den Bootloader zerschießt, oder den Speicherplatz des selbigen andersweitig nutzen möchte).

Gruß,

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