Annuncio pubblicitario

Il Wi-Fi è un kit essenziale per qualsiasi progetto fai-da-te di Internet of Things (IoT), ma il nostro Arduino preferito non è dotato di Wi-Fi e l'aggiunta di uno scudo Wi-Fi può portare il costo totale a circa $ 40. E se ti dicessi che esiste una scheda di sviluppo compatibile con Arduino con Wi-Fi integrato per meno di $ 10? Bene, c'è.

Incontra Arduino Killer: ESP8266. Era solo questione di tempo prima che la corona venisse rubata dalla testa lucente della nostra cara scheda di sviluppo Arduino. È possibile innamorarsi di un circuito?

Nomi accattivanti a parte, ESP8266 (noto anche come NodeMCU) era originariamente commercializzato come componente aggiuntivo Wi-Fi a basso costo per le schede Arduino, fino a quando la comunità degli hacker non si è resa conto che potevi eliminare l'Arduino dall'equazione interamente.

In meno di un anno, l'ESP8266 è cresciuto in popolarità, ed è ora così ben supportato e sviluppato che se stai utilizzando Arduino, devi alzarti e prendere nota.

instagram viewer
Comprane uno adesso, quindi segui questa guida per iniziare a programmare il tuo ESP8266, tutto all'interno del familiare IDE Arduino.

Ovviamente non sei limitato all'uso dell'IDE di Arduino, sono anche compatibili con Lua (che sembra un Python dimagrito al mio occhi da principiante), ma dal momento che stiamo affrontando questo dal punto di vista di quelli che abbiamo imparato su Arduino, questo è ciò che tratteremo esclusivamente oggi.

Ci sono alcuni modelli di ESP8266 in circolazione, ma ho intenzione di andare avanti e raccomandare questo: ESP-12E (noto anche come NodeMCU 1.0 o il più recente NodeMCU 2.0 di pari livello).

È un po 'più costoso degli altri ($ 6,50 rispetto ai $ 4!), Ma include il driver seriale necessario per programmare il chip e ha un regolatore di potenza integrato, oltre a molti pin IO. È ampiamente supportato e in realtà non ha bisogno di nulla oltre a una connessione USB per la programmazione o l'alimentazione, quindi è il più semplice da utilizzare. Se si acquista qualsiasi altro tipo di scheda ESP8266, potrebbe essere necessario un regolatore di potenza 3.3v separato e una connessione FTDI adatta per la programmazione.

Introduzione a ESP8266-12E e Arduino

Primo, installa i driver seriali per questa tavola. Potrebbe essere necessario disabilita la firma KEXT se stai eseguendo El Capitan a causa di nuovi sistemi di sicurezza.

Successivamente, dobbiamo abilitare il supporto per ESP8266 dal board manager dell'IDE di Arduino. Apri Preferenze e inserisci il seguente URL dove dice URL di Board Manager aggiuntivi:

URL del board manager arduino

Premi Ok, quindi apri il Consigliere di amministrazione a partire dal Strumenti -> Scheda menu, cerca esp8266 e installa la piattaforma. Ora dovresti vedere una scelta per NodeMCU 1.0.

seleziona la scheda

Lascia la CPU e la velocità di upload così come sono e seleziona la porta seriale appena installata. Su Mac, questo appare come cu. SLAB_USBtoUART.

Come primo programma, suggerirei il semplice scanner Wi-Fi: trovalo da File -> Esempi -> ESP8266WiFi -> WifiScan. Tieni presente che il caricamento è piuttosto lento, ma alla fine dirà "caricamento completato" ea quel punto (non prima o interrompi il processo di caricamento), puoi aprire il monitor seriale. Dovresti vedere qualcosa di simile a questo:

test di scansione wifi esp8266
Successo! Ora proviamo a collegarci a uno.

Ecco un codice barebone assolutamente semplice per la connessione a una rete Wi-Fi. Non fa altro che connettersi, ma è qualcosa che puoi aggiungere anche in seguito. Ricorda solo di modificare YOUR_SSID e YOUR_PASSWORD nei dettagli Wi-Fi. Carica, apri la console seriale e dovresti vederlo connettersi.

 #include const char * ssid = "YOUR_SSID"; const char * password = "YOUR_PASSWORD"; WiFiClient wifiClient; void setup () {Serial.begin (115200); Serial.print ("Connessione a"); Serial.println (ssid); WiFi.begin (ssid, password); while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ( ""); } Serial.println (""); Serial.println ("WiFi connesso"); Serial.println ("Indirizzo IP:"); Serial.println (WiFi.localIP ()); } void loop () {}

Non è fantastico quanto fosse ridicolmente semplice?

Prima di proseguire, ecco il diagramma di pinout - potrebbe tornare utile in seguito. Si noti che i numeri dei pin a cui si fa riferimento nel codice sono i numeri GPIO, non il D0-16 probabilmente scritto sul PCB della scheda. Se non riesci assolutamente a capire perché un sensore non funziona, probabilmente hai confuso i numeri dei pin.

NodeMCU__v1.0_pinout

Sensore Smart Home rapido con MQTT e DHT11

Ecco un esempio pratico che puoi utilizzare immediatamente per monitorare la tua casa. Aggiungeremo un sensore di temperatura e umidità DHT11, quindi segnaleremo i valori utilizzando il protocollo MQTT sulla rete Wi-Fi, nel mio caso a un sistema domotico fai-da-te OpenHAB (in caso contrario, potresti voler leggere nostro guida per principianti per far funzionare OpenHAB su Raspberry Pi Introduzione a OpenHAB Home Automation su Raspberry PiOpenHAB è una piattaforma di automazione domestica open source matura che funziona su una varietà di hardware ed è protocollo agnostico, nel senso che può connettersi a quasi tutti gli hardware di automazione domestica sul mercato oggi. Leggi di più e parte 2, che tratta in modo specifico di installazione di un server MQTT Guida per principianti OpenHAB Parte 2: ZWave, MQTT, Regole e graficiOpenHAB, il software di automazione domestica open source, supera di gran lunga le capacità di altri sistemi di automazione domestica presenti sul mercato, ma non è facile da configurare. In effetti, può essere decisamente frustrante. Leggi di più ).

Sul lato cablaggio, collegare il sensore DHT a GND, 3.3v, e ~ D4 (o GPIO 2). Questo è tutto ciò di cui abbiamo bisogno per ora.

Scarica queste librerie MQTT e DHT. Anche se li hai già, scarica comunque questi, fai il backup di ciò che hai e sovrascrivi con questi. L'ultima libreria DHT11 di Adafruit utilizza un algoritmo automatico per determinare la velocità con cui i dati vengono letti dal sensore, ma sono difettosi su ESP8266 e il 90% delle volte risulta fallito letture.

Con la vecchia versione 1.0 della libreria che ho incluso nel download, puoi cambiare manualmente i tempi: 11 funziona meglio per queste schede ESP2866. Ho anche provato molte copie della libreria MQTT cercando di trovarne una buona richiama funzione, finalmente atterrando su quello incluso. Dovrai riavviare l'IDE di Arduino dopo averlo sostituito.

Ecco il codice completo per il progetto. Nella parte superiore sono presenti tutte le variabili che è necessario modificare, inclusi i dettagli Wi-Fi, il server MQTT (è possibile utilizzare un URL invece se si utilizza un server cloud, sebbene non sia presente alcuna autenticazione) e i canali su cui pubblicare i dati.

Ecco come funziona e alcune note:

  • Innanzitutto ci connettiamo al Wi-Fi, quindi al server MQTT, quindi iniziamo il principale ciclo continuo().
  • Nel loop, eseguiamo il polling del sensore DHT ogni 60 secondi e pubblichiamo le letture sui relativi canali MQTT. Ancora una volta, se trovi che la maggior parte delle letture genera un messaggio di errore, hai la versione sbagliata della libreria DHT - downgrade alla v1.0.
  • client.loop () passa il controllo alla libreria MQTT, consentendogli di reagire ai messaggi in arrivo.
  • C'è un messaggio ricevuto() funzione in cui gestiamo i messaggi in arrivo: basta fare una semplice istruzione if per confrontare il payload con il messaggio che ci si aspetta. Puoi usarlo per attivare un relay, per esempio.
  • Dopo averli eseguiti per alcuni giorni, ho scoperto che avrebbero smesso di funzionare in modo casuale - suppongo che si tratti di una sorta di perdita di memoria, ma dato Non ho le capacità di programmazione per gestirlo e potrebbe essere con le librerie principali, ho optato per un semplice reset software ogni giorno. Esattamente un giorno dopo l'attivazione dei nodi dei sensori, si riavvieranno automaticamente.
  • Quando si alimentano questi moduli DHT11 economici da 3,3 v, i valori di umidità sono molto più bassi di quanto dovrebbero essere. Ho risolto questo problema con una semplice moltiplicazione e calibrato su un sensore commerciale. Ti consiglio di confermare anche contro la tua fonte nota, prima di fare affidamento sulle letture. In alternativa, alimentali con 5V - ma è necessario posizionare uno shifter a livello logico 5v-3.3v tra il pin dati e ESP8266, altrimenti si danneggerà.

Se tutto è andato bene, ora dovresti ricevere le letture del sensore nel tuo broker MQTT e puoi procedere con il collegamento di queste a OpenHAB come descritto in parte 2 della nostra guida per principianti Guida per principianti OpenHAB Parte 2: ZWave, MQTT, Regole e graficiOpenHAB, il software di automazione domestica open source, supera di gran lunga le capacità di altri sistemi di automazione domestica presenti sul mercato, ma non è facile da configurare. In effetti, può essere decisamente frustrante. Leggi di più , dove ti ho anche mostrato come rappresentare graficamente i dati.

grafico dell'umidità da openhab

Addio Arduino, ti abbiamo amato così tanto. Sto solo scherzando: non ovunque in casa mia è possibile ottenere il Wi-Fi, quindi per quei punti avrò ancora bisogno di una rete mesh con Arduino e ricevitori RF.

Per un progetto divertente, dai un'occhiata come creare un pulsante Wi-Fi con ESP8266 Come creare il proprio pulsante di connessione Wi-Fi con ESP8266In questo tutorial imparerai come creare un pulsante abilitato Wi-Fi utilizzando NodeMCU e IFTTT. Leggi di più .

Ma cosa farai con ESP8266? Qualche progetto che utilizza ESP8266 ti piacerebbe vedere scritto su MakeUseOf? Fateci sapere nei commenti!

James ha una laurea in Intelligenza Artificiale ed è certificato CompTIA A + e Network +. È lo sviluppatore principale di MakeUseOf e trascorre il suo tempo libero giocando a paintball e giochi da tavolo VR. Costruisce PC da quando era un bambino.