I dispositivi IoT possono fare cose interessanti, ma una parte essenziale dell'equazione è il modo in cui comunicano. Puoi gestirlo con un modulo ESP-01.

Avere un budget limitato non significa necessariamente che non puoi intraprendere progetti fai-da-te avanzati. Se stai cercando un modulo WiFi piccolo, conveniente e conveniente per ampliare i tuoi progetti IoT, il modulo ESP-01 è un'ottima scelta. Tuttavia, l'integrazione di un modulo di questo tipo con un protocollo leggero come MQTT può essere complicato, soprattutto se sei nuovo nello sviluppo IoT.

La sola programmazione della scheda ESP-01 può essere impegnativa rispetto ad altri moduli della serie ESP8266. Ma esaminiamo le basi di tutta la configurazione hardware e software necessaria per iniziare a utilizzare il modulo e come configurare MQTT in modo semplice e procedurale.

Conoscere il Consiglio

ESP8266 ESP-01 è un modulo WiFi piccolo e compatto dotato di un chip ESP8266EX, un SoC altamente integrato progettato per applicazioni IoT.

instagram viewer

Il modulo include un microcontrollore wireless a chip singolo con uno stack di protocollo TCP/IP ed è in grado di connettersi a una rete wireless o fungere da punto di accesso. Il modulo ESP-01 presenta anche un'intestazione pin 2x4 che fornisce l'accesso ai pin GPIO, all'alimentazione e alla messa a terra e all'interfaccia UART.

Configurazione dell'hardware

Il modulo non è affatto compatibile con la breadboard. Per comodità, puoi acquistare una scheda di estensione pre-costruita o semplicemente andare alla vecchia maniera, usando cavi jumper e una breadboard.

C'è un programmatore dedicato, la scheda del modulo seriale ESP8266, che può facilitare la tua esperienza di programmazione. Se preferisci seguire questa strada, FAI DA TE HOBI ha un pratico tutorial su come eseguire il flashing di un programma nel modulo ESP-01 utilizzando un programmatore (incluso l'adattatore del modulo convertitore da USB a TTL CH340G).

Ma puoi ancora programmare il modulo usando una scheda Arduino. Guarda lo schema del circuito qui sotto per riferimento.

Sebbene possa sembrare allettante, in genere non consigliamo di collegare il modulo direttamente al pin 3.3v di Arduino poiché richiede più corrente di quella fornita dal pin. Invece, collega Arduino 5V a un regolatore di tensione da 3,3 V come LM1117/LD117, quindi alimentare il modulo WiFi dal regolatore.

Non collegare il VCC E CH_PD pin dell'ESP al 5V perno dell'Arduino. Collegamento del modulo a 5V il potere può danneggiarlo.

Tutti i condensatori lo sono 10uf e la resistenza è a 1 K resistore.

Requisiti software

Il modulo ESP-01 è comunemente usato con la piattaforma Arduino. Pertanto, la configurazione del software è piuttosto semplice, soprattutto se si ha familiarità con Arduino C. Tuttavia, se hai più familiarità con Raspberry, ce ne sono molti Progetti IoT Raspberry Pi Puoi provare.

Questi sono i requisiti fondamentali:

  • Un broker o server MQTT (come Mosquitto o CloudMQTT).
  • Un IDE Arduino con la libreria di base ESP8266.
  • La libreria PubSubClient per Arduino.

Devi ricordare che avere il tuo server MQTT in locale ti dà flessibilità all'interno dei tuoi progetti.

Installazione delle librerie necessarie

Innanzitutto, scarica e installa l'IDE di Arduino sul tuo computer. Una volta installato, apri l'IDE di Arduino e vai a File > Preferenze.

Nel Ulteriori URL di Board Manager campo, inserisci il seguente URL:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Clic OK per chiudere la finestra Preferenze.

Avanti, vai a Utensili > Asse > Responsabile dei Consigli.

Quindi cerca esp8266 e installa il pacchetto della scheda esp8266, che include tutte le librerie necessarie per il modulo ESP-01.

Per installare la libreria PubSubClient, vai a Schizzo > Includi libreria > Gestisci librerie.

Cercare PubSubClient e fare clic sulla libreria per installarla.

Dopo aver installato tutte le librerie necessarie, puoi iniziare a programmare il modulo ESP-01. Una cosa da notare, però, è che puoi usare il file Wi-Fi h che è incluso nella libreria o scarica il file ESPWifi.h biblioteca e includilo nel tuo schizzo.

Stabilire una connessione tra ESP-01 e il broker MQTT

Un broker MQTT è un server che funge da intermediario tra i client MQTT. Consente ai client di inviare e ricevere messaggi da e verso l'altro attraverso un modello di pubblicazione-sottoscrizione.

Per connettere il tuo modulo ESP-01 a un broker MQTT, dovrai specificare l'indirizzo IP e il numero di porta del broker nel tuo codice. Dovrai inoltre fornire al broker un ID client univoco che identifichi il tuo modulo ESP-01.

Innanzitutto, includi le librerie necessarie nella parte superiore del tuo schizzo

#includere <ESP8266 Wi-Fi.H>
#includere <PubSubClient.H>

Quindi, definisci i dettagli della connessione WiFi e MQTT.

costchar*ssid = "IL TUO_SSID";
costchar* parola d'ordine = "LA TUA PASSWORD";
costchar* mqtt_server = "IL TUO_SERVER_MQTT";

Non dimenticare di sostituire i segnaposto con i dettagli della tua connessione WiFi e MQTT.

Successivamente, crea un client WiFi e connettiti alla tua rete WiFi locale:

WiFiClient espClient;
vuotosetup_wifi(){
ritardo (10);
WiFi.begin (ssid, parola d'ordine);
Mentre (WiFi.status() != WL_CONNECTED) {
ritardo (500);
}
}

Questa funzione dovrebbe essere chiamata nel file impostare() funzione del tuo schizzo.

Successivamente, dovrai creare un client MQTT e connetterti al tuo broker MQTT:

PubSubClient cliente(espClient);
vuotoriconnettersi(){
Mentre (!client.connected()) {
Se (client.connect("ESP01", mqtt_utente, mqtt_password)) {
// Iscriviti a un argomento
client.subscribe("test/argomento");
} altro {
ritardo (5000);
}
}
}

Dopo esserti connesso al tuo broker MQTT, puoi iniziare a pubblicare e iscriverti agli argomenti.

Pubblicazione dei dati da ESP-01 al broker MQTT

Ora che hai connesso correttamente il tuo modulo ESP01 al broker MQTT, diamo un'occhiata a come puoi pubblicare i dati dall'ESP-01 al broker.

Per pubblicare i dati, utilizzare il file client.publish() funzione per pubblicare un messaggio al inArgomento argomento.

client.publish("inargomento", "Ciao da ESP-01");

Questo pubblicherà il messaggio "Ciao da ESP-01" al inArgomento argomento.

È inoltre possibile pubblicare i dati del sensore dall'ESP-01 al broker. Ad esempio, se hai un sensore di temperatura collegato al tuo ESP-01, puoi pubblicare i dati di temperatura sul broker come mostrato di seguito.

galleggiante temperatura = 25.5;
Corda temperaturaStringa = Corda(temperatura);
char temperaturaChar[5];
temperatureString.toCharArray(temperaturaCaratt, 5);
client.publish("Temperatura", temperaturaCar);

Questo pubblicherà i dati di temperatura sul temp argomento.

I dati possono essere pubblicati in loop oa intervalli regolari, a seconda dei requisiti del progetto. Assicurati di non inondare il broker con troppi dati e di pubblicare a intervalli ragionevoli.

Iscrizione agli argomenti MQTT e ricezione dei dati su ESP-01

Per sottoscrivere un argomento, utilizzare il client.subscribe() funzione. Per il nostro caso di seguito, il cliente si iscrive al outTopic argomento.

client.subscribe("fuori tema");

Dopo esserti iscritto a un argomento, puoi ricevere i messaggi pubblicati su quell'argomento utilizzando il cliente.loop() funzione nel ciclo continuo() funzione nello schizzo seguente:

vuotociclo continuo(){
Se (!cliente.collegato()) {
riconnetti();
}
cliente.ciclo continuo();
}

Questo verificherà continuamente la presenza di nuovi messaggi ed eseguirà la funzione di richiamata quando viene ricevuto un nuovo messaggio.

Per gestire i messaggi ricevuti, definire una funzione di richiamata come quella mostrata di seguito:

vuotorichiamare(char* argomento, byte* carico utile, non firmato int lunghezza){
// Stampa il messaggio ricevuto
Seriale.stampa("Messaggio ricevuto sull'argomento: ");
Seriale.stampa(argomento);
Seriale.stampa(". Messaggio: ");
per (int io=0;ioSeriale.stampa((char)carico utile[io]);
}
Seriale.println();
}

Questa funzione verrà chiamata quando viene ricevuto un nuovo messaggio sull'argomento sottoscritto. Stamperà il messaggio ricevuto sul monitor seriale.

Utilizzo dei livelli QoS (Quality of Service) e delle funzioni di sicurezza

Una delle tecniche più importanti utilizzate nella gestione delle richieste è l'utilizzo dei livelli QoS (Quality of Service) per i messaggi MQTT. I livelli di QoS definiscono il modo in cui il broker e gli abbonati devono gestire i tuoi messaggi. Esistono tre livelli di QoS: 0, 1 e 2.

Il livello QoS 0 è il meno affidabile, poiché i messaggi vengono inviati una sola volta e non è garantito che vengano consegnati all'abbonato. Il livello QoS 1 è più affidabile, poiché i messaggi vengono inviati almeno una volta e viene garantito che vengano consegnati all'abbonato almeno una volta. Il livello QoS 2 è il più affidabile, in quanto i messaggi vengono inviati esattamente una volta e viene garantito che vengano consegnati all'abbonato esattamente una volta. Il modo in cui i tuoi dispositivi comunicano è in linea con gli altri problemi e correzioni di sicurezza comuni di Internet of Things (IoT). vuoi rimanere al top.

Per utilizzare i livelli QoS, puoi specificare il livello desiderato quando pubblichi i messaggi utilizzando il client.publish() funzione:

client.publish("argomento", "Ciao mondo!", 1);

Questo pubblicherà il messaggio Ciao mondo! al argomento argomento con livello QoS 1.

Un'altra tecnica avanzata sta usando Ultime volontà e testamento (LWT) messaggi. I messaggi LWT sono messaggi inviati dal broker quando un client si disconnette inaspettatamente. Riteniamo che ciò sia importante per rilevare i dispositivi offline o per attivare azioni quando un dispositivo si disconnette.

Per utilizzare i messaggi LWT, è possibile specificare il messaggio LWT durante la connessione al broker utilizzando il client.setWill() funzione:

client.setWill("stato", "disconnesso", 1, VERO);

Questo imposterà il messaggio LWT su disconnesso sul stato topic con livello QoS 1 e flag di conservazione impostato su VERO.

Preparati per il tuo prossimo progetto IoT

Il modulo ESP-01 è una soluzione conveniente e compatta per i progetti IoT e il suo utilizzo con MQTT può portare il tuo progetto a un livello superiore. Sebbene la configurazione iniziale possa essere scoraggiante, i vantaggi di MQTT, come la comunicazione leggera e l'elevata scalabilità, lo rendono un investimento utile.