WeMos D1 R32 ESP32

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.

NameArduino UnoArduino LeonardoWeMos D1 R32
ESP32
Arduino Nano 33 BLE
Anzahl/CPU
1 / ATmega328P1 / ATmega32u41/ESP WROOM 32 Modul1 / 64 MHz Arm® Cortex-M4F (with FPU)
Takt (MHz)161624064
Kerne1121
Digital IOs / Pins142036/2814
Analog inputs612188
Interrupt Pins22?14
PWM671614
SPI1141
Flash Speicher32 KB32 KB1MB
SRam (KB)22,5520256KB
EEPROM (KB)114 KB-
WiFi--802,11 b/g/N
Bluetooth
-
Verschlüsselung--WEB / WPA2 / TKIP /AES-
Bluetooth--4.1NINA-B306 Module Bluetooth® Low Energy 5.0 Module Bluetooth® 5 multiprotocol / Zigbee
UART1131
I2C1121
Ethernet----
Video----
Sound----
Sonstiges---LSM9DS1 (9 axis IMU)
MPM3610 DC regulator
NFC-A tag
Nina B306
USB1 normal1 micro1 Micro1 Micro
Betriebsspannung [V]553,33,3
Eingangsspannung7-127-123,3 - 921
Strom (mA) / Standby (mA)30
Größe l x b x h68,6 x 53,368,6 x 53,368,6 x 53,343,16 x 17,7
Gewicht [g]2520< 255

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).

BezeichnungPin
SCL22
SDA21
Wire Pins

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.

PinGPIOADCKanal
A0221Nicht Nutzbar mit WIFI
A1420Nicht Nutzbar mit WIFI
A23617
A33416
A43810
A53913
121225Nicht Nutzbar mit WIFI
131324Nicht Nutzbar mit WIFI
141426Nicht Nutzbar mit WIFI
252528Nicht Nutzbar mit WIFI
Analoge Pin-Zuordnung

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 LinksD1R32 LinksArduino RechtsD1R32 Rechts
SCLSCL
SDASDA
ARefReset
GNDGnd
Not connectedIO013IO18
IORef5V12IO19
ResetReset11IO23
3.3V3.3V10IO5
5V5V9IO13
GNDGND8IO12
GNDGND7IO14
VinVin6IO27
A0IO25IO16
A1IO44IO17
A2IO363IO25
A3IO342IO26
A4IO381 (TX)TX0
A5IO390 (RX)RX0
IO Vergleich Arduino Uno und D1R32

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 PinGpioVerwendbarZusatzfunktion
A02Könnte gehenADC2
A14Könnte gehenADC2
A236JaADC1
A334JaADC1
A438JaADC1
A539JaADC1
1/0TX0/RX0Nein
226Könnte gehenADC
325Könnte gehenADC2
417JaU2TXD
516JaU2RXD
627Könnte gehenADC2
714Könnte gehenADC2
812Könnte gehenADC2
913Könnte gehenADC2
105JaTOUCH0
1123JaMOSI
1219JaMISO
1318JaSCLK
Verwendbare externe Interrupte

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.

Beitrag zur Einrichtung der Arduino Gui für den ESP32

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.

ESP Nützliche Infos, enthält Kapitel zu Basic OTA

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://www.wemos.cc/

https://github.com/SmartArduino/SZDOITWiKi/wiki/ESP8266—ESPduino-32

https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/windows.md

https://www.cnx-software.com/2017/09/04/espduino-32-wemos-d1-r32-esp32-boards-support-some-arduino-uno-shields/

Anleitung für OTA

11 Gedanken zu „WeMos D1 R32 ESP32

  1. 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!

    1. 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

    2. 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

      1. 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

  2. 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

    1. 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

  3. 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

    1. 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

  4. 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

  5. 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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert