Bascom AVR Webserver Seriell -> ESP8266

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Bascom AVR Webserver Seriell -> ESP8266

      Das waren meine ersten lauffähigen Gehversuche mit einem ESP8266 über UART.
      3 Schalter,3 Ausgänge.
      Wichtig: Baudrate anpassen!
      Ich erinnere mich, dass mein ESP8266-Board oder mein Arduino-Mega bei über der im Quellcode angegebenen Baudrate nur Blödsinn ausgesendet bzw. empfangen hatte.
      Dies macht natürlich eine große Webseite über AT-Befehlen relativ langsam.

      Wichtig zu wissen:
      HTTP-Pakete nicht größer als 1500 Byte (sonst wurden alle folgenden Bytes vom Explorerclient "verschluckt")
      Zudem ist die Paketgröße des ESP ist auch begrenzt, liegt aber über den 1500 Bytes.


      Youtube Kurzvideo Webserver Funksteckdosen

      Das Modul, welches ich als Bild im Anhang habe, ist 5V Kompatibel. Kostet ca. 10 Euro, man hat sich aber die Pegelanpassung gespart.
      Es beherbergt einen esp 07.
      Files

      The post was edited 2 times, last by sk8erboi ().

    • Hallo sk8erboi,

      nachdem Du mir freundlicherweise ein ESP8266-Board zur Verfügung gestellt hast,
      habe ich nun endlich auch die Zeit gefunden, damit herum zu experimentieren.

      Dabei stieß ich auf einen Code im Internet

      -> sites.google.com/site/tsrprojekt/projekte/iot/webserver

      der mir ein ganzes Stück weitergeholfen hat.

      Leider hatte er noch einige Fehler, so dass er nicht gleich einsetzbar war.

      Inzwischen habe ich die Fehler (hoffentlich alle!) entfernt
      und alles Unnötige rausgeworfen,
      so dass er als Demo gut funktioniert.

      Ich denke, dass das für Anfänger (wie ich!) im Bereich des ESP eine gute Hilfe sein kann.
      Darum stelle ich ihn hier ein.

      (Die AVR-Hardware ist an mein AVR-PC-Control angepasst
      -> AVR-PC-Control )

      LG RoBue

      AVR-PC-Control_ESP8266_mini.zip

      Ach so:
      Aus dem Code kann man Port (8080), SSID (MyHomeESP) und Passwort (12345678) entnehmen und ihn abändern.
      Die IP wird auf das LCD ausgegeben (bei mir war 192.168.4.1 eingestellt).

      The post was edited 1 time, last by RoBue ().

    • Liebe Programmierer,
      gibt es hier im Forum welche, die Erfahrungen mit dem ESP und schon auf ihm programmiert haben?

      Kann man den ESP so programmieren (bzw. kann mir da einer helfen?), dass man nicht erst auf eine Anfrage des ESP eine Webseite schickt, sondern ihm einfach eine über die serielle Schnittstelle vom AVR schickt, er diese dann in seinem internen Buffer hält und sie bei Aufruf selbstständig ausgibt? Das geht vermutlich nicht mit den AT-Befehlen (s.o.), sondern da muss man vermutlich ein Programm für den ESP direkt schreiben - oder?

      Möglich wäre sicher auch eine solche Lösung, in der der AVR nur einige Werte an den ESP schickt und der ESP dann daraus eine Webseite macht.

      Wichtig ist für meinen Ansatz, dass der AVR nicht auf den ESP warten muss bzw. ihn ständig abfragen muss.

      Habe schon mal etwas über Tante Goo... herumgesucht, aber noch nichts Entsprechendes gefunden.
      Mir würde sicher ach schon ein Link weiterhelfen.

      Gruß RoBue
    • Die ESP´s sind schon Klasse Teile ;)
      Prinzipiell kannst du mit ihnen alles machen was du mit einem AVR auch kannst, d.h. ohne das du einen AVR verwendest.
      Der einzige Nachteil, es geht nicht mit Bascom.

      Ja es würde gehen, dass dein AVR die Messwerte aufnimmt und seriell an den ESP übergibt. Der würde sie "einlesen", evtl. aufbereiten, und könnte sie dann in Form einer Website ausgeben.
    • RoBue wrote:

      gibt es hier im Forum welche, die Erfahrungen mit dem ESP und schon auf ihm programmiert haben?
      Du findest sehr viel Information und Beispiele zu ESP8266 und besser noch ESP32 im "B4R"-Forum:
      b4x.com/android/forum/#b4r-arduino-esp8266-and-esp32.74
      Die Programmierung ist Visual-Basic (6?) ähnlich, also leicht zu erlernen.
      Man muss vorher die Arduino-IDE sowie die ESP8266 und ESP32 Erweiterungen dazu installiert haben, aber man sieht vom Arduino in der B4R-IDE nichts...
      Ist alles kostenlos.
      Da wird für Web-Anwendungen sehr viel mit "MQTT" gemacht, wobei der ESP sich mit einem MQTT-"Broker" verbindet und zwischen beiden Daten hin-und her geschickt werden können, die man dann auf einer Web-Seite sich anschauen kann.
      Tutorial dazu:
      b4x.com/android/forum/threads/mqtt.65669/
      Aber das ist schon eine andere Welt als Bascom für 'nen ATmega... was ich aber gerne benutze, da Arduino die XMEGAS nicht mag...
    • Hi,
      habe noch etwas am alten Code herumgefeilt,
      bevor ich mich mit rakhors Hilfe an das neue Projekt mache,
      bei dem dann automatisch Werte an das ESP gesendet werden.

      In dem vorliegenden Programm geht es aber noch darum,
      dass der AVR auf Anfrage über das ESP-Modul Daten ausgibt.

      Das erste Codebeispiel macht nichts anderes,
      als dass es die Uhrzeit auf Display und bei Bedarf auf das ESP ausgibt.
      Das lädt ein, eigene Funktionen zu entwickeln und einzubauen.

      AVR-PC-Control_ESP8266.bas

      AVR-PC-Control_ESP8266.jpg

      Das zweite Codebeispiel zeigt dies für die Ausgabe von Temperatur und Luftfeuchte eines HYT-Sensors.
      Dazu wird hier noch geprüft, ob das ESP-Modul auch tatsächlich dranhängt.

      AVR-PC-Control_HYT_ESP8266.bas

      AVR-PC-Control_HYT_ESP8266.jpg

      Ich hatte am Anfang einige Schwierigkeiten mit dem Eingangs-Buffer. Er war im urspünglichen wohl viel zu klein. Ich habe ihn auf 250 Bytes heraufgesetzt und lösche ihn immer wieder. Ich vermute, dass vorher immer wieder Speicher überschrieben wurde und daher das System Aussetzer hatte. Darum gebe ich ihn als Kontrolle auch immer auf das LCD aus.

      Aufruf des ESP:
      192.168.4.1:8080
      Passwort: 12345678

      Nachtrag:
      Ich habe die Geschwindigkeit der seriellen Schnittstelle zu Sicherheit mal auf 19.200 Baud reduziert
      "AT+UART_DEF=19200,8,1,0,0"

      Viel Spaß,
      RoBue

      The post was edited 1 time, last by RoBue ().

    • Jetzt hab ich mir auch mal einen ESP8266 geholt und die Sache ausprobiert.
      Das original von sites.google.com/site/tsrprojekt/projekte/iot/webserver bringt ein Grundgerüst mit, das ich ziemlich überarbeiten musste.
      Vorweg, ich habe den ESP8266-11 verwendet, sehr kompakt mit aufgelöteter Antenne, aber Rastermaß 1,27 mm.

      ESPklein.jpg


      ich habe einen Arduino Nano verwendet mit 16MHz Resonator und die Schnittstelle auf 115.2 kBaud gesetzt, der ESP8266 ist da sehr tolerant. Der AVR leider nicht so.

      Die Angabe $baud = 112000 bringt aber die gewünschte Geschwindigkeit. (empirisch ermittelt)

      Der ESP8266-11 brauchte einen etwas anderen Init
      Die Webseite wird extern erstellt und mit inc im Code eingebunden, das macht die Entwicklung deutlich einfacher, als das anstrengende Einbinden von {34}
      Das Daten-Handling kann nun mehr als 1 Paket, dadurch sind größere Dateien möglich
      Die Webseite hat Grafik, 404 Seite, Favicon und Rückkanal-Buttons mit Eingabefeld.
      Der Timerinterrupt ist jetzt auf 1 Sekunde was eine Uhr einfach macht.
      Die Stackwerte waren viiieeeel zu klein.

      Die Webseite braucht von der Anforderung bis zur Auslieferung fast 10 Sekunden, einfach weil die serielle Schnittstelle mit 115.2 kBaud viel zu langsam ist. Das hat ja gerade etwa I2C Standard-Geschwindigkeit. Hier wäre SPI besser.

      Zu tun wäre noch ein besseres Handling der Pakete bei Mehrfachanfragen. So ein Browser ballert gerne mehrere Anfragen ab, sobald ein entsprechender Link auftaucht.
      Traffic und damit Ladezeit würde auch ein Cachen der Daten sparen, das ging früher mal, ich finde es nur gerade nicht ;)

      Im Anhang die Dateien für den Webserver und die Bascom-Datei.

      Aufbau.jpg
      Files
      • ESP8266.zip

        (26.48 kB, downloaded 36 times, last: )