Tutorial ESP32 46/55 - Monitoraggio della temperatura remota utilizzando HiveMQ MQTT | Kit ESP32 di SunFounder

Tutorial ESP32 46/55 - Monitoraggio della temperatura remota utilizzando HiveMQ MQTT | Kit ESP32 di SunFounder

In questo tutorial, creeremo un sistema di monitoraggio della temperatura remota utilizzando l'ESP32 e il protocollo MQTT. Questo progetto ci consente di pubblicare i dati di temperatura su un broker MQTT e controllare un LED da remoto utilizzando un'interfaccia web. Premendo un pulsante, possiamo inviare le letture di temperatura al cloud e possiamo anche ricevere comandi per accendere o spegnere il LED.

esp32-47-mqt-1

L'ESP32 è un potente microcontrollore che presenta Wi-Fi e Bluetooth integrati, rendendolo ideale per applicazioni Internet of Things (IoT). In questa configurazione, utilizzeremo un termistore NTC per misurare la temperatura, un pulsante per attivare le letture e un LED per indicare lo stato. I dati verranno inviati a HiveMQ, un popolare broker MQTT, dove possono essere accessibili da remoto (nel video al 00:45).

esp32-47-mqt-2

Hardware Spiegato

Per questo progetto, utilizzeremo i seguenti componenti:

  • Microcontrollore ESP32:Questa scheda funge da unità di elaborazione centrale, gestendo le connessioni Wi-Fi e le comunicazioni MQTT.
  • Termistore NTC:Questo sensore di temperatura cambia la sua resistenza in base alla temperatura. Fornisce un segnale analogico che l'ESP32 può leggere per determinare la temperatura attuale.
  • LED:Questo diodo a emissione di luce sarà utilizzato per indicare lo stato in base ai comandi ricevuti tramite MQTT.
  • Pulsante:Questo pulsante attiverà l'ESP32 per leggere la temperatura e pubblicarla sul broker MQTT.

Dettagli del datasheet

Produttore SunFounder
Numero di parte ESP32
Tensione logica/IO 3,3 V
Tensione di alimentazione 5 V (tramite USB)
Corrente in uscita (per canale) 12 mA max
Guida sulla frequenza PWM Fino a 40 kHz
Soglie di logica di ingresso 0,3 V (basso), 2,4 V (alto)
Limiti termici -40 a 85 °C
Pacchetto ESP32-WROOM-32

  • Garantire livelli di tensione adeguati per evitare danni.
  • Utilizzare resistori di pull-up per il pulsante per garantire letture stabili.
  • I condensatori di disaccoppiamento possono aiutare a stabilizzare l'alimentazione.
  • Fai attenzione al cablaggio del termistore per evitare letture errate.
  • Verifica i dettagli del tuo broker MQTT per una connessione riuscita.

Istruzioni di cablaggio

esp32-47-mqtt-wiring

Per cablare i componenti, inizia collegando il termistore NTC. Collega un pin del termistore all'alimentazione di 3,3 V sull'ESP32. L'altro pin si collega al pin 36 dell'ESP32 e deve anche connettersi a una resistenza da 10 kΩ, che poi è collegata a terra. Questo crea un partitore di tensione che consente all'ESP32 di leggere la resistenza del termistore.

Successivamente, collega il LED. Il pin più lungo (anodo) del LED si collega al pin 4 dell'ESP32 tramite una resistenza da 220 Ω, mentre il pin più corto (catodo) si collega a terra. Per il pulsante, collega un lato a 3.3 V e l'altro lato al pin 14 dell'ESP32. Inoltre, collega una resistenza da 10 kΩ dal pin del pulsante a terra per garantire uno stato LOW stabile quando il pulsante non è premuto.

Installa la libreria richiesta

IlPubSubClientla libreria è utilizzata qui, puoi installarla daGestore della Biblioteca.

esp32-47-libreria-mqtt

Esempi di codice e guida passo passo

Nella configurazione, inizializziamo la comunicazione seriale, impostiamo la connessione Wi-Fi e configuriamo il server MQTT. Ecco un estratto del codice di configurazione:

void setup() {
  Serial.begin(115200);
  setup_wifi();
  client.setServer(mqtt_server, 1883);
  client.setCallback(callback);
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

Questa parte del codice stabilisce la connessione alla rete Wi-Fi e configura il server MQTT. Anche le modalità dei pin per il pulsante e il LED sono configurate qui.

La funzione loop controlla continuamente lo stato del pulsante e pubblica i dati sulla temperatura quando viene premuto. Ecco un estratto concentrato dalla loop:

void loop() {
  if (!client.connected()) {
    reconnect();
  }
  client.loop();
  if (digitalRead(buttonPin)) {
    long now = millis();
    if (now - lastMsg > 5000) {
      lastMsg = now;
      char tempString[8];
      dtostrf(thermistor(), 1, 2, tempString);
      client.publish("SF/TEMP", tempString);
    }
  }
}

In questo ciclo, controlliamo se l'ESP32 è connesso al broker MQTT. Se il pulsante viene premuto, legge la temperatura dal termistore e la pubblica nell'argomento "SF/TEMP" ogni 5 secondi.

Dimostrazione / Cosa Aspettarsi

Quando il progetto è configurato e in esecuzione, premere il pulsante pubblicherà la temperatura corrente al broker MQTT. Puoi monitorare questi dati da qualsiasi client MQTT. Inoltre, puoi inviare messaggi per controllare il LED; inviando "on" si accenderà, mentre "off" lo spegnerà. Guarda il comportamento atteso nel video alle 15:30, dove le letture della temperatura vengono mostrate dopo ogni pressione del pulsante.

Timestamp video

  • 00:00 Inizio
  • 2:05 Introduzione al progetto
  • 7:06 Servizio HiveMQ gratuito
  • 7:56 Spiegazione del cablaggio
  • 11:11 Spiegazione del codice Arduino
  • 18:46 Selezione della scheda ESP32 e della porta COM nell'Arduino IDE
  • 20:30 Dimostrazione del broker HiveMQ Free

Immagini

esp32-47-mqt-1
esp32-47-mqt-1
esp32-47-mqt-2
esp32-47-mqt-2
esp32-47-mqtt-library
esp32-47-mqtt-library
esp32-47-mqtt-wiring
esp32-47-mqtt-wiring
847-ESP32 Tutorial 46/55- Arduino code for IoT Communication with MQTT
Lingua: C++
Copia!

Risorse e riferimenti

File📁

Nessun file disponibile.