DTMF – LAN Fernsteuerung, 12 OUT / 4 ADC

Projekt ‘AVR-Net-IO’ – Fernsteuerung via DTMF und Ethernet / Hamnet

1. AVR-Net-IO von Pollin:

Ethernet-Platine mit ATMega32 und Netzwerkcontroller ENC28J60. Die originale Platine verfügt über 8 digitale Ausgänge, 4 digitale und 4 ADC-Eingänge, welche alle über einen Netzwerkanschluss (TCP/IP) abgerufen bzw. geschaltet werden können.

Die Platine verfügt zudem über alle benötigten Komponenten, wie Netzwerkbuchse, Netzwerkcontroller und ISP-Schnittstelle um auch eigene Projekte kostengünstig, schnell und einfach entwickeln und verwirklichen zu können.

Auf der Internetseite von Pollin http://www.pollin.de findet man das Fertigmodul bzw. den Bausatz. In der Suchleiste einfach nach “avr net io” suchen.

AVR_NetIO

3. Doku/Schaltplan & Software GPL, die als Vorlage zur DTMF-Erweiterung diente (ohne Passwordschutz!):

http://www.schorsch.at/de/technik/funk/30-erweiterungsmodul-fvr-net-io.html und http://www.schorsch.at/de/technik/funk/39-avr-net-io.html

.4. Passwordschutz für LAN / HamNet und DTMF Zugang

Simon IW3BWH hat nun den Passwortschutz sowohl auf das Netzwerk als auch auf die DTMF-Steuerung integriert. Weiters hat die Fernsteuerung nun 12 digitale Ausgänge und 4 ADC Eingänge (2 für Spannungen und 2 für Temperaturen). Die Software kann natürlich nach Belieben angepasst werden. Es wurde mittlererweile die neueste Version geladen, da die vorige ein Problem bei Fehlen des Netzwerkes hatte: die Relais fielen jede 20 min. ab und kurz danach wieder an aufgrund des internen watchdogs. IW3BWH hat den Fehler behoben. Sie läuft nun äußerst zuverlässig, auch häufiges ein- und ausschalten können ihr nix anhaben. WICHTIG: Hardwareänderungen unter Punkt 5) beachten!

netio_webserver_v.1.5.10-frei

5) Hardwaränderungen:

Es sollten unbeding folgende Hardwareänderungen auf der originalen Platine von Pollin durchgeführt werden. Das führt zu einer 100 % stabilen Fernsteuerung!

  1. Kondensator zu 10 uF zwischen Versorgungsspannung 3,3 V (Ausgang vom LM317) und Masse löten;
  2. Kondensator zu 100 nF zwischen Versorgungsspannung 3,3 V (Ausgang vom LM317) und Masse löten;
  3. Sollte die Platine mit 12 V gespeist werden, empfiehlt es sich, den Spannungsregler LM7805 für die 5 V Versorgung der Platine und der Relais mit einm Switching-Modul zu wechseln. Ein geeignetes Modul für die Speisung von Fernsteuerung, DTMF-Dekoder und Relais wäre z.B. jenes, das auf der DRC Bastelecke vorgestellt wurde und 1,5 A Strom liefert.

6) Programmieren des AVR Net IO von Pollin:

Programmieradapter: Zuallererst sollte man sich einen Progammieradapter besorgen. Ich habe mir den “MySmartUSB light” von https://shop.myavr.de zugelegt. Er ist kostengünstig. Auf dieser Seite wird auch der Treiber zur Verfügung gestellt und genau beschrieben, wie die Installation unter “Atmel Studio 7”, der Programmiersoftware, zu erfolgen hat. Da der Net AVR IO einen 10 poligen Wannenstecker zur Programmierung verwendet, der Programmieradapter jedoch mit einem 6 poligen geliefert wird, kann man entweder selbst einen 10 poligen Wannenstecker an das 6 polige Flatkabel anbringen (Schaltplan bzw. Pinbelegung beachten!) oder den Adapter “ISP Connect Kit 10 / 6polig” gleich dazubestellen.

