An Interest In:
Web News this Week
- April 2, 2024
- April 1, 2024
- March 31, 2024
- March 30, 2024
- March 29, 2024
- March 28, 2024
- March 27, 2024
Create an ESP32 based smart device with Arduino and MQTT
Introduction
This article will show you how to quickly create an ESP32 based "smart device", using Arduino, by creating a simple application that basically connects your WiFi router, then a MQTT server, and publishes a message every five seconds.
Of course, you can use any other WiFi enabled board.
I chose the ESP32 because I recently bought a LiliGo TTGO ESP32 board, without any specific project in mind.
This is the board I use: http://www.lilygo.cn/prod_view.aspx?Id=1126
Configuration
Board
First, we need to add support to our ESP32 board.
- In the Arduino preferences, in the Additional Boards Manager URLs field, add:
https://dl.espressif.com/dl/package_esp32_index.json
- In the Tools menu, open the Boards Manager and look for esp32, then install it.
- Still in the Tools menu, choose your board (TTGO LoRa32-OLED V1 in my case)
Libraries
- In the Sketch menu, select Manage Libraries...
- Install library PubSubClient
Code
Configuration
Headers
#include <WiFi.h>#include <PubSubClient.h>
Definitions
Let's define our WiFi SSID, password, and the MQTT server
informations (hostname, port, username, password, client).
#define ssid "MyWiFi" #define password "MyWifiPassword"#define mqtt_host "MyMQTTServer"#define mqtt_port 1883#define mqtt_client "ArduinoCl"#define mqtt_user "julzor"#define mqtt_password "SomePassword"
Global variables
WiFiClient espClient;PubSubClient cli = PubSubClient(espClient);
Connecting to WiFi
void setup_wifi(){ WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); }}
Connecting to MQTT
void setup_mqtt(){ cli.setServer(mqtt_host, mqtt_port); if (cli.connect(mqtt_client, mqtt_user, mqtt_password)) { // Now we're connected to the MQTT server // Let's publish a first message... cli.publish("test/hello", "hello world"); }}
Putting it all together
Setup
void setup(){ Serial.begin(115200); delay(10); setup_wifi(); setup_mqtt();}
Loop
long last = 0;void loop() { if (!cli.connected()) { // We were disconnected, let's reconnect delay(1000); setup_mqtt(); } else { cli.loop(); long now = millis(); if (now - last > 5000) { last = now; cli.publish("test/ping", "Ping"); } }}
Conclusion
You should now have a working application that does nothing but send a ping message on your MQTT server. That's a start!
In another article, I will show you how I use my useless smart device with Node-RED, a Raspberry Pi, and Alexa.
Original Link: https://dev.to/julzor42/create-an-esp32-based-smart-device-with-arduino-and-mqtt-3lkh
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To