AVR-NET-IO und IPS

Hallo heute möchte ich Euch meine Variante des AVR-NET-IO vorstellen.

Was braucht man:

  • AVR-NET-IO oder vergleichbares Modul mit einen ATMEGA 32 Prozessor.
  • AVR-Entwickulungsumgebung (z.B. AVR Studio 4) bzw. AVR-Programmiersoftware
  • ISP Programmiergerät
  • Source-Code --> siehe Anhang
    und naürlich IPS V2.

Der Source-Code stammt von Ulrich Radig (Elektronik, Mikroelektronik, Computer - UlrichRadig.de) ist Open Source und wurde folgendermassen an IPS angepasst:

  • Es wurden (aus Platzgründen) diverse Programmteile wie NTP-Client, Mail-Client, Kamerasteuerung usw entfernt bzw. stillgelegt.
  • Der Befehlssatz für die Telnet bzw. USART-Schnittstelle wurde abgeändert in reine Zahlenbefehle.
    z.B.: „02 25 00 03“
    • 02 --> Starzeichen STX
    • 25 --> Befehl zum Einschalten eines Ausgangs
    • 00 --> Ausgang 0
    • 03 --> Endezeichen ETX
    • Trennzeichen zwischen den Parametern ist jeweils ein Leerzeichen
  • Die Eingänge melden automatisch Zustandsänderungen an IPS.
  • Der Aufbau der Webseite wurde angepasst
    • Anzeige der Zustände aller Eingänge und Ausgänge
    • Konfiguration des Moduls (MAC-Adresse, IP-Adresse, Netmask,Gateway-IP …)

AVR-NET-IO und IPS_SourceCode_AVR_Studio_4.zip (376 KB)

AVR-NET-IO und IPS_SourceCode_Win_AVR.zip (511 KB)

Das Modul wird folgendermassen mit IPS verbunden:

  • Client Socket (IP-Adresse des Moduls, Port 23)
  • Cutter (erkennt STX und ETX)
  • Registervariable

Scripte:

  • Keep_alive
  • Dient der Überwachung der Telnetverbindung zum Modul
  • Wird durch einen Script-Timer alle 65 Sekunden gestartet
  • Das AVR-Modul sendet alle 60 Sekunden eine „Keep-alive“ Meldung, die den Script-Timer wieder auf 65 Sekunden setzt.
  • Abgleich
  • Wird gestartet, wenn die Verbindung zum Modul unterbrochen war.
  • Abfragen der Eingangszuständen und Anpassen der IPS-Variablen für die Eingänge
  • Abfragen der IPS-Variablen für die Ausgänge und Anpassen der Ausgänge des AVR-Moduls
  • Übernahme
  • Übernahme der Meldungen des Moduls von der Registervariable
  • Anpassen der IPS-Zustandsvariablen
  • Weiterleitung einer Zustandsänderung der IPS-Variablen für die Ausgänge an das AVR-Modul
  • Include
  • Gemeinsame Funktionen und Einstellungen

In der angehängten ZIP-Datei findet Ihr:

  • Eine Präsentation über das Modul (wer in Nidda war, kennt sie schon)
  • Eine detailierte Anleitung zum Einbinden der Scripte
  • Beschreibung der Befehle zwischen IPS und AVR-Modul
  • Liste der Speicherbelegung des EEPROM
  • Portbelegung des AVR-Moduls
  • Sowie die Scripte selbst

Hinweis:
Bitte unbedingt die Reihenfolge der Installationsschritte in der Beschreibung (AVR-NET-IO und IPS.PDF) beachten, da die Scripte automatisch Variablen und Script-Timer anlegen !!!

AVR-NET-IO und IPS.zip (777 KB)

Hallo Ernst,
super gemachte Anleitung.

Du hast die nötigen Schritte echt gut erklärt.
Respekt.

Gehört sicher zu den besten Anleitungen, die ich hier gesehen habe und in die Doku als Beispiel.

Vielen Dank!!

Gruß Helmut

