Tut01: ESP8266 mit Arduino – Installation

  1. Windows 7 Image installieren (4GB-RAM, 2 CPUs)
  2. Arduino downloaden und installieren
  3. Arduino starten und unter „Voreinstellungen“ bei „Zusätzliche Boardverwalter-URLs“ folgende eintragen:
    http://arduino.esp8266.com/stable/package_esp8266com_index.json
    Hintergrund siehe: https://github.com/esp8266/Arduino
  4. Unter „Werkzeuge“, „Board…“, „Boardverwalter“ bei der Suche „ESP8266“ eingeben und Ergebnis installieren (150MByte, das dauert etwas).
  5. Unter „Werkzeuge“ „Board…“ das Brett „NodeMCU 1.0 (ESP-12E-Module“) auswählen
  6. ESP8266 an USB-Port einstecken
  7. USB-Port in VirtualBox durchreichen: Unter „Geräte“, „USB“, „Silicon-Labs CP2102…“ auswählen.
  8. Unter „Werkzeuge“, „Port“ „Com3“ auswählen
  9. Das „Hallo Welt“ bei Arduino heisst „blink“ und zwar die Leuchtdiode auf dem Brett.
    „Datei“ , „Beispiele“, „ESP8266“, „Blink“ und dieses einfach an ESP8266 übertragen.
  10. Werte für „delay“ ändern (delay in ms)  und wieder übertragen.
    delay(100); // Wait for 0,1 second
    digitalWrite(LED_BUILTIN, HIGH); // Turn the LED off by making the voltage HIGH
    delay(200);
  11. Glückwunsch zum ersten Arduinosketch.

    Grossartiges Buch über den ESP8266
    http://neilkolban.com/tech/esp8266/

Advertisements

Tut02: ESP8266 mit Arduino – Externe LED mit Vorwiderstand schalten

Pinbegelung NodeMCU

Vorsicht! USB-Port unten, betrachtet von oben!

nodemcu_pinout_700.png

Zur Adressierung von Ausgängen:

  1. Die bereits genutzte blaue interne LED hängt an D0 (Ausgang Digital 0)
    Diese wird im Beispielsketch automatisch über „LED_BUILTIN“ adressiert, da wir der Arduino-IDE gesagt haben, welches Brett da vor ihr liegt.
  2. Sauber wäre diese über z.B. digitalWrite(D0, HIGH); zu adressieren.
  3. Weg 3 für maximale Verwirrung:
    digitalWrite(16,HIGH);
    zur direkten Adressierung von  GPIO16 geht ebenfalls.Das Vermischen dieser drei Möglichkeiten hat schon viele in den Wahnsinn getrieben, Psychiatrie!

Aufgabe:
Hängen Sie eine externe LED mit Vorwiderstand an D1 (GPIO0) gegen GND (langes Beinchen D1, kurzes an GND und lassen Sie dieses blinken.

 

externediode

Tut03: ESP8266 mit Arduino – LED schalten über Webserver

Vorsicht, dieser Sketch dient nur zum Einstieg und ist nicht für den langfristigen Produktiveinsatz gedacht, der ESP8266 hängt sich immer mal wieder auf, manchmal nach 10 Minuten, manchmal schon schneller. Der Resetbutton bringt Abhilfe.

Als Vorlage dient:
http://www.instructables.com/id/Quick-Start-to-Nodemcu-ESP8266-on-Arduino-IDE/

#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("");
 
}

Vorsicht im Schulungsbereich: Einige TP-Link-APs lassen nicht mehr als 16 Teilnehmer zu.

Lösung: vernuenftige Hardware nutzen, der TP-Link 841 hat anscheinend ein „hard limit“, auch mit OpenWRT ist bei um die 15 Schluss.
Mikrotik tut.

Tut04:ESP8266 MAC-Adresse auslesen

Mit folgendem Sketch können Sie Ihre MAC-Adresse über die serielle Konsole auslesen, wichtig für SSID der APs und für manuelle Einträge im DHCP-Server.

#include <ESP8266WiFi.h>

//const char* ssid = "ssid";
//const char* password = "password";
byte mac[6];

void setup() {
  Serial.begin(115200);
  //WiFi.begin(ssid, password);

  Serial.print("\nStart...\n");
  WiFi.macAddress(mac);
  Serial.print("MAC: ");
  Serial.print(mac[0],HEX);
  Serial.print(":");
  Serial.print(mac[1],HEX);
  Serial.print(":");
  Serial.print(mac[2],HEX);
  Serial.print(":");
  Serial.print(mac[3],HEX);
  Serial.print(":");
  Serial.print(mac[4],HEX);
  Serial.print(":");
  Serial.println(mac[5],HEX);
}

void loop() {
  // put your main code here, to run repeatedly:

}

Tut05: ESP8266 mit Arduino – Temperatur und Luftfeuchtemessung mit DHT11/DHT22

  • „Bibliothek einbinden“ -> „Bibliothek verwalten“ -> „dht11“ suchen -> installieren
  • Beispiel laden: „SimpleDHT“ -> „DHT11_Default“
  • Richtig anschliessen und Testen

weiter mit Webserveranzeige Temperatur und Luftfeuchte, Google ist Dein Freund.
Empfehlung:
http://randomnerdtutorials.com/esp8266-dht11dht22-temperature-and-humidity-web-server-with-arduino-ide/

Vorsicht: Problem mit aktuellen Adafruit-DHT-Lib,
Version 1.3 (Februar 2017) macht Probleme beim Kompilieren
Lösung: Version 1.2.3 über die Bibliotheksverwaltung installieren, siehe oben oder zu 1.3 Adafruit Unified Sensor (ganz unten in der Bibliotheksverwaltung) installieren.


Vorsicht Spannungspin an DHT11 an Vin ESP8266 tötet den ESP bei falscher Verkabelung, 5 tote Schottkeydioden in einer Klasse deuten zumindest darauf hin. Wir nutzen Vcc und nicht Vin!!1111!!!
Nach Reparatur (Lötbatzen über Schottky) abzwicken von Vin (5V-Pin) für die Schulungs-ESPs.