Innehållsförteckning:

Bygg en intern IoT luftkvalitetssensor Inget moln krävs: 10 steg
Bygg en intern IoT luftkvalitetssensor Inget moln krävs: 10 steg

Video: Bygg en intern IoT luftkvalitetssensor Inget moln krävs: 10 steg

Video: Bygg en intern IoT luftkvalitetssensor Inget moln krävs: 10 steg
Video: Smarta AI sensorer | Advania & Cisco Meraki 2024, Juni
Anonim
Bygg en intern IoT luftkvalitetssensor Inget moln krävs
Bygg en intern IoT luftkvalitetssensor Inget moln krävs
Bygg en intern IoT luftkvalitetssensor Inget moln krävs
Bygg en intern IoT luftkvalitetssensor Inget moln krävs
Bygg en intern IoT luftkvalitetssensor Inget moln krävs
Bygg en intern IoT luftkvalitetssensor Inget moln krävs
Bygg en intern IoT luftkvalitetssensor Inget moln krävs
Bygg en intern IoT luftkvalitetssensor Inget moln krävs

Kvaliteten på inomhus- eller utomhusluften beror på många föroreningskällor och vädret.

Denna enhet fångar några vanliga och några av de mest intressanta parametrarna med hjälp av 2 sensorchips.

  • Temperatur
  • Fuktighet
  • Tryck
  • Organisk gas
  • Mikropartiklar

Sensorerna som används här är BME680 för att få temperatur, luftfuktighet, tryck och organiska gasvärden och PMS5003 för att få täthet av mikropartiklarna.

Genom att använda HomeDing -biblioteket är det enkelt att bygga en enhet som bara är ansluten till ditt hemnätverk och som kan nås och styras av valfri webbläsare i nätverket. Den levereras med ett urval av element som gör det möjligt att använda de vanligaste sensorkretsarna, enheterna och andra tjänster.

Det ger också en komplett lösning för att vara värd för en intern enhet på sidan istället för att använda en molnbaserad lösning för att visa sensordata och interagera med enheten.

Tillbehör

Allt du behöver för att bygga detta projekt är ett ESP8266 -baserat kort som nodemcu -kortet och en uppsättning sensorer för att mäta luftkvaliteten. HomeDing -biblioteket som används i detta projekt stöder några av de vanliga sensorchipsen för temperatur, luftfuktighet, tryck och kvalitet. Här används BMP680 -chipet.

  • En USB-kontakt och en mikro-usb-kabel för strömförsörjning.
  • 1 nodemcu -kort med ESP8266 CPU.
  • 1 BME680 sensor breakout board.
  • 1 PM2,5 luftpartikellasersensor typ PMS5003

Det är enkelt att byta ut BME680 -sensorn med en DHT22 -sensor eftersom de också stöds av biblioteket bland många andra.

Steg 1: Förbered Arduino -miljö för ESP8266

Förbered Arduino -miljö för ESP8266
Förbered Arduino -miljö för ESP8266
  1. Installera den senaste versionen av Arduino IDE (för närvarande version 1.8.2).
  2. Använd Board Manager för att installera supporten för esp8266. En detaljerad instruktion finns här:
  3. Konfigurera kortalternativen för en NodeMCU 1.0 med 1MByte SPIFFS File System som visas på skärmdumpen

Steg 2: Inkludera obligatoriska bibliotek

Inkludera obligatoriska bibliotek
Inkludera obligatoriska bibliotek

HomeDing -biblioteket förlitar sig på några vanliga extrabibliotek för sensorer och skärmar för att fungera.

När du installerar HomeDing -biblioteket ser du en popup med dessa obligatoriska bibliotek som kan installeras automatiskt och visas på bilden och det är enkelt att installera dem alla.

Ibland (av okända skäl) misslyckas installationen av biblioteken så att alla nödvändiga bibliotek måste installeras manuellt.

Mer information om de obligatoriska biblioteken finns på dokumentationswebbplatsen på

Detta är listan över nuvarande obligatoriska bibliotek:

  • Adafruit NeoPixel
  • LiquidCrystal_PCF8574.h
  • ESP8266 och ESP32 Oled -drivrutin för SSD1306 -skärm
  • RotaryEncoder
  • DHT -sensorbibliotek för ESPx
  • OneWire

PMS5003 -luftpartikellasersensorn kommunicerar med en 9600 baud seriell linjesignal. Denna signal fångas upp med hjälp av SoftwareSerial -biblioteket som följer med installationen av ESP8266 -verktygen. Se till att inte ha en äldre version installerad som ett bibliotek.

Steg 3: Anpassa standardexempelskissen

Anpassa standardexempelskissen
Anpassa standardexempelskissen

Standardexemplet innehåller redan några av de mer vanliga sensorerna som element så bara en del konfiguration kommer att krävas.

Detta gäller BME680 -sensorn som stöds av BME680 -elementet.

PMS5003 -sensorn är mindre vanlig och måste aktiveras genom att inkludera PMS -elementet i firmware. Detta görs genom att definiera #define HOMEDING_INCLUDE_PMS i elementregisterdelen i skissen

#define HOMEDING_INCLUDE_BME680#definiera HOMEDING_INCLUDE_PMS

För enkelhet att lägga till den nya enheten till nätverket kan du lägga till SSID och lösenfras för ditt hem WiFi i filen secrets.h bredvid standard.ino -skissfilen. Men du kan också använda den inbyggda WiFi Manager för att lägga till enheten i nätverket utan denna hårdkodade konfiguration.

Nu är allt gällande implementering av skissen gjort och firmware kan sammanställas och laddas upp.

Steg 4: Ladda upp webbgränssnittet

Standardexemplet kommer med en datamapp som innehåller all fil för webbgränssnittet.

Innan du laddar upp dessa filer kanske du vill lägga till env.json- och config.json -filen som du kan hitta med den här artikeln eftersom detta kommer att göra det enklare.

Innehållet i dessa filer är det som gör IoT -enheten speciell och fungerar som en luftkvalitetssensor. Det förklaras i detalj i denna berättelse.

Använd verktyget ESP8266 för filöverföring och ladda upp alla filer. Det krävs en omstart för att aktivera konfigurationen.

Steg 5: Lägg till BME680 -sensorn

Lägg till BME680 -sensorn
Lägg till BME680 -sensorn
Lägg till BME680 -sensorn
Lägg till BME680 -sensorn
Lägg till BME680 -sensorn
Lägg till BME680 -sensorn

BME680 -sensorn kommunicerar med kortet med hjälp av I2C -bussen.

Eftersom detta eventuellt delas med andra tillägg som andra sensorer eller skärmar konfigureras på enhetsnivå i env.json tillsammans med enhetens nätverksnamn. Här är ett extraherat exempel på enhets- och I2C -inställningar:

"enhet": {

"0": {"name": "airding", "description": "Air Quality Sensor", … "i2c-scl": "D2", "i2c-sda": "D1"}}

På brödbrädan kan du se anslutningskablarna till sensorn: 3,3V = röd, GND = svart, SCL = gul, SDA = blå

Konfigurationen för BME680 kan användas i config.json:

"bme680": {

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

Vi kommer att lägga till åtgärderna senare.

För att testa installationen använder du bara en webbläsare och öppnar https://airding/board.htm så kommer du att se sensorns faktiska värden och de kommer att uppdateras ungefär var tionde sekund:

Steg 6: Lägg till PMS5003 -sensorn

Lägg till PMS5003 -sensorn
Lägg till PMS5003 -sensorn

Jag fick inte en sensor med en brödbräda -vänlig kontakt så jag var tvungen att klippa av en av kontakterna på kabeln med mitt lödkolv för att fästa den direkt på nodemcu -kortet. Du kan se det fortfarande på de sista bilderna.

Strömmen för denna sensor måste tas från Vin som normalt drivs av USB -bussen. GND är samma men också tillgängligt bredvid Vin -stiftet.

Data från sensorn överförs i ett standard 9600 baud -seriellt format så att rx- och tx -stiften och lästiden måste konfigureras:

"pms": {

"pm25": {"description": "pm25 partikel sensor", "pinrx": "D6", "pintx": "D5", "readtime": "10s"}}

Vi kommer att lägga till åtgärderna senare.

För att testa installationen igen startar du bara om enheten och använder en webbläsare och öppnar https://airding/board.htm och du kommer att se det faktiska pm35 -värdet för sensorn som visas och de kommer att uppdateras ungefär var tionde sekund men detta värde är normalt ändras inte ofta.

Du kan få högre värden genom att placera ett levande ljus bredvid sensorn eftersom ett ljus producerar mycket av dessa partiklar.

Nu kan du lägga allt i ett snyggt hölje eftersom alla andra konfigurationer och till och med programuppdateringar kan göras på distans.

Steg 7: Lägga till några nätverksfunktioner

Följande konfigurationsextrakt i env.json är aktiverande

  • uppdatera den fasta programvaran via luften
  • tillåter detektering av nätverket med hjälp av SSDP -nätverksprotokollet och hämtar aktuell tid från en ntp -server.

{

… "ota": {"0": {"port": 8266, "passwd": "123", "description": "Lyssna på OTA -uppdateringar"} ",}" ssdp ": {" 0 " ": {" Manufacturer ":" yourname "}}," ntptime ": {" 0 ": {" readtime ":" 36h "," zone ": 2}}}

Du bör justera tidszonen till din plats. Om du är osäker kan du använda webbplatsen https://www.timeanddate.com/ för att få offset från UTC/GMT. "2" är rätt för Tyskland sommartid.

Du kan också justera ota -lösenordet efter att ha läst instruktionerna om sparläge i dokumentationen på

Efter en omstart kan du hitta airding -enheten i nätverket och efter att ha fått svar från ntp -servern är den lokala tiden tillgänglig.

Steg 8: Lägga till lite loggning

Bara de faktiska värdena kanske inte ger tillräckligt så några fler element kan användas.

För den här historien används Log -elementet och NPTTime -elementet för att registrera sensorvärdenas historik i en loggfil och webb -UI -kortet för detta element kan visa det som en graf.

Följande konfiguration skapar de två logelementen för gas och partiklar:

{

"log": {"pm": {"description": "Log of pm25", "filename": "/pmlog.txt", "filesize": "10000"}, "aq": {"description": " Logg av gaskvalitet "," filnamn ":" /aqlog.txt "," filstorlek ":" 10000 "}}}

Steg 9: Åtgärder

Handlingar
Handlingar

Nu måste vi överföra de faktiska värdena till loggelementen med hjälp av åtgärder. Åtgärderna använder en URL -notation för att skicka en kay och värde till målelementet. Många element stöder att avge åtgärder på vissa händelser som händer som att fånga ett nytt sensorvärde.

Åtgärder konfigureras vid elementet som avger åtgärder 2 poster krävs:

  • Händelsen pms/p25 onvalue skickar det verkliga värdet till log/pm -elementet med hjälp av en värdeåtgärd.
  • Händelsen bme680/bd ongas skickar det verkliga värdet till log/pm -elementet med hjälp av en värdeåtgärd.

{

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

Nu är alla element konfigurerade.

Steg 10: Bilder och konfigurationsfiler

Bilder och konfigurationsfiler
Bilder och konfigurationsfiler
Bilder och konfigurationsfiler
Bilder och konfigurationsfiler
Bilder och konfigurationsfiler
Bilder och konfigurationsfiler

Här är en bild på min sista IoT luftkvalitetssensor.

Konfigurationsfilerna för nedladdning måste bytas till *.json (nr. Txt) innan de laddas upp.

Länkar och referenser

  • HomeDings källkodlager:
  • Dokumentation:
  • Standardexempel:
  • BME680 Element:
  • PMS -element:
  • Loggelement:
  • NtpTime Element:

Rekommenderad: