Last Updated on 18. September 2023 by sfambach
Der WeMos D1 R32 ist ein ESP32 in Arduino Uno Bauweise. Er sieht aus wie ein Arduino seine
IOs arbeiten jedoch nur mit 3V anstatt mit den gewohnten 5V. Dies kann zu Inkompatibilitäten bei Erweiterungsplatinen (Shields) führen. Der Preis liegt beim schnellen Ali unter 5 Euro.
Das Board verfügt über alle Vorszütge des ESP32 Prozessor wie beispielsweise WLan und Bluetooth. Aber auch die Nachteile zum Beispiel kann der zweite ADC bei eingeschaltetem WLAN nicht sicher betrieben werden.
In diesem Beitrag widme ich nur der Inbetriebnahme, andere Aspekte wie Funktionsumfang des ESP32 usw. können bereits erschienen oder noch folgenden Artikeln entnommen werden.
Nachtrag: Bei einer späteren Bestellung habe ich Nachbauten erstanden ESPDUINO-32. Diese scheinen weniger gut verarbeitet zu sein … wer billig kauft!!! Zumindest ist mir bei der vorliegenden Charge zweimal der USB Anschluss abgerissen. Mein Tip wäre entweder den USB-Anschluss seitlich vor Gebrauch nach zu löten, Boards mit dem alten USB Typ-B Anschluss zu kaufen oder evtl. die original Wemos Boards zu besorgen.
Ansichten
Überblick
Hier der technischen Daten zum Vergleich noch der Arduino Uno und der Leonardo dabei.
Name | Arduino Uno | Arduino Leonardo | WeMos D1 R32 ESP32 |
Arduino Nano 33 BLE |
---|---|---|---|---|
Anzahl/CPU | 1 / ATmega328P | 1 / ATmega32u4 | 1/ESP WROOM 32 Modul | 1 / 64 MHz Arm® Cortex-M4F (with FPU) |
Takt (MHz) | 16 | 16 | 240 | 64 |
Kerne | 1 | 1 | 2 | 1 |
Digital IOs / Pins | 14 | 20 | 36/28 | 14 |
Analog inputs | 6 | 12 | 18 | 8 |
Interrupt Pins | 2 | 2 | ? | 14 |
PWM | 6 | 7 | 16 | 14 |
SPI | 1 | 1 | 4 | 1 |
Flash Speicher | 32 KB | 32 KB | 1MB | |
SRam (KB) | 2 | 2,5 | 520 | 256KB |
EEPROM (KB) | 1 | 1 | 4 KB | – |
WiFi | – | – | 802,11 b/g/N Bluetooth |
– |
Verschlüsselung | – | – | WEB / WPA2 / TKIP /AES | – |
Bluetooth | – | – | 4.1 | NINA-B306 Module Bluetooth® Low Energy 5.0 Module Bluetooth® 5 multiprotocol / Zigbee |
UART | 1 | 1 | 3 | 1 |
I2C | 1 | 1 | 2 | 1 |
Ethernet | – | – | – | – |
Video | – | – | – | – |
Sound | – | – | – | – |
Sonstiges | – | – | – | LSM9DS1 (9 axis IMU) MPM3610 DC regulator NFC-A tag Nina B306 |
USB | 1 normal | 1 micro | 1 Micro | 1 Micro |
Betriebsspannung [V] | 5 | 5 | 3,3 | 3,3 |
Eingangsspannung | 7-12 | 7-12 | 3,3 – 9 | 21 |
Strom (mA) / Standby (mA) | 30 | |||
Größe l x b x h | 68,6 x 53,3 | 68,6 x 53,3 | 68,6 x 53,3 | 43,16 x 17,7 |
Gewicht [g] | 25 | 20 | < 25 | 5 |
Pins
Wire / I²C
2 Wire Kontoller sind auf dem ESP Verfügbar, an folgenden Pins kann einer von ihnen Verwendet werden. (Welcher weiss ich nicht).
Bezeichnung | Pin |
---|---|
SCL | 22 |
SDA | 21 |
ADC
Der ESP32 besitzt zwei ADCs mit 18 Kanälen. 6 sind hier auf die regulären ADC Pins herausgeführt. Weitere 4 könnten über, beim Arduino eigentlich Digitale Pins, abgefragt werden. Die Kanäle des ADC 2 sind nicht mit eingeschalteten WIFI nutzbar.
Pin | GPIO | ADC | Kanal | |
---|---|---|---|---|
A0 | 2 | 2 | 1 | Nicht Nutzbar mit WIFI |
A1 | 4 | 2 | 0 | Nicht Nutzbar mit WIFI |
A2 | 36 | 1 | 7 | |
A3 | 34 | 1 | 6 | |
A4 | 38 | 1 | 0 | |
A5 | 39 | 1 | 3 | |
12 | 12 | 2 | 5 | Nicht Nutzbar mit WIFI |
13 | 13 | 2 | 4 | Nicht Nutzbar mit WIFI |
14 | 14 | 2 | 6 | Nicht Nutzbar mit WIFI |
25 | 25 | 2 | 8 | Nicht Nutzbar mit WIFI |
Ich hatte die ADC Kanäle einzeln durchgetestet, immer einer belegt die anderen jeweils unbelegt. Hierbei ist mir ein gewisser Einfluss des Belegten ADC Kanals auf die anderen aufgefallen. Evtl. müsste man dies untersuchen wenn die Werte der ADC Kanäle all zu sehr schwanken.
Die GPIOs 6, 7, 8, 9, 10 und 11 werden beim Wroom Modul für den internen Flash benötigt, sind bei diesem Board aber auch nicht nach aussen geführt.
Arduino Links D1R32 Links Arduino Rechts D1R32 Rechts
SCL SCL
SDA SDA
ARef Reset
GND Gnd
Not connected IO0 13 IO18
IORef 5V 12 IO19
Reset Reset 11 IO23
3.3V 3.3V 10 IO5
5V 5V 9 IO13
GND GND 8 IO12
GND GND 7 IO14
Vin Vin 6 IO27
A0 IO2
IO Vergleich Arduino Uno und D1R32
Arduino Links | D1R32 Links | Arduino Rechts | D1R32 Rechts | |
---|---|---|---|---|
SCL | SCL | |||
SDA | SDA | |||
ARef | Reset | |||
GND | Gnd | |||
Not connected | IO0 | 13 | IO18 | |
IORef | 5V | 12 | IO19 | |
Reset | Reset | 11 | IO23 | |
3.3V | 3.3V | 10 | IO5 | |
5V | 5V | 9 | IO13 | |
GND | GND | 8 | IO12 | |
GND | GND | 7 | IO14 | |
Vin | Vin | 6 | IO27 | |
A0 | IO2 | 5 | IO16 | |
A1 | IO4 | 4 | IO17 | |
A2 | IO36 | 3 | IO25 | |
A3 | IO34 | 2 | IO26 | |
A4 | IO38 | 1 (TX) | TX0 | |
A5 | IO39 | 0 (RX) | RX0 |
Interrupts
Im Prinzip kann jeder GPIO des ESP32 als externer Interrupt verwendet werden. Aber nicht alle sind gleich gut geeignet da sie evtl. von anderen Funktionen verwendet werden.
Arduino Pin | Gpio | Verwendbar | Zusatzfunktion |
---|---|---|---|
A0 | 2 | Könnte gehen | ADC2 |
A1 | 4 | Könnte gehen | ADC2 |
A2 | 36 | Ja | ADC1 |
A3 | 34 | Ja | ADC1 |
A4 | 38 | Ja | ADC1 |
A5 | 39 | Ja | ADC1 |
1/0 | TX0/RX0 | Nein | |
2 | 26 | Könnte gehen | ADC |
3 | 25 | Könnte gehen | ADC2 |
4 | 17 | Ja | U2TXD |
5 | 16 | Ja | U2RXD |
6 | 27 | Könnte gehen | ADC2 |
7 | 14 | Könnte gehen | ADC2 |
8 | 12 | Könnte gehen | ADC2 |
9 | 13 | Könnte gehen | ADC2 |
10 | 5 | Ja | TOUCH0 |
11 | 23 | Ja | MOSI |
12 | 19 | Ja | MISO |
13 | 18 | Ja | SCLK |
Programmierung
Arduino Programmierumgebung
Wenn der ESP32 vorher noch nicht benutzt wurde muss die Arduino Gui noch angepasst werden. Wie ist im gelinkten Artikel unten beschrieben.
Infos gibts auch auf GITHUB.
Testprogramm
Als Testprogramm habe ich das WiFiClient Beispielprogramm herangezogen und etwas angepasst. Bitte die WLAN Daten entsprechend auf die Lokalen Umstände anpassen.
Nicht schön aber so sieht es bei mir aus:
Für das Programm braucht ihr eine Gegenstelle. Hierfür könnt ihr das kleine Java Tool nehmen, dass ich bereits in anderen Projekten verwendet habe. Beim Starten den port 88 angeben und/oder im Programm ändern.
Sonstiges
Basic OTA
Ota ist möglich, wie im folgend gelinkten Beitrag zu entnehmen.
ADCs auslesen
Hier ein Beispiel:
Funktionierende Zusatzplatinen
Prototyp Platine V1
Motor Platine V2
(Ungetestet)
Sensorplatine V5
Verwandte Beiträge
Fazit
Nett gendacht aber nicht gut gemacht. Der EPS32 bietet viele Möglichkeiten und Anschlüsse. Den ADC2, welcher bei aktiven WLAN nicht verwendbar ist auf A0 und A1 zu legen ist nicht sonderlich sinnvoll. Auch wären 5V Aus-/Eingänge aus kompatiblitätsgründen sehr nützlich gewesen. Wer jedoch nur Shields verwendet, die auch mit 3V arbeiten findet hier einen Arduino UNO Clone der zusätzlich WIFI bietet. Auch wer seine Projekte ohne Shields diskret aufbaut, kann mit diesem Board arbeiten, evtl. benötigt er an der ein oder anderen Stelle einen Logik-Level-Konverter. Die meisten aktuellen Sensoren arbeiten jedoch mit 3-5V oder es wird eine 3V Version gewählt. Der diskrete Aufbau benötigt den Formfaktor des Arduino Uno jedoch nicht.
Quellen
https://github.com/SmartArduino/SZDOITWiKi/wiki/ESP8266—ESPduino-32
https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/windows.md
Hallo,
Danke für den Beitrag. Aus langjähriger Erfahrung mit Arduino, hatte mich das Design des D1 R32 angesprochen und habe ich mir auch einen gekauft.
Nur bin ich sehr entäuscht über die Reichweite des WLAN und Bluetooth-Moduls bei beiden muss ich direkt neben dem Router bzw. mit dem Smartphone vor dem ESP stehen, damit er sich verbindet. Hast Du irgendeinen Tipp wie man bei dem D1 R32 die Reichweite erhöht? Danke!
Hallo Jonas,
ich habe mal meinen D1 R32 aus der Kiste geholt. Bei mir ist der Accesspoint an der Decke und ca. 10m entfernt.
Ich habe trotz Wände -56 dbm Empfang. Mit montierter Zusatzplatine habe ich noch -60 dbm. Ich kann somit nicht über die Reichweite klagen.
Allerdings zeigt auch die Antenne des ESP nach oben. Deshalb habe ich hierzu den ESP mal auf den Kopf gestellt, dieser ist auf einer Metallplatte montiert was zusätzlich abschiermen sollte.
Der RSSI Wert am ESP ergab -70 dbm, was immer noch ok ist.
(Accesspoint ist ein Netlink EAP265 HD)
Es gibt beim ESP32 ein Problem, dass er sich manchmal nicht connecten will, dies ist im Kapitel Probleme hier beschrieben: https://www.fambach.net/esp32-nuetzliche-infos/.
Zusätzlich kann man noch ein ESP.restart(); nach mehrmaligen durchlaufen der Schleife einbauen.
Sonst würde mir nur noch das einfallen https://www.youtube.com/watch?v=wP9YMNj_E7Y 😉
Gruß
Stefan
Nachtrag, habe mein Testprogramm mal nach git hochgeladen:
https://github.com/sfambach/esp32/tree/master/project/Test_WifiEsp32
Servus Jonas,
Hatte als Neuling (also bis gestern…) auch mit extrem schwachen Wlan Singlal zu kämpfen. Mein Fehler war dass ich pins vom ADC2 verwendet habe. Habe gpio2 & gpio4 als I2C sda&sdc verwendet. Nachdem ich auf gpio18&19 gewechselt habe, hatte das WLAN Signal volle Stärke. Grüsse aus Österreich, Bert
Hallo Angelbert,
vielen Dank für deinen Beitrag und Erfahrungsbericht. Ist irgendwie eine Fehlkonstruktion mit dem ADC2 liegt aber natürlich am EP32 nicht am Board.
Gruß aus Deutschland nach Österreich
Stefan
Vielen Dank für diesen sehr informativen Artikel!
Es ist mir klar, dass die meisten bestehenden Erweiterungsplatinen nicht funktionieren werden. Dieses Board lässt sich aber sehr leicht kombinieren mit den Arduino Prototyping-Platinen, die es bei den bekannten Lieferanten aus China für ca. 1 bis 2 Euro gibt. Damit lässt sich viel besser arbeiten als mit den wackligen Steckbrettern.
Grüße
Fred
Hallo Fred,
vielen Dank für deinen Beitrag. Du hast natürlich recht die Prototypen Platine passt und bietet einige Vorteile, ich verwende sie auch gerne. Mir ist noch die Sensorplatine eingefallen, so bietet beispielsweise direkte Anschlüsse für Servos und dandere Sensoren.
Link zum schnellen Ali
Gruß
Stefan
Vielen Dank für Ihr update der Seite und Ihre Antwort. Da werde ich mir wohl so ein Teil zulegen „müssen“… 😉
Viele Grüße,
Migusch
Hallo Migusch,
wenn das für dich passt. Ich persönlich finde das Board nicht so gut, weil die meisten Erweiterungsplatinen nicht funktionieren und somit auch das Format keinen Sinn ergibt. Es gibt günstigere ESP32 boards mit mehr Pins, die auch mit der Arduino GUI programmiert werden können.
Gruß
SteFam
Hallo Migusch,
danke für deinen Beitrag. Mein Antwort hat leider einen Moment gedauert, da ich erstmal den Beitrag aktualisieren und ein paar Fehler korrigieren wollte. Da sich die Artikel immer weiter entwickeln, bleibt es leider manchmal nicht aus, dass ein Paar Infos unvollständig sind oder der Beitrag wie im obigen Fall in Vergessenheit gerät. Ich hoffe die Inhalte sind jetzt nicht mehr widersprüchlich, Der Arduino Uno besitzt 6 ADC Eingängen, diese sind auch hier bedingt verfügbar. ADC Pin 0/1 können allerdings nich parallel mit Wifi betrieben werden. 4 Weitere Eingänge des ADC 2 sind auf Digitalen Pins des Arduino Uno verfügbar.
Basic OTA habe ich auch gleich mal mit getestet, es funktioniert auch wenn ich manchmal Abbrüche habe.
Gruß SteFam
Schöne Webseite mit vielen nützlichen Informationen!
Kann man den WeMos D1 R32 wireless programmieren, also „OTA“?
Ich habe nicht verstanden wie viel analoge Anschlüsse man jetzt tatsächlich nutzen kann. Der Chip könnte eigentlich 18, aber wie viele sind an der Arduino-GPIO herausgeführt? Der Bestückungsdruck hat entlang 6 Anschlüsse die Bezeichnung „Analog“. Oben schreiben Sie bei A2 bis A4 einen Strich, heißt das die Anschlüsse sind nicht nutzbar?
Vielen Dank für eine Antwort