Come costruire un semplice fan del desktop
Che tu lo costruisca con parti stampate in 3D o cartone, questa ventola desktop fai-da-te a basso costo manterrà te e i tuoi dispositivi freschi.
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.
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, DIYHOBI 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 alimenta il modulo WiFi dal regolatore.
Non collegare i pin VCC e CH_PD dell'ESP al pin 5V di Arduino. Il collegamento del modulo all'alimentazione a 5 V può danneggiarlo.
Tutti i condensatori sono da 10uF e il resistore è un resistore da 1K .
Requisiti software
Il modulo ESP-01 è comunemente usato con la piattaforma Arduino. Pertanto, la configurazione del software è piuttosto semplice, soprattutto se hai familiarità con Arduino C. Tuttavia, se hai più familiarità con Raspberry, ci sono molti progetti Raspberry Pi IoT che puoi provare.
Questi sono i requisiti fondamentali:
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 su File > Preferences .
Nel campo URL aggiuntivi di Board Manager , inserisci il seguente URL:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Fare clic su OK per chiudere la finestra Preferenze.
Successivamente, vai su Strumenti > Bacheca > Gestore bacheche .
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 su Sketch > Includi libreria > Gestisci librerie .
Cerca PubSubClient e fai clic sulla libreria per installarlo.
Dopo aver installato tutte le librerie necessarie, puoi iniziare a programmare il modulo ESP-01. Una cosa da notare, però, è che puoi usare Wifi.h che è incluso nella libreria o scaricare la libreria ESPWifi.h e includerla nel tuo sketch.
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
#include ESP8266WiFi.h> #include PubSubClient.h>
Quindi, definisci i dettagli della connessione WiFi e MQTT.
const char* ssid = "YOUR_SSID"; const char* password = "YOUR_PASSWORD"; const char* mqtt_server = "YOUR_MQTT_SERVER";
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; void setup_wifi() { delay(10); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); } }
Questa funzione dovrebbe essere chiamata nella funzione setup() del tuo sketch.
Successivamente, dovrai creare un client MQTT e connetterti al tuo broker MQTT:
PubSubClient client(espClient); void reconnect() { while (!client.connected()) { if (client.connect("ESP01", mqtt_user, mqtt_password)) { // Subscribe to a topic client.subscribe("test/topic"); } else { delay(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 dati, utilizzare la funzione client.publish() per pubblicare un messaggio nell'argomento inTopic .
client.publish("inTopic", "Hello from ESP-01");
Questo pubblicherà il messaggio "Ciao da ESP-01" nell'argomento inTopic .
È 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.
float temperature = 25.5; String temperatureString = String(temperature); char temperatureChar[5]; temperatureString.toCharArray(temperatureChar, 5); client.publish("Temp", temperatureChar);
Questo pubblicherà i dati sulla temperatura nell'argomento Temp .
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 la funzione client.subscribe() . Per il nostro caso di seguito, il cliente si iscrive all'argomento outTopic .
client.subscribe("outTopic");
Dopo esserti iscritto a un argomento, puoi ricevere i messaggi pubblicati su quell'argomento utilizzando la funzione client.loop() nella funzione loop() nello sketch seguente:
void loop() { if (!client.connected()) { reconnect(); } client.loop(); }
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:
void callback(char* topic, byte* payload, unsigned int length) { // Print the received message Serial.print("Message received on topic: "); Serial.print(topic); Serial.print(". Message: "); for (int i=0;i Serial.print((char)payload[i]); } Serial.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 altri comuni problemi di sicurezza dell'Internet of Things (IoT) e correzioni di cui vuoi essere sempre aggiornato.
Per utilizzare i livelli QoS, puoi specificare il livello desiderato quando pubblichi i messaggi utilizzando la funzione client.publish() :
client.publish("topic", "Hello, world!", 1);
Questo pubblicherà il messaggio Hello, world! all'argomento argomento con QoS livello 1 .
Un'altra tecnica avanzata sta usando i messaggi Last Will and Testament (LWT) . 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, puoi specificare il messaggio LWT quando ti connetti al broker utilizzando la funzione client.setWill() :
client.setWill("status", "offline", 1, true);
Questo imposterà il messaggio LWT su offline nell'argomento di stato con il livello QoS 1 e il flag di conservazione impostato su true .
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.
Che tu lo costruisca con parti stampate in 3D o cartone, questa ventola desktop fai-da-te a basso costo manterrà te e i tuoi dispositivi freschi.
Le macchine per liofilizzazione commerciali possono essere costose, quindi perché non costruirne una tua? Sì, si può davvero fare e ti mostreremo come.
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.