Build a Digital Temperature Gauge with a Wemos D1 Mini

What if you could turn a simple temperature sensor into a physical temperature gauge?

Digital Temperature Gauge with a Wemos D1 Mini and Arduino

In this Maker STEM project, we’ll build a temperature gauge using a Wemos D1 Mini Pro, a DHT11 temperature and humidity sensor, and an MG90S servo motor.

The DHT11 measures the temperature, while the Wemos D1 Mini Pro processes the sensor readings and controls the servo motor. The servo then moves a physical dial hand to display the current temperature on the laser-cut dial.

This project combines electronics, programming, 3D printing, laser cutting, and mechanical assembly into one hands-on STEM project.

Safety note: Soldering should be carried out under appropriate supervision. Always use suitable safety equipment and follow safe soldering practices.


What You’ll Need

Electronics

Part Quantity
MG90S Servo Motor 1
Wemos D1 Mini Pro 1
Wemos DHT11 Shield 1

Mechanical Hardware

Part Quantity
30 mm Spacer 2
M3 × 40 mm Button Head Screw 2
M3 × 6 mm Button Head Screw 2
M3 × 8 mm Button Head Screw 2
M3 Nuts 4

Custom Parts (File Downloads)

Download the complete CAD files for this project, including all laser-cut and 3D-printed parts.

Download the Complete Temperature Gauge CAD Files

Part Quantity
Dial Face – laser-cut plywood 1
Rear Face – laser-cut plywood 1
ESP Bracket – 3D printed 1
Dial Hand – 3D printed 1

Tools and Accessories

  • Soldering iron
  • Solder
  • Helping hands or PCB holder
  • Soldering fume absorber
  • Flush cutters
  • Micro-USB cable
  • Male-to-male jumper cable
  • Computer with Arduino IDE

Mechanical Assembly

Step 1: Mount the Servo Motor

Start by mounting the MG90S servo motor onto the back of the dial face.

Use the M3 × 8 mm button head screws and M3 nuts to secure the servo in place.

Make sure the servo shaft is aligned with the centre opening of the dial.

Mount the Servo Motor

Step 2: Attach the Dial Hand

Next, attach the 3D-printed dial hand to the servo shaft.

Use the screw supplied with the servo motor to hold the dial hand in place.

Don’t fully tighten the screw yet. The dial hand will need to be adjusted later during calibration.

Attach the Dial Hand

Step 3: Assemble the Dial

Place the rear face behind the dial face.

Use the two 30 mm spacers between the plates.

Secure the plates through the top and right-hand mounting holes using the M3 × 40 mm button head screws and M3 nuts.

Make sure the two plates are aligned before fully tightening the hardware.

Assemble the Dial

Step 4: Install the ESP Bracket

Insert the 3D-printed ESP bracket between the two plates on the left-hand side.

Align the mounting holes in the bracket with the corresponding holes in the dial and rear face.

Secure the bracket using the M3 × 6 mm screws.

These screws are designed to self-thread into the 3D-printed plastic, so tighten them carefully.

install the ESP bracket


Electronic Assembly

Step 5: Prepare the Wemos D1 Mini Pro

Before connecting the electronics, solder the female headers onto the Wemos D1 Mini Pro.

Make sure the headers are straight and securely soldered to the board.

Safety note: Soldering should be carried out under appropriate supervision. Use suitable safety equipment and avoid touching the hot soldering iron or freshly soldered components.

Step 6: Prepare the DHT11 Shield

Next, solder the female stacking headers onto the DHT11 shield.

Once the headers are installed, plug the DHT11 shield onto the Wemos D1 Mini Pro.

Make sure the pins are correctly aligned before pressing the boards together.

Wemos D1 Mini Pro connect to DHT11 sheild

Step 7: Connect the Servo

Connect the MG90S servo to the DHT11 shield using the male-to-male adapter cable.

The servo wires should be connected as follows:

Servo Wire Connection
Red 5V
Brown GND
Orange D2

The red wire provides power, the brown wire connects to ground, and the orange wire carries the control signal to D2.

