In diesem Beitrag möchte ich dir das NodeMCU Dev Kit mit ESP8266 Chip von Paradisetronic vorstellen.
Diesen Microcontroller mit
- Fotowiderstand,
- RGB LED,
- 6 SMD LEDs und
- einem Batteriefach
habe ich von der Firma Paradisetronic kostenfrei für ein Review zur Verfügung gestellt bekommen.
Inhaltsverzeichnis
- Bezug
- Technische Daten des NodeMCU Dev Kit mit ESP8266 Chip
- Aufbau
- Vorbereiten zum Programmieren
- Einrichten in der Arduino IDE
- Beispiele
- Fazit & Ausblick
Bezug
Wenn du diesen kleinen Microcontroller beziehen möchtest so kannst du diesen für 14,52€ im Online Shop erwerben. Zu diesem Preis kommt noch eine Versandkostenpauschale von 6,5€ (für innerhalb Deutschland) hinzu.
Aber der Shop bietet so einiges mehr so das man sicherlich noch das ein oder andere nützliche Bauteil findet und somit sich die Versandkosten mehr als bezahlt machen.
Technische Daten des NodeMCU Dev Kit mit ESP8266 Chip
- Model: ESP-12F
- SPI Flash: 32 Mbit
- Schnittstellen: UART, GPIO, ADC, PWM
- UART Baudrate: von 300 bis 46080000
- Standard: 115200 bps
- WiFi Übertragungsleistung
- 802.11b 16±2 dBm (bei 11Mbps)
- 802.11g 14±2 dBm (bei 54Mbps)
- 802.11n 13±2 dBm (bei HT20, MCS7)
- Betriebspannung: 3.0V bis 3.6V
- Stromaufnahme: >500mA
- Umgebungstemperatur: -20°C bis +85°C
- Lagertemperatur: -40°C bis +85°C, bei < 90% rel. Luftfeuchtigkeit
- Abmaße (B x L x H): 42mm x 51mm x 14mm
Aufbau
Das Board des NodeMCU Dev Kits verfügt über
- einen Fotowiderstand,
- eine RGB LED,
- sechs SMD LEDs,
- eine UART Schnittstelle (TXD, RXD, GND),
- 2x 8 Stiftleisten für die GPIO Pins, sowie
- einem fest angelöteten Batteriefach für AA Batterien
Pins der LEDs des Fotowiderstandes
Der Fotowiderstand ist am Pin “ADC” angeschlossen.
Die LED am GPIO 2 ist verbunden mit der BUILD_IN LED d.h. es leuchtet in diesem Fall nicht nur die kleine rote SMD LED sondern auch die blaue LED auf dem ESP-12F Chip.
Vorbereiten zum Programmieren
Da das Board über keine USB Schnittstelle zum programmieren verfügt benötigen wir ein UART Modul. Ich verwende einen FTDI USB Konverter.
Dieses Modul habe ich schon für diverse Microcontroller wie dem STM32F103C8T6 verwendet um diese zu programmieren bzw. ein Programm auf diese zu schreiben.
Auf dem NodeMCU Dev Kit Board ist die UART Schnittstelle mit RXD|GND|TXD beschriftet. Jedoch ist die Beschriftung für RXD & TXD vertauscht!
Wir schließen das FTDI Modul mit RXD -> RXD , GND -> GND und TXD -> TXD an. Der Jumper muss dabei auf dem Board stecken.
Einrichten in der Arduino IDE
Damit du das NodeMCU Dev Kit in der Arduino IDE programmieren kannst musst du zuerst den Boardtreiber installieren.
Im ersten Schritt musst du die Adresse
http://arduino.esp8266.com/stable/package_esp8266com_index.json
als “Zusätzliche Boardverwalter-URL” unter den Voreinstellungen hinzufügen.
Wenn dieses erledigt ist kannst du unter “Werkzeuge” > “Board” > “Boardverwalter…” das ESP8266 Paket installieren.
Wenn das Paket installiert ist dann musst du das Board “Generic ESP8266 Module” auswählen und die Einstellungen wie auf dem Bild zusehen einstellen.
Beispiele
Hier nun einpaar kleine Beispiele welche du mit diesem Board nachprogrammieren kannst ohne das du zusätzliches Material benötigst.
BUILD_IN LED blinken lassen
Die kleine BUILDIN_LED am ESP-12F Chip ist am GPIO 2 angeschlossen. Diese können wir mit einem kleinen einfachen Sketch zum blinken bringen.
#define led 2 void setup() { pinMode(led, OUTPUT); } void loop() { digitalWrite(led, HIGH); delay(250); digitalWrite(led, LOW); delay(250); }
SMD LED Lauflicht
Mit den 6 SMD LEDs lässt sich recht einfach ein Lauflicht erstellen. Es muss lediglich nur eine SMD LED nacheinander aktiviert bzw. deaktiviert werden.
#define led1 2 #define led2 0 #define led3 4 #define led4 5 #define led5 14 #define led6 16 int leds[6] = {led1, led2, led3, led4, led5, led6}; void setup() { pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); pinMode(led4, OUTPUT); pinMode(led5, OUTPUT); pinMode(led6, OUTPUT); } void loop() { for (int i = 0; i < 6; i++) { digitalWrite(leds[i], HIGH); delay(250); digitalWrite(leds[i], LOW); } }
Fotowiderstand mit LEDs
Der verbaute Fotowiderstand ist am analogen Pin A0 angeschlossen und liefert mit dem Befehl “analogRead” einen Wert zwischen 0 (für maximale Helligkeit) und 20 (für komplett dunkel). Diesen Wert kann man nun mit der Funktion “map” und etwas Quellcode auf die SMD LEDs präsentieren.
#define led1 2 #define led2 0 #define led3 4 #define led4 5 #define led5 14 #define led6 16 #define fotoresistor A0 int leds[6] = {led1, led2, led3, led4, led5, led6}; void setup() { Serial.begin(9600); pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); pinMode(led4, OUTPUT); pinMode(led5, OUTPUT); pinMode(led6, OUTPUT); } void loop() { resetLeds(); int value = analogRead(fotoresistor); Serial.print("Fotowiderstand:"); Serial.println(value); int led = map(value, 20, 0, 0, 5); Serial.print("LED: "); Serial.println(led); digitalWrite(leds[led], LOW); delay(350); } void resetLeds() { for (int i = 0; i < 6; i++) { digitalWrite(leds[i], HIGH); } }
RGB LED ansteuern – Teil 1 – einzelne Farben
Die RGB LED verfügt über 3 Beinchen an welche jeweils ein separater LED Chip angeschlossen ist (grün – GPIO 12, blau – GPIO 13 und rot – GPIO 15). Diese können wir nun im einfachsten Fall in einer Schleife jeweils einen analogen Wert zwischen 0 und 255 zuweisen. (Wir generieren somit auf dem digitalen Ausgang des ESP8266 ein PWM Signal.)
#define greenLed 12 #define blueLed 13 #define redLed 15 const int PAUSE = 10; void setup() { pinMode(greenLed, OUTPUT); pinMode(blueLed, OUTPUT); pinMode(redLed, OUTPUT); } void loop() { setLedLightInt(greenLed); setLedLightInt(blueLed); setLedLightInt(redLed); delay(350); } void setLedLightInt(int pin) { for (int i = 0; i < 255; i++) { analogWrite(pin, i); delay(PAUSE); } for (int i = 255; i > 0; i--) { analogWrite(pin, i); delay(PAUSE); } }
RGB LED ansteuern – Teil 2 – Farben mischen
Wir können natürlich nicht nur die einzelnen LED Chips (grün, rot, blau) ansteuern sondern auch “spezielle” Farben mischen.
Wenn wir zbsp. die Farbe Brombere benötigen dann ist das der RGB Code “r = 146, g = 64, b = 110”. Jedoch sind die Chips in der LED soweit auseinander so das diese Farbe nicht wirklich erblickt werden kann. Man sieht dann eher die einzelne LED Farbe stärker oder schwächer leuchten.
#define greenLed 12 #define blueLed 13 #define redLed 15 const int PAUSE = 10; //"Brombere" - https://www.color-hex.com/color/92406e int r = 146; int g = 64; int b = 110; void setup() { pinMode(greenLed, OUTPUT); pinMode(blueLed, OUTPUT); pinMode(redLed, OUTPUT); } void loop() { setRgbColor(r, g, b); delay(350); } void setRgbColor(int r, int g, int b){ analogWrite(redLed, r); analogWrite(greenLed, g); analogWrite(blueLed, b); }
Leider kann mein Handy von der LED kein Foto aufnehmen da der Sensor nur ein starkes leuchten wahrnimmt.
Fazit & Ausblick
In diesem Beitrag habe ich dir das NodeMCU Dev Kit vorgestellt und anhand von 3 kleinen Beispielen gezeigt wie dieser in der Arduino IDE programmiert werden kann. Im nächsten Beitrag zeige ich dir dann wie du eine kleine Webseite erstellst und die SMD LEDs sowie die RGB LED steuern kannst.
Das kleine Board verfügt über ein paar nette Features, welche einem Anfänger und auch Fortgeschrittenen die Möglichkeiten gibt, mit wenigen zusätzlichen Bauteilen ein paar Schaltungen aufzubauen. Leider fehlt mir persönlich eine USB Schnittstelle zum noch einfacheren Programmieren des ESP8266 Chips.
Unpraktisch weil ohne UART und viel zu teuer. Lieber ein Demos D1mini oder wenn es LDR sein muss ein Witty clouds board.
Hi Martin,
vielen Danke für dein Kommentar, Grundsätzlich könnte ich dir recht geben jedoch kommt der Wemos D1 Mini mit etwas weniger Funktionen daher.
Wenn man mit diesem das gleiche erreichen möchte dann kommt man an einen ähnliches Preis.
Du bräuchtest ein RGB LED Shield, ein Batterie Shield (inkl. passende Batterie).
Aber ja der Witty Cloud ist eine alternative aber auch dieser hat seine grenzen denn ohne Modifikation kommt man bei diesem nicht an die GPIO Pins (siehe https://draeger-it.blog/arduino-lektion-52-esp8266-iot-anfaenger-set/).
Ich sehe solche Sets eher im Bereich Experimentierboard, der Preis ist natürlich etwas hoch aber dafür bekommst du diesen Microcontroller auch aus Deutschland geliefert und hast solltest du Probleme bekommen einen deutschsprachigen Ansprechpartner.
Gruß,
Stefan Draeger
Hallo Stefan,
erst einmal danke für den Beitrag und den Hinweis auf Modul von Paradisetronic.
Aufmerksam geworden bin ich darauf, da ich für meine ESP-01 Module von AI-Thinker eine Batteriespannungsversorgung benötige. In den einschlägigen Foren findet man sehr viele Infos zur Spannungsversorgung mit Batterie über Step-Up/Down wandler. Wenn ich mir die Datenblätter der verschiedenen Step-Up/Down ICs so anschaue, stolpere ich entweder über die Leistung oder die Bauform. Da ich kein SMD Löten kann (zu große Winkamplitude 😉 hätte ich gern eine Bauform zum durchstecken. Aber alle Wandler die ich so finde im z.B. TO-92 Gehäuse haben nicht genug Leistung um den ESP8266 auf dem ESP-01 Modul zu betreiben.
Um so verwunderter war ich, als ich auf dem von Dir vorgestellten Modul den HT7333 von Holtek gesehen habe, denn dieses liefert laut Datenblatt “nur” 250mA. Zwar müsste das für den ESP8266 reichen, wenn man dessen Datenblatt konsultiert. Meine Messungen zeigen aber, daß das Modul ESP-01 Aufgrud weiterer Bauteile gern 350mA zieht, vor Allem wenn eine WiFi Verbindung aufgebaut werden soll.
Jetzt meine Frage:
Welche Erfahrungen hast du gemacht, was die Stabilität und die Laufzeit des Moduls mit Batterie angeht? Gerade im Hinblick auf den Einsatz als Datenlogger (z.B. in einer Wetterstation) welcher alle 5 Minuten aufwacht, misst, per WLAN die Daten überträgt und dann wieder in den DeepSleep geht.
Viele Grüße und vielen Dank!
David
Hallo David,
die Stromversorgung ist sehr stabil und es gibt keine Abbrüche.
Wie lange jedoch die Batterie läuft kann ich dir noch nicht sagen.
Ich werde einfach mal einen “kleinen” Test machen und einen Temperatursensor anklemmen ( und einpaar frische Batterien einlegen) und die Daten an ThingSpeak senden.
Das Ergebnis findest du dann in einem Beitrag auf diesem Blog.
Gruß,
Stefan Draeger