Remote Control ESP32 Lights - MQTT and MicroPython
by bhaveshtk in Circuits > Wireless
1265 Views, 2 Favorites, 0 Comments
Remote Control ESP32 Lights - MQTT and MicroPython
What if you want to remote control a drone, or create a smart home lighting system, or collect sensor data from many devices? Enter MQTT: a robust and flexible IoT protocol that lets us do all that and more!
In this project we'll connect two ESP32 boards to each other wirelessly using the MQTT protocol. We will take advantage of the power and flexibility of MicroPython to get the project up and running quickly!
Supplies
- Two generic ESP32 boards, for e.g. https://www.amazon.ca/gp/product/B07QCP2451/
- Two micro-USB cables
Watch the Video
The tutorial video goes through step-by-step instructions of how to setup the hardware, programs and the code to write. So please have a look at that before attempting it yourself!
Alternatively, if you prefer reading than watching video, I have a written step-by-step tutorial here.
Connect Both ESP32s to Your Computer Via USB
Setup/Configure Mosquitto Broker
Add the lines:
listener 1883 allow_anonymous true
To the bottom of your mosquitto config file. Save the file.
Start Mosquitto Broker
Use this command in terminal (config file location is shown for macOS, it will differ on Windows & Linux) to start the mosquitto broker:
mosquitto -c /opt/homebrew/etc/mosquitto/mosquitto.conf
Save Bootup Code and Application Code to First ESP32
You will need to use the Thonny editor to upload these files to your microcontroller.
- The bootup code connects to WiFi and is found in boot.py.
- Make sure to set the WIFI_NAME and WIFI_PASS to your own WiFi network's username and password.
- The application code is in main.py and it does all the MQTT work of connecting, publishing and subscribing.
- Make sure to replace the broker IP address with your computer's IP address.
- Make sure to replace pin numbers (0 and 2) with the correct pin number for the button and LED on your ESP32 board's pinout diagram / datasheet. It's not always the same.
Save Bootup Code and Application to Second ESP32
The files are the same as above, with one major exception: change all references to "blue" to "green", and "green" to "blue" in the main.py code. This is so the MQTT broker can differentiate each microcontroller from each other, by device name and MQTT topic names.
Restart Both ESP32s and Try It Out!
Each button press should light the LED on the other microcontroller! Yay, a remote controlled light :D
Further Resources
Attached here are diagrams (also shown in the tutorial video) that will help you understand the network architecture of this project, and the sequence of how MQTT subscription and message publishing happens.
If you liked this project and would like more MicroPython tutorials, tips and projects, just follow me on my website and I'll email them to you 1-2 times a month. If you prefer video tutorials, you can follow me on youtube here 😃
Lastly, if you have questions, feedback or just wanna have a chat, hit me up on twitter 😃