Hallo Helmut,

danke für das Lob. Ich habe Beruflich und Privat oft genug mit nicht ganz so gelungenen Anleitungen „gekämpft“.
Da versucht man es halt besser zu machen.

Guten Morgen Ernst,
nachdem ich gestern deinen wirklich gut und gründlich vorbereiteten Vortrag in Nidda gehört habe, werde ich mal dein Projekt nach und nach bei mir verwirklichen.
Nochmals besten Dank für den Vortrag und die Dateien, das war und ist wirklich eine gute Ergänzung zu IPS.

Hallo EHB,

hast Du echt super gemacht. Ich war auch schon längern an der AVR NET IO Einbindung über die Software von Ulli und RoBue dran. Gestört hat mich aber immer, dass ich über HTTP nur lesen und nicht schreiben konnte. Da musste ich dann auf Telnet gegen und mit den Sockets in IPS hat mir das nicht gefallen. Ich bin jetzt bei Ethersex (Ethersex - zerties.org) gelandet und nur noch begeistert. Die Kommunikation läuft uber HTTP oder netcat bidirektional! Das Ding, kann bereits 1Wire, RFM12 und vieles mehr. Einen Wert aus dem DS18S20 lesen geht einfach so:

<?
/*
File     : AVR_read.php
Trigger  :
Interval :
*/

  // Adresse des AVR NET IO = 192.168.178.225
  // ECMD Befehl um aus dem DS18S20 einen Wert zu lesen = ecmd?1w+get
  // 1Wire Adresse des DS18S20 = 101a5da9010800f1

  $ecmd = "http://192.168.178.225/ecmd?1w+get+101a5da9010800f1";
   
  $fh = fopen($ecmd, 'r');
  $Temperaturwert = fgets($fh, 2000);
  fclose($fh);

  echo $Temperaturwert;

?>

Ethersex kann Heute schon viel mehr als die Software von Ulli. So werden die 1Wire-Sensoren automatisch gefunden. Auch das mit der Entwicklungsumgebung ist mit der Live-CD super gemacht. Da muss man kein Linux-Crack sein.

Das ganze soll Deine Super Arbeit nicht schmälern. Die Truppe um Ethersex macht das schon seit einem Jahr und die scheinen ein paar Profis dabei zu haben.

Gruss Icey

Hallo Icey,

Ethersex hatte ich auch schon getestet. Ein gutes, mächtiges Projekt. Ein grosses Problem ist aber die Dokumentation. Unübersichtlich, bzw. nur Bruchstückhaft vorhanden. Das Generieren der Hex-Files dagegen ist sehr gut gelöst.
Meine Auswahl fiel auf Ulli’s Software, da sich diese leichter an meine Bedürfnisse anpassen lässt. Wichtigster Punkt (für mich) ist, dass das Modul eigenständig Zustandsänderungen zeitnah an IPS meldet, ohne dass ich dauernd die Werte abfragen muss.

Hallo EHB,

klasse Arbeit mit sauberer Doku!!! Kompliment!!!

Wollte gleich mal mein AVR mit deiner Firmware programmieren, aber unter WINAVR bekomme ich beim „Make All“ die Fehlermeldung das die Datei „Webserver_Mega644.map“ fehlt. Hast du diese in deinem Packet vergessen?
Kann ich die File auch vom Radig´s Projekt 1:1 übernehmen?

Grüße
andrge

Hallo andrge,

Sorry bei der Zusammenstellung des Sourcecodes ist was schiefgelaufen!

Der Original Sourcecode (von Ulrich Radig) war mit Win-AVR erstellt. Berabeitet und angepasst hab ich ihn aber mit AVR-Studio 4.

Oben im 1. Beitrag findest Du jetzt eigene Versionen für :

  • Win-AVR (mit angepasstem Projekt- und Make-File)
  • AVR-Studio 4

Beide Versionen sind angepasst an den AVR-NET-IO mit einem ATMega32.

Hallo EHB,

