Abo
  • Services:
Anzeige
ESP-8266-12 und ESP-8266-01-Modul
ESP-8266-12 und ESP-8266-01-Modul (Bild: Alexander Merz/Golem.de)

Die benötigten Bauteile

Die Liste der erforderlichen Bauelemente ist kurz, es gibt sie für wenig Geld bei allen Elektronikhändlern:

  • ein Temperatursensor DS18B20
  • ein 4,7-kOhm-Widerstand
  • ein kleines Steckbrett
  • ein Set Verbindungskabel und Klingeldraht

Wer den ESP mit einem Arduino nutzen will, benötigt natürlich auch diesen. Soll der ESP hingegen allein genutzt werden, ist noch ein USB-zu-Seriell-Adapter notwendig und irgendeine Form der Stromversorgung mit einer Spannung von 3,3 Volt. Wir benutzen dazu eine umfunktionierte USB-Buchse und einen LD33V-Spannungswandler.

Anzeige

ESP8266 mit dem Arduino nutzen

Zuerst wird der Schaltkreis zur Temperaturmessung aufgebaut und mit dem Arduino verbunden. Ablauf und Verkabelung wurden bereits ausführlich im Artikel Temperatur messen mit dem Arduino geschildert.

Steht diese Schaltung, kann der ESP8266 mit dem Steckbrett und dem Arduino verbunden werden. Leider hat das ESP-01 zwei Haken: Die parallel angeordneten Pins funktionieren nicht mit einem Steckbrett. Es muss also fliegend verkabelt werden. Da die Pins des ESP-01 nicht markiert sind, empfiehlt es sich, beim Verkabeln ein Bild mit den Pin-Bezeichnungen vor sich zu haben, wie es zum Beispiel hier zu finden ist.

  • ESP-01 als Temperaturmessstation (Foto: Martin Wolf/Golem.de)
  • ESP-01 mit Arduino als Temperaturmessstation (Foto: Martin Wolf/Golem.de)
  • ESP-01 und ESP-12 (Foto: Martin Wolf/Golem.de)
  • Basisschaltung für den Temperatursensor und die Stromversorgung  (Foto: Martin Wolf/Golem.de)
  • Für den Standalone-Betrieb eines ESP-01 ist neben der zusätzlichen Stromversorgung auch ein USB-zu-Seriell-Adapter nötig. (Foto: Martin Wolf/Golem.de)
  • Fritzing-Zeichnung für den Betrieb des ESP-01 mit einem Arduino (Abb.: Alexander Merz/Fritzing)
  • Fritzing-Zeichnung für den Standalone-Betrieb des ESP-01 (Abb.: Alexander Merz/Fritzing)
ESP-01 mit Arduino als Temperaturmessstation (Foto: Martin Wolf/Golem.de)

Der GND-Pin des ESP wird mit der blauen oder schwarzen Leiste des Steckbretts verbunden, der VCC-Pin mit der roten Leiste. Auch der CH_PD-Pin muss mit der roten Leiste verbunden werden. Das mittlere Beinchen des Temperatursensors wird mit dem Pin GPIO02, der TX-Pin des ESP mit dem RX-Pin des Arduinos (Pin 0) verbunden, der RX-Pin am ESP mit dem TX (Pin 1) des Arduino. Wer später beim Programmieren Probleme hat, das Programm auf den Arduino aufzuspielen, sollte die RX- und TX-Kabel während des Flashvorgangs abstecken, danach wieder aufstecken und einen Reset durchführen.

Wer Bedenken hat, der ESP käme nicht mit dem Spannungspegel bei den RX/TX-Pins des Arduino zurecht, sei beruhigt. Im Dauertest gab es mit verschiedenen Modulen keine Probleme. Lediglich die Stromversorgung über den Arduino kann zu Problemen führen, wenn das Wlan schlecht erreichbar ist. Hier muss unter Umständen eine eigene Stromquelle zum Einsatz kommen, wie im zweiten Teil des Artikels beschrieben.

Arduino programmieren

Auch bei unserem Programm für den Arduino können wir auf den Code und die Erklärung dazu aus dem früheren Artikel zurückgreifen. Der Teil zur Temperaturmessung ist identisch, allein der zur Initialisierung des ESP-Moduls und zum Versenden der Daten unterscheidet sich. Den vollständigen Quellcode für unser Programm gibt es in Github. Hier werden wir die Kommunikation mit dem ESP besprechen.

Die Kommunikation zwischen dem Arduino und dem ESP-Modul wird über die serielle Schnittstelle abgewickelt. Das hat den praktischen Nebeneffekt, dass die Kommandos unseres Programms an den ESP im seriellen Monitor der Arduino-IDE sichtbar sind.

Der ESP erwartet AT-Kommandos, wie sie langjährige Leser noch von früheren Modems kennen. Eine Liste der Kommandos gibt es auf Github. In der initESP()-Funktion schicken wir AT-Kommandos, damit das ESP als reguläres WLAN-Gerät agiert (AT+CWMODE=1) und erlauben nur eine Verbindungen gleichzeitig (AT+CIPMUX=0). Schließlich starten wir die Verbindung mit einem WLAN-Netzwerk, dabei übergeben wir den Netzwerknamen und das Passwort (AT+CWJAP="SSID", "PASSWORT"). Letztere sind im Programm als Konstanten definiert.

Ein gemessener Temperaturwert wird mit der sendTemperature()-Funktion versendet. Sie ruft praktisch nur zwei AT-Kommandos auf. Das erste stellt eine TCP-Verbindung mit dem Server her:

AT+CIPSTART="TCP","www.golem.de",80

Als Nächstes wird ein GET-Request nach HTTP1.0 in einem String zusammengebaut und ausgeführt (Zeile 67 bis 82). Dieser Part ist etwas komplizierter. Zuerst wird die erste Request-Zeile gebaut, die die URL enthält. Die URL besteht aus einem fixen Teil und kann über ein Formular auf unserer Projektseite erzeugt werden. Daran wird die Temperatur als URL-Parameter angehängt. An diese Request-Zeile wird eine zweite Zeile für die nochmalige Hostangabe angehängt und der Request-Body beendet.

Jetzt wird ein AT-Kommando mit der Länge des Request-Strings übergeben:

  1. Serial.print("AT+CIPSEND=");
  2. Serial.println(cmd.length());

Danach muss das Programm warten, bis der ESP mit einer Eingabeaufforderung reagiert, erst jetzt kann der eigentliche Request übergeben werden. Die Serverantwort wird zwar abgeholt, interessiert uns aber hier nicht weiter. Zum Schluss wird die Verbindung wieder geschlossen (AT+CIPCLOSE).

Nach dem Überspielen des Programms kann die ganze Konstruktion vom Computer abgesteckt werden und über eine eigene Stromversorgung versorgt werden, zum Beispiel mit Hilfe eines USB-Netzteils. Es wird jetzt alle 30 Minuten die Temperatur gemessen und gesendet.

Das hier beschriebene Schema, den Arduino über ein Wlan-Modul ans Netz anzubinden, funktioniert übrigens auch mit anderen Wlan-Modulen für den Arduino. Auch sie basieren zumeist auf einer Anbindung über die serielle Schnittstelle, lediglich die AT-Befehle variieren.

 Mitmachprojekt: Temperatur messen und versenden mit dem ESP8266ESP allein benutzen 

eye home zur Startseite
MichaelDworkin 11. Jun 2016

Danke für Ihre Artikel. Ich habe nach Ihre Anleitung Arduino installiert und ESP8266...

ChriDDel 25. Mai 2016

warum der TPS63050? Bei meinen Recherchen bin ich auf den HT7333 gestoßen. Günstig und...

am (golem.de) 05. Mai 2016

Man benötigt das ESP-Paket für die Arduino-IDE wie im Artikel auf Seite 3 beschrieben...

H4ndy 01. Mai 2016

Ich hab nen Digistump Oak genommen, der ist etwas teuerer, bringt aber Particle.io mit...

Mett 28. Apr 2016

Doch doch, er zeigt irgendwann, was die komplette Kiste im deep sleep zieht: 127 µA.



Anzeige

Stellenmarkt
  1. Continental AG, Regensburg
  2. CENIT AG, Stuttgart, deutschlandweit
  3. The unbelievable Machine Company GmbH, Frankfurt am Main
  4. SICK AG, Waldkirch bei Freiburg im Breisgau


Anzeige
Top-Angebote
  1. 599,00 €
  2. 319,00€ inkl. Versand

Folgen Sie uns
       


  1. Zero G

    Schwerelos im Quadrocopter

  2. Streaming

    Youtube hat 1 Milliarde US-Dollar an Musikindustrie gezahlt

  3. US-Wahl 2016

    Nein, Big Data erklärt Donald Trumps Wahlsieg nicht

  4. Online-Hundefutter

    150.000 Euro Strafe wegen unerlaubter Telefonwerbung

  5. Huawei

    Vectoring mit 300 MBit/s wird in Deutschland angewandt

  6. The Dash

    Bragi bekommt Bluetooth-Probleme nicht in den Griff

  7. Bugs in Encase

    Mit dem Forensik-Tool die Polizei hacken

  8. Autonomes Fahren

    Verbraucherschützer fordern "Algorithmen-TÜV"

  9. The Last Guardian im Test

    Gassi gehen mit einem computergesteuerten Riesenbiest

  10. E-Sport

    Cheats und Bots in Südkorea offenbar gesetzlich verboten



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Gear S3 im Test: Großes Display, großer Akku, große Uhr
Gear S3 im Test
Großes Display, großer Akku, große Uhr
  1. In der Zuliefererkette Samsung und Panasonic sollen Arbeiter ausgebeutet haben
  2. Vernetztes Auto Samsung kauft Harman für 8 Milliarden US-Dollar
  3. 10LPU und 14LPU Samsung mit günstigerem 10- und schnellerem 14-nm-Prozess

Robot Operating System: Was Bratwurst-Bot und autonome Autos gemeinsam haben
Robot Operating System
Was Bratwurst-Bot und autonome Autos gemeinsam haben
  1. Roboterarm Dobot M1 - der Industrieroboter für daheim
  2. Roboter Laundroid faltet die Wäsche
  3. Fahrbare Roboter Japanische Firmen arbeiten an Transformers

Super Mario Bros. (1985): Fahrt ab auf den Bruder!
Super Mario Bros. (1985)
Fahrt ab auf den Bruder!
  1. Quake (1996) Urknall für Mouselook, Mods und moderne 3D-Grafik
  2. NES Classic Mini im Vergleichstest Technischer K.o.-Sieg für die Original-Hardware

  1. Re: In vielen Ländern Europas ist der...

    My1 | 22:50

  2. Re: ISO 26262

    Moe479 | 22:49

  3. Re: McAffe

    EWCH | 22:49

  4. Re: Akku leer?

    BLi8819 | 22:48

  5. Re: Das gibtsdoch schon lange....

    My1 | 22:48


  1. 18:49

  2. 17:38

  3. 17:20

  4. 16:42

  5. 15:05

  6. 14:54

  7. 14:50

  8. 14:14


  1. Themen
  2. A
  3. B
  4. C
  5. D
  6. E
  7. F
  8. G
  9. H
  10. I
  11. J
  12. K
  13. L
  14. M
  15. N
  16. O
  17. P
  18. Q
  19. R
  20. S
  21. T
  22. U
  23. V
  24. W
  25. X
  26. Y
  27. Z
  28. #
 
    •  / 
    Zum Artikel