Spisu treści:
Wideo: Stacja monitorowania cząstek kurzu zasilana Arduino: 4 kroki (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:32
Możesz dość łatwo zbudować własne urządzenie internetowe, które monitoruje zanieczyszczenie kurzem w domu za mniej niż 50 USD i otrzymuje powiadomienie, gdy poziom kurzu jest zbyt wysoki, aby można było napowietrzyć pomieszczenie lub ustawić je na zewnątrz i otrzymać powiadomienie, jeśli jest bezpiecznie wyjść na zewnątrz, jeśli mieszkasz w bardzo zanieczyszczonym obszarze.
Zrobiłem to jako projekt szkolny, więc nie miałem wystarczająco dużo czasu, aby znaleźć usługę, która będzie pobierać wiadomości MQTT i wysyłać je do Ciebie, takie jak powiadomienia lub e-maile.
Należy również pamiętać, że ciągłe zasilanie czujnika skróci żywotność wentylatora.
Krok 1: Potrzebne części
Co będziesz potrzebował
- Arduino Uno
- Osłona Arduino Ethernet
- Czujnik laserowy cząstek stałych (zwykle kosztuje 10-30 USD w serwisie eBay/aliexpress)
- Czujnik temperatury i wilgotności DHT11 (opcja)
- Deska do krojenia chleba
- Kable rozruchowe
Krok 2: Złóż części
Najpierw musisz podłączyć osłonę Ethernet do Arduino
Czujnik PM ma wiele przewodów, ale te, których potrzebujemy, to VCC, GND, TX, RX.
Podłącz VCC i GND odpowiednio do + i - na płytce stykowej.
Arduino ma sprzętowe piny RX i TX, ale użyjemy programowej emulacji pinów RX i TX odpowiednio na pinach 2 i 3. Podłącz RX czujnika do TX Arduino i TX czujnika do RX Arduino.
Jeśli zamierzasz używać czujnika temperatury, podłącz linie VCC i GND do + i - na płytce do krojenia chleba, a linię danych do pinu 7.
Krok 3: Kodeks
Możesz zainstalować brokera MQTT na raspberry pi lub komputerze, który zawsze masz w domu, lub skorzystać z usługi MQTT w chmurze, takiej jak Cloud MQTT. Następnie możesz napisać skrypt, który wysyła dane jako HTTP do webhooka IFTT, ponieważ nie obsługują one jeszcze webhooków MQTT i skonfigurować powiadomienia, gdy poziom kurzu w domu stanie się zbyt wysoki.
Stacja lotnicza Arduino
#włączać |
#włączać |
#włączać |
#włączać |
#włączać |
#włączać |
#włączać |
#włączać |
#defineDHT11_PIN7 |
#defineRX_PIN2 |
#defineTX_PIN3 |
Adres IP ip(169, 169, 100, 98); |
bajt mac = { |
0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 |
}; |
constchar *mqtt_server = "m23.cloudmqtt.com"; |
consint mqtt_port = 11895; |
constchar *mqtt_user = "jhetjewk"; |
constchar *mqtt_pass = "QB2p9PiMV6pn"; |
constchar *mqtt_nazwa_klienta = "arduinoClient1"; // Połączenia klienta nie mogą mieć tej samej nazwy połączenia |
EthernetClient ethClient; |
Klient PubSubClient (ethClient); |
SoftwareSerial pmSerial(RX_PIN, TX_PIN); |
dht DHT; |
int pm1; |
wewn pm2_5; |
wewn pm10; |
identyfikator unsignedlong; |
//Plik mójPlik; |
Ciąg s; |
StaticJsonBuffer<200> jsonBuffer; |
JsonObject& root = jsonBuffer.createObject(); |
voidsetup() { |
Serial.początek (57600); |
pmSerial.początek(9600); |
identyfikator = 0; |
pm1 = 0; |
pm2_5 = 0; |
pm10 = 0; |
jeśli (Ethernet.begin(mac) == 0) |
{ |
Serial.println("Nie udało się skonfigurować Ethernetu przy użyciu DHCP"); |
// próba ze stałym adresem ip |
Ethernet.begin(mac, ip); |
} |
klient.setServer(mqtt_server, mqtt_port); |
klient.setCallback(oddzwanianie); |
opóźnienie (2000); |
Serial.println(Ethernet.localIP()); |
client.connect("arduinoClient", mqtt_user, mqtt_pass); |
Serial.print("rc="); |
Serial.print(klient.stan()); |
Serial.print("\n"); |
} |
voidloop() { |
indeks = 0; |
wartość znaku; |
char poprzednia wartość; |
jeśli (!klient.podłączony()) |
{ |
if (client.connect("arduinoClient", mqtt_user, mqtt_pass)) { |
Serial.println("podłączony"); |
} |
} |
while (pmSerial.available()) { |
wartość = pmSerial.read(); |
if ((indeks == 0 && wartość != 0x42) || (indeks == 1 && wartość != 0x4d)) { |
Serial.println("Nie można znaleźć nagłówka danych."); |
powrót; |
} |
jeśli (indeks == 4 || indeks == 6 || indeks == 8 || indeks == 10 || indeks == 12 || indeks == 14) { |
poprzednia wartość = wartość; |
} |
elseif (indeks == 5) { |
pm1 = 256 * poprzednia wartość + wartość; |
korzeń["pm1"] = abs(pm1); |
} |
elseif (indeks == 7) { |
pm2_5 = 256 * poprzednia wartość + wartość; |
korzeń["pm2_5"] = abs(pm2_5); |
} |
elseif (indeks == 9) { |
pm10 = 256 * poprzednia wartość + wartość; |
root["pm10"] = abs(pm10); |
} |
elseif (indeks >15) { |
przerwa; |
} |
indeks++; |
} |
while (pmSerial.available()) pmSerial.read(); |
int chk = DHT.odczyt11(DHT11_PIN); |
jeśli (DHT.temperatura == -999 || DHT.wilgotność == -999) { |
root["temperatura"] = "nie dotyczy"; |
root["wilgotność"] = "nie dotyczy"; |
} w przeciwnym razie { |
root["temperatura"] = DHT.temperatura; |
root["wilgotność"] = DHT.wilgotność; |
} |
sendResults(); |
id++; |
opóźnienie(5000); |
} |
voidsendResults() { |
// opublikuj w MQTT |
char jsonChar[100]; |
root.printTo(jsonChar); |
Serial.println(client.publish("arduino", jsonChar)); |
// debuguj do serialu |
root.printTo(Serial); |
Serial.print('\n'); |
} |
// Obsługuje wiadomości otrzymane w subskrybowanych tematach |
voidcallback(char* temat, bajt* ładunku, długość unsignedint) { |
} |
zobacz rawair_quality.ino hostowane z ❤ przez GitHub
Krok 4: Złóż pudełko
Po prostu użyłem pudełka, które leżałem i wywierciłem otwór na czujnik, z którego wydostało się powietrze, i wyciąłem otwór na kable (choć był trochę za duży).
Użyłem podkładek klejących do przymocowania czujnika do pudełka, wyrównując otwór wejściowy czujnika z wywierconym otworem w pudełku.
W końcu podłączyłem kable ethernetowe i zasilające.
Zalecana:
Przedłuż życie swojego laptopa! Oczyść radiator z kurzu.: 3 kroki
Przedłuż życie swojego laptopa! Wyczyść kurz z radiatora.: Bardzo podstawowy przegląd tego, jak wyczyściłem kurz z radiatora mojego laptopa Toshiba. Tyle tam było! Nie mogę uwierzyć, że ta praktyka nie jest zalecana i zachęcana przez producentów. Jeśli kurz blokuje wlot i wylot powietrza i
Zbuduj urządzenie do monitorowania energii za pomocą elektronu cząstek: 5 kroków (ze zdjęciami)
Zbuduj urządzenie monitorujące energię za pomocą elektronu cząstek: W większości firm uważamy energię za wydatek biznesowy. Rachunek pojawia się w naszej poczcie lub e-mailach i płacimy go przed datą anulowania. Wraz z pojawieniem się IoT i inteligentnych urządzeń, energia zaczyna zajmować nowe miejsce na biznesowej bala
Stacja pogodowa NaTaLia: stacja pogodowa zasilana energią słoneczną Arduino Wykonana we właściwy sposób: 8 kroków (ze zdjęciami)
Stacja pogodowa NaTaLia: Stacja pogodowa zasilana energią słoneczną Arduino Wykonana we właściwy sposób: po roku udanej pracy w 2 różnych lokalizacjach dzielę się planami projektu stacji pogodowej zasilanej energią słoneczną i wyjaśniam, jak ewoluował w system, który może naprawdę przetrwać przez długi czas okresy z energii słonecznej. Jeśli obserwujesz
Stacja ładująca telefon zasilana energią słoneczną: 4 kroki
Stacja ładująca telefon zasilana energią słoneczną: rozładowany telefon jest powszechnym problemem pierwszego świata. Na szczęście dzięki temu układowi możesz wykorzystać moc słońca do zasilania telefonu. Ten samouczek dotyczy TYLKO strony obwodu. Wszelkie faktyczne zabezpieczenie systemu należy uzyskać gdzie indziej
Stacja pogodowa WiFi zasilana energią słoneczną V1.0: 19 kroków (ze zdjęciami)
Stacja pogodowa WiFi zasilana energią słoneczną V1.0: W tej instrukcji pokażę, jak zbudować stację pogodową WiFi zasilaną energią słoneczną z tablicą Wemos. Wemos D1 Mini Pro ma niewielkie rozmiary, a szeroka gama osłon typu plug-and-play sprawia, że jest idealnym rozwiązaniem do szybkiego