Introduction: How to Make an Automatic Wood Stove Thermostat

For my Mechatronics Class Project I decided to design and create an Automatic Wood Stove Thermostat using a WiFi enabled Arduino with a PID controller driving a Stepper motor to control the damper position on my Wood Stove. It has been a very rewarding experience and journey and I have learned a lot along the way! I would like to share the details of the project as well as how you can make/adapt it to your own application.

Step 1: Supplies

I will provide a list of the supplies I used to create this controller along with any schematics and design files I used along the way.


  • 1 NodeMCU Board - For Driving Stepper and running PID Controller - Banggood
  • EasyDriver Module Stepper Driver - Amazon
  • NEMA 11 Stepper Motor - Amazon
  • 1 Wemos D1 Mini Board - For Temperature Sensor and LCD Display - Banggood
  • DHT11 Temperature and Humidity Sensor - Amazon
  • 16x2 LCD Display - Amazon
  • LCD i2c Adapter - Reduces number of LCD connection pins - Amazon
  • 12V Power Supply - For Powering Easy Driver
  • Various Resistors - Amazon
  • PN2222A or Equivalent Transistor - Amazon
  • Various Resistors
  • 3 digital buttons - Amazon
  • 1 Rectangular Neodymium Magnet - Amazon
  • Circuit Boards - Gerber Files included - Use JLCPCB to Order - More Details Below
  • Spring for Stepper Idler Pulley Tensioner
  • Machine Screw for Tensioning Idler and Idler Shaft

3D Printed Components (STL's Included):

  • Stepper Damper Controller Assembly
  • Pulleys
  • Stepper Controller Case
  • Thermostat / Temperature Sensor Case


  • Soldering Iron
  • Screwdrivers

Arduino Code:

  • Provided in last step for programming the two microcontrollers.


  • Blynk- This app is used to communicate between the temperature sensor and the damper controller and to be able to control the devices from the App.

Step 2: Order Circuit Boards

First thing that should be done is order the custom circuit boards from JLCPCB. They have extremely competitive costs and have extremely quick turn around. I received my PCB's within 4 days or ordering.

  1. Make an account with JLCPCB.
  2. Upload the attached Gerber Files to their website one at a time and select the desired quantity of each.
    1. The Default Values for all the options work fine.

Step 3: 3D Print Parts

If you have a 3D Printer, Great! Just print all the STL files using either PLA or ABS (I used ABS). If not, there are plenty of 3D printer services available online. I can even print them for you if need be - Link to Request Form.

My Website:

Assemble the parts for the Stepper Actuator.

Step 4: Solder Circuits and PCBs

Use the attached electrical schematics, pictures, and video as a guide when placing the components on the circuit board. Solder all components in place.

Step 5: Program Damper Controller and Thermostat - NodeMCU

Use the Arduino IDE to program the NodeMCU and Wemos D1 Mini with the provided respective codes. The specific Blynk Authentication Tokens assigned to each of your microcontrollers will have to be customized as well as your WiFi credentials in each of the .ino files for the damper controller and the thermostat temperature sensor.

The following sections show the areas that need to be customized to reflect your WiFi and Blynk Credentials.

// *************************** WiFi Setup **********************************************
// Home WiFi
#define wifi_ssid  "WiFi_SSID"
#define wifi_pass  "WiFi_Pass"

wifiTimeout = 8000;

// *************************************************************************************

// ****************************** Blynk Setup ******************************************
#define BLYNK_PRINT Serial

#include <blynksimpleesp8266.h>
char temp_auth[] = "Your_Thermostat_Blynk_Auth_Token";
char stove_auth[] = "Your_Damper_Control_Blynk_Auth_Token";
// Specify the virtualPin on this ESP8266
WidgetBridge CurrTempBridge(V20);
WidgetBridge setPointBridge(V24);
BlynkTimer Timer;
// *************************************************************************************
IoT Challenge

Second Prize in the
IoT Challenge