Sommario:

Costruisci un sensore di qualità dell'aria IoT interno Nessun cloud richiesto: 10 passaggi
Costruisci un sensore di qualità dell'aria IoT interno Nessun cloud richiesto: 10 passaggi

Video: Costruisci un sensore di qualità dell'aria IoT interno Nessun cloud richiesto: 10 passaggi

Video: Costruisci un sensore di qualità dell'aria IoT interno Nessun cloud richiesto: 10 passaggi
Video: IoT Smoke & Gas Detector using ESP8266 & Blynk 2.0 2024, Giugno
Anonim
Costruisci un sensore di qualità dell'aria IoT interno Non è necessario il cloud
Costruisci un sensore di qualità dell'aria IoT interno Non è necessario il cloud
Costruisci un sensore di qualità dell'aria IoT interno Non è necessario il cloud
Costruisci un sensore di qualità dell'aria IoT interno Non è necessario il cloud
Costruisci un sensore di qualità dell'aria IoT interno Non è necessario il cloud
Costruisci un sensore di qualità dell'aria IoT interno Non è necessario il cloud
Costruisci un sensore di qualità dell'aria IoT interno Non è necessario il cloud
Costruisci un sensore di qualità dell'aria IoT interno Non è necessario il cloud

La qualità dell'aria interna o esterna dipende da molte fonti di inquinamento e anche dalle condizioni meteorologiche.

Questo dispositivo acquisisce alcuni dei parametri comuni e alcuni dei più interessanti utilizzando 2 chip sensore.

  • Temperatura
  • Umidità
  • Pressione
  • Gas organico
  • Microparticelle

I sensori qui utilizzati sono il BME680 per ottenere i valori di temperatura, umidità, pressione e gas organici e il PMS5003 per ottenere la densità delle microparticelle.

Utilizzando la libreria HomeDing è facile costruire un dispositivo che è connesso solo alla tua rete domestica e può essere raggiunto e controllato da qualsiasi browser sulla rete. Viene fornito con una selezione di elementi che consentono di utilizzare i più comuni chip sensore, dispositivi e altri servizi.

Offre anche una soluzione completa per l'hosting di un dispositivo web side all'interno invece di utilizzare una soluzione basata su cloud per visualizzare i dati del sensore e interagire con il dispositivo.

Forniture

Tutto ciò di cui hai bisogno per costruire questo progetto è una scheda basata su ESP8266 come la scheda nodemcu e un set di sensori per misurare la qualità dell'aria. La libreria HomeDing utilizzata in questo progetto supporta alcuni dei comuni chip di sensori per temperatura, umidità, pressione e qualità. Qui viene utilizzato il chip BMP680.

  • Una presa USB e un cavo micro-usb per l'alimentazione.
  • 1 scheda nodemcu con la CPU ESP8266.
  • 1 scheda breakout del sensore BME680.
  • 1 sensore laser per particelle d'aria PM2.5 tipo PMS5003

È facile sostituire il sensore BME680 con un sensore DHT22 poiché sono supportati anche dalla libreria tra molti altri.

Passaggio 1: preparare l'ambiente Arduino per ESP8266

Prepara l'ambiente Arduino per ESP8266
Prepara l'ambiente Arduino per ESP8266
  1. Installa l'ultima versione di Arduino IDE (attualmente versione 1.8.2).
  2. Utilizzare Board Manager per installare l'installazione del supporto esp8266. È possibile trovare istruzioni dettagliate qui:
  3. Imposta le opzioni della scheda per un NodeMCU 1.0 con 1 MByte SPIFFS File System come mostrato nello screenshot

Passaggio 2: includi le librerie richieste

Includi librerie richieste
Includi librerie richieste

La libreria HomeDing si basa su alcune librerie extra comuni per il funzionamento di sensori e display.

Quando installi la libreria HomeDing vedrai un popup con queste librerie richieste che possono essere installate automaticamente come mostrato nell'immagine ed è facile installarle tutte.

A volte (per ragioni sconosciute) l'installazione delle librerie fallisce, quindi tutte le librerie richieste devono essere installate manualmente.

Maggiori dettagli sulle librerie richieste sono disponibili sul sito Web della documentazione all'indirizzo

