Forum: Mikrocontroller und Digitale Elektronik ESP8266 @ATmega328 - suche Lib für schnellen Start


von ZwiebelJack (Gast)


Lesenswert?

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.

von Florian (Gast)


Lesenswert?

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

von Michael U. (amiga)


Lesenswert?

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

von ZwiebelJack (Gast)


Lesenswert?

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?

von Wolfgang (Gast)


Lesenswert?

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

von Florian (Gast)


Lesenswert?

ZwiebelJack schrieb:
> Nützt mir dann die ArduinoIDE etwas?

Du kannst diesen auch aus der IDE heraus direkt brennen.

von Michael U. (amiga)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

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.

von ZwiebelJack (Gast)


Lesenswert?

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

von Marc Horby (Gast)


Lesenswert?

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

von Joachim B. (jar)


Lesenswert?

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.

: Bearbeitet durch User
von Michael U. (amiga)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

Jedenfalls braucht man zum Absetzen von AT Befehlen keine Library. Das 
sind ja nur Strings, die zeichenweise über den seriellen port 
herausgeschoben werden.

von Jan L. (ranzcopter)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.