Inhoudsopgave:

AirPi - Luchtkwaliteitssensor - Ajarnpa
AirPi - Luchtkwaliteitssensor - Ajarnpa

Video: AirPi - Luchtkwaliteitssensor - Ajarnpa

Video: AirPi - Luchtkwaliteitssensor - Ajarnpa
Video: EZ-WifiBroadcast , AirPi 1-я часть 2024, November
Anonim
AirPi - Luchtkwaliteitssensor
AirPi - Luchtkwaliteitssensor

Heb je je ooit afgevraagd waarom je hoofdpijn krijgt? En als dit komt door een slechte luchtkwaliteit? Met dit apparaat kun je controleren of dit het geval is. Dit apparaat meet de CO2-waarde, TVOC-waarde, temperatuur en luchtvochtigheid. Je ziet de luchtkwaliteit live op het LCD-display en ziet een duidelijke indicatie als het gevaarlijk wordt. Zo kunt u uw ramen op tijd openen.

Als u het IP-adres invult - dat wordt weergegeven bij het opstarten van het apparaat in uw browser - wordt de website geopend. Je ziet veel informatie over het binnenmilieu, samen met grafieken van de afgelopen minuten/uren. Er is ook een live-indicatie en wat informatie en tips op het dashboard.

Dit project is gemaakt door een studente aan Howest Kortrijk, NMCT (Nieuwe Media en Communicatie Technologie).

Stap 1: Materialen

Materialen
Materialen

Dit is alles wat ik heb gekocht om dit project te maken. Dit is een relatief goedkoop project, afhankelijk van de kosten van de 3D-print. Als je het op school kunt printen, kan dit erg goedkoop zijn. Anders hangt het af van waar je het afdrukt en het materiaal waarin je het afdrukt. Je zult merken dat ik veel in bulk heb gekocht, simpelweg omdat het moeilijk is om individuele weerstanden of leds te vinden en dit maakt het nog goedkoper. Als je tijd hebt, kun je de meeste artikelen bestellen op aliexpress.com, de levering kan even duren, maar op deze manier kun je je uitgaven beperken.

Zonder de print is het geld dat ik aan dit project heb uitgegeven €81,80.

Dit zijn de materialen die je nodig hebt:

Stroomkring:

  • Raspberry Pi 3
  • SD-kaart 8GB (minimaal)
  • CCS811 luchtkwaliteitssensor
  • DHT22 temperatuur- en vochtigheidssensor
  • Potentiometer (contrast LCD)
  • LCD 16x2
  • Overbruggingsdraden van vrouw naar vrouw
  • Groene en rode LED
  • Weerstanden (2x470ohm en 1 4700ohm)

Geval:

  • 3D-print
  • Schroeven
  • 2 componenten lijm (of andere hete lijm)
  • draadsnijgereedschap

Alleen als je een PCB gebruikt:

  • Soldeerbout
  • Flux (maakt het makkelijker)
  • Blik
  • Experimenteerprint 2x4cm

Stap 2: Aansluitingen

Verbindingen
Verbindingen

Sluit de draden aan zoals hierboven. Je kunt een elektrisch circuit zien in het fritzing-bestand. Het is geen erg ingewikkeld circuit, maar als je het zo klein mogelijk wilt maken, wil je zeker een experiment-printplaat hebben. De bedrading zou hetzelfde zijn, behalve dat de GND en Vin op de printplaat worden aangesloten. De sensoren worden verbonden door vrouwelijke jumperdraden of mannetjes met solderen. Vergeet niet de weerstand op de DHT22-sensor te solderen.

Ik raad ook aan om korte kabels te gebruiken, 10 cm zou moeten volstaan. Anders zou de doos nog meer met kabel worden gevuld. Je hebt niet erg lange exemplaren nodig omdat het formaat van de print zo klein mogelijk is gemaakt.

Stap 3: 3D-printen

3D-print
3D-print
3D-print
3D-print

De eerste gedachte die in me opkwam toen ik aan een zaak dacht, was een 3D-print. Omdat mijn vader verschillende andere items had uitgeprint en hij ze zelf heeft ontworpen. Samen hebben we dit ontwerp gemaakt en over elk aspect nagedacht. Het moet goed genoeg zijn afgekoeld, alles kan op zijn plaats worden geschroefd en zo niet, dan kan het op zijn plaats worden geschoven.

We hebben zelfs elk onderdeel getekend om te kijken of alles er in past. Het bestand is voor iedereen beschikbaar en we horen graag wat feedback. We waren erg blij met het resultaat.

Stap 4: Coderen

