Arduino mit Wlan Modul ESP8266

Vor ca. 9 Monaten hat mein Feedreader mir einen interessanten Artikel präsentiert. Er handelte von einem Elektronik-Modul namens ESP8266 der TCP/IP Kommunikation über WLAN mit Arduino Controllern ermöglicht. Low-Level Geschichten interessieren mich normalerweise nicht, weil es meist aufwändig und kostspielig war die Hardware ins Netz zu bringen- vor allem ohne Kabel. Dank der netten Ebay Händler aus Shenzhen bekommt man die Hardware für solche Unterfangen inzwischen unter 10€. Ich hatte das Teil sofort bestellt, aber habe es nie geschafft es in Betrieb zu nehmen weil immer was dazwischen kam und mir die Muße fehlte – bis vor ca. 1h. Warum meine ersten Versuche das Teil in Betrieb zu nehmen fehlschlugen kann ich leider nicht mehr sagen. Als ausgebildete Fachkraft bin ich zu 100% sicher die Schaltung 1:1 nachgebaut zu haben aber es wollte nicht klappen. Aufgrund solcher Gedächtnisslücken schreibe ich jetzt diesen Artikel:).

 

 

Auf der Website Instructables.com bin ich auf eine vergleichbare Anleitung gestoßen, die eine Verkabelung ohne Spannugnsteiler und Stützkondensator vorsieht und auf einmal hatte es funktioniert! In dem Tutorial dreht sich alles darum per Http Request Sensordaten von einem DS1820 Temperatursensor per HTTP auf eine recht interessante Seite namens Thingspeak zu übertragen. Ich habe den Code ein wenig angepasst, da ich weder die Hardware dafür besitze noch die Libraries einbinden wollte. Wenn Du das nachbauen möchtest benötigst Du einen Account auf der Seite und mußt den Präprozessor neben SSID und Passwort mit einen API-KEY für Thingspeak füttern.

#include
#include 
 
 
#define SSID "SSID"
#define PASS "PASSWORD"
#define IP "184.106.153.149" // thingspeak.com
String GET = "GET /update?key=[APIKEY]]&field1=";
SoftwareSerial monitor(10, 11); // RX, TX
 
void setup()
{
  monitor.begin(9600);
  Serial.begin(9600);
 
  sendDebug("AT");
  delay(5000);
  if(Serial.find("OK")){
    monitor.println("RECEIVED: OK");
    connectWiFi();
  }
}
 
void loop(){
 
  //float tempC = sensors.getTempCByIndex(0);
 
  char buffer[10];
  String tempF = dtostrf(989, 4, 1, buffer);
  updateTemp(tempF);
  delay(60000);
}
 
void updateTemp(String tenmpF){
  String cmd = "AT+CIPSTART=\"TCP\",\"";
  cmd += IP;
  cmd += "\",80";
  sendDebug(cmd);
  delay(2000);
  if(Serial.find("Error")){
    monitor.print("RECEIVED: Error");
    return;
  }
  cmd = GET;
  cmd += tenmpF;
  cmd += "\r\n";
  Serial.print("AT+CIPSEND=");
  Serial.println(cmd.length());
  if(Serial.find(">")){
    monitor.print(">");
    monitor.print(cmd);
    Serial.print(cmd);
  }else{
    sendDebug("AT+CIPCLOSE");
  }
  if(Serial.find("OK")){
    monitor.println("RECEIVED: OK");
  }else{
    monitor.println("RECEIVED: Error");
  }
}
void sendDebug(String cmd){
  monitor.print("SEND: ");
  monitor.println(cmd);
  Serial.println(cmd);
} 
 
boolean connectWiFi(){
  Serial.println("AT+CWMODE=1");
  delay(2000);
  String cmd="AT+CWJAP=\"";
  cmd+=SSID;
  cmd+="\",\"";
  cmd+=PASS;
  cmd+="\"";
  sendDebug(cmd);
  delay(5000);
  if(Serial.find("OK")){
    monitor.println("RECEIVED: OK");
    return true;
  }else{
    monitor.println("RECEIVED: Error");
    return false;
  }
}

Die Verdrahtung gestaltet sich sehr einfach und funktioniert mit meinem Arduino UNO- und dem Arduino NANO 328-Klon:

ESP8266 Arduino
TXD RXD
CH_PD VCC 3V3
VXX VCC 3V3
GND GND
RXD TXD

Die Pins auf dem WLAN Chip sind so belegt:

Bild von http://mcuoneclipse.com/2014/10/15/cheap-and-simple-wifi-with-esp8266-for-the-frdm-board/

Hier 2 Bilder die zeigen wie die PINS auf den Arduinos herausgeführt sind:

 

Der Arduino Nano mit 328 Mega Chip

uno

Tükisch waren 2 Dinge an der Geschichte:

  1. Nmap findet das Gerät nicht im Netzwerk. Ich bin der Sache noch nicht nachgestiegen, aber mit <ahref=“http://linux.die.net/man/8/arp“>arp ist es kein Problem. Das muß ich mir anschauen
  2. Der Arduino kann nur programmiert werden, wenn man das WLAN Modul spannungsfrei macht. Auch ein Trennen der Verbindungen WLAN Modul Arduino und Arduino PC erleichtert das übertragen…

In den kommenden Tagen werde ich wohl ein kleines Programm schreiben, daß auf Port 80 lauscht und entsprechenden POST Requests analoge und digitale Ports schaltet und Stati ausgibt. Auch eine Anbindung an mein Openhab wäre sehr nett…

9 thoughts on “Arduino mit Wlan Modul ESP8266

  1. Hey,

    sehr schön und anschaulich gestaltet.
    Leider geht es bei mir nicht, bin schon am verzweifeln.
    Habe das W-Lan Modul bestimmt schon 8 Wochen und es noch nicht hinbekommen, eine Seite aufzurufen.
    Im Serial Monitor wird alles angezeigt, was gerade gemacht wird, ein Feedback vom‘ ESP8266 kommt leider nicht.
    Die Seite wird auch nicht aufgerufen. Ich weiss, sehr wenig Infos, aber mehr kann ich leider selber nicht geben, hat vielleicht jemand eine Idee?
    mfg

      1. Der Sketch wird ganz normal übertragen, den ESP8266 habe ich abgeschlossen, damit der Sketch übertragen werden kann. Anschließend natürlich wieder angeschlossen. Ich bekomme ja auch die Serial.print Meldungen. Das hier steht bei mir im Seriellen Monitor: http://prntscr.com/8miqo8

          1. Danke für deine Müde, geht leider aber auch nicht. Mein Skript funktioniert soweit auch wenn ich es im Brower eingebe, deshalb kann es daran leider nicht liegen. http://prntscr.com/8mjpfa Am Code habe ich auch nichts verändert, nur den Wlan Namen+Schlüssel und ebend die Webseite..
            Bin schon bei dem Gedanken mir ein Raspberry zu hohlen, denn mit dem Arduino komme ich leider, so gerne ich es auch möchte, nicht weiter.

          2. Hi,
            sorry für die späte Antwort. Ich hatte mir zwischenzeitlich einen weiteren ESP8266 bestellt – diesmal bei Ebay und der hat genau die gleichen Probleme wie Dein Chip.
            Der aus diesem Link funktioniert wie in meinem Blogpost:
            http://www.amazon.de/gp/product/B00QIAE74Q/ref=as_li_tl?ie=UTF8&camp=1638&creative=19454&creativeASIN=B00QIAE74Q&linkCode=as2&tag=unerklamrande-21

            Ich habe 2 Probleme mit diesen ESP8266
            1. Die Baudrate muß angepasst werden – bei mir auf 115200 Baud
            2. Die Stromversorgung – die Module können nicht über den 3,3V Ausgang gespeist werden.

  2. Ich kann mir vorstellen, dass es daran liegen könnte das der ESP eine veraltetere Firmware hatte als der von Amazone. Getraut das zu updaten habe ich es mich nicht. Außerdem bekomme ich keine Rückmeldungen , wenn ich die Baudrate ändere. Ich werde mir für die 5 Euro einmal das Modell holen was du hast und hoffen das es funktioniert. Werden mich dann mal die Tage wieder melden!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.