vielen Dank. Werds gleich mal testen.

Grüße
Andrge

Hallo EHB,

nun hat alles geklappt! Danke für den schnellen Support!

…wenn jetzt noch 1-Wire drin wäre…:wink:

Ciao
Andrge

Hallo Andrge,

gern geschehen.

Zum Thema 1Wire schau doch mal hier:

AVR für wenig Geld im LAN - Mikrocontroller.net

Schau dir mal die Sourcen an: „AVR-NET-IO_RoBue_1.5-final_hoffentlich_.zip“

Da scheint einiges in Sachen 1Wire zu funktionieren.

Gundlage von RoBue’s Version sind ebenfalls die Radig-Sourcen.

Hallo EHB,

ich habe versucht, die Software mit AVR-Studio zu flashen, aber ich kann das Web-Interface nicht erreichen. Vor dem Flashen hab ich die IP-Adresse in der config.h noch an mein Netzwerk angepasst. Danach nochmal neu kompiliert.
Es reicht doch, das „AVR_NET_IO.hex“ zu flashen, oder? Den Jumper hab ich auch auf „prog“ gesetzt, aber irgendwas passt da nicht.
Hast Du ne Idee?

Hallo dfhome,

der Jumper „prog“ … ist ohne Funktion. Er wird nur von der Pollin Software verwendet --> Flashen per serielle Schnittstelle.

Es reicht eigentlich das kompilierte Hex-File.

Hast Du die Fuses-Einstellungen des Prozessors kontrolliert?

siehe AVR Net-IO Bausatz von Pollin - Mikrocontroller.net

Stromversorgung OK ? / 3.3 V stabil? - der ENC braucht mindestens 200 mA!

Hallo Ernst,

die FuseBits sind so gesetzt:
High: 0xC2
Low: 0xCF

Es muss doch reichen, einfach die 192.168.0.90 im Browser einzugeben, um das Webinterface anzusprechen?
Gibt es sonst noch eine Möglichkeit, die Kommunikation zu überprüfen? Telnet bspw.?

Hallo dfhome.

die genauen Werte für High + Low-Byte muss ich später Zuhause nachschauen.

Testmöglichkeiten :

  • Das Modul antwortet auf einen Ping ? ?
  • Kannst das Modul per Telnet ansprechen (Hyperterminal, …) ?
  • Die Telnet-Meldungen sind Zahlenbefehle (siehe meine Doku) - keine Textbefehle wie im Originalcode von Ulli.

Hallo dfhome,

hier die Fuse-Bits für einen AVR-Mega 32, 16 MHz, ohne Bootloader:

h-fuse = CF
l-fuse = FF

Hallo Ernst,

Antwort auf Ping ist nicht, Hyperterminal schweigt auch…
Nun ist aber eh erstmal Zwangspause bis nächste Woche, da ich das FuseBit für die Clock auf ext. Osz. gesetzt habe - nun läuft die Kiste nicht mehr an. Muss bis nächste Woche warten und in der Firma nen Funkt.generator ranhängen… :frowning:
Oder hat jemand so nen gebastelten AVR-Preserver zum Ausleihen per Post?

Danke Dir trotzdem für die Hilfe, auch wenn ich nicht weiß, woran es liegt…

Zitat: [i]Hallo [i]Ernst,

Antwort …
…Muss bis nächste Woche warten und in der Firma nen Funkt.generator ranhängen… :frowning:
Oder hat jemand so nen gebastelten AVR-Preserver zum Ausleihen per Post?

Danke Dir trotzdem für die Hilfe, auch wenn ich nicht weiß, woran es liegt…[/i]

Mach mal irgendeinen Quarz ran, dann kannst du ihn auch wieder programmieren.
Ich habson hochvoltprogrammierer, aber du wirst ihn nicht brauchen!
Gruß Helmut

Hallo dfhome,

setze die von mir genannten Fuse-Bits und es müsste gehen !

Diese Werte habe ich vorhin aus meinem lauffähigen Testmodul ausgelesen.