Programmiersoftware: Um den AVR Net IO zu programmieren, bedarf es auch der Software “Atmel Studio 6” oder einer anderne gleichwertigne Software. Atmel Studio 6 kann direkt von der Homepage von Atmel https://www.atmel.com kostenlos heruntergeladen werden. Um das Programm “netio_webserver” zu bearbeiten, muss es vorher in das Atmel Studio geladen werden. Dazu unter dem Menüpunkt “File” => “Open Project” die entpackte Projekt-Datei (netio_webserver.atsln) im vorher gespeicherten Ordner (netio_webserver) anklicken. Im Fenster rechts dann die folgenden Dateien für die nötige Personalisierung anklicken und ändern:

  • 1. config.h
    • //IP des Webservers und des Routers (ACHTUNG: Zahlen durch BEISTRICH trennen, nicht durch Punkt!)
    • //Netzwerkmaske (ACHTUNG: Zahlen durch BEISTRICH trennen, nicht durch Punkt!)
    • //MAC Adresse des Webservers (MAC Adresse befindet sich bei Ankauf des Bausatzes bei Pollin auf dem Aufkleber auf dem Prozessor)
    • //AUTH String “USERNAME:PASSWORT” max 14 Zeichen für Username:Passwort
    • // Portsteuerung über DTMF möglich (Passwordeingabe in den 4 Zeilen (DTMF_DEFAULTPASSWORD_x”)
    • //EIN/AUSGÄNGE INVERTIEREN (normal auf “0”, zum invertieren auf “1” setzen)
  • 2. dtmfin.c
    • // Set number of channels //
  • 3. httpd.c
    • // ADC1, ADC2, ADC3 und ADC4 Umrechnung für Temperatur, Ladestrom, Verbraucherstrom der 4 ADC Konverter
  • 4. webpage.h
    • Beschreibung Fernsteuerung / Standort bearbeiten (Control System – Zugspitze DB0ZU)
    • Beschreibung der 12 Kanäle bearbeiten (01 Kanal A, 02 Kanal B usw.)
    • Beschreibung der 4 ADC Wandler bearbeiten (Innentemperatur, Außentemperatur, Ladestrom, Spannung usw.)
  • Nach der Bearbeitung:
    • alles speichern (File => Save All),
    • kompilieren (Build => Build netio_webserver),
    • etwas abwarten und Fehlermeldungen kontrollieren (es sollte „0 Errors“ sein)
    • Programmiertool einstecken (z.B. „MySmartUsb light“, ev. Treiber nach Anweisung des Herstellers installieren, dann hinzufügen (Tools => Add target … => Select tool => STK500 => Select Serial Port => Apply)
    • Programmierfenster öffenen (Tools => Device Programming)
    • „Tool“ auswählen (STK500) und Apply klicken, es müsste der erkannte uP erscheinen.
    • „Fuses“ anklicken, die Werte sollten folgende sein: HIGH = 0xCA, LOW = 0x3F Falls nicht, ändern und „Program“ klicken
    • „Lock bits“ anklicken, der Wert sollte folgender sein: LOCKBIT = 0xFF Falls nicht, ändern und „Program“ klicken
    • „Production file“ anklicken, Program device from ELF productionfile aus dem Unterordner DEBUG auswählen: „netio_webserver.elf“
    • „Flash“, „Earse memory before programming“ und „Verify programmed content” aktivieren
    • „Program“ anklicken
  • Fertig: Programmierstecker abstecken und Programm beenden

7) Beschreibung zur Software “netio_webserver”:

Im Konfigurationsfile “config.h” stehen die Daten, um sich über LAN mit dem Modul zu verbinden. Die Webseite kann in “webpage.h” angepasst werden. Bevor alles zusammen kompiliert wird, muss unbedingt darauf geachtet werden, dass die korrekte MAC-Adresse mit angegeben wurde (siehe Anleitung Punkt 6)!

Unsere DTMF-Steuerung selbst hat 12 digitale Ausgänge und 4 analoge Eingänge mit einer Auflösung von 10 bit (0 – 5 V).

Sobald die Fernsteuerung auf eine DTMF-Anfrage antwortet, wird nach dem Träger 500 ms zugewartet, bis die Antwort gegeben wird: tief/hoch für 1 und hoch/tief für 0. Bei Eingabe eines falschen DTMF-Passwortes wird keine Antwort gegeben!

Die gesamte DTMF Folge ist folgendermaßen konfiguriert:

* 1234 # 01 0

  • * = obbligatorisches Anfangszeichen
  • 1234 = vierstelliges numerisches Password
  • # = obbligatorisches Trennungszeichen
  • 01 = Nummer des zu schaltenden Kanals (immer zweistellig eingeben!)
  • 0 = Schaltzustand (0 = abschalten, 1 = einschalten, A = Abfrage, D = Impuls 10 s)

Statt 01 0 (letzten drei Zahlen) kann auch folgende Funktion bedient werden:

  • 998 = Software Reset des uP, aber nicht Neustart des ENC28J60 Lan Interface IC

Die Belegung der DB25-Schnittstelle ist wie folgt (Pin-Nummer, Beschreibung):

1: NC, 2: Out 01, 3: Out 02, 4: Out 03, 5: Out 04, 6: Out 05, 7: Out 06, 8: Out 07, 9: Out 08, 10: Out 09, 11: Out 10, 12: Out 11, 13: Out 12, 14: NC, 15: + 5 V output, 16: –, 17: NC, 18–25: GND

Die analogen Eingänge befinden sich an der Schraubklemme, die entsprechend beschriftet ist (Achtung: max. +5V !!): ADC1 In 1 ADC2 In 2 ADC3 In 3 ADC4 In 4. Für ADC1 und 2 sind lineare Temperatursonden MCP9700 vorgesehen, für ADC3 und 4 zwei Gleichspannungseingänge bis 50 V über einen Widerstandsteiler (10 kohm in Serie, 1 kohm gegen GND).

Die Verbindungen an einen externen DTMF-IC befinden sich an einem 2 x 5 poligen Anschluss (“EXT”):

1: (PD2) Ausgabe Sekundenimpuls für eventuellen externen watchdog
2: (PD3) StD pin (NetIO Input)
3: (PD4) Q1 pin (NetIO Input)
4: (PD5) Q2 pin (NetIO Input)
5: (PD6) Q3 pin (NetIO Input)
6: (PD7) Q4 pin (NetIO Input)
7: (PB0) PTT zum Widerstand der zur Basis des NPN-Transistors führt (NetIO Output)
8: (PB3) Bestätigunsbeep (NetIO Output)
9: GND
10: +5V (NetIO +5V)

AvrNetIo-DTMF Interface by Thomas IW3AMQ und Simon IW3BHW (Datei im pdf-Format)

avrnetio_dtmf

Auf Aliexpress gibt es kostengünstig Relaisgruppen zu 4 oder 8 Relais (suche nach “relay module”) und bereits auf einer Platine bestückter DTMF-Dekoder (suche nach “MT8870 decoder”). Einzig der NPN-Transistor mit dem Basiswiderstand wird noch für die PTT-Schaltung verwendet und eventuell ein regelbarer Widerstand für den NF-Pegel zum TX!

Bei Fragen kann Thomas, IW3AMQ unter der e-mail iw3amq@gmail.com kontaktiert werden.