Innehållsförteckning:
- Tillbehör
- Steg 1: Förbered Arduino -miljö för ESP8266
- Steg 2: Inkludera obligatoriska bibliotek
- Steg 3: Anpassa standardexempelskissen
- Steg 4: Ladda upp webbgränssnittet
- Steg 5: Lägg till BME680 -sensorn
- Steg 6: Lägg till PMS5003 -sensorn
- Steg 7: Lägga till några nätverksfunktioner
- Steg 8: Lägga till lite loggning
- Steg 9: Åtgärder
- Steg 10: Bilder och konfigurationsfiler
Video: Bygg en intern IoT luftkvalitetssensor Inget moln krävs: 10 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:39
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
- Installera den senaste versionen av Arduino IDE (för närvarande version 1.8.2).
- Använd Board Manager för att installera supporten för esp8266. En detaljerad instruktion finns här:
- Konfigurera kortalternativen för en NodeMCU 1.0 med 1MByte SPIFFS File System som visas på skärmdumpen
Steg 2: 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
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
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
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
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
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:
LED -moln med Fadecandy, PI och LED -remsor: 4 steg (med bilder)
LED -moln med hjälp av Fadecandy, PI och LED -remsor: Jag har gjort några LED -moln för att skapa en eterisk atmosfär i mitt hus. Dessa skulle ursprungligen användas för en festival som har avbrutits på grund av den pågående pandemin. Jag har använt ett blekt godischip för att uppnå smidiga animationer och jag har
Molnigt moln läker dig (hinder för att undvika robot med insamlingsfunktion): 8 steg
Molnigt moln läker dig (hinder för att undvika robot med insamlingsfunktion): En värdelös maskin - Arduino Robot
ESP32-CAM Ta bilder och skicka via e-post med SPIFF Memmory. -- INGET SD -kort krävs: 4 steg
ESP32-CAM Ta bilder och skicka via e-post med SPIFF Memmory. || INGET SD-kort krävs: Hej folk, ESP32-CAM-kortet är ett billigt utvecklingskort som kombinerar ett ESP32-S-chip, en OV2640-kamera, flera GPIO: er för att ansluta kringutrustning och en microSD-kortplats. Den har ett antal applikationer som sträcker sig från videoströmmande webbserver, bu
Artificiellt moln: 3 steg
Artificiellt moln: Hej alla, idag ska jag göra ett regnbågsfärgat konstgjort moln
Gör Alexa-färdigheter med Cloud9- Inget kreditkort eller hårdvara krävs: 7 steg (med bilder)
Gör Alexa-färdigheter med Cloud9- Inget kreditkort eller hårdvara krävs: Hej, idag ska jag visa dig hur du skapar din egen Amazon Alexa-färdighet med Cloud9. För er som inte vet är Cloud9 en online IDE som stöder många olika språk och det är hundra procent gratis - inget kreditkort krävs