Incontra l'Arduino Killer: ESP8266

Cosa succede se ti ho detto che c'è una scheda di sviluppo compatibile con Arduino con Wi-Fi integrato per meno di $ 10? Bene, c'è.

Cosa succede se ti ho detto che c'è una scheda di sviluppo compatibile con Arduino con Wi-Fi integrato per meno di $ 10?  Bene, c'è.
Annuncio pubblicitario

Il Wi-Fi è un kit essenziale per qualsiasi progetto DIY di Internet of Things (IoT), ma il nostro Arduino preferito non viene fornito con il Wi-Fi e l'aggiunta di uno schermo Wi-Fi può portare il costo totale a circa $ 40. Cosa succede se ti ho detto che c'è una scheda di sviluppo compatibile con Arduino con Wi-Fi integrato per meno di $ 10? Bene, c'è.

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

A parte nomi fantasiosi, ESP8266 (noto anche come NodeMCU) è stato 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 era possibile eliminare completamente l'arduino dall'equazione.

In meno di un anno, l'ESP8266 è cresciuto in popolarità, ed è ora supportato e sviluppato così bene che se stai usando Arduino, devi stare in piedi e prendere nota. Compralo subito, quindi segui questa guida per iniziare a programmare il tuo ESP8266, il tutto dall'interno del familiare IDE di Arduino.

Non sei limitato ad usare l'IDE Arduino, ovviamente - sono compatibili anche con Lua (che sembra un Python dimagrito ai miei occhi da novizio), ma dal momento che stiamo affrontando questo dal punto di vista di quelli che hanno imparato su Arduino, questo è quello che copriremo esclusivamente oggi.

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

È un po 'più costoso degli altri ($ 6, 50 rispetto a $ 4!), Ma include il driver seriale necessario per programmare il chip, e ha un regolatore di potenza incorporato, così come un sacco di pin IO. È ampiamente supportato e in realtà non ha bisogno di nulla a parte una connessione USB per la programmazione o la potenza, quindi è il modo più semplice con cui lavorare. Se si acquista un qualsiasi altro tipo di scheda ESP8266, potrebbe essere necessario un regolatore di potenza separato da 3, 3 V e una connessione FTDI adatta per la programmazione.

Introduzione a ESP8266-12E e Arduino

Innanzitutto, installa i driver seriali per questa scheda. Potrebbe essere necessario disabilitare la firma di KEXT se stai utilizzando El Capitan a causa dei nuovi sistemi di sicurezza.

Successivamente, è necessario abilitare il supporto per ESP8266 dal manager della scheda IDE di Arduino. Apri Preferenze e inserisci il seguente URL in cui sono presenti gli URL di Gestione scheda aggiuntiva :

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

arduino board manager URL

Premi Ok, quindi apri Gestione schede da Strumenti -> Menu scheda, cerca esp8266 e installa la piattaforma. Ora dovresti vedere una scelta per NodeMCU 1.0.

selezionare la scheda

Lasciare la CPU e caricare la velocità così com'è e selezionare 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 è piuttosto lento da caricare, ma alla fine verrà visualizzato il messaggio "caricamento completato" ea quel punto (non prima, o interromperà 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 connetterci a uno.

Ecco un codice barebones assolutamente semplice per la connessione a una rete Wi-Fi. Non fa altro che connettersi, ma è qualcosa che puoi aggiungere anche più tardi. Ricordati di cambiare il TUO_SSID e TUA_PASSWORD ai tuoi dettagli Wi-Fi. Carica, apri la console seriale e dovresti vederla connessa.

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

Non è fantastico quanto sia stato ridicolmente semplice?

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

NodeMCU__v1.0_pinout

Rapido sensore Smart Home con MQTT e DHT11

