Introduction: Arduino IoT Cloud ESP32 Alexa Voice Control Smart Home | IoT 2021

About: This Page is for different Electrical and Electronics Projects, DIY, Circuits, etc. All the projects are explained with circuit diagram, Breadboard schematic, working principle, Arduino sketches so it becomes …

In this IoT project, I have shown how to make an IoT-based Home Automation with Arduino IoT Cloud & Alexa using ESP32 to control 4 home appliances with voice commands. If the internet is not available, then you can control the home appliances manually with switches and IR remote. During the article, I have shown all the steps to make this smart home system.

This IoT-based Home Automation system has the following features:

  1. Control appliances with Alexa and Arduino IoT Cloud Dashboard.
  2. Control the relays with the IR remote.
  3. Control appliances manually with switches.
  4. Control home appliances manually without internet.
  5. Monitor real-time feedbacks and room temperature in the Amazon Alexa app.
  6. All resources used for this project are FREE.

So, you can easily make this home automation project at home just by using an ESP32, DHT11 sensor, 1838 IR receiver, and relay module. Or you can also use a custom-designed PCB for this project.

Supplies

You can make this project just by using ESP32, DHT11 sensor, 1838 IR receiver, and 4-channel relay module. But if you use PCB then you need the following components.

  • ESP32 DEVKIT V1
  • DHT11 sensor
  • 1838 IR receiver (with metallic case)
  • Relays 5v (SPDT) (4 no)
  • BC547 Transistors (4 no)
  • PC817 Optocuplors (4 no)
  • 510-ohm 0.25-watt Resistor (4 no) (R1 - R4)
  • 1k 0.25-watt Resistors (6 no) (R5 - R10)
  • 10k 0.25-watt Resistor (1 no) (R11)
  • LED 5-mm (6 no)
  • 1N4007 Diodes (4 no) (D1 - D4)
  • Push Buttons (4 no)
  • Terminal Connectors
  • 5V DC supply

Step 1: Circuit Diagram of the ESP32 Home Automation Project

The circuit is very simple, I have used the GPIO pins D23, D22, D21 & D19 to control the 4 relays.

And the GPIO pins D13, D12, D14 & D27 connected with switches to control the 4 relays manually.

I have used the INPUT_PULLUP function in Arduino IDE instead of using the pull-up resistors.

IR remote receiver (TSOP1838) connected with D35. And the DHT11 sensor connected with RX2.

I have used a 5V mobile charger to supply the smart relay module.

Please take proper safety precautions while working with high voltage.

Step 2: Alexa Control Relay Using ESP32

You can control the home appliances from Amazon Alexa App and also monitor the room temperature if the ESP32 is connected with Wi-Fi.

You can also ask Alexa to turn on and off the appliances from anywhere in the world.

You don't need any Echo DOT or other Alexa devices for this home automation project.

Step 3: ESP32 Control Relays With Arduino IoT Cloud Dashboard

You can also monitor the room temperature and control the home appliances from the Arduino IoT Cloud web dashboard and Arduino IoT Cloud Remote mobile app if the ESP32 is connected with WiFi.

In this project, I have used the FREE plan of Arduino IoT Cloud. In the FREE plan, you can control maximum of 5 relays or sensors.

When you control the relays from the Arduino IoT Cloud Remote mobile app the current state of the relay is also updated in the Amazon Alexa App.

Step 4: IR Remote Control Relays Using ESP32

You can always control the relays from any IR remote.

I will explain how to get the IR codes (HEX codes) from any remote in the following steps.

And if the ESP32 is connected with Wi-Fi, then you can also monitor the real-time feedback in the Amazon Alexa App & Arduino cloud dashboard.

Step 5: Control Relays Manually From Push Buttons

If the WiFi is not available, you can control the relays from the pushbuttons.

When the WiFi is available, the ESP32 will automatically reconnect with the WiFi.

Please refer to the circuit diagram to connect the pushbuttons.

Step 6: Design the PCB for This Smart Home System

To make the circuit compact and give a professional look, I have designed the PCB after testing all the features of the smart relay module.

You can download the PCB Gerber file of this home automation project from the following link:

https://drive.google.com/uc?export=download&id=1ul0vrxWT95tU8UadmhOsaCp6fVvo_xi7

Step 7: Order the PCB

After downloading the Garber file you can easily order the PCB

1. Visit https://jlcpcb.com/ and Sign in / Sign up

2. Click on the QUOTE NOW button.

3. Click on the "Add Gerber file" button. Then browse and select the Gerber file you have downloaded.

Step 8: Uploading the Gerber File and Set the Parameters

4. Set the required parameter like Quantity, PCB masking color, etc

5. After selecting all the Parameters for PCB click on SAVE TO CART button.

Step 9: Select Shipping Address and Payment Mode

6. Type the Shipping Address.

7. Select the Shipping Method suitable for you.

8. Submit the order and proceed with the payment. You can also track your order from JLCPCB.com.

My PCBs took 2 days to get manufactured and arrived within a week using the DHL delivery option.

PCBs were well packed and the quality was really good at this affordable price.

Step 10: Solder All the Components on PCB

After that, I have soldered all the components as per the circuit diagram.

Then connect the ESP32, DHT11 sensor, and IR receiver with the PCB.

Step 11: Create Arduino IoT Cloud FREE Account

For this smart house project, I have used the Arduino Cloud Free plan.

Click on the following link to create an Arduino IoT Cloud account.

https://store.arduino.cc/digital/create

  1. Click on "GET STARTED FOR FREE", then click on "create one".
  2. Enter your birthday, then click on "Next".
  3. Enter the email ID, user name, set password. Then click on "Sign Up".
  4. Now click on "IoT Cloud".

Step 12: Add ESP32 Device in the Arduino IoT Cloud

Click on the Select Device on the right.

  1. Select "Set up a third Party device", then select device type as ESP32 and device model as DOIT ESP32 DEVKIT V1.
  2. You will get a Device ID and Secret Key which will be required in the code.
  3. Click on "Continue", You will find the device added.

Step 13: Add Varriable in Arduino IoT Cloud

Now to control 4 relays, and get reading from the DHT11 sensor, you have to add 5 variables.

Click on the "ADD VARIABLE" button.

Enter name, then select Alexa compatible switch type. Variable Permission will be "Read & Write" and Variable Update Policy will be "On Change".

In a similar way, you have to add the next 3 variables.

For the room temperature, reading select Alexa compatible Temperature Sensor. Variable Update Policy will be "Periodically", and mention the interval time.

Step 14: Set Up Arduino IoT Cloud Dashboard

Now click on Dashboard on the top to set up the Arduino cloud dashboard.

Then click on Build Dashboard. After that click onthe EDIT icon.

Then click on ADD and select Switch.

Give a name to this Switch, then link a variable with this switch widget.

Then click on Done.

In a similar way, you have to add total 4 Switch widgets to control 4 relays.

For the temperature, select Gauge widgets and link the Temperature variable. You can also set the MIN and MAX limits.

Step 15: Get the IR Codes (HEX Code) From Remote

Now, to get the HEX codes from the remote, first, we have to connect the IR receiver output pin with GPIO D35.

And give the 5V across the VCC and GND. The IR receiver must have a metallic casing, otherwise, you may face issues. Then follow the following steps to get the HEX codes.

  1. Install the IRremote library in Arduino IDE.
  2. Download the attached code, and upload it to ESP32.
  3. Open Serial Monitor with Baud rate 9600.
  4. Now, press the IR remote button.
  5. The respective HEX code will populate in the serial monitor.

Save all the HEX codes in a text file.

Step 16: Program the ESP32 With Arduino IDE

To program the ESP32, I have used Arduino IDE.

Download the attached code.

First, you have to install the ArduinoIoTCloud library. During installation, it may ask to install other dependencies. Then click on Install All.

In the code, enter the following details.

  • const char THING_ID[] = ""; //Enter THING ID
  • const char DEVICE_LOGIN_NAME[] = ""; //Enter DEVICE ID
  • const char SSID[] = ""; //Enter WiFi SSID (name)
  • const char PASS[] = ""; //Enter WiFi password
  • const char DEVICE_KEY[] = ""; //Enter Secret device password (Secret Key)

You will get the THING_ID[] from Arduino IoT cloud Things. And copy-paste the DEVICE_LOGIN_NAME[] and DEVICE_KEY[] from the PDF which you have downloaded during adding the device to the Arduino IoT cloud.

Then update the HEX codes to control the relays from IR remote.

  • case 0x80BF49B6: relayOnOff(1); switch1 = toggleState_1; break; //update the HEX-code
  • case 0x80BFC936: relayOnOff(2); switch2 = toggleState_2; break; //update the HEX-code
  • case 0x80BF33CC: relayOnOff(3); switch3 = toggleState_3; break; //update the HEX-code
  • case 0x80BF718E: relayOnOff(4); switch4 = toggleState_4; break; //update the HEX-code

I have shown all the steps in the tutorial video. After doing all these changes, you can upload the code to ESP32.

Step 17: Configure the Alexa App for Arduino IoT Cloud

Download and install the Amazon Alexa App from the Google play store or App Store.

  1. Tap on "More".
  2. Then select "Skills & Games".
  3. Search for Arduino and tap on "Arduino".
  4. Tap on "ENABLE TO USE".

Step 18: Connecting Arduino Cloud Devices With Alexa

  1. Log in with the Arduino Cloud credentials.
  2. Tap on CLOSE.
  3. Tap on "DISCOVER DEVICES". It will take a minute to add devices.
  4. Tap on "Devices", and tap on "Switches" to see all the devices.

Thus, all the devices from Arduino IoT Cloud will be added to Amazon Alexa App.

Step 19: Arduino IoT Cloud Remote App Set Up

You can also control the appliances from the Arduino IoT Cloud Remote App.

  1. Download and install the Arduino IoT Cloud Remote App from the Google play store or App Store.
  2. Tap on SIGN IN.
  3. Then log in to the Arduino IoT Cloud account.
  4. Tap on the THING you have created to open the dashboard.

Now, you can also control the relays from this Arduino IoT Cloud Remote App.

Step 20: Connect the Home Appliances

Connect the 4 home appliances with the relay module as per the circuit diagram.

Please take proper safety precautions while working with high voltage.

Connect 5-volt DC supply with the PCB. (I have used my old mobile charger 5V 2Amp) Turn on the 110V/230V supply and 5V DC supply.

Step 21: Finally!! the Arduino Cloud Smart Home System Is Ready

Now you can control your home appliances in a smart way.

I hope you have liked this Arduino IoT and Alexa control home automation project. I have shared all the required information for this project.

I will really appreciate it if you share your valuable feedback. Also if you have any query please write in the comment section.

Thank you & Happy Learning.

Arduino Contest

Participated in the
Arduino Contest