update,
danke an gkd für die Infos in diesem Thread:
https://www.roboternetz.de/community...im-Kompilieren
hallo,
hat jemand schon erfolgreich mit ESP8266 boards (z.B. AI-Thinker ESP-12F Serial WIFI mit 80 MHz Tensilica L106 MCU ) per Arduino-IDE programmiert?
Hat die Board-Verwalter lib zuverlässig funktioniert (hier: Generic ESP8266 Module) ?
Wie waren die Erfahrungen mit der Integration ins eigene WiFi Heimnetz, als iot Programmierplattform und mit Handy-Apps als Interface zur Steuerung, und haben die Arduino-Libs für GPIOs, I2C und Internet-Libs (NTPClientLib, JsonListener,...) alle problemlos auch mit dem ESP8266 funktioniert?
edit,
ein fertig aufgelötetes Exemplar scheint es auch zu geben -
http://www.ebay.de/itm/272435157381?...%3AMEBIDX%3AIT
Erfahrungsberichte trotzdem natürlich immer noch sehr willkommen!
Geändert von HaWe (22.05.2017 um 11:02 Uhr)
update,
danke an gkd für die Infos in diesem Thread:
https://www.roboternetz.de/community...im-Kompilieren
Geändert von HaWe (25.05.2017 um 20:23 Uhr)
Installation des Boards hat auf Anhieb funktioniert (Win 7 64 pro):
ESP8266 12-F (80MHz, 4MByte)
- ggf. USB-Serial Chip CH340/1 installieren
- in "Datei - Voreinstellungen" unter "Zusätzliche Boardverwalter-URLs" Such-URL eingeben:
http://arduino.esp8266.com/stable/pa...com_index.json
- Menü "Werkzeuge – Board: …", "Boardverwalter"
Eingabe im Suchfenster ESP8266 Eintrag "esp8266 by ESP8266 Community" auswählen + installieren
- erneut Menü "Werkzeuge – Board: … – "Boardverwalter…",
Auswahl von Eintrag "Generic ESP8266 Module",
Einstellungen kontrollieren:
Flashmode: QIO
Flash Frequency: 40 MHz
cpu Frequency: 80 MHz
Flashsize: 4M (3M SPIFFS)
Debug Port: disabled
Debug Level: keine
Reset Method: nodemcu
Upload Speed: 115200
die D-pins sind entgegen der Beispiele bei mir allerdings nicht sofort als D0, D1,... adressierbar, hier sind ein paar explizite #defines nötig:
ps,Code:#define D0 16 #define D1 5 #define D2 4 #define D3 0 #define D4 2 #define D5 14 #define D6 12 #define D7 13 #define D8 15 #define D9 3 #define D10 1 #define D11 9 #define D12 10
inzwischen festgestelt:
Es gibt im Bordverwalter auch spezielle Bord-Module wie z.B. "NodeMCU ESP8266 E-12", die man dann alternativ zum "Generic ESP8266 Module" auswählen kann. Hierin sind bereits weitere Bord-Definitionen enthalten, auch z.B D* Pin Nummern statt der MCU GPIO Nummern.
Geändert von HaWe (05.06.2017 um 09:45 Uhr)
Hey HaWe, danke für die ausführliche Beschreibung hier. Könnte hilfreich sein wenn ich mal ein ähnliches Projekt habe!
hallo,
freut mich, wenn es hilfreich ist!
habe jetzt die ersten Beispiele erfolgreich ausprobiert, auch die erste Website im Heimnetz zum LED ein/ausschalten:
http://www.instructables.com/id/Quic...n-Arduino-IDE/
Frage:Code:#include <ESP8266WiFi.h> const char* ssid = "Magesh"; const char* password = "jayakumar"; int ledPin = 13; // GPIO13 WiFiServer server(80); void setup() { Serial.begin(115200); delay(10); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, LOW); // Connect to WiFi network Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); // Start the server server.begin(); Serial.println("Server started"); // Print the IP address Serial.print("Use this URL to connect: "); Serial.print("http://"); Serial.print(WiFi.localIP()); Serial.println("/"); } void loop() { // Check if a client has connected WiFiClient client = server.available(); if (!client) { return; } // Wait until the client sends some data Serial.println("new client"); while(!client.available()){ delay(1); } // Read the first line of the request String request = client.readStringUntil('\r'); Serial.println(request); client.flush(); // Match the request int value = LOW; if (request.indexOf("/LED=ON") != -1) { digitalWrite(ledPin, HIGH); value = HIGH; } if (request.indexOf("/LED=OFF") != -1) { digitalWrite(ledPin, LOW); value = LOW; } // Set ledPin according to the request //digitalWrite(ledPin, value); // Return the response client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); // do not forget this one client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.print("Led pin is now: "); if(value == HIGH) { client.print("On"); } else { client.print("Off"); } client.println("<br><br>"); client.println("<a href=\"/LED=ON\"\"><button>Turn On </button></a>"); client.println("<a href=\"/LED=OFF\"\"><button>Turn Off </button></a><br />"); client.println("</html>"); delay(1); Serial.println("Client disonnected"); Serial.println(""); }
wer kann einen Tipp geben, wie man das jetzt vom Heimnetz-Server ins www hochladen kann, erstmal testweise, kostenlos?
Stichwort "Portweiterleitung"
Du musst an deinem Router konfigurieren, dass Anfragen (Vorzugsweise auf Port 80) zu deinem ESP (ebenfalls auf Port 80) umgeleitet werden.
Oder was genau meinst du?
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
hallo,
ganz einfach ausgedrückt: ich kann momentan von einem Handy aus meine ESP8266-Website aufrufen, wenn ich die IP des ESP8266 Servers (192.168.2.117) in den Chrome Browser eintippe, soweit ich mich mit dem Handy ebenfalls im häuslichen WLAN aufhalte.
Ich möchte es jetzt aber auch von überall sonstwo machen können, also vom Arbeitsplatz-LAN-PC per DSL, vom Urlaubshotel-WLAN, oder per "mobile Daten" übers mobile Telefonnetz, und dazu bräuchte ich dann ja eine "externe" url, über die mein Programm (exakter ESP8266 Code wie oben, samt Sensoren, Aktoren und HTML-Website-Code) die eigene Website weltweit erreichbar macht, nur wie bekomme ich so eine?
Bisher habe ich keine eigene Website. Es ist momentan ja auch nur eine Spielerei, und daher würde ich das gern über irgendeinen kostenlosen (Cloud?) Server mit stark begrenztem Volumen machen. Mein Telefonanbieter stellt so etwas leider auch nicht kostenlos zur Verfügung.
Geändert von HaWe (07.06.2017 um 11:03 Uhr)
okay, da fehlen entscheidende grundlagen, ich fass das mal so für dich zusammen:
wenn du von außen zugreifen willst, musst du dien "derzeitig" IP wissen (weil dein Provider dir mind. alle 24h eine neue IP zuweist ... besondere Verträge mal ausgenommen, aber davon gehe ich hier nicht aus)
damit du die IP nicht jedes mal selber suchen und eingeben musst, kannst du einen dynamischen DNS Eintrag verwenden. Die meisten Router bieten sog. dynDNS Unterstützung an
Was du brauchst: Ein Account z.B. bei dynDNS (klassischer Provider für dynamische DNS Einträge) und du musst deinem Router die Account-Daten geben, damit er die aktuelle IP immer frisch fröhlich zu dynDNS übermittelt. Vor dort aus kannst du dir eine dynDNS Domain anlegen, die dann immer automatisch zu deiner derzeitigen Ip zeigt, solange dein Router die Information updatet
Jetzt stehst du schonmal an deiner virtuellen Haustür, was jetzt fehlt ist "klingeln" ... üblicherweise passiert das beim Browser über Port 80
Also musst du deinem Router jetzt noch sagen, dass alle Anfragen auf Port 80 zu dem ESP im lokalen Netzwerk (ebenfalls port 80 der einfachheit) weitergeleitet werden
Pro-Tipp: Weise in deinem Router (sofern Funktion vorhanden) an, deinem ESP IMMER die gleiche IP zu geben. Sollte dein ESP mal rebooten kann es leicht passieren, dass er sonst eine neue lokale Netzwerk IP bekommt, wenn der Router das Gerät nicht automatisch wiedererkennt. Denn wenn die lokale Netzwerk IP sich ändert, musst du auch die Weiterleitung neu einrichten.
Ich habs bisher noch nicht probiert, aber ich meine es gäbe da auch so eine UPnP (UDP Plug'n'Play glaub ich der Name) Funktion/Lib für den ESP, dann kann er sofern es beim Router eingeschaltet ist, die Weiterleitung auch selber festlegen!
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
ok, danke für die ausführliche Antwort!
Um hinten anzufangen: die feste IP im Heimnetz kriege ich im ESP8266 Programm über
IPAddress ip(192,168,2,117);
IPAddress gateway(192,168,2,1);
IPAddress subnet(255,255,255,0);
WiFi.config(ip, gateway, subnet);
aber in meinem WLAN Router mag ich nicht rumpfuschen (das ist extrem unübersichtlich, ich kenne mich darin überhaupt nicht aus, fürchte, dass ich irgendwas ins Nirwana schicke, und ich weiß noch nicht mal ob da überhaupt was derartiges einstellbar ist).
Einen eigenen Account beantragen bei dynDNS : geht das kostenlos, und wenn ja, wie?
Bleibt die Frage nach dem Webserver, dem Universum, und dem ganzen Rest.
>Einen eigenen Account beantragen bei dynDNS : geht das kostenlos, und wenn ja, wie?
kalr kostenlos, google nach dynDNS
ohne im router rum zu werkeln wird das aber nix
ich begreif jetzt die frage nach einem webserver nicht, dein ESP stellt doch selber den webserver, du musst nur eine Verbindung von außen zum ESP schaffen (übr den router, oder UPNP mit viel glück, dann brauchst am router nichts einstellen)
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
Lesezeichen