Ecco un esempio pratico che puoi utilizzare subito per monitorare la tua casa. Aggiungeremo un sensore di temperatura e umidità DHT11, quindi riporteremo i valori utilizzando il protocollo MQTT sulla rete Wi-Fi, nel mio caso verso un sistema domotico OpenHAB DIY (in caso contrario, potresti leggere la nostra guida per principianti a avvio di OpenHAB su un Raspberry Pi Introduzione a OpenHAB Home Automation su Raspberry Pi Introduzione a OpenHAB Home Automation su Raspberry Pi OpenHAB è una piattaforma di automazione domotica open source che funziona su una varietà di hardware ed è indipendente dal protocollo, il che significa può connettersi a quasi tutti gli hardware di automazione domestica sul mercato oggi Ulteriori informazioni e parte 2, che si occupa specificamente dell'installazione di un server MQTT Guida introduttiva per OpenHAB Parte 2: ZWave, MQTT, regole e grafici OpenHAB Beginner's Guide Part 2: ZWave, MQTT, regole e grafici OpenHAB, il software di domotica open source, supera di gran lunga le capacità di altri sistemi di automazione domestica sul mercato, ma non è facile da installare. essere decisamente frustrante Leggi di più ).

Sul lato del 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à, scaricali comunque, 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 è difettoso su ESP8266 e il 90% delle volte risulta in letture non riuscite.

Con la vecchia versione 1.0 della libreria che ho incluso nel download, puoi modificare manualmente i tempi: 11 funziona meglio per queste schede ESP2866. Ho anche esaminato molte copie della libreria MQTT cercando di trovare una buona funzione di callback, arrivando finalmente a quella inclusa. Dovrai riavviare l'IDE Arduino dopo averli sostituiti.

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 se si utilizza un server cloud, anche se non è presente alcuna autenticazione) e i canali per pubblicare i dati.

Ecco come funziona e alcune note:

  • Per prima cosa ci colleghiamo al Wi-Fi, quindi al server MQTT, quindi iniziamo il ciclo principale ().
  • Nel ciclo, interrogiamo il sensore DHT ogni 60 secondi e pubblichiamo le letture sui canali MQTT pertinenti. Anche in questo caso, se la maggior parte delle letture risulta in un messaggio di errore, si ha la versione errata della libreria DHT - eseguire il downgrade alla versione 1.0.
  • client.loop () passa il controllo alla libreria MQTT, permettendogli di reagire ai messaggi in arrivo.
  • C'è una funzione messageReceived () in cui gestiamo i messaggi in arrivo - basta fare una semplice istruzione if per confrontare il carico utile con il messaggio che ti aspetti. Si potrebbe usare questo per attivare un relè, per esempio.
  • Dopo aver eseguito questi per alcuni giorni, ho scoperto che avrebbero smesso casualmente di funzionare - presumo che si tratti di una perdita di memoria, ma dato che non ho l'abilità di codifica per affrontarlo e potrebbe essere con le librerie di base, I Ho optato per un semplice reset soft ogni giorno. Esattamente un giorno dopo che i nodi dei sensori sono stati attivati, si riavvieranno da soli.
  • Quando si alimentano questi economici moduli DHT11 da 3, 3 V, i valori di umidità sono molto inferiori a quelli che dovrebbero essere. L'ho risolto con una semplice moltiplicazione e calibrato contro un sensore commerciale. Ti consiglierei di confermare anche contro la tua stessa fonte, prima di fare affidamento sulle letture. In alternativa, alimentali con 5 V, ma devi posizionare uno shifter a livello logico 5v-3.3v tra il pin dati e ESP8266, altrimenti lo danneggierai .

Se tutto andava bene, ora dovresti ricevere le letture dei sensori nel tuo broker MQTT e puoi procedere con il collegamento di questi a OpenHAB come descritto nella parte 2 della nostra guida per principianti OpenHAB Guida per principianti Parte 2: ZWave, MQTT, Regole e grafici OpenHAB Beginner's Guida Parte 2: ZWave, MQTT, Regole e grafici OpenHAB, il software di domotica open source, supera di gran lunga le capacità di altri sistemi di automazione domestica sul mercato, ma non è facile da configurare. In effetti, può essere addirittura frustrante. Per saperne di più, dove ho anche mostrato come rappresentare i dati.

grafico di humdity da openhab

Addio Arduino, ti abbiamo amato così tanto. Sto scherzando: non dappertutto nella mia casa si può persino avere il Wi-Fi, quindi per quei punti avrò ancora bisogno di una rete mesh con ricevitori Arduino e RF. Ma cosa farai con ESP8266? Qualunque progetto che usi ESP8266 ti piacerebbe vedere scritto su MakeUseOf? Fateci sapere nei commenti!

In this article