Questo è l'elenco delle librerie attualmente richieste:

  • Adafruit NeoPixel
  • LiquidCrystal_PCF8574.h
  • Driver Oled ESP8266 e ESP32 per display SSD1306
  • Encoder rotativo
  • Libreria di sensori DHT per ESPx
  • OneWire

Il sensore laser per particelle d'aria PMS5003 comunica utilizzando un segnale di linea seriale a 9600 baud. Questo segnale viene acquisito utilizzando la libreria SoftwareSerial fornita con l'installazione degli strumenti ESP8266. Assicurati di non avere una versione precedente installata come libreria.

Passaggio 3: personalizza lo schizzo di esempio standard

Personalizza lo schizzo di esempio standard
Personalizza lo schizzo di esempio standard

L'esempio standard include già alcuni dei sensori più comuni come elementi, quindi sarà necessaria solo una certa configurazione.

Questo vale per il sensore BME680 supportato da BME680 Element.

Il sensore PMS5003 è meno comune e deve essere attivato includendo l'elemento PMS nel firmware. Questo viene fatto definendo #define HOMEDING_INCLUDE_PMS nella sezione del registro degli elementi dello schizzo

#define HOMEDING_INCLUDE_BME680#define HOMEDING_INCLUDE_PMS

Per semplicità nell'aggiungere il nuovo dispositivo alla rete puoi aggiungere l'SSID e la passphrase del tuo WiFi di casa nel file secrets.h accanto al file di schizzo standard.ino. Ma puoi anche usare il WiFi Manager integrato per aggiungere il dispositivo alla rete senza questa configurazione hard-coded.

Ora tutto ciò che riguarda l'implementazione dello sketch è fatto e il firmware può essere compilato e caricato.

Passaggio 4: caricare l'interfaccia utente Web

L'esempio standard viene fornito con una cartella di dati che contiene tutti i file per l'interfaccia utente web.

Prima di caricare questi file potresti voler aggiungere il file env.json e config.json che puoi trovare con questo articolo perché questo renderà le cose più semplici.

Il contenuto di questi file è ciò che rende speciale il dispositivo IoT e si comporta come un sensore di qualità dell'aria. È spiegato in dettaglio in questa storia.

Utilizzare l'utilità di caricamento file ESP8266 e caricare tutti i file. È necessario riavviare per attivare la configurazione.

Passaggio 5: aggiungere il sensore BME680

Aggiungi il sensore BME680
Aggiungi il sensore BME680
Aggiungi il sensore BME680
Aggiungi il sensore BME680
Aggiungi il sensore BME680
Aggiungi il sensore BME680

Il sensore BME680 sta comunicando con la scheda utilizzando il bus I2C.

Poiché questo è eventualmente condiviso con altre estensioni come altri sensori o display, è configurato a livello di dispositivo in env.json insieme al nome di rete del dispositivo. Ecco un esempio estratto delle impostazioni del dispositivo e I2C:

"dispositivo": {

"0": { "name": "airding", "description": "Sensore di qualità dell'aria", … "i2c-scl": "D2", "i2c-sda": "D1" } }

Sulla breadboard sono visibili i cavi di collegamento al sensore: 3.3V=rosso, GND=nero, SCL=giallo, SDA=blu

La configurazione per BME680 può essere utilizzata in config.json:

"bme680": {

"bd": { "address": "0x77", "readtime": "10s" } }

Aggiungeremo le azioni in seguito.

Per testare la configurazione basta usare un browser e aprire https://airding/board.htm e vedrai i valori effettivi del sensore visualizzati e verranno aggiornati circa ogni 10 secondi:

Passaggio 6: aggiungere il sensore PMS5003

Aggiungi il sensore PMS5003
Aggiungi il sensore PMS5003

Non avevo un sensore con un connettore compatibile con la breadboard, quindi ho dovuto tagliare uno dei connettori sul cavo usando il mio saldatore per collegarlo direttamente alla scheda nodemcu. Lo puoi vedere ancora nelle foto finali.

L'alimentazione per questo sensore deve essere prelevata dal Vin che normalmente è alimentato dal bus USB. GND è lo stesso ma disponibile anche accanto al pin Vin.

I dati dal sensore vengono trasferiti in un formato seriale standard a 9600 baud quindi è necessario configurare i pin rx e tx e il tempo di lettura:

"pm": {

"pm25": { "description": "sensore di particelle pm25", "pinrx": "D6", "pintx": "D5", "readtime": "10s" } }

Aggiungeremo le azioni in seguito.

Per testare nuovamente la configurazione basta riavviare il dispositivo e utilizzare un browser e aprire https://airding/board.htm e vedrai il valore pm35 effettivo del sensore visualizzato e verranno aggiornati circa ogni 10 secondi ma questo valore è normalmente non cambiando spesso.

È possibile ottenere valori più elevati posizionando una candela accanto al sensore poiché una candela produce gran parte di queste particelle.

Ora puoi mettere tutto in una bella custodia perché tutte le altre configurazioni e anche gli aggiornamenti software possono essere fatti da remoto.

Passaggio 7: aggiunta di alcune funzionalità di rete

Il seguente estratto di configurazione in env.json sta abilitando

  • aggiornamento del firmware via etere
  • consente di rilevare la rete utilizzando il protocollo di rete SSDP e recupera l'ora corrente da un server ntp.

{

… "ota": { "0": { "port": 8266, "passwd": "123", "description": "Ascolta aggiornamenti OTA 'over the air'" } }, "ssdp": { "0 ": { "Produttore": "tuonome" } }, "ntptime": { "0": { "readtime": "36h", "zone": 2 } } }

Dovresti regolare il fuso orario in base alla tua posizione. In caso di dubbi, è possibile utilizzare il sito Web https://www.timeanddate.com/ per ottenere l'offset da UTC/GMT. "2" è giusto per l'estate in Germania.

Puoi anche modificare la password ota dopo aver letto le istruzioni relative alla modalità di salvataggio nella documentazione su

Dopo un riavvio potresti trovare il dispositivo airding sulla rete e dopo aver ricevuto una risposta dal server ntp l'ora locale è disponibile.

Passaggio 8: aggiunta di un po' di registrazione

Solo i valori effettivi potrebbero non dare abbastanza, quindi è possibile utilizzare altri elementi.

Per questa storia, l'elemento Log e l'elemento NPTTime vengono utilizzati per registrare la cronologia dei valori del sensore in un file di registro e la scheda dell'interfaccia utente Web per questo elemento può visualizzarlo come grafico.

La seguente configurazione crea i 2 elementi log per gas e particelle:

{

"log": { "pm": { "description": "Log di pm25", "filename": "/pmlog.txt", "filesize": "10000" }, "aq": { "description": " Log della qualità del gas", "filename": "/aqlog.txt", "filesize": "10000" } } }

Passaggio 9: azioni

Azioni
Azioni

Ora abbiamo bisogno di trasferire i valori effettivi agli elementi di registro usando le azioni. Le azioni utilizzano una notazione URL per passare un kay e un valore all'elemento di destinazione. Molti elementi supportano l'emissione di azioni su determinati eventi che si verificano come l'acquisizione di un nuovo valore del sensore.

Le azioni sono configurate nell'elemento che emette azioni Sono necessarie 2 voci:

  • L'evento pms/p25 onvalue invia il valore effettivo all'elemento log/pm utilizzando un'azione value.
  • L'evento bme680/bd ongas invia il valore effettivo all'elemento log/pm utilizzando un'azione valore.

{

"pms": { "pm25": { … "onvalue": "log/pm?value=$v" } }, "bme680": { "bd": { … "ongas": "log/aq?value= $v" } } }

Ora tutti gli elementi sono configurati.

Passaggio 10: immagini e file di configurazione

Immagini e file di configurazione
Immagini e file di configurazione
Immagini e file di configurazione
Immagini e file di configurazione
Immagini e file di configurazione
Immagini e file di configurazione

Ecco alcune immagini del mio sensore finale per la qualità dell'aria IoT.

I file di configurazione per il download devono essere rinominati in *.json (no.txt) prima del caricamento.

Link e riferimenti

  • Repository del codice sorgente di HomeDing:
  • Documentazione:
  • Esempio standard:
  • Elemento BME680:
  • Elemento PMS:
  • Elemento di registro:
  • Elemento NtpTime:

Consigliato: