Sommario:
- Passaggio 1: parti necessarie
- Passaggio 2: assemblare le parti
- Passaggio 3: il codice
- Passaggio 4: assemblare la scatola
Video: Stazione di monitoraggio delle particelle di polvere alimentata da Arduino: 4 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
Puoi costruire abbastanza facilmente un dispositivo Internet delle cose fai-da-te che monitora l'inquinamento da polvere nella tua casa per meno di $ 50 e ricevere una notifica quando il livello di polvere diventa troppo alto in modo da poter aerare la stanza, oppure puoi impostarlo all'esterno e ricevere una notifica se è sicuro uscire se vivi in una zona altamente inquinata.
L'ho realizzato come progetto scolastico, quindi non ho avuto abbastanza tempo per trovare un servizio che prenda i messaggi MQTT e te li invii come notifiche o e-mail.
Si noti inoltre che mantenere il sensore sempre alimentato ridurrà la durata della ventola.
Passaggio 1: parti necessarie
Di cosa avrai bisogno
- Arduino Uno
- Scudo Ethernet Arduino
- Sensore laser per particolato (di solito va da $ 10 a $ 30 su eBay / aliexpress)
- Sensore di temperatura e umidità DHT11 (opzionale)
- tagliere
- Cavi jumper
Passaggio 2: assemblare le parti
Per prima cosa, devi collegare lo shield ethernet ad Arduino
Il sensore PM ha più fili, ma quelli di cui abbiamo bisogno sono VCC, GND, TX, RX.
Collega VCC e GND rispettivamente a + e - sulla breadboard.
L'Arduino ha pin hardware RX e TX, ma utilizzeremo l'emulazione software dei pin RX e TX rispettivamente sui pin 2 e 3. Collega l'RX del sensore al TX dell'Arduino e il TX del sensore all'RX dell'Arduino.
Se intendi utilizzare il sensore di temperatura, collega le linee VCC e GND a + e - sulla breadboard e la linea dati al pin 7.
Passaggio 3: il codice
Puoi installare il broker MQTT su un raspberry pi o su un computer che hai sempre a casa, oppure utilizzare un servizio MQTT cloud, come Cloud MQTT. Quindi puoi scrivere uno script che invii i dati come HTTP a un webhook IFTT, poiché non supportano ancora i webhook MQTT e impostare notifiche per quando i livelli di polvere in casa diventano troppo alti.
Stazione aerea Arduino
#includere |
#includere |
#includere |
#includere |
#includere |
#includere |
#includere |
#includere |
#defineDHT11_PIN7 |
#defineRX_PIN2 |
#defineTX_PIN3 |
IPAddress ip(169, 169, 100, 98); |
byte mac = { |
0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 |
}; |
constchar *mqtt_server = "m23.cloudmqtt.com"; |
constint mqtt_port = 11895; |
constchar *mqtt_user = "jhetjewk"; |
constchar *mqtt_pass = "QB2p9PiMV6pn"; |
constchar *mqtt_client_name = "arduinoClient1"; // Le connessioni client non possono avere lo stesso nome di connessione |
Client Ethernet ethClient; |
PubSubClient client(ethClient); |
SoftwareSerial pmSerial(RX_PIN, TX_PIN); |
dht DHT; |
int pm1; |
int pm2_5; |
int pm10; |
ID unsignedlong; |
//File mioFile; |
Stringhe; |
StaticJsonBuffer<200> jsonBuffer; |
JsonObject& root = jsonBuffer.createObject(); |
voidsetup() { |
Serial.begin(57600); |
pmSerial.begin(9600); |
ID = 0; |
pm1 = 0; |
pm2_5 = 0; |
pm10 = 0; |
if (Ethernet.begin(mac) == 0) |
{ |
Serial.println("Impossibile configurare Ethernet utilizzando DHCP"); |
// tentativo con indirizzo IP fisso |
Ethernet.begin(mac, ip); |
} |
client.setServer(mqtt_server, mqtt_port); |
client.setCallback(richiamata); |
ritardo (2000); |
Serial.println(Ethernet.localIP()); |
client.connect("arduinoClient", mqtt_user, mqtt_pass); |
Serial.print("rc="); |
Serial.print(client.state()); |
Serial.print("\n"); |
} |
voidloop() { |
indice = 0; |
valore del carattere; |
char valore precedente; |
if (!client.connected()) |
{ |
if (client.connect("arduinoClient", mqtt_user, mqtt_pass)) { |
Serial.println("connesso"); |
} |
} |
while (pmSerial.available()) { |
valore = pmSerial.read(); |
if ((indice == 0 && valore != 0x42) || (indice == 1 && valore != 0x4d)) { |
Serial.println("Impossibile trovare l'intestazione dei dati."); |
Restituzione; |
} |
if (indice == 4 || indice == 6 || indice == 8 || indice == 10 || indice == 12 || indice == 14) { |
precedenteValore = valore; |
} |
elseif (indice == 5) { |
pm1 = 256 * valore precedente + valore; |
root["pm1"] = abs(pm1); |
} |
elseif (indice == 7) { |
pm2_5 = 256 * valore precedente + valore; |
root["pm2_5"] = abs(pm2_5); |
} |
elseif (indice == 9) { |
pm10 = 256 * valore precedente + valore; |
radice["pm10"] = abs(pm10); |
} |
elseif (indice >15) { |
rottura; |
} |
indice++; |
} |
while (pmSerial.available()) pmSerial.read(); |
int chk = DHT.read11(DHT11_PIN); |
if (DHT.temperatura == -999 || DHT.umidità == -999) { |
root["temperatura"] = "N/A"; |
root["umidità"] = "N/A"; |
} altro { |
root["temperatura"] = DHT.temperatura; |
root["umidità"] = DHT.umidità; |
} |
sendResults(); |
id++; |
ritardo (5000); |
} |
voidsendResults() { |
// pubblica su MQTT |
char jsonChar[100]; |
root.printTo(jsonChar); |
Serial.println(client.publish("arduino", jsonChar)); |
// debug su seriale |
root.printTo(Seriale); |
Serial.print('\n'); |
} |
// Gestisce i messaggi arrivati su argomenti sottoscritti |
voidcallback(char* argomento, byte* payload, lunghezza unsignedint) { |
} |
visualizza rawair_quality.ino ospitato con ❤ da GitHub
Passaggio 4: assemblare la scatola
Ho appena usato una scatola che avevo in giro e ho praticato un foro per il sensore da cui prendere l'aria e ho ritagliato un foro per far uscire i cavi (anche se era un po' troppo grande).
Ho usato dei cuscinetti di colla per attaccare il sensore alla scatola, allineando il foro di ingresso del sensore con il foro praticato sulla scatola.
Infine, ho collegato i cavi ethernet e di alimentazione.
Consigliato:
ATtiny85 Orologio e programmazione per il monitoraggio delle attività vibranti indossabili ATtiny85 con Arduino Uno: 4 passaggi (con immagini)
ATtiny85 Orologio e programmazione per il monitoraggio dell'attività con vibrazione indossabile ATtiny85 con Arduino Uno: come realizzare l'orologio per il monitoraggio dell'attività indossabile? Questo è un gadget indossabile progettato per vibrare quando rileva la stagnazione. Passi la maggior parte del tuo tempo al computer come me? Stai seduto per ore senza rendertene conto? Quindi questo dispositivo è f
Monitoraggio del pannello solare utilizzando il fotone di particelle: 7 passaggi
Monitoraggio dei pannelli solari mediante fotone di particelle: l'obiettivo del progetto è migliorare l'efficienza dei pannelli solari. Il progetto è progettato per supervisionare la generazione di energia solare fotovoltaica per migliorare le prestazioni, il monitoraggio e la manutenzione dell'impianto solare. In questo progetto, la particella ph
Avvia la presentazione delle foto delle vacanze con un tocco di magia!: 9 passaggi (con immagini)
Lancia la tua presentazione di foto delle vacanze con un tocco di magia!: Nel corso degli anni, ho sviluppato l'abitudine di portare con me una piccola statuetta quando viaggio: spesso compro un piccolo artoy vuoto (come quello nella foto) e dipingo in modo che corrisponda alla bandiera e al tema del paese che sto visitando (in questo caso, la Sicilia). T
Come costruire una stazione di monitoraggio del comfort: 10 passaggi (con immagini)
Come costruire una stazione di monitoraggio del comfort: questa istruzione descrive la progettazione e la costruzione di una cosiddetta stazione di monitoraggio del comfort CoMoS, un dispositivo sensore combinato per le condizioni ambientali, sviluppato presso il dipartimento dell'ambiente costruito presso TUK, Technische Universität Ka
Monitoraggio della qualità dell'aria alimentato a particelle: 7 passaggi
Monitoraggio della qualità dell'aria alimentato da particelle: qualità dell'aria. Probabilmente ci pensi di più ora che la nostra aria pulita si è trasformata in una foschia permanente nel cielo. Che schifo. Una cosa su cui hai il controllo è la qualità dell'aria all'interno della tua casa. In questo tutorial, ti mostrerò come costruire un'aria