WeMos D1 R32 ESP32

Last Updated on 18. October 2026 by SuffocationLink status: OK

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 Vorzüge des ESP32 Prozessors 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 mich 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 (ESPDUINO-32) erstanden. Diese scheinen weniger gut verarbeitet zu sein … wer billig kauft!!! Zumindest ist mir bei der vorliegenden Charge zweimal der USB Anschluss abgerissen. Mein Tipp wäre, entweder den USB-Anschluss seitlich vor Gebrauch nachzulöten, Boards mit dem alten USB Typ-B Anschluss zu kaufen oder evtl. die original Wemos Boards zu besorgen.

Views

Overview

Hier die technischen Daten, zum Vergleich sind noch der Arduino Uno und der Leonardo dabei.

Arduino UnoArduino LeonardoWeMos D1 R32 ESP32
ManufacturerArduinoArduinoWEMOS
ProcessorATmega328PATmega32u4ESP WROOM 32 Modul
Kernel112
Tact16 MHz16 MHz240 MHz
Flash32 KB32 KB4 MB
SRAM2 KB2,5 KB520 KB
EEPROM1 KB1 KB4 KB
Digitale Pins142036/28
Analoge Eingänge61218
PWM-Pins6716
Interrupt-Pins25
UART113
SPI114
I²C112
WLAN802.11 b/g/n (2,4 GHz) · WEP / TKIP / CCMP (AES)
Bluetooth4.2 (BR/EDR + LE)
USB1 USB-B1 micro1 Micro
Operating voltage5 V5 V3,3 V
Input voltage7-12 V7-12 V5-12 V
Abmessungen68,6 x 53,4 mm68,6 x 53,3 mm68,6 x 53,3 mm
Weight25 g20 gunter 25 g

Pins

Wire / I²C

2 Wire Controller sind auf dem ESP verfügbar, an folgenden Pins kann einer von ihnen verwendet werden. (Welcher, weiß ich nicht).

DesignationPin
SCL22
Seventh-day Adventist21
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 die beim Arduino eigentlich digitalen Pins abgefragt werden. Die Kanäle des ADC 2 sind nicht mit eingeschaltetem WIFI nutzbar.

PinGPIOADCChannel
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
Analogue Pin Assignment

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 allzu 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 außen geführt.

Arduino Left D1R32 Left Arduino Right D1R32 Right
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 Comparison Arduino Uno and D1R32
Arduino LinksD1R32 LinksArduino RightD1R32 Right
SCLSCL
Seventh-day AdventistSeventh-day Adventist
ARefReset
GroundGround
Not connectedIO013IO18
IORef5V12IO19
ResetReset11IO23
3.3V3.3V10IO5
5V5V9IO13
GroundGround8IO12
GroundGround7IO14
WineWine6IO27
A0IO25IO16
A1IO44IO17
A2IO363IO25
A3IO342IO26
A4Iodate1 (TX)TX0
A5IO390 (RX)RX0
IO Comparison Arduino Uno and 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 PinGPIOUsableAdditional function
A02Could goADC2
A14Could goADC2
A236YesADC1
A334YesADC1
A438YesADC1
A539YesADC1
1/0TX0/RX0No
226Could goADC
325Could goADC2
417YesU2TXD
516YesU2RXD
627Could goADC2
714Could goADC2
812Could goADC2
913Could goADC2
105YesTOUCH0
1123YesMOSI
1219YesMiso
1318YesSCLK
Usable external interrupts

Programming

Arduino programming environment

Wenn der ESP32 vorher noch nicht benutzt wurde, muss die Arduino Gui noch angepasst werden. Wie das geht, ist im gelinkten Artikel unten beschrieben.

Setting up ESP32 with the Arduino GUILink status: Unknown
Contribution to setting up the Arduino GUI for the ESP32

Information is also available at GITHUB.Link status: Broken

Test programme

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, das ich bereits in anderen Projekten verwendet habe. Beim Starten den Port 88 angeben und/oder im Programm ändern.

Java Socket Console ServerLink status: Unknown

Miscellaneous

Basic OTA

OTA ist möglich, wie dem folgend gelinkten Beitrag zu entnehmen ist.

ESP32 Useful InformationLink status: OK
ESP Useful Information, contains chapters on Basic OTA

Read ADCs

Here's an example:

Source code ArduinoESP32OtaAdcExample.ino (GitHub GistLink status: OK)

#include <WiFi.h>
#include <ESPmDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>

const char* ssid = "NODES";
const char* password = "HappyNodes1234";

const uint8_t ANALOG_PORTS[]= {2,4,35,34,36,39};



void setup(){
  
  Serial.begin(115200);
  Serial.println("Booting");
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("Connection Failed! Rebooting...");
    delay(5000);
    ESP.restart();
  }

  // Port defaults to 3232
  // ArduinoOTA.setPort(3232);

  // Hostname defaults to esp3232-[MAC]
  // ArduinoOTA.setHostname("myesp32");

  // No authentication by default
  // ArduinoOTA.setPassword("admin");

  // Password can be set with it's md5 value as well
  // MD5(admin) = 21232f297a57a5a743894a0e4a801fc3
  // ArduinoOTA.setPasswordHash("21232f297a57a5a743894a0e4a801fc3");

 /* for(int i = 0; i < 5; i ++){
      pinMode(ANALOG_PORTS[i], INPUT);
  }*/

  ArduinoOTA
    .onStart([]() {
      String type;
      if (ArduinoOTA.getCommand() == U_FLASH)
        type = "sketch";
      else // U_SPIFFS
        type = "filesystem";

      // NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end()
      Serial.println("Start updating " + type);
    })
    .onEnd([]() {
      Serial.println("\nEnd");
    })
    .onProgress([](unsigned int progress, unsigned int total) {
      Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
    })
    .onError([](ota_error_t error) {
      Serial.printf("Error[%u]: ", error);
      if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
      else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");
      else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");
      else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");
      else if (error == OTA_END_ERROR) Serial.println("End Failed");
    });

  ArduinoOTA.begin();

  Serial.println("Ready");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  ArduinoOTA.handle();


    Serial.print("go ....");
    for(int i = 0; i < ( sizeof(ANALOG_PORTS) / sizeof(ANALOG_PORTS[0])); i ++){
      
      Serial.print(analogRead (ANALOG_PORTS[i]));
      Serial.print(" ; ");
    }

    Serial.println("....");
}

Working expansion boards

Prototype Board V1
Arduino Prototyping Board (V1)Link status: OK
Motor circuit board V2

(Untested)

Arduino Motor Shield V2Link status: OK
Sensor board V5

Related Posts

Conclusion

Nett gedacht, aber nicht gut gemacht. Der ESP32 bietet viele Möglichkeiten und Anschlüsse. Den ADC2, welcher bei aktivem WLAN nicht verwendbar ist, auf A0 und A1 zu legen, ist nicht sonderlich sinnvoll. Auch wären 5V Aus-/Eingänge aus Kompatibilitä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 Logic-level converterLink status: OK. However, most current sensors work with 3-5V or a 3V version is chosen. However, the discrete construction does not require the form factor of the Arduino Uno.

Sources

https://www.wemos.cc/Link status: OK

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

https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/windows.mdLink status: Broken

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

Instructions for OTALink status: OK

DateChangeAuthor
18.10.2026TablePress-Tabelle durch Datenblock aus dem Modell ersetztSuffocation
10.10.2026Gist-Einbettung durch Code-Block ersetzt (Gist als Quelle verlinkt)Suffocation
08.10.2026Überschriften-Hierarchie korrigiert (H1→H2, Unterebenen eine Stufe tiefer)Suffocation
03.10.2026Rechtschreibung korrigiert: Tippfehler, Kommas, Grammatik, Groß-/Kleinschreibung
Log-Liste eingefügt
Suffocation
01.07.2018Post createdSuffocation
Changelog

11 thoughts on “WeMos D1 R32 ESP32”

  1. Hello,
    Thank you for your contribution. From many years of experience with Arduino, the design of the D1 R32 appealed to me and I have also bought one.
    I am very disappointed with the range of the WLAN and Bluetooth modules. With both, I have to be right next to the router or stand with the smartphone in front of the ESP for it to connect. Do you have any tips on how to increase the range of the D1 R32? Thanks!

    1. Hello Jonas,

      I've taken my D1 R32 out of the box. For me, the access point is on the ceiling and about 10m away.
      I have -56 dbm reception despite walls. With the addon board mounted, I still have -60 dbm. So, I can't complain about the range.
      However, the ESP's antenna also points upwards. Therefore, I turned the ESP upside down for this, which is mounted on a metal plate which should also provide additional shielding.
      The RSSI value on the ESP was -70 dbm, which is still okay.
      (Access point is a Netlink EAP265 HD)

      With the ESP32, there's an issue where it sometimes won't connect; this is described in the Problems chapter here: https://www.fambach.net/esp32-nuetzliche-infos/.
      Additionally, you can include an ESP.restart(); after the loop has run multiple times.

      Otherwise, that's all I can think of. https://www.youtube.com/watch?v=wP9YMNj_E7Y 😉
      Hello
      Stefan

    2. Hello Jonas,
      As a new user (well, until yesterday!) I was also struggling with an extremely weak Wi-Fi signal. My mistake was using pins from ADC2. I used GPIO2 & GPIO4 as I2C SDA & SDC. After switching to GPIO18 & 19, the Wi-Fi signal had full strength. Greetings from Austria, Bert

      1. Hello Angelbert,

        Thank you for your contribution and feedback. It's a bit of a design flaw with the ADC2, but of course, that's due to the ESP32 and not the board.

        Greetings from Germany to Austria
        Stefan

  2. Thank you very much for this very informative article!

    I realise that most existing expansion boards won't work. However, this board is very easy to combine with the Arduino prototyping boards available from well-known suppliers in China for around 1 to 2 Euros. This makes it much easier to work with than wobbly breadboards.

    Greetings
    Fred

    1. Hello Fred,
      Thank you for your contribution. You are of course correct, the prototype board fits and offers some advantages, I also like using it. I've also thought of the sensor board; for example, it offers direct connections for servos and other sensors.

      Link to quick Ali

      Hello
      Stefan

  3. Thank you for updating the page and for your reply. I suppose I'll *have* to get one of those then... 😉
    Kind regards,
    Migusch

    1. Hello Migusch,

      if that works for you. Personally, I don't think the board is that good because most expansion boards don't work, making the format pointless. There are cheaper ESP32 boards with more pins that can also be programmed with the Arduino GUI.
      Hello
      SteFam

  4. Hello Migusch,

    Thank you for your contribution. My response took a moment, as I wanted to update the post and correct a few errors first. As the articles are constantly evolving, it's unfortunately sometimes unavoidable that some information is incomplete or the post, as in the case above, is forgotten. I hope the content is no longer contradictory now. The Arduino Uno has 6 ADC inputs, which are also conditionally available here. ADC Pins 0/1, however, cannot be operated in parallel with Wi-Fi. 4 further inputs of ADC 2 are available on digital pins of the Arduino Uno.
    I also tested the basic OTA straight away, it works even though I sometimes have interruptions.

    Regards, SteFam

  5. Lovely website with lots of useful information!
    Yes, the WeMos D1 R32 can be programmed wirelessly via „OTA“ (Over-the-Air).
    I didn't understand how many analogue connections can actually be used now. The chip could actually have 18, but how many are brought out to the Arduino GPIO? The silkscreen printing labels 6 connections as „Analog“. Above, you draw a line between A2 and A4, does that mean the connections are unusable?
    Thank you for your reply

Leave a Reply

Your email address will not be published. Required fields are marked *