Spisu treści:

Zbuduj wewnętrzny czujnik jakości powietrza IoT Bez chmury: 10 kroków
Zbuduj wewnętrzny czujnik jakości powietrza IoT Bez chmury: 10 kroków

Wideo: Zbuduj wewnętrzny czujnik jakości powietrza IoT Bez chmury: 10 kroków

Wideo: Zbuduj wewnętrzny czujnik jakości powietrza IoT Bez chmury: 10 kroków
Wideo: CZUJNIK SMOGU DIY | Cz.2 Oprogramowanie ESPEasy 2024, Listopad
Anonim
Zbuduj wewnętrzny czujnik jakości powietrza IoT Nie jest wymagana chmura
Zbuduj wewnętrzny czujnik jakości powietrza IoT Nie jest wymagana chmura
Zbuduj wewnętrzny czujnik jakości powietrza IoT Nie jest wymagana chmura
Zbuduj wewnętrzny czujnik jakości powietrza IoT Nie jest wymagana chmura
Zbuduj wewnętrzny czujnik jakości powietrza IoT Nie jest wymagana chmura
Zbuduj wewnętrzny czujnik jakości powietrza IoT Nie jest wymagana chmura
Zbuduj wewnętrzny czujnik jakości powietrza IoT Nie jest wymagana chmura
Zbuduj wewnętrzny czujnik jakości powietrza IoT Nie jest wymagana chmura

Jakość powietrza w pomieszczeniach lub na zewnątrz zależy od wielu źródeł zanieczyszczeń, a także od pogody.

To urządzenie rejestruje niektóre typowe i niektóre z najciekawszych parametrów za pomocą 2 chipów czujników.

  • Temperatura
  • Wilgotność
  • Nacisk
  • Gaz organiczny
  • Mikrocząstki

Zastosowane tutaj czujniki to BME680 do pomiaru temperatury, wilgotności, ciśnienia i gazów organicznych oraz PMS5003 do pomiaru gęstości mikrocząstek.

Korzystając z biblioteki HomeDing, łatwo jest zbudować urządzenie, które jest podłączone tylko do Twojej sieci domowej i jest dostępne i może być kontrolowane przez dowolną przeglądarkę w sieci. Zawiera szereg elementów, które umożliwiają korzystanie z najpopularniejszych chipów czujników, urządzeń i innych usług.

Zapewnia również kompletne rozwiązanie do hostowania strony internetowej wewnątrz urządzenia zamiast korzystania z rozwiązania opartego na chmurze do wyświetlania danych z czujnika i interakcji z urządzeniem.

Kieszonkowe dzieci

Wszystko, czego potrzebujesz do zbudowania tego projektu, to płyta oparta na ESP8266, taka jak płyta nodemcu i zestaw czujników do pomiaru jakości powietrza. Biblioteka HomeDing używana w tym projekcie obsługuje niektóre z popularnych chipów czujników temperatury, wilgotności, ciśnienia i jakości. Tutaj zastosowano układ BMP680.

  • Wtyczka USB i kabel micro-usb do zasilania.
  • 1 płyta nodemcu z procesorem ESP8266.
  • 1 tabliczka zaciskowa czujnika BME680.
  • 1 laserowy czujnik cząstek powietrza PM2.5 typu PMS5003

Wymiana czujnika BME680 na czujnik DHT22 jest łatwa, ponieważ są one również obsługiwane m.in. przez bibliotekę.

Krok 1: Przygotuj środowisko Arduino dla ESP8266

Przygotuj środowisko Arduino dla ESP8266
Przygotuj środowisko Arduino dla ESP8266
  1. Zainstaluj najnowszą wersję Arduino IDE (obecnie wersja 1.8.2).
  2. Użyj Board Manager, aby zainstalować obsługę esp8266. Szczegółową instrukcję można znaleźć tutaj:
  3. Skonfiguruj opcje płyty dla NodeMCU 1.0 z 1MByte SPIFFS File System, jak pokazano na zrzucie ekranu

Krok 2: Uwzględnij wymagane biblioteki

Uwzględnij wymagane biblioteki
Uwzględnij wymagane biblioteki

Biblioteka HomeDing opiera się na kilku popularnych dodatkowych bibliotekach do pracy czujników i wyświetlaczy.

Po zainstalowaniu biblioteki HomeDing zobaczysz wyskakujące okienko z wymaganymi bibliotekami, które można zainstalować automatycznie, jak pokazano na rysunku, i łatwo je wszystkie zainstalować.

Czasami (z nieznanych przyczyn) instalacja bibliotek kończy się niepowodzeniem, więc wszystkie wymagane biblioteki należy zainstalować ręcznie.

Więcej szczegółów na temat wymaganych bibliotek można znaleźć na stronie dokumentacji pod adresem

Oto lista aktualnie wymaganych bibliotek:

  • Adafruit NeoPixel
  • LiquidCrystal_PCF8574.h
  • Sterownik Oled ESP8266 i ESP32 do wyświetlacza SSD1306
  • RotaryEncoder
  • Biblioteka czujników DHT dla ESPx
  • OneWire

Laserowy czujnik cząstek powietrza PMS5003 komunikuje się za pomocą sygnału linii szeregowej o szybkości 9600 bodów. Ten sygnał jest przechwytywany przy użyciu biblioteki SoftwareSerial dołączonej do instalacji narzędzi ESP8266. Upewnij się, że starsza wersja nie jest zainstalowana jako biblioteka.

Krok 3: Dostosuj standardowy przykładowy szkic

Dostosuj standardowy przykładowy szkic
Dostosuj standardowy przykładowy szkic

Przykład standardowy zawiera już niektóre z bardziej powszechnych czujników jako elementy, więc wymagana będzie tylko pewna konfiguracja.

Dotyczy to czujnika BME680 obsługiwanego przez element BME680.

Czujnik PMS5003 jest mniej powszechny i wymaga aktywacji poprzez włączenie elementu PMS do oprogramowania układowego. Odbywa się to poprzez zdefiniowanie #define HOMEDING_INCLUDE_PMS w sekcji rejestru elementów szkicu

#define HOMEDING_INCLUDE_BME680#define HOMEDING_INCLUDE_PMS

Dla uproszczenia dodawania nowego urządzenia do sieci możesz dodać SSID i hasło swojego domowego WiFi w pliku secrets.h obok pliku szkicu standard.ino. Ale możesz również użyć wbudowanego Menedżera WiFi, aby dodać urządzenie do sieci bez tej zakodowanej konfiguracji.

Teraz wszystko, co dotyczy implementacji szkicu, jest zrobione i można skompilować i wgrać oprogramowanie.

Krok 4: Prześlij interfejs sieciowy

Standardowy przykład zawiera folder danych, który zawiera wszystkie pliki dla internetowego interfejsu użytkownika.

Przed przesłaniem tych plików możesz dodać pliki env.json i config.json, które znajdziesz w tym artykule, ponieważ ułatwi to zadanie.

Zawartość tych plików sprawia, że urządzenie IoT jest wyjątkowe i zachowuje się jak czujnik jakości powietrza. Jest to szczegółowo wyjaśnione w tej historii.

Użyj narzędzia do przesyłania plików ESP8266 i prześlij wszystkie pliki. Potrzebuje ponownego uruchomienia, aby aktywować konfigurację.

Krok 5: Dodaj czujnik BME680

Dodaj czujnik BME680
Dodaj czujnik BME680
Dodaj czujnik BME680
Dodaj czujnik BME680
Dodaj czujnik BME680
Dodaj czujnik BME680

Czujnik BME680 komunikuje się z płytą za pomocą magistrali I2C.

Ponieważ jest to prawdopodobnie współdzielone z innymi rozszerzeniami, takimi jak inne czujniki lub wyświetlacze, jest konfigurowane na poziomie urządzenia w env.json wraz z nazwą sieciową urządzenia. Oto wyodrębniona próbka ustawień urządzenia i I2C:

"urządzenie": {

"0": { "name": "airding", "description": "Czujnik jakości powietrza", … "i2c-scl": "D2", "i2c-sda": "D1" } }

Na płytce stykowej widać przewody połączeniowe do czujnika: 3,3V=czerwony, GND=czarny, SCL=żółty, SDA=niebieski

Konfiguracja dla BME680 może być użyta w config.json:

"bme680": {

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

Akcje dodamy później.

Aby przetestować konfigurację, po prostu użyj przeglądarki i otwórz https://airding/board.htm, a zobaczysz rzeczywiste wartości wyświetlanego czujnika i będą one aktualizowane co około 10 sekund:

Krok 6: Dodaj czujnik PMS5003

Dodaj czujnik PMS5003
Dodaj czujnik PMS5003

Nie dostałem czujnika ze złączem przyjaznym dla płytki stykowej, więc musiałem odciąć jedno ze złączy na kablu, użyć mojej lutownicy, aby bezpośrednio przymocować ją do płytki nodemcu. Widać to jeszcze na ostatnich zdjęciach.

Zasilanie dla tego czujnika musi być pobierane z Vin, który jest normalnie zasilany przez magistralę USB. GND jest takie samo, ale dostępne również obok pinu Vin.

Dane z czujnika przesyłane są w standardowym formacie szeregowym 9600 bodów, dlatego należy skonfigurować piny rx i tx oraz czas odczytu:

"po południu": {

"pm25": { "description": "czujnik cząstek pm25", "pinrx": "D6", "pintx": "D5", "readtime": "10s" } }

Akcje dodamy później.

Aby ponownie przetestować konfigurację, uruchom ponownie urządzenie i użyj przeglądarki i otwórz https://airding/board.htm, a zobaczysz rzeczywistą wartość pm35 wyświetlanego czujnika i będą one aktualizowane co około 10 sekund, ale ta wartość jest zwykle nie zmienia się często.

Możesz uzyskać wyższe wartości, umieszczając światło świecy obok czujnika, ponieważ świeca wytwarza większość tych cząstek.

Teraz możesz umieścić wszystko w ładnej obudowie, ponieważ wszystkie inne konfiguracje, a nawet aktualizacje oprogramowania można wykonać zdalnie.

Krok 7: Dodawanie niektórych funkcji sieciowych

Poniższy fragment konfiguracji w env.json jest włączony

  • aktualizacja oprogramowania bezprzewodowo
  • umożliwia wykrywanie sieci przy użyciu protokołu sieciowego SSDP i pobiera aktualny czas z serwera ntp.

{

… "ota": { "0": { "port": 8266, "passwd": "123", "description": "Nasłuchuj 'over the air' aktualizacji OTA" } }, "ssdp": { "0 ": { "Producent": "twoje imię" } }, "ntptime": { "0": { "readtime": "36h", "zone": 2 } } }

Powinieneś dostosować strefę czasową do swojej lokalizacji. Jeśli masz wątpliwości, możesz skorzystać ze strony internetowej https://www.timeanddate.com/, aby uzyskać przesunięcie z UTC/GMT. „2” jest odpowiednie dla czasu letniego w Niemczech.

Możesz również zmienić hasło ota po przeczytaniu instrukcji dotyczących trybu zapisu w dokumentacji na

Po restarcie możesz znaleźć urządzenie powietrzne w sieci, a po otrzymaniu odpowiedzi z serwera ntp dostępny jest czas lokalny.

Krok 8: Dodawanie rejestrowania

Tylko rzeczywiste wartości mogą nie być wystarczające, więc można użyć więcej elementów.

W przypadku tej historii element dziennika i element NPTTime są używane do rejestrowania historii wartości czujników w pliku dziennika, a karta internetowego interfejsu użytkownika tego elementu może wyświetlić ją w postaci wykresu.

Poniższa konfiguracja tworzy 2 elementy logarytmiczne dla gazu i cząstek:

{

"log": { "pm": { "description": "Dziennik pm25", "filename": "/pmlog.txt", "filesize": "10000" }, "aq": { "description": " Dziennik jakości gazu", "filename": "/aqlog.txt", "filesize": "10000" } } }

Krok 9: Działania

działania
działania

Teraz musimy przenieść rzeczywiste wartości do elementów dziennika za pomocą akcji. Akcje wykorzystują notację URL do przekazania kay i wartości do elementu docelowego. Wiele elementów obsługuje emitowanie akcji w określonych zdarzeniach, takich jak przechwytywanie nowej wartości czujnika.

Akcje są konfigurowane na elemencie, który emituje akcje Wymagane są 2 wpisy:

  • Zdarzenie pms/p25 onvalue wysyła rzeczywistą wartość do elementu log/pm za pomocą akcji value.
  • Zdarzenie bme680/bd ongas wysyła aktualną wartość do elementu log/pm za pomocą akcji value.

{

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

Teraz wszystkie elementy są skonfigurowane.

Krok 10: Zdjęcia i pliki konfiguracyjne

Zdjęcia i pliki konfiguracyjne
Zdjęcia i pliki konfiguracyjne
Zdjęcia i pliki konfiguracyjne
Zdjęcia i pliki konfiguracyjne
Zdjęcia i pliki konfiguracyjne
Zdjęcia i pliki konfiguracyjne

Oto kilka zdjęć mojego ostatniego czujnika jakości powietrza IoT.

Pliki konfiguracyjne do pobrania muszą zostać zmienione na *.json (bez.txt) przed przesłaniem.

Linki i referencje

  • Repozytorium kodu źródłowego HomeDing:
  • Dokumentacja:
  • Przykład standardowy:
  • Element BME680:
  • Element PMS:
  • Element dziennika:
  • Element NtpTime:

Zalecana: