Hackster Inc.
IAQ (angl.- Indood Air Quality) senzorji, ki so nameščeni v različnih prostorih, tako da lahko izmerite kakovost zraka v prostoru in se povežete z mobilno napravo, da pridobite podatke o osebni kakovosti zraka.
V tem projektu smo razvili sistem za spremljanje kakovosti zraka v zaprtih prostorih (angl. Indoor Air Quality: IAQ). Za zbiranje podatkov uporablja senzorje na osnovi Arduina, storitve v oblaku Azure za upravljanje in shranjevanje IAQ podatkov ter po meri izdelano aplikacijo, narejeno s programom MIT App Inventor za upravljanje Bluetooth komunikacije na strani mobilne naprave.
Ta vsebina je samo za naročnike
Kaj potrebujemo za ta projekt?
Strojna oprema:
Adafruit ESP32-S3 Reverse TFT Feather plošča ×1
Adafruit ESP32-S2 TFT Feather – 4MB Flash, 2MB PSRAM, STEMMA QT ×1
Adafruit SCD-30 – NDIR CO2 Senzor temperature in vlage ×1
Adafruit PMSA003I Air Quality razvojna plošča ×1
Adafruit BME688 – Senzor temperature, vlage, tlaka in plina ×1
Adafruit STEMMA QT / Qwiic JST SH 4-pin kabel dolžine 100mm
×4
Adafruit Lithium Ion Polymer Battery – 3.7v 1200 mAh
Programska oprema:
Arduino IDE
Microsoft Azure
MIT App Inventor 2
Orodja:
3D tiskalnik
Pištola za vroče lepljenje
Naš senzor je razdeljen na dva dela: komunikacijsko enoto in senzorsko enoto, kar omogoča uporabo sistema na več načinov. Senzorsko enoto je mogoče nositi s seboj neodvisno od komunikacijske enote in se z aplikacijo poveže z uporabnikovo mobilno napravo, kar omogoča, da senzor deluje kot »pametna ura« za kakovost zraka. Ko je povezana s komunikacijsko enoto in z več senzorji v različnih prostorih, lahko tvori omrežje in shranjuje podatke v oblak, kar omogoča enostaven dostop na enem mestu prek spletnega mesta, da lahko lastnik stanovanja ali upravitelj objekta prikaže, kako se je kakovost zraka spremenila. Poleg tega lahko uporabnik še vedno uporablja svojo mobilno aplikacijo za povezovanje senzorjev in ko se čez dan premika iz sobe v sobo, aplikacija zabeleži, kje je bil uporabnik, in mu lahko prikaže njegove osebne podatke o kakovosti zraka, kot je povprečna izpostavljenost.
Ohišje in vezje
V tem delu boste sestavili celoten fizični del senzorja, ki je potreben za zagon kode, in je na voljo v GitHub Repo. Ker je to velik korak, ga lahko dodatno razdelimo na lažje obvladljive korake.
Tiskanje ohišja.
Sestavljanje razvojne plošče.
Sestavljanje konektorja.
Namestitev v ohišje.
Tiskanje ohišja
Datoteke za primer lahko najdete v GitHub Repo na dnu prispevka in jih je treba natisniti s podporami, predlagam, da jih natisnite z odprtinami, obrnjenimi navzgor.
Sestavljanje razvojne plošče
Medtem ko se ohišje tiska, lahko delate na vezju. Za ta del boste potrebovali:
Razvojno ploščo 7 cm x 9 cm
Moški in ženski priključki
Prožne žice
Termo skrčljive božirke
Spajka in spajkalnik
4 kabli Adafruit Stemma QT
Začnite s spajkanjem šestpolnih ženskih priključkov, ki podpirajo obe strani SCD-30. Ti priključki so potrebni, da je dovolj prostora za kable med enoto senzorja in komunikacijsko enoto. Mi smo spajkali 14 priključkov narazen, vendar ni treba, da je to točno toliko. Če je senzor dobro podprt, bo deloval dobro.
Nato postavite PMSA na drugi konec plošče in se prepričajte, da sta odvod in dovod zraka obrnjena proti robovom razvojne plošče. Nato spajkajte BME680, ki je najbližje PMSA, kot je prikazano na sliki 4.
Nato morate spajkati žico na nastavljeni pin PMSA in ženski konektor na drugi konec te žice (ne pozabite na termo skrčljivo božirko), kar uporabniku omogoča izklop senzorja, ko ga ne uporablja, in tako prihrani nekaj energije v bateriji.
Sestavljanje konektorja
Za pošiljanje podatkov med komunikacijsko in senzorsko enoto je potreben konektor. Shema na sliki 6 prikazuje, katere priključke je treba povezati.
Za izdelavo konektorja boste potrebovali:
4 kratke žice,
4 srednje dolge žice,
1 ženski 8-pin priključek,
1 moški 8-pin priključek,
1 ženski 2-pin priključek,
1 ženski 3- pin priključek,
3 ženski 1- pin priključek,
16 termo skrčljivih božirk.
Najprej spajkajte 4 kratke žice na 8-pin moški konektor. Na drugem koncu žic prispajkajte 2-pin ženski konektor na 1. in 2. pin (od roba 8-pin glave) in dveh 1-pin ženskega konektorja na 3. in 4. pin. Prav tako ne pozabite dodati termo skrčljivih božirk.
Opomba: v tem primeru uporabljam 3-pin namesto 2 pin konektorja zaradi nekaterih problemov na komunikacijski enoti. Vendar pa prispajkajte 2 pin konektor na žice s prozorno termo skrčljivo božirko in enojni konektor na preostala 2.
Nato izmerite štiri srednje žice, da bodo daljše od ohišja senzorja (X CMtall), kar je pomembno, saj bo v ohišje lažje namestiti razvojno ploščo in druge komponente.
Naslednji korak je spajkanje 8-pin ženskega konektorja na enem koncu žic, na drugem koncu pa spajkanje enojnega konektorja na tretji žici od roba 8-pinskega konektorja in 3-pin konektorja na drugem koncu preostalih žic. Pri tem poskrbite, da bo A1 priključek ESP32-S3 povezan z RX priključkom ESP32-S2 ter da bosta liniji GND in +5 povezani s priključkoma GND in USB ESP modula, kot je prikazano na prejšnji shemi.
Vgradnja v ohišje
Vrnite se h komunikacijski enoti, potisnite ESP32-S2 v njeno režo, nato primite zunanjo stran 8-pin konektorja in povežite 2-pin konektor z Rx in Tx priključkom, 3. žico (krajšo) z USB priključkom in 4. žico (daljšo žico) z GND priključkom. Naslednji korak je vroče lepljenje konektorja na ohišje komunikacijske enote, pri tem delu uporabite obe ohišji kot referenco, da zagotovite, da bo konektor prilepljen na pravo mesto, in se izognete vrzelim, ko sta enoti povezani.
Podobno kot ste zalepili moško stran konektorja ponovite postopek za senzorsko enoto.
Zdaj je čas, da sestavne dele namestite v ohišje senzorja. Začnite s povezovanjem SCD-30 z ESP32-S3 s kablom STEMMA QT in če senzorjev niste povezali že prej, jih povežite s kabli STEMMA QT. Nato poravnajte razvojno ploščo z vodili, pri čemer pazite, da je senzor SCD-30 obrnjen proti dnu ohišja in da priključne žice potekajo med senzorjem in razvojno ploščo, kot je prikazano na sliki 12.
Žico priključka povežite, kot je prikazano na zgornji shemi, nato priključite PMSA priključek na D12, baterijo pa na predvideni priključek. (Bodite previdni pri polariteti baterije, saj orientacija konektorja NI standardizirana).
Nato vse skupaj postavite na svoje mesto. (Verjetno boste morali upogniti ženske konektorje, da se bo vse pravilno prilegalo). Na koncu potisnite pokrov in senzor ter komunikacija bosta dokončana.
Namestitev v oblak
Uporabniki lahko podatke preverijo neposredno na senzorju, vendar je ta resnično odličen, ko so informacije dostopne tam, kjer jih najbolj potrebujemo. Da bi to zagotovili, bomo uporabili Microsoft Azure, Cosmos DB in prilagojeno spletno mesto, kar bo uporabnikom omogočilo spremljanje vseh senzorjev z enega mesta in vključevanje podatkov v sisteme za avtomatizacijo. Za ta del boste morali:
Nastaviti vozlišče Azure IoT Hub.
Nastaviti napravo Azure IoT.
Nastaviti CosmosDB.
Ustvariti lokalnega gostitelja za spletno mesto.
Namestitev Azure IoT Hub
Azure IoT Hub je storitev upravljanja, ki gostuje v oblaku in deluje kot osrednje vozlišče sporočil za komunikacijo med IoT aplikacijo in priključenimi napravami. Azure IoT Hub omogoča „varno povezovanje, spremljanje in upravljanje milijarde naprav za razvoj aplikacij interneta stvari (IoT)“.
Naprave se lahko s središčem Azure IoT Hub povežejo z naslednjimi protokoli: HTTPS, AMPQ in MQTT. Azure ponuja tudi SDK za številne programske jezike, ki obsegajo te protokole.
Azure IoT Hub:
Pojdite na portal.azure.com.
Prijavite se v svoj račun Azure.
Na navigacijski plošči na levi strani kliknite „Create a resource“ (Ustvari vir).
Nato kliknite kategorijo „Internet stvari“ in kliknite storitev „IoT Hub“.
Na spodnji sliki zaslona boste morali izbrati naročnino, skupino virov, regijo in ime vozlišča IoT Hub. Za nadaljevanje kliknite „Review + Create“. Počakajte nekaj minut, da bo vozlišče IoT Hub ustvarjeno in nameščeno.
Ko ste na strani s pregledom, zabeležite ime gostitelja (npr. IotHubName.azure-devices.net).
Azure IoT naprava:
Dodajte Azure IoT naprave.
Na začetni strani kliknite na ustvarjeno IoT vozlišče.
Na levi plošči kliknite „Devices“ pod „Device Management“.
Ustvarite gumb „Add“ za dodajanje nove naprave.
Vnesite ime za napravo. Kot vrsto avtentikacije uporabite „Symmetric key“. Nato kliknite gumb „Save“, da ustvarite napravo.
Na strani z napravami si lahko ogledate seznam naprav. Kliknite napravo, ki ste jo ustvarili.
Zapišite „Device ID“ in „Primary key“, ki ju bo uporabila senzorska naprava za povezavo z Azure IoT Hub središčem.
Nastavitev CosmosDB
IoT vozlišče ne more shranjevati prejetih sporočil, zato jih je treba posredovati drugim Azure storitvam. Dodano je usmerjanje IoT vozlišča, kjer je mogoče določene Azure storitve povezati kot končno točko, vključno z vgrajeno končno točko, vozliščem dogodkov, storitvenim vodilom in računom za shranjevanje, shrambo blob. Trenutno je na voljo izvorna končna točka za CosmosDB. S tem odpade potreba po vzpostavitvi dodatnih virov med IoT vozliščem in CosmosDB samo za prenos sporočil iz enega vira v drugega, kar se večinoma izvaja z uporabo Stream Analytics opravila ali Azure funkcij po meri.
Ustvarite CosmosDB račun
Na domači strani Azure IoT poiščite „Azure Cosmos DB“. Kliknite „Create“.
Zažene se čarovnik, kot je prikazano na sliki 18. V vsakem koraku izpolnite vse potrebno.
Na koncu preglejte vse in začnite z ustvarjanjem računa. Račun bo ustvarjen po nekaj minutah.
Nato ustvarite zbirko znotraj podatkovne baze.
Ustvarite končno točko usmerjanja CosmosDB
Odprite vir IoT vozlišča (IoT Hub resource). V kategoriji „Hub settings“ na levi plošči kliknite „Message routing“.
Kliknite „Custom endpoints“ in kliknite „Add“. Na strani Dodaj pot. Izberite vrsto končne točke „Cosmos DB“. Vnesite ime končne točke in Cosmos DB račun.
Ustvarjanje lokalnega gostitelja za spletno mesto
Če želite do podatkov dostopati na uporabniku prijaznejši način, lahko spletno mesto, ki smo ga napisali za ta senzor, prenesete z našega repozitorija GitHub spodaj. Za zagon spletnega mesta boste morali opraviti nekaj korakov:
Namestite program Python 3.9,
v mapi projekta zaženite naslednji ukaz: pip install -r requirements.txt.
odprite datoteko cosmosdb.py in dodajte končno točko, ime zbirke podatkov in ime zbirke,
zaženite server.py,
odprite azure_client.html.
Za zdaj je spletna stran prazna, ker noben od senzorjev ne pošilja podatkov, ko boste z vsem končali in bodo senzorji in komunikacijske enote delovali, se bodo podatki začeli prikazovati na spletni strani. opomba: Spletna stran deluje le, ko se izvaja server.py.
Opomba 2: To spletno mesto bi lahko gostovalo na spletu, vendar smo se odločili za lokalnega gostitelja, ker je šlo za preizkus koncepta in se nam ni zdelo vredno plačevati za domeno in gostitelja.
Program komunikacijske enote
Komunikacijska enota je odgovorna za sprejemanje podatkov iz senzorske enote in njihovo pošiljanje v oblak. Za takšno zasnovo smo se odločili zato, da je senzorje lažje nadgrajevati, ne da bi bilo treba spreminjati ali prilagajati način delovanja komunikacije s strežnikom. Za nastavitev tega dela morate opraviti naslednje korake.
Namestite knjižnice.
Konfigurirajte nastavitve.
Namestitev knjižnic:
V Arduino IDE odprite upravitelja knjižnic.
Poiščite Microsoftovo knjižnico Azure SDK for C in kliknite Namesti.
Odprite upravitelja plošč v Arduino IDE.
Namestite ali spremenite esp32 podjetja Espressif Systems na različico 2.0.17 (v našem testu novejše različice upravitelja plošč ni bilo mogoče prevesti), gluej sliko 28.
Namestitve
Če želite uporabiti Azure SDK knjižnico za C za povezavo s središčem Azure IoT Hub z odprtim orodjem Arduino IDE, lahko primer najdete na naslovu »File/examples/Azure SDK for C/Azure_IoT_Hub_ESP32«. Za delovanje je treba opraviti več nastavitev.
Odprite iot_configs.h.
Nastavite WiFi ssid na IOT_CONFIG_WIFI_SSID.
Nastavite geslo WiFi na IOT_CONFIG_WIFI_PASSWORD.
Ime vozlišča Azure IoT Hub nastavite na IOT_CONFIG_IOTHUB_FQDN.
ID naprave vozlišča IoT Hub nastavite na IOT_CONFIG_DEVICE_ID.
Primarni ključ naprave nastavite na IOT_CONFIG_DEVICE_KEY.
// Copyright (c) Microsoft Corporation. All rights reserved.
// SPDX-License-Identifier: MIT
// Wifi
define IOT_CONFIG_WIFI_SSID „Your SSID“
define IOT_CONFIG_WIFI_PASSWORD „Your Password“
// Azure IoT
define IOT_CONFIG_IOTHUB_FQDN „[Your Azure
IoT Host Name].azure-devices.net“
define IOT_CONFIG_DEVICE_ID „Device ID“
define IOT_CONFIG_DEVICE_KEY „Device Key“
// Publish 1 message every 2 seconds
define TELEMETRY_FREQUENCY_MILLISECS 2000
//—————————————-
Dodatni koraki
Pri uporabi kode iz Github Repositorija na dnu te strani je treba opraviti še nekaj dodatnih korakov, preden lahko naložite kodo.
Naredite zgoraj omenjeno spremembo v datoteki, ki se nahaja na naslovu Communication Unit\iaqazure\src\azure\iot_configs.h.
Za vsako napravo morate nastaviti edinstveno iothub fqnd, id naprave in ključ naprave.
V datoteki Communication Unit\iaqazure\iaqazure.ino morate za vsako komunikacijsko enoto spremeniti PART_ID.
Kopirajte mapo Uofc_Iaq_Library, ki se nahaja na naslovu Communication Unit\iaqazure\lib, v mapo Arduino libraries.
V iaqazure.ino je PART_IOT opredeljen kot 1 in da ima vsaka enota edinstven PART_ID.
Datoteko iaqazure.ino naložite v komunikacijsko enoto.
V 2. delu tega članka boste videli, kako napisati programe za senzorje. Nadalje bomo prikazali, kako vse to krmiliti iz pametnega telefona preko Bluetooth povezave. Program bomo napisali z MIT App Inventor okoljem.
Povzeto po:
https://www.hackster.io/Diogo_Goto/indoor-air-quality-sensors-iaq-27ae14
https://hackster.io