De code voor dit project is te vinden op Github. Als je andere pinnen hebt gebruikt (bijvoorbeeld een andere GPIO-pin voor de LED's, moet je deze variabelen aanpassen. Er zullen twee python-scripts draaien, web.py voor de website en sensor.py om de sensoren te lezen en te updaten de database. We importeren de klasse LCD van lcd.py.

Met een geconfigureerde Raspberry pi kun je aan de slag. Allereerst moet u alle pakketten bijwerken en upgraden:

sudo apt-get update && sudo apt-get upgrade

Daarna moet u de volgende pakketten installeren:

sudo apt install -y python3-venv python3-pip python3-mysqldb mariadb-server uwsgi nginx uwsgi-plugin-python3

Maak nu een virtuele omgeving:

me@my-rpi:~ $ python3 -m pip install --upgrade pip setuptools wiel virtualenv

me@my-rpi:~ $ mkdir project1 && cd project1 me@my-rpi:~/project1 $ python3 -m venv --system-site-packages env me@my-rpi:~/project1 $ source env/bin/ activeer (env)me@my-rpi:~/project1 $ python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPuth Flask-MySQL mysql-connector-python passlib

Aangezien dit is gebeurd, kunt u de code van mijn GitHub naar uw virtuele omgeving klonen. Dit kan op meerdere manieren.

In de directory conf staan vier bestanden die je eventueel moet aanpassen. Je zult zeker de gebruiker en homedirectory in elk bestand moeten veranderen. De uWSGI ini zou in orde moeten zijn zolang je mijn code niet hebt gewijzigd, zorg ervoor dat je de gebruiker en virtualenv indien nodig wijzigt.

Omdat de CCS811-sensor opzettelijk is gebruikt voor de arduino, kan deze niet communiceren via de i2c-bus met de snelheid van de raspberry pi. Je zult de snelheid moeten verlagen tot een baudrate van 10000 (ik gebruikte 9600) in het configuratiebestand.

Je zult ook de bibliotheek van de adafruit-sensor moeten krijgen. Ik zou dit hier kunnen uitleggen, maar er is een perfecte adafruit-gids die dit allemaal heel goed uitlegt.

Omdat we willen dat de python-scripts automatisch worden uitgevoerd wanneer de Raspberry is aangesloten, moet je de services gebruiken. Ze zouden in orde moeten zijn als je mijn code hield. Het enige dat u hoeft te doen om ze te laten werken, is ze in te schakelen. Voordat je dat doet, is er nog een laatste ding.

Omdat we een nginx-webserver gebruiken, moeten we de standaard deactiveren en vervangen door onze eigen configuratie. Om dit te doen moeten deze stappen worden gevolgd:

  • kopieer conf/nginx naar *sites-available*
  • Verwijder de link naar de default-config
  • Voeg een link toe aan de nieuwe configuratie
  • Start nginx opnieuw om de wijzigingen op te slaan

mij@mijn-rpi:~/project1 $ sudo cp conf/project1-*.service /etc/systemd/system/

me@my-rpi:~/project1 $ sudo systemctl daemon-reload me@my-rpi:~/project1 $ sudo systemctl start project1-* me@my-rpi:~/project1 $ sudo systemctl status project1-*

Nginx en mysql moeten te allen tijde actief zijn. Ze starten samen met de Raspberry Pi. Het webscript en sensorscript nog niet.

Om dit te doen, moet je deze twee services nog steeds inschakelen met deze opdrachten:

sudo systemctl activeer project1-flask.service

sudo systemctl inschakelen project1-sensor.service

Stap 5: Database

Database
Database

Mijn database bestaat uit drie tabellen. Gebruiker heeft geen relatie met andere tabellen. Dit wordt alleen gebruikt om in te loggen en toegang te verlenen tot de website. Bij het aanzetten van het apparaat worden elke 50 seconden de CO2-waarde en TVOC-waarde naar de database geschreven. De temperatuur en luchtvochtigheid elke 5 minuten. Zo krijgen we een duidelijk overzicht van het verleden.

Het SQL-bestand is hier te vinden, maar om de database op de raspberry pi te krijgen, moet je deze stappen volgen:

Na de installatie van de pakketten in de vorige stap, zou mariadb/mysql onmiddellijk moeten draaien. U kunt dit controleren met deze regel:

mij@mijn-rpi:~ $ sudo systemctl status mysql

Om de database en gebruikers te maken, kunt u eenvoudig de sql-scripts in de code van GitHub uitvoeren. Als je dit correct hebt gedaan, zou je je tabellen moeten zien met dit commando:

me@mijn-rpi:~ $ echo 'toon tabellen;' | mysql project1 -t -u project1-admin -p

Nu zijn we helemaal klaar, je kunt dit testen zonder de case om te controleren of alles werkt. Tenzij je verbonden bent met wifi, moet je het verbinden met een ethernetkabel en het handmatig uitvoeren.

Stap 6: Maak verbinding met wifi

Open het wpa-supplicant configuratiebestand in nano (maakt niet uit, zorg er wel voor dat je met de teksteditor kunt werken).

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Ga naar de onderkant van het bestand en voeg het volgende toe (vervang de ssid-naam en wachtwoordnaam door die van jou):

netwerk={

ssid="ssid-naam" psk="wachtwoord-naam" }

Om een gecodeerd wachtwoord aan te maken, kunt u wpa_passphrase gebruiken en deze eenvoudig kopiëren naar de wpa_supplicant.conf-psk om de zaken veiliger te maken.

wpa_passphrase "ssid-naam" "wachtwoordnaam"

Als je wilt dat het automatisch verbinding maakt met dit wifi-netwerk, en er zijn andere in het configuratiebestand, zorg er dan voor dat je de prioriteit naar een hoger niveau wijzigt door deze regel aan het netwerk toe te voegen in het configuratiebestand:

prioriteit=2

Vergeet niet de interface opnieuw te configureren met:

wpa_cli -i wlan0 opnieuw configureren

Nu ben je helemaal klaar en verbonden met een wifi-netwerk.

Stap 7: Alles samenbrengen

Alles bij elkaar zetten
Alles bij elkaar zetten
Alles bij elkaar zetten
Alles bij elkaar zetten
Alles bij elkaar zetten
Alles bij elkaar zetten

Omdat alles is aangesloten en gesoldeerd, kunnen we bij de behuizing komen. Deze is zo ontworpen dat je de koffer zonder losse draden kunt openen. Dit betekent dat alles aan het onderste deel is bevestigd. Het eerste wat je moet doen is een kleine aanpassing aan de framboos. Er zitten gaten in op elke hoek, maar deze zijn niet zo groot als ze zouden moeten zijn. De diameter zou voldoende moeten zijn om een schroef van 3 mm in te passen. We moesten de gaten polijsten zodat ze iets breder werden.

Het tweede dat u moet doen, is een schroefdraad in elk gat snijden. Dit klinkt misschien moeilijk, maar kan gemakkelijk worden gedaan met de juiste tools. Ik zou aanraden om dit bij een plaatselijke ijzerhandel te doen, vraag gewoon om een draadsnijgereedschap. Omdat mijn vader goudsmid is, had hij op zijn werk de tools om dit te doen. Ik zou een nieuw stl-bestand kunnen uploaden zodat dit later wordt afgedrukt, maar hiervoor is een zeer nauwkeurige printer nodig.

De derde stap is om de pi op het onderste gedeelte te schroeven. Je hebt 4 schroeven van 7 mm nodig met een diameter van 3 mm. Hierna kunt u het PCD-bord in de daarvoor bestemde plaats bovenaan het onderste gedeelte schuiven. De CCS811-sensor kan op de daarvoor bestemde plaats aan de linkerkant worden geschoven en de DHT11 kan op de rechterplaat worden bevestigd. Beide zijn geïsoleerd en voldoende geventileerd, maar achteraf merkten we dat het binnen nog steeds warm werd. Daarover later meer.

Dan moet je de LED's aan hun buis bevestigen. We hebben dit gedaan met 2 componenten lijm, maar je kunt het doen zoals je wilt. Zorg dat ze daar blijven plakken.

Nu kun je het LCD-scherm bevestigen, je hebt schroeven nodig met dezelfde diameter als de vorige, maar iets langer. De mijne waren 1 cm. Als de vier schroeven zijn ingedraaid, rest er nog maar één ding. Bevestig het bovenste deel. Het enige wat je nodig hebt zijn vier schroeven, met dezelfde diameter en deze zijn 2 cm. Nu zou alles op zijn plaats moeten zijn en kunt u het opstarten.

Stap 8: Start het op

Het opstartproces van dit project is heel eenvoudig:

  1. Bevestig de voedingskabel aan de linkerkant van de behuizing. Het is niet erg zichtbaar, maar je kunt door de ventilatieopeningen kijken. Als je het eenmaal hebt, is dit geen probleem meer.
  2. Geef het wat tijd om op te starten.
  3. Het IP-adres verschijnt gedurende tien seconden op het display. Het enige wat je hoeft te doen is ervoor te zorgen dat je verbonden bent met hetzelfde netwerk en het IP-adres in te voeren in de adresbalk van je browser.
  4. Je bent nu op de website. Je hebt nog geen account dus maak een account aan.
  5. Als je geregistreerd bent, log dan in.
  6. Gedaan! U kunt alle gegevens op de webpagina zien en het LCD-scherm toont de huidige luchtkwaliteit.

Omdat de warmte stijgt, hebben we de sensoren aan de onderkant van de behuizing geplaatst. Op deze manier zou de temperatuur geen grote invloed hebben op de geregistreerde waarden. Laat het apparaat dus voor optimale metingen rechtop staan of hang het eenvoudig aan de muur.