Bascom AVR Webserver Seriell -> ESP8266

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • 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.
      Dateien

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von 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).

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von 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 schrieb:

      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

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von 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
      Dateien
      • ESP8266.zip

        (26,48 kB, 142 mal heruntergeladen, zuletzt: )
    • Ich greife nun das Thema erneut auf und habe zwei Tage daran gearbeitet. Da bei mir die Verwendung von MQTT ansteht,
      habe ich mir ein Wemosmega gekauft (Arduino Mega inkl ESP) und die ersten Unterprogramme getestet. Sobald ich wieder Zeit habe, arbeite ich daran weiter. Vielleicht kann Jemand etwas damit anfangen.
      Was bisher funktioniert:
      Email via Pushinbox, (Port80 muss Zugang zum WWW haben OHNE SSL,TLS)
      AT-Commandos über HTML-Seite,
      Auslesen des EEPROMS in HEX oder ASCII,
      Download eines CSV-Files (Im Beispiel der Inhalt des EEPROMS)
      Anzeige eines Graphen (Fuer die Funktion wird Google charts genutzt. Der anfragende Browser muss Zugang zum WWW haben.)

      Geflasht wird der ESP mit aktueller SDK fuer AT-Commands
      Dateien

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von sk8erboi ()

    • Hallo,

      für eine Datenübertragung UART <-> UART suche ich noch ein Modul.
      Bisher bin ich auf folgende Module gestoßen: HC-08, HC-12, JDY-31, JDY-23.

      Unterm Warenkorb wurde mir dann der ESP8266 vorgeschlagen.
      1. nochmal billiger und 2. funkt er im WLAN Netz.

      Ist der ESP8266 für mein Vorhaben geeignet?

      Ich finde zwar Beispiele, wo zwei ESP's miteinander kommunizieren, aber meistens haben beide jeweils ein Programm drauf.
      Ich will aber nur die UART Schnittstelle beider Module miteinander koppeln.
      Ich werde daraus nicht schlau.
    • Hallo @Simon1234

      Die Frage, ob der ESP8266 für dein Vorhaben geeignet ist, ist viel zu kurz gedacht.

      Was ist denn dein Vorhaben genau?

      Grundsätzlich kann man mit allen angegebenen Modulen eine Verbindung herstellen. Ginge auch mit einem RFM12 oder verwandten.

      Alle haben aber Vor- und Nachteile und sind unterschiedlich kompliziert in der Einbindung.

      Was willst du denn übertragen?
      Über welche Entfernung?
      Sind das nur kurze Befehle oder größere Mengen an Daten?

      Wie ist dein Können bezüglich der unterschiedlichen Ansteuerung?

      Auch sollte man darüber nachdenken, ob die Spannung von diesen Modulen mit der gewünschten zu vereinbaren ist.
      Ob die Größen ok sind, Stromverbrauch etc.

      Ich persönlich halte von den ESP8266 nicht sonderlich viel, da sie bei jeder Möglichleit nach hause telefonieren.
      Da ist ein Bluetouth-Modul schon anonymer.

      Wenn jetzt nur AVR zu AVR via UART zu verbinden ist, kann man auch solche ISAM-Module nehmen, ähnlich dem HC08, der sendet allerding über isam-Band und nicht über 2,4GHz wie Bluetouth. Damit erreicht man mehr Reichweite als mit Bluetouth und man ist anonym. Ansteuerung mit AT-Kommandos.
      Man sollte sich aber ein Protokoll überlegen und die Daten je nach Sensibilität nicht in Klartext übertragen.

      Vielleicht machst du einfach mal für dich ne Tabelle mit den Eigenschaften und wählst dann das für dich beste aus.
    • Hallo @Mitch64,

      es geht darum, Daten per RS485 an vier Wechselrichtern abzurufen und auf deinem Display anzuzeigen.
      Da ModbusTCP mit Basic weg fällt, muss es wohl RTU werden.

      Stringlänge beträgt ca. jeweils 64 Zeichen, die dann zerlegt werden müssen.
      Die Daten werden vlt. höchstens jede Minute abgerufen, wenn überhaupt.
      Reichweite ist ca. 10m nach draußen.

      Naja, meistens werden TTL Pegeln mit 3,3V verlangt, aber sollte kein Problem darstellen.

      Zu den ISAM Modulen hab ich nichts finden können. Hast du da zufällig ein Link?

      Bei den von mir oben genannten Modulen ist wohl nur das HC-12 geeignet. Ich muss die BT-Module ja scheinbar jedesmal miteinander koppeln?
      Weil an den Wechselrichtern selbst brauch ich ja prinzipiell kein µC, bzw. hab ich kein vorgesehen.

      Ansonsten gibts noch die Module, sind aber etwas übertrieben: aliexpress.com/item/1005004100763331.html
    • Hallo @Simon1234

      Das Modul, das ich meinte, ist das HC12.
      Es hat eine kleine Spiralantenne, sendet im 433MHz Band (ISAM) und hat eine Reichweite bis angeblich 1800m.

      Hier ein Link.

      Es ist mit AT-Kommandos steuerbar.
      Man muss sich nur drum kümmern was wegzuschicken ist.

      Für eine Verbindung braucht man 2 Stück.

      Die Module findet man bei den üblichen Anbietern wie ebay, amazon etc.
      Ich hatte diese Dinger mal für ein Tor-Steuer-Projekt verwendet.

      Die Reichweite mit den kleinen Spiralantennen ist mehr als ausreichend. 10m durch ne Wand war 0 Problem.
      Man muss sich um kein Protokoll kümmern, das macht der Controller auf den Modulen.
      Die Verbindung war immer stabil.