Incontra l'Arduino Killer ESP8266

Incontra l'Arduino Killer ESP8266 / Fai da te

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 inizialmente 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. Acquistane uno ora, quindi segui questa guida per iniziare a programmare il tuo ESP8266, il tutto dall'interno del familiare IDE 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 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 dove dice URL di Board Manager aggiuntivi:

Hit Ok, quindi apri il Responsabile delle commissioni a partire dal Strumenti -> Scheda menu, cercare esp8266 e installare la piattaforma. Ora dovresti vedere una scelta per NodeMCU 1.0.

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. Nota che è piuttosto lento da caricare, ma alla fine lo dirà “fatto il caricamento” ea quel punto (non prima, o interromperà il processo di caricamento), puoi aprire il monitor seriale. Dovresti vedere qualcosa di simile a questo:


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 ("Connessione a"); Serial.println (SSID); WiFi.begin (ssid, password); while (WiFi.status ()! = WL_CONNECTED) delay (500); Serial.print ( "");  Serial.println (""); Serial.println ("WiFi connected"); Serial.println ("Indirizzo IP:"); 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.

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 usando 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 per 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 Guida per principianti Parte 2: ZWave, MQTT, regole e grafici OpenHAB, il software di domotica open source, supera di gran lunga le capacità di altri sistemi domotici sul mercato, ma non è facile da configurare. agire, può essere addirittura 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à, scaricate questi in ogni caso, fate il backup di ciò che avete e sovrascrivete 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 è difettosa 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 passato molte copie della libreria MQTT cercando di trovarne una buona richiama funzione, atterrando finalmente su quello incluso. 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 su.

Ecco come funziona e alcune note:

  • Per prima cosa ci colleghiamo al Wi-Fi, quindi al server MQTT, quindi iniziamo il main ciclo continuo().
  • 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 sbagliata 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'è un messaggio ricevuto() funzione 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 è necessario posizionare un cambio di livello logico 5v-3.3v tra il pin di dati e l'ESP8266, altrimenti si danneggerà.

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.

Addio Arduino, ti abbiamo amato così tanto. Sto scherzando: non dappertutto nella mia casa si può anche avere il Wi-Fi, quindi per quei punti ho ancora bisogno di una rete mesh con Arduino e ricevitori RF.

Per un progetto divertente, scopri come creare un pulsante Wi-Fi con ESP8266 Come creare il tuo pulsante connesso Wi-Fi con ESP8266 Come creare il tuo pulsante connesso Wi-Fi con ESP8266 In questo tutorial imparerai come creare un pulsante abilitato per Wi-Fi usando NodeMCU e IFTTT. Leggi di più .

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

Scopri di più su: Arduino, Elettronica, Internet of Things, Smart Sensor.