Important: The DHT11 sensor uses D4 for its data signal, while the servo uses D2. Do not connect the servo signal wire to D4.

Temperature Gauge wire diagram

Step 8: Install the Electronics

Place the assembled Wemos D1 Mini Pro and DHT11 shield into the 3D-printed ESP bracket.

Feed the servo wires neatly between the dial and rear face.

Make sure the wires don’t interfere with the servo mechanism or the movement of the dial hand.

If necessary, use a small cable tie to keep the wires organised.


Upload the Code

Step 9: Connect the D1 Mini Pro

Connect the Wemos D1 Mini Pro to your computer using a micro-USB cable.

Open Arduino IDE.

Step 10: Select the Board

In Arduino IDE, select the Wemos D1 Mini Pro board.

Go to:

Tools → Board → ESP8266 Boards → LOLIN(WEMOS) D1 & mini Pro

Then select the COM port connected to your Wemos D1 Mini Pro.

Step 11: Open the Arduino Sketch

Open the temperature gauge Arduino sketch in Arduino IDE.

The project uses the following pins:

  • DHT11 → D4
  • Servo → D2

Make sure the code matches these connections before uploading.

Step 12: Install the DHT Library

This project uses the DHT sensor library by Adafruit.

In Arduino IDE, open:

Tools → Manage Libraries

Search for:

DHT sensor library

Install the library by Adafruit.

If Arduino IDE asks you to install any additional required libraries, install those as well.

 

 

Step 13:Copy and Upload the Code

Copy the code below and paste it into a new Arduino sketch.


#include "DHT.h"
#include 

#define DHT_PIN D4
#define SERVO_PIN D2
#define DHT_TYPE DHT11

DHT dht(DHT_PIN, DHT_TYPE);
Servo myservo;

void setup() {
  Serial.begin(9600);
  Serial.println("DHTxx test!");

  myservo.attach(SERVO_PIN, 600, 2400);

  dht.begin();
}

void loop() {
  delay(2000);

  float t = dht.readTemperature();

  if (isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  Serial.print("Temperature: ");
  Serial.println(t);

  int pulse = map(t, 10, 50, 2400, 600);

  myservo.writeMicroseconds(pulse);
}
  

After copying the code, upload it to the Wemos D1 Mini Pro.

Wait for the upload to complete before disconnecting the USB cable.


Test the Temperature Reading

Step 14: Open the Serial Monitor

Open the Serial Monitor in Arduino IDE.

Set the baud rate to 9600.

You should now see temperature readings from the DHT11 sensor.

For example:

Temperature: 22.00
Temperature: 22.00
Temperature: 23.00

The servo should also respond to the temperature reading by moving the dial hand.

This allows you to confirm that the sensor and servo are working correctly before calibrating the physical dial.


Calibrate the Dial

Step 15: Adjust the Dial Hand

Now it’s time to calibrate the temperature gauge.

Check the temperature displayed in the Serial Monitor.

For example, if the sensor reads 22°C, the dial hand should point to 22°C on the physical dial.

To calibrate the dial:

  1. Loosen the screw holding the dial hand onto the servo shaft.
  2. Carefully adjust the angle of the dial hand.
  3. Align the hand with the temperature shown in the Serial Monitor.
  4. Tighten the screw to secure the dial hand.

Be careful not to force the servo beyond its normal range of movement.

Temperature Gauge


You’re Done!

Your temperature gauge is now ready to use.

Temperature Gauge

The DHT11 sensor measures the temperature, the Wemos D1 Mini Pro processes the reading, and the MG90S servo moves the physical dial hand to display the temperature.

This project combines sensors, microcontrollers, programming, servo motors, 3D printing, and laser cutting into one hands-on STEM project.

Want to take it further?

  • Display humidity as well as temperature
  • Add an LED indicator for different temperature ranges
  • Add an OLED display
  • Log temperature readings over time
  • Send temperature data over Wi-Fi
  • Create an automatic fan or cooling system

Keep experimenting, keep building, and see what you can make!

Posted on