Mikrocontroller Startseite >> [AVR Webserver] >> [ISA Ctrl] [EasyTWI-2] [Etherrape] [NGW100] >> Grundlagen Internet zu Hause über DSLDemo Server


EasyTWI ein AVR Webserver in BASCOM

AVR Webserver EasyTWI von MCS Electronics

Die Teile werden von MCS Electronics vertrieben und können Online bestellt werden. Ich habe, mit Stand März 2007, für das NM7010A Modul 26,95 Euro, das Adapterboard für das NM7010A 5,95 Euro und für die EasyTWI Platine 9,95 Euro bezahlt. Dazu kommen dann noch paar Bauteile. Ich habe die Platine mit einem ATmega32 bestückt, aber es sind auch andere Prozessoren möglich (ATmege8, ATmege48, ATmege88, ATmege168, ATmega644,...).

Der EasyTWI AVR Webserver von MCS Electronics war der einzige Webserver der auf Anhieb funktioniert hat. Also zusammengelötet Beispiel Software drauf und ging. Die Dokumentation ist zwar wie bei allen anderen Projekten unter aller ah Würde, aber zum Einen kann bei der Ansteuerung über die TWI (I2C) Schnittstelle nicht viel schief gehen. Und, obwohl ich Basic nicht wirklich gut finde hat es einen Riesenvorteil. Der Quellcode geht praktisch auf eine Seite, was ihn auch ohne Dokumentation überschaubar und selbst erklärend macht.

Das EasyTWI Board mit ATmege32 ohne NM7010A hat bei mir eine Stromaufnahme von ca. 55mA und mit Netzwerkmodul NM7010A betrug der Stromverbrauch ca. 80mA mit angeschlossenem Netzwerkkabel erhöhte sich diese auf ca. 150mA. Mit einem 9V Steckernetzteil ergibt sich eine Leistungsaufnahme von ca. 1,5 Watt.

Das EasyTWI und das NM7010A werden von MCS Elektronics www.mcselec.com vertrieben.

Mehr Bilder kann man sich hier ansehen. Wie man auf dem Bild sehen kann, besitzt das EasyTWI Borad ein Patchfeld mit dem man einfach die entsprechenden Verbindungen herstellen kann. Auf dem Bild sieht man auch, dass ich den 28poligen Sockel für dem ATmega8 nicht bestückt habe. Da an dem ATmega8 Sockel aber auch parallel die Pins des ATmega32 anliegen, so wie Masse und Versorgungsspannung, habe ich ihn für die 1wire Schnittstelle missbraucht.

Das EasyTWI Borad besitzt eine Schnittstelle für ein LCD Display, wie sie auch viele andere Systeme benutzen, wie das STK200, die SPS-Ctrl, die AVR-Ctrl und ich denke noch jede Menge andere. Damit ist es einfach möglich ein LCD Display an zu stecken und zu betreiben. Damit kann man sich sehr gut Status Informationen ausgeben, die bei der Fehler suche sehr hilfreich sind.

Beim ersten Versuch habe ich in der oberen Zeile ein paar Status Informationen und die aktuelle Temperatur und in der unteren Zeile die IP von der aus auf den Server zugegriffen wurde ausgegeben.

Im ersten Versuch wollte ich meine Außentemperatur im Internet zugänglich machen. Ich will mit dem Mikrocontroller keinen Webserver nach empfinden, sondern ihn nur die nötigste Arbeit machen lassen um mein Ziel zu erreichen. Den Mikrocontroller brauche ich um die Kosten im Dauerbetrieb, sprich den Stromverbrauch, gering zu halten. Ich will also nur die Daten, die "schöne Seite" baue ich auf meinem "richtigen" Webspace.

Dazu habe ich die Bascom Beispielsoftware auf das nötige Minimum abgespeckt und frage so die Daten, sprich die Temperatur in Pirna, über einen Cronjob, in PHP, alle 15 Minuten ab und speichere die Daten in eine MySQL Datenbank. Das ganze kann man sich hier anschauen.

Erster Test mit BASCOM Software

DownloadDownload >>> mehr >>>

Ich habe eines der Beispielprogramme auf ein Minimum zusammen gestrichen, so dass es sich auch mit der Demo Version des BASCOM übersetzen lässt. Damit ist ein Erster Test möglich. In dem Beispiel hat der Webserver die IP-Adresse 192.168.0.200. Als erstes sollte man ein DOS oder Eingabefenster aufmachen und mit dem Kommandozeilembefehl PING 192.168.0.200 testen ob das Netzwerk funktioniert. Im nächsten Schritt gibt man im Internetexplorer die IP ein und eine Seite sollte angezeigt werden. Wichtig ist, das man sich dabei im selben Netzwerk befindet, d.h. der eigene Rechner muss eine Adresse in der Form 192.168.0.??? haben.

$regfile = "m32def.dat"

$crystal = 14318000
$baud = 19200
$hwstack = 64
$swstack = 64
$framesize = 200

Const Sock_stream = $01
Const Sock_dgram = $02
Const Sock_ipl_raw = $03
Const Sock_macl_raw = $04
Const Sel_control = 0
Const Sel_send = 1
Const Sel_recv = 2

Const Sock_closed = $00
Const Sock_arp = $01
Const Sock_listen = $02
Const Sock_synsent = $03
Const Sock_synsent_ack = $04
Const Sock_synrecv = $05
Const Sock_established = $06
Const Sock_close_wait = $07
Const Sock_last_ack = $08
Const Sock_fin_wait1 = $09
Const Sock_fin_wait2 = $0a
Const Sock_closing = $0b
Const Sock_time_wait = $0c
Const Sock_reset = $0d
Const Sock_init = $0e
Const Sock_udp = $0f
Const Sock_raw = $10

Enable Interrupts
Config Tcpip = Int0, Mac = 12.128.12.34.56.78, Ip = 192.168.0.200, Submask = 255.255.255.0,_
       Gateway = 0.0.0.0, Localport = 1000, Tx = $55, Rx = $55, Twi = &H80, Clock = 400000

Waitms 200
Print "MSC EasyTWI"

Dim Tempw As Word
Dim S As String * 140 , Sheader As String * 30
Dim Buf(120) As Byte At S Overlay
Dim I As Byte , Bcmd As Byte
Dim Wsize As Word

I = 0
Do
  Tempw = Socketstat(i , 0)
  Select Case Tempw
   Case Sock_established
    Print "sock_est"
    Tempw = Socketstat(i , Sel_recv)
    If Tempw > 0 Then
      Bcmd = 0
      Do
        Tempw = Tcpread(i , S)
        If Left(s , 3) = "GET" Then
          Bcmd = 1
        End If
      Loop Until S = ""
      If Bcmd = 1 Then
        S = "<html><head></head>"_
          + "<body style='border:2px solid #000000;background-color:#C0C0C0;'>"_
          + "MCS EasyTWI Webserver</body></html>"
        Wsize = Len(s)
        Sheader = "Content-Length: " + Str(wsize) + "{013}{010}"
        Tempw = Tcpwrite(i , "HTTP/1.0 200 OK{013}{010}")
        Tempw = Tcpwritestr(i , Sheader , 255)
        Tempw = Tcpwrite(i , S , Wsize)
      End If
      Closesocket I
    End If
    Closesocket I
   Case Sock_close_wait
    Closesocket I
   Case Sock_closed
    I = Getsocket(0 , Sock_stream , 80 , 0)
    Socketlisten I
  End Select
Loop
End

Hier gibts die Software für den Webserver zur Temperaturmessung >>>


[Impressum] [Kontakt] [Links] [Home]
© 04.12.2007 Hans-Jürgen Jacob (Pirna)