Ich würde gerne die Arduino IDE für die Programmierung des ESP8266 verwenden, allerdings ohne die Bibliotheken von Arduino. D.h. ich möchte lediglich von der komfortablen Bedienung und dem Vorteil, dass das SDK bereits aufgesetzt ist, profitieren. Nun kompiliert ein Arduino-Sketch allerdings nicht ohne setup() und loop() Funktion. Sobald ich diese beiden Funktionen ohne Inhalt hinzufüge, verwendet ein simpler ESP-8266 Sketch, der lediglich einen Hardware-Timer initialisiert, gleich mal 283kByte Flash und 27kByte RAM. Kann man irgendwie ohne setup() und loop() auskommen?
Das geht nicht (beim ESP8266). Der Overhead durch das Arduino Framework ist ohnehin minimal, da es auf dem SDK aufbaut. Du kannst Du ja mal die Quelltexte des Cores anschauen, da steht nicht viel drin. Die 256kB Flash Bedarf ergeben sich aus dem SDK, davon belegt das Arduino Framework höchstens 2kB.
Danke für deine Antwort. Wie ist denn das Vorgehen, wenn man das SDK direkt benutzt (ohne Arduino)? Ruft man die user_init dann in setup auf? So etwa:
1 | #include "user_hw_timer.c" |
2 | |
3 | |
4 | void hw_test_timer_cb(void){ |
5 | os_printf("Hello World."); |
6 | }
|
7 | |
8 | |
9 | void ICACHE_FLASH_ATTR user_init(void){ |
10 | hw_timer_init(NMI_SOURCE, 1); |
11 | hw_timer_set_func(hw_test_timer_cb); |
12 | hw_timer_arm(1000); |
13 | }
|
14 | |
15 | void setup(){ |
16 | user_init(); |
17 | }
|
18 | void loop(){} |
Stefanus F. schrieb: > Die 256kB Flash Bedarf ergeben sich aus dem SDK, davon belegt das > Arduino Framework höchstens 2kB. Dann nehme ich an, dass der hohe RAM-Bedarf auch vom SDK kommt?
:
Bearbeitet durch User
Max M. schrieb: > Wie ist denn das Vorgehen, wenn man das SDK direkt benutzt (ohne > Arduino)? 1) SDK Downloaden: https://www.espressif.com/en/support/download/sdks-demos 2) Die mitgelieferte Doku lesen 3) Das "ESP8266 SDK Getting Started Guide" lesen https://www.espressif.com/en/support/download/documents 4) Falls du das IDF verwendest, dass dessen Doku lesen: https://docs.espressif.com/projects/esp-idf/en/latest/ 5) Die weiterführenden Dokus lesen die darin genannt werden.
Max M. schrieb: > Dann nehme ich an, dass der hohe RAM-Bedarf auch vom SDK kommt? Aber sicher doch. Arduino belegt nur wenige Bytes, dass wurde schließlich für Mikrocontroller mit insgesamt 1kB RAM designt.
Max M. schrieb: > Wie ist denn das Vorgehen, wenn man das SDK direkt benutzt (ohne > Arduino)? Damit meinte ich, wie ich in der Arduino IDE die SDK-Funktionen verwende. VirtualBox mit Linux aufsetzen nur damit das SDK läuft halte ich nicht mehr für zeitgemäß (siehe https://www.espressif.com/sites/default/files/documentation/2a-esp8266-sdk_getting_started_guide_en.pdf).
:
Bearbeitet durch User
Max M. schrieb: > Damit meinte ich, wie ich in der Arduino IDE die SDK-Funktionen > verwende. Ach so war das gemeint. Ich würde versuchen, sie einfach aufzurufen (so wie du es gemacht hast). Allerdings ist das bei Arduino nicht wirklich vorgesehen. Wegen der möglichen Seiteneffekte würde ich das vermeiden - insbesondere wenn es um Timer und Interrupt-Handler geht. Bisher bin ich immer mit den Funktionen ausgekommen, die das Arduino Framework bereit stellt. Um Dinge Zeitgesteuert zu starten, benutze ich millis() in der main Loop. Zum Beispiel so:
1 | unsigned long start=0; |
2 | |
3 | |
4 | void loop() |
5 | {
|
6 | if (millis()-start > 1000) |
7 | {
|
8 | Serial.println("Eine Sekunde ist rum"); |
9 | start=millis(); |
10 | }
|
11 | }
|
Ich verstehe nicht, warum man unbedingt die Arduino IDE verwenden will wenn man nicht muss. Ich würde mir da mal eine der möglichen Alternativen (z.B. VS Code mit PlatformIO) ansehen. Da kann man dann das SDK gleich als entsprechendes Framework auswählen.
Max M. schrieb: > VirtualBox mit Linux aufsetzen nur damit das SDK läuft halte ich nicht > mehr für zeitgemäß Ich kann dein Argument nachvollziehen. Andererseits läuft der Compiler unter Linux (auch in einer VM) sehr viel schneller, als unter Windows.
Hallo, Max M. schrieb: > VirtualBox mit Linux aufsetzen nur damit das SDK läuft halte ich nicht > mehr für zeitgemäß (siehe > https://www.espressif.com/sites/default/files/documentation/2a-esp8266-sdk_getting_started_guide_en.pdf). niemand hindert Dich, es unter Windows einzurichten: https://www.esp8266.com/wiki/doku.php?id=setup-windows-compiler-esp8266 Ich habe es nicht gemacht, nur das IDF für den ESP32 habe ich hier drauf, nutze es aber eigentlich nicht wirklich. Ich nutze ja die ESPs hautpsächlich wegen der WLAN-Fähigkeit, da muß das ja sowieso alles auf den ESP rauf, eagl, ob aus Arduino oder SDK. Zugriff auf die SDK bzw. IDF Funktionen hat in ja auch aus der ArduinoIDE, Abhängigkeiten zu genutzten Resourcen gibt es dann zwar, mit denen kann man aber umgehen. Gruß aus Berlin Michael
Mike R. schrieb: > Ich würde mir da mal eine der möglichen Alternativen (z.B. VS Code mit > PlatformIO) ansehen. Da kann man dann das SDK gleich als entsprechendes > Framework auswählen. Hab ich versucht, leider verwendet PlatformIO standardmäßig ein veraltetes SDK (bei mir noch version 2.1.0, obwohl inzwischen 3.0 aktuell ist). Kann man das irgendwie einstellen?
Max M. schrieb: > Hab ich versucht, leider verwendet PlatformIO standardmäßig ein > veraltetes SDK (bei mir noch version 2.1.0, obwohl inzwischen 3.0 > aktuell ist). Kann man das irgendwie einstellen? Was heißt schon veraltet? Ich benutze ganz bewusst das SDK 1.5.4, weil ich mit dessen Macken vertraut bin und heraus gefunden habe, wie ich es absolut stabil einsetzen kann. Ich habe kein Bock mehr darauf, noch länger den Betatester für Espressif zu spielen. Ich habe aufgehört, jahrelang auf die Umsetzung von wilden Marketing-Versprechungen zu warten. Wenn bei mir das SDK 1.5.4 für irgendeine Anwendung nicht ausreicht, wechsele ich eher zu einem anderen Hersteller. Denn auch andere haben inzwischen preisgünstige Alternativen im Programm. Zwar nicht so billig, wie Espressif, aber billig genug.
Stefanus F. schrieb: > Was heißt schon veraltet? Ich gehe mal davon aus, dass Espressif mit späteren Versionen diverse Fehler aus den früheren SDKs behoben hat. Zum Beispiel ärgere ich mich gerade mit einem seltsamen Fehler "undefined reference to `user_rf_cal_sector_set'" herum. Die Google-Ergebnisse zu diesem Fehler sind spätestens von 2017. Da vermute ich stark, dass der mit nachfolgenden Versionen behoben wurde. Irgendwie schade, dass es selbst 2019 noch keine benutzerfreundliche Alternative zu Arduino mit Native-SDK gibt.
Max M. schrieb: > Ich gehe mal davon aus, dass Espressif mit späteren Versionen diverse > Fehler aus den früheren SDKs behoben hat. Das hoffst du. Und ich weiß, dass viele bekannte Fehler jahrelang verschleppt wurden während jedes Release neue Probleme eingeführt hat. besonders sei Einführung des ESP32 hat die Entwicklung des ESP8266 stark nachgelassen. > user_rf_cal_sector_set Damit hatte ich noch keinen Kontakt. Vielleicht bestätigt das meine Vorliebe für die Version 1.5.4.
Stefanus F. schrieb: > Denn auch andere haben > inzwischen preisgünstige Alternativen im Programm. Zwar nicht so billig, > wie Espressif, aber billig genug. Magst du die kurz aufzählen?
Max M. schrieb: > Stefanus F. schrieb: >> Denn auch andere haben >> inzwischen preisgünstige Alternativen im Programm. Zwar nicht so billig, >> wie Espressif, aber billig genug. > > Magst du die kurz aufzählen? Ich erinnere mich daran, das hier im Forum mehrere Alternativen genannt wurden. Kann mich anderen Namen/Nummern jedoch nicht erinnern. Wie du gesehen hast komme ich für meine Basteleien mit dem ESP8266 ganz gut klar. Google mal nach "programmable wlan wifi module -esp" und gehe dann auf die Bilder-Ansicht. Da findest du ganz schnell welche.
Stefanus F. schrieb: > Das "ESP8266 SDK Getting Started Guide" lesen Warum steht da "HTML" in der Übersicht in der Spalte "Download" wenn auf eine GitHub Seite weitergeleitet wird? Noch dazu ist diese GitHub Ansicht nicht zu gebrauchen, da diverse Links darauf nicht funktionieren. Michael U. schrieb: > niemand hindert Dich, es unter Windows einzurichten: Die Version ist bereits veraltet.
Also ich habe mir alles unter Windows 10 mit dem Linux Subsystem (WSL) eingerichtet. Geht hervorragend.
Jonas R. schrieb: > Also ich habe mir alles unter Windows 10 mit dem Linux Subsystem (WSL) > eingerichtet. Geht hervorragend. Magst du mir bitte die Anleitung mitteilen, nach der du das (also das ESP8266 SDK einrichten) gemacht hast?
:
Bearbeitet durch User
Stefanus F. schrieb: > Ich kann dein Argument nachvollziehen. Andererseits läuft der Compiler > unter Linux (auch in einer VM) sehr viel schneller, als unter Windows. Hi, heisst Du zufällig Stefan Frings und hast diese irre aufwändige Seite im Netz, wo ich schon so oft drauf war? http://stefanfrings.de/esp8266/ Habe nach einigen Tagen laufzeit gemerkt, dass die Funktion isConnected() nicht wirklich merkt, wann das wlan offline ist von der Fritzbox. Ich bin über Richtfunk ans Netz angebunden im Entwicklungsland Deutschland und das fällt öfter mal aus, da reicht schon kräftiger Schneefall und alle sind hier offline. Nach einer Weile trennt dann auch das wlan die Geräte ab, wenn der DSL Kanal aus ist. Ich weiss nicht genau was da abgefragt wird aber so ein ping wäre verrmutlich sicherer. Zudem ist die neue ESP 8266 2.4.2. nicht mehr lauffähig bei mir und hat glatt 100kb mehr, also 422 kb nur die Lib. Daher Downgrade auf 2.4.1. Die Beta 2.5.1. und 2.5.2. laufen auch nicht. if (!WiFi.isConnected()) WifiStart(); Gruss, Christian
Christian J. schrieb: > heisst Du zufällig Stefan Frings und hast diese aufwändige Seite Ja, das ist meine. > Habe nach einigen Tagen laufzeit gemerkt, dass die Funktion > isConnected() nicht wirklich merkt, wann das wlan offline ist von der > Fritzbox. Du benutzt die falsche Funktion. Den Status der Funkverbindung prüft man mit
1 | if (WiFi.status()==WL_CONNECTED) ... |
Die Doku des Arduino Cores ist da leider ein bisschen Lückenhaft. Ich habe einige hilfreiche Hinweise in der Doku der aktuellen Version gefunden - obwohl ich immer noch eine ältere Version benutze (hab keine Lust auf neue Probleme). > Zudem ist die neue ESP 8266 2.4.2. nicht mehr > lauffähig bei mir und hat glatt 100kb mehr, also 422 kb nur die Lib. > Daher Downgrade auf 2.4.1. Die Beta 2.5.1. und 2.5.2. laufen auch nicht. Ich empfehle immer noch die Version 2.3.0 (die auf dem SDK 1.5.4 aufbaut). Denn danach begannt die Featuritis: Man wollte wohl unbedingt das neue SDK 2.x mit dem etwas schnelleren lwIP v2 Stack und ipv6 Support verwenden. Zeitlich überlappend kam der viel spannendere ESP32 heraus, dem sich die meisten SDK-Entwickler anscheinend zugewendet haben. Das SDK 2.x vom ESP8266 ist in einem sehr schlechten Zustand, und das wirkt sich jetzt auch auf Arduino aus. Da wird sich auch nicht mehr viel tun - denke ich - denn es wird bereits am IDF (=Nachfolger des SDK) gearbeitet. Der ESP32 ist trotz der grossen Entwicklungsaktivität leider noch keine Empfehlung wert, weil seine Firmware schlicht instabil läuft und zahlreiche Hardwarefunktionen noch nicht unterstützt werden. Ich schätze, dass der ESP32 den kleineren Bruder im Laufe der nächsten 5 Jahre ablösen wird. Das ist nicht schlimm, denn mit Version 2.3.0 haben wir einen stabilen Arduino Core, der nicht verschimmeln wird. Ich würde mir an Deiner Stelle eine funktionierende Kombination aus Arduino IDE (im Portable Modus) mit ESP8266 Core 2.3.0 sichern - nur für den Fall dass man es nicht mehr herunterladen kann. Spätestens wenn der ESP32 kommerziell interessant wird, können wir damit rechnen, dass die übrigen ESP8266 Module für noch weniger Geld verscherbelt werden. Das wird der Moment sein, wo ich mir ein 100er Pack kaufe :-)
naja, dzt. ist es eher so, dass die ESP32 Module preislich unter die ESP8266 gefallen sind; schon der Abgesang für ESP32?
G. H. schrieb: > schon der Abgesang für ESP32? Gute Frage. Ich suche immer noch nach einem Beispiel für kommerzielle Anwendung des ESP32 in gebrauchsfertigen Geräten. Ich habe noch nichts gefunden.
G. H. schrieb: > ist es eher so, dass die ESP32 Module preislich unter die > ESP8266 gefallen sind; schon der Abgesang für ESP32? Ist das so? Magst du dafür ein Beispiel raussuchen? Auf Aliexpress gibts den ESP-01 für 1.50$, den ESP32 ohne Board ab 4$. Oder hast du hier ESP32 und ESP8266 vertauscht?
Mike R. schrieb: > Ich verstehe nicht, warum man unbedingt die Arduino IDE verwenden will > wenn man nicht muss. Weil es alles einfacher macht. Nicht jeder gehört zur "Warum soll ichs mir einfach machen wenn ichs auch kompliziert haben kann"-Fraktion.
Ich bin wahrlich kein Fan von Arduino, doch das Espressif SDK 1.5.4 ist so kompliziert anzuwenden, dass ich hierfür auch lieber Arduino verwendet. Angeblich soll das SDK 2.x komfortabler sein, aber das will ich wegen der bekannten Instabilitäten nicht verwenden. Ich habe noch etwas anderes zu tun, als fortlaufend meine Projekte an neue Versionen anzupassen, ohne die Gewissheit dass das irgend etwas nützt. Dieses Spiel habe ich von Version 0.irgendwas bis 1.5.4 lange genug mitgemacht. IPv6 brauche ich noch nicht. Bis es soweit ist, wird der ESP8266 Geschichte sein.
Weiß hier jemand ob und falls ja, wie man den Compiler updaten kann? Die Version auf crosstool-NG ist mittlerweile 6 Jahre alt.
Max M. schrieb: > Hab ich versucht, leider verwendet PlatformIO standardmäßig ein > veraltetes SDK (bei mir noch version 2.1.0, obwohl inzwischen 3.0 > aktuell ist). Kann man das irgendwie einstellen? Natürlich, in der platform.ini
1 | [env:stable] |
2 | platform = espressif8266 |
3 | |
4 | [env:development] |
5 | platform = https://github.com/platformio/platform-espressif8266.git |
6 | # oder mit Angabe eines branches: |
7 | # platform = https://github.com/platformio/platform-espressif8266.git#feature/stage |
8 | |
9 | [env:v1.8.0] |
10 | platform = espressif8266@1.8.0 |
(die versionsnummer @1.8.0 und müsste m.W. die ESP-SDK-Version 2.4.2 verwenden) So kannst du mit ein paar Änderungen im platformio.ini alle möglichen Espressiv-SDK ± arduino-Versionen durchprobieren, mit den GIT-Versionen müsste auch 2.5.2 und neuer dabei sein.
Danke für die Infos und den ausführlichen Bericht! Ich dachte mir fast schon sowas bei meiner kleinen Anwendung mit den paar LEDS und einem OLED Display. So richtig kann ich den Netzen dieses Dings auch nicht einschätzen. Es kann rechnen und ich kann was mit dem Wlan machen. Und es kann schön schnell rechnen :-) Aber dafür gibts auch den Cortex. Und ja, mit Arduino war ich in 2 Tagen "drin", es lief und ich konnte auf einem Beispiel aufbauen. Ohne genau zu wissen was da drin ist. Habe noch nie ins Datenblatt geschaut, die Lib Header reichten mir vollkommen und die Beispiele.
Christian J. schrieb: > Mit Arduino war ich in 2 Tagen "drin".., > die Lib Header reichten mir vollkommen > und die Beispiele. Das ist der Vorteil von Arduino. Wem das genügt, der ist mit Arduino gut versorgt.
Stefanus F. schrieb: > Das ist der Vorteil von Arduino. Wem das genügt, Es genügt bei "Muss klappen...." Sachen. Für den Cortex habe ich mir deutlich mehr Zeit genommen und da auch was gemacht: https://www.youtube.com/watch?v=zmPWeF2OhoU Aber deine Seite ist auch toll!
Mit dem Video hast du Dir sicher Mühe gegeben. Ich kann mit Lehr-Videos jedoch nichts anfangen - bin zu alt für dieses Medium.
Christian J. schrieb: > Aber dafür gibts auch den Cortex Aber der kann nicht ins WLan. Christian J. schrieb: > So richtig kann ich den Netzen dieses Dings auch nicht einschätzen. Viel RAM und Flash. Viel Rechenleistung, WLAN fähig. Sehr günstig. Und du kannst den Nutzen nicht einschätzen?? Spaßverderber schrieb: > mit den GIT-Versionen müsste auch 2.5.2 und neuer dabei sein. Nein, ist es nicht. Auf GitHub gibt es diverse Issues, wo Leute seit Monaten auf eine Unterstützung für neuere native SDKs warten. Arduino geht sicher, aber das will ich explizit nicht. Inzwischen läuft bei mir SDK 3.1 auf einem Linux Subsystem in Win10 und alles funktioniert einwandfrei.
Hmmm..... 2.3.0 läuft nicht, keine Ausgabe auf der Seriellen. Auch auf dem Display ist nur Müll. Na klasse, wenn die sich alle so unterscheiden. PS: Ich bin heute auch 51 geworden :-)
Max M. schrieb: > Aber der kann nicht ins WLan. Das nützt die aber alles nix, wenn du auf deinem Maschinchen keine leistungsfähigen Server Anwendungen hast oder Clients, die das Internet bedienen können..... Mein TV kann sich mit DNLA mit meinem Server verbinden, ganz einfach unter Linux. Kann das der esp auch? Ich ja schon froh dass er TLS hat denn die Wetter Map hat auf https umgestekllt..
Christian J. schrieb: > 2.3.0 läuft nicht, keine Ausgabe auf der Seriellen. Probiere zum Vergleich mal einen meiner Beispiel-Sketche. Das hat ja mal funktioniert, warum sollte es plötzlich anders sein? Zur Not kann ich Dir ein ZIP File von meiner Installation geben. Aber ich vermute eher, dass du einen Fehler in deinem Sketch hast.
Naja, auf 74kbaud kommt der Anfang beim Booten, auf 56700 kommt nix mehr... ich upgrade mal eben wieder auf 2.4.1..... lief ja. Ups, die Datei ist noch dran, kriege sie nicht mehr weg.
Christian J. schrieb: > Das nützt die aber alles nix, wenn du auf deinem Maschinchen keine > leistungsfähigen Server Anwendungen hast oder Clients, die das Internet > bedienen können Dir ist hoffentlich klar, dass in einem Fernseher mehrere Prozessoren im Kaliber eines A9 werkeln, plus diverse FPGAs und ASICs. Bei so viel Ignoranz entschuldigt auch das Alter nicht.
Max M. schrieb: > Dir ist hoffentlich klar, dass in einem Fernseher mehrere Prozessoren im > Kaliber eines A9 werkeln, plus diverse FPGAs und ASICs. Ach nee.... ? Und darum ist vielleicht so ein ESP Steinchen nicht mehr als eine Spielerei, die grad mal ausreicht ein Relais zu schalten, weil die umgebende Technik schon viel zu komplex ist um mehr damit zu machen. Ich sehe da nichts weiter als einen Bastel uC. Für was Kommerzielles fehlt mir die Phantasie. Ändert sich irgendwas, zb mal eben http nach https wäre schon ein Update notwendig für den End User. Und OTA kennt er sicher auch nicht.
Christian J. schrieb: > Und OTA kennt er > sicher auch nicht. Doch. Christian J. schrieb: > Für was Kommerzielles > fehlt mir die Phantasie. Home-Automation. Oder auch einfach viel Rechenleistung: https://github.com/cnlohr/nosdk8266 (z.B. für Grafikberechnung).
Christian J. schrieb: > Und OTA kennt er sicher auch nicht. Doch, das war im SDK (fast) von Anfang an dabei - auch Arduino unterstützt es.
Max M. schrieb: > Home-Automation. Oder auch einfach viel Rechenleistung: Ich habe da mal was gesegen bei YT da steuert einer einen Fernseher mit an und erzeugt da ein Bild. Übertaktet aber war echt klasse wie der Stein das schaffte.
Christian J. schrieb: > Ich habe da mal was gesegen bei YT da steuert einer einen Fernseher mit > an und erzeugt da ein Bild. Übertaktet aber war echt klasse wie der > Stein das schaffte. Das vllt? https://www.youtube.com/watch?v=SSiRkpgwVKY Der ESP8266 ist schon genial.
Also Stefan, nur 2.4.2 erzeugt bei mir eine serial Ausgabe auf dem hauseigenen COM Debug Feld 2.4.1 schon nicht mehr. Ich nutze immer F makros. Aber das wäre einen Aufgabe für Doofe die überall raus zu nehmen. keine Ahnung was ich da falsch mache, dass 2.3.0 nicht läuft. Es ist einfach nur das schnöde SerialPrint.... die Anwendung läuft teilweise. Unterstützt 2.3.0 denn auch SecureClient?
Serielle Ausgabe geht in Version 2.3.0 ganz sicher auch mit den F
Makros.
> Unterstützt 2.3.0 denn auch SecureClient?
keine Ahnung.
Na, lassen wir es so. 311kb 2.3.0. gegen 355kb mit der 2.4.2. Ist ja genug Platz und es klappt ja auch. 2.3.0. hat kein SetBufferSize für Serial.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.