Hallo,
ich möchte mittels ATmega einen einfachen HTTP-Request über WLAN
verschicken (alle 5 min).
Gibts für den ESP8266 irgendwo eine Lib dafür. Der komplette Stack
sollte schon da sein.
Alles was ich bisher fand (ESP8266WiFi), enthielt .cpp Dateien - also
nicht im AVRStudio mit ATmega328 nutzbar, eher für Arduino.
ZwiebelJack schrieb:> Hallo,>> ich möchte mittels ATmega einen einfachen HTTP-Request über WLAN> verschicken (alle 5 min).> Gibts für den ESP8266 irgendwo eine Lib dafür. Der komplette Stack> sollte schon da sein. Alles was ich bisher fand (ESP8266WiFi), enthielt> .cpp Dateien - also nicht im AVRStudio mit ATmega328 nutzbar, eher für> Arduino.
Den ESP kannst direkt programmieren. Arduino bietet umfangreiche
Beispiele
Hallo,
ob Du zum direkten Programmieren des ESP die ArduinoIDE und deren Libs
und Beipsiele oder das Espressif-IDF und deren Libs und Beispiele nutzt,
bleibt völlig Dir, Deinen Kenntnissen und Deiner Zeit überlassen.
Ich habe mich da für meine Hobbyprojekte aus Aufwandsgründen eindeutig
für die ArduinoIDE entschieden...
Gruß aus Berlin
Michael
angenommen, ich habe wenig Zeit und Kenntnisse :-)
Außerdem habe ich keinen Arduino, sondern einen einzelnen ATmega328
Chip, den ich normalerweise im STK500 flashe (über AVRburn o.ä.).
Nützt mir dann die ArduinoIDE etwas?
ZwiebelJack schrieb:> Außerdem habe ich keinen Arduino, sondern einen einzelnen ATmega328> Chip, den ich normalerweise im STK500 flashe (über AVRburn o.ä.).
Was willst du mit dem ATmega328?
Im Eröffnungspost schriebst du doch etwas vom ESP8266
Hallo,
was für ein ESP8266 Modul willst nutzen?
Dein Mega328 ist uninteressant, wenn der ESP alles komplett übernehmen
kann/soll.
Enweder kämpfst Du Dich durch die AT-Kommandos der ESP-Software im
Lieferzustand durch, hängst ihn eben mit TX/RX an den AVR und läßt den
AVR eben dann per AT-kommandos mit dem ESP duskutieren.
Oder Du programmierst den ESP selber, ist ja schließlich eine 80MHz CPU
mit rund 1MB Flash und 80kB Ram. Ob und wie Du dann den AVR brauchst,
hängt von Deinem PRojekt ab und was am AVR extern dranhängt.
Die ArduinoIDE zu installieren, um den ESP komplett selbst zu
programmieren, dauert vielleich eine halbe Stunde. IDE als ZIP-Archiv
runterkladen, irgendwohin entpacken, die IDE NICHT starten!
Im Ornder der IDE (wo jetzt die arduino.exe liegt) einen Ordner mit
Namen portable erstellen, dann erst die arduino.exe starten
Wie bei github:
https://github.com/esp8266/Arduino
unter "Installing with Boards Manager" beschrieben weitermachen.
Danach muß es in der Boardliste der IDE die ESps geben, fertig.
Gruß aus Berlin
Michael
Ich verstehe dich so, dass du den ESP8266 nur als Netzwerk-Interface
nutzen möchtest. Kann man machen, auch wenn sich einige hier den Sinn
dieser Vorgehensweise nicht vorstellen können. Ich sage nur
"Tellerrand".
Ich habe auf der Seite
http://stefanfrings.de/esp8266/index.html#atcommands passende
Anleitungen gesammelt.
Im Grunde genommen muss dein AVR nur ein paar AT Befehle an den ESP Chip
senden. Das ist einfach, vor allem wenn man auf Fehlerkorrektur
verzichtet, dann brauchst du nicht einmal die Antworten des Moduls
auszuwerten.
Jetzt kommt noch das HTTP Protokoll, dessen Grundlagen habe ich in
http://stefanfrings.de/mikrocontroller_buch/Einstieg%20in%20die%20Elektronik%20mit%20Mikrocontrollern%20-%20Band%202.pdf
ab Kapitel 10 erklärt.
Und dann hier noch ein praktisches Anwendungsbeispiel mit ATmega328 für
die umgekehrte Richtung (der µC spielt Webserver)
http://stefanfrings.de/mikrocontroller_buch/Einstieg%20in%20die%20Elektronik%20mit%20Mikrocontrollern%20-%20Band%203.pdf
Kapitel 13.
Eine kleine Korrektur: Du hast geschrieben, dass cpp Dateien nicht mit
Atmel Studio harmonieren. Das ist nicht richtig. Das Atmel Studio
unterstützt auch C++. Irgendwie kann man das Atmel Studio sogar mit
Arduino verheiraten, habe ich allerdings noch nicht ausprobiert.
> Ich verstehe dich so, dass du den ESP8266 nur als> Netzwerk-Interface> nutzen möchtest. Kann man machen, auch wenn sich einige hier den Sinn> dieser Vorgehensweise nicht vorstellen können. Ich sage nur> "Tellerrand".
Ja, und zwar deswegen, weil ich auf meiner Schaltung 2 Blöcke habe:
Block 1:
- ist 24/7 aktiv und sammelt Messdaten
- daher wahrscheinlich ein standard ATmega238
Block 2:
- ein WLAN Modul dass die gepackten Daten aus Block1 entgegennehmen kann
und sie versendet, sobald Block 1 den Befehl dazu gibt. Etwa alle 10
min.
- daher nur kurzzeitig aktiv
Wenn man alles den ESP machen lässt, müsste man es auch 24/7 laufen
lassen.
Will aber Strom sparen und daher nur das nötigste aktiv lassen.
ZwiebelJack schrieb:> Wenn man alles den ESP machen lässt, müsste man es auch 24/7 laufen> lassen.> Will aber Strom sparen und daher nur das nötigste aktiv lassen.
Du kannst beim ESP auch die WLAN-Funktion herunterfahren und den Chip
die Arbeit machen lassen. Nach 10min fährst die Wifi-Funktion wieder
hoch (was strom kostet) und versendest deine Daten. Du kannst aber den
AVR die Daten loggen lassen und mit einem zweiten Programm im ESP die
Daten vom AVR abholen lassen. Wenn das einer nachbauen will ist das
schon komplizierter
Stefanus F. schrieb:> Ich verstehe dich so, dass du den ESP8266 nur als Netzwerk-Interface> nutzen möchtest. Kann man machen
so hatte ich auch angefangen, auf dem AVR läuft meine wordclock, mit dem
ESP8266 hatte ich dann Zugang zum wlan und NTP.
Nachdem die HW gestorben war ist es heute sinnvoller den ESP32 in die
Arduino IDE zu integrieren und mit dem weiterzumachen wobei der Atmel
eben besser mit 5V zurecht kommt, Pegelwandler braucht man dann nicht
für die meiste Hardware.
Hallo,
ZwiebelJack schrieb:> Block 1:> - ist 24/7 aktiv und sammelt Messdaten> - daher wahrscheinlich ein standard ATmega238>> Block 2:> - ein WLAN Modul dass die gepackten Daten aus Block1 entgegennehmen kann> und sie versendet, sobald Block 1 den Befehl dazu gibt. Etwa alle 10> min.> - daher nur kurzzeitig aktiv
kann man doch machen wenn man will. Kostet ein AVR-Pin, der über einen
Reset-Impuls den ESP aufweckt. Verbindung z.B. über seriell, der ESP
sendet wenn er oben ist ein Kennbyte zum AVR und der schickt das
Datenpaket dann seriell zum ESP, entweder feste Anzahl Bytes oder ein
eindeutiges Ende-Byte, daß in den Daten nicht vorkommt.
Wenn der ESP die Daten komplett hat macht er seinen Web-kram und geht
wieder in den DeepSleep. Kostet eine Diode vom Reset des ESP (Anode) zum
AVR-Pin (Kathode) und einen Spannungsteiler 1,2k/2,2k am TX des AVR wenn
dieser mit 5V läuft und keine langen Leitungen zwischen ESP und AVR
sind.
Sonst muß man im Zweifel eben die Pegel ordentlich anpassen.
Gruß aus Berlin
Michael
Jedenfalls braucht man zum Absetzen von AT Befehlen keine Library. Das
sind ja nur Strings, die zeichenweise über den seriellen port
herausgeschoben werden.
ZwiebelJack schrieb:>> Ich verstehe dich so, dass du den ESP8266 nur als>> Netzwerk-Interface>> nutzen möchtest. Kann man machen, auch wenn sich einige hier den Sinn>> dieser Vorgehensweise nicht vorstellen können. Ich sage nur>> "Tellerrand".>> Ja, und zwar deswegen, weil ich auf meiner Schaltung 2 Blöcke habe:>> Block 1:> - ist 24/7 aktiv und sammelt Messdaten> - daher wahrscheinlich ein standard ATmega238>> Block 2:> - ein WLAN Modul dass die gepackten Daten aus Block1 entgegennehmen kann> und sie versendet, sobald Block 1 den Befehl dazu gibt. Etwa alle 10> min.> - daher nur kurzzeitig aktiv
Habe sowas Ähnliches laufen, in Form einer nachträglichen
Internetanbindung einer vorhandenen arduinobasierten Steuerung.
Dazu habe ich einen ESP8266 mit ESPlink von Jeelabs geflasht, und an
rx/tx des Arduino gehängt. Sendet nun alle x Minuten Messwerte nach
Thingspeak, und ich kann den Arduino nebenbei noch direkt aus der IDE
‚über‘s Internet‘ flashen...
Auf Arduinoseite muss lediglich eine kleine Clientlib von Jeelabs
eingebunden werden.
Restproblem bei dir wäre, den ESP noch passend an- und auszuschalten,
das dürfte vom Arduino aus aber ja kein Problem sein...