Objavljeno:

Projekt BlueSensor

Z Arduinom se je seveda mogoče lotiti tudi kakšnih bolj naprednih projektov. Tokrat si bomo pogledali projekt izdelave senzorja za merjenje nekaterih okoljskih parametrov.

Projekt je še v teku, zato zgolj grob opis in njegov trenutni status. Cilj projekta je izdelava senzorske naprave, ki bi merila temperaturo, vlago in strupene oz. škodljive pline v okolju. Naprava ali več njih naj bi podatke preko Bluetooth povezave pošiljale na spletni strežnik, ki bo risal grafe trenutnih vrednosti.

Spletni strežnik bo v bistvu kar Wifi dostopna točka (Access Point), ki bo preko Bluetooth povezave zbirala podatke iz več senzorjev in jih preko spletnih tehnologij servirala odjemalcem (računalnikom, telefonom, tablicam), ki se bodo nanjo povezali preko Wifi povezave.

Strojna oprema, ki jo potrebujemo za izdelavo senzorske naprave je naslednja:

  • Arduino Nano (z USB kablom);
  • Bluetooth modul HC-05;
  • senzor za temperaturo in vlago DHT22 (AM2302);
  • MQ senzorji za zaznavo plinov, konkretno senzor za ogljikov monoksid (MQ-7) ter senzor za kvaliteto zraka (MQ-135, ki merijo NH3, NOx, alkohol, benzene, CO2, amoniak, sulfide in podobne hlapljive organske spojine);
  • vodoodporni temperaturni senzor DS18B20 (na kablu);
  • dva 4.7 k Ohm upora;
  • ohišje za 4x AAA baterije;
  • razne malenkosti kot npr. protoboard, Dupont kabli, letvice, konektorji, itd.

Približna cena materiala za posamezno senzorsko napravo (pri Kitajcih) je med 10 in 15 EUR.

BlueSensor: ena izmed zgodnejših različic senzorske naprave.

BlueSensor: ena izmed zgodnejših različic prototipa senzorske naprave.

Dodatno bomo potrebovali še:

  • RaspberryPi 3;
  • napajalnik za RaspberryPi;
  • ohišje za RaspberryPi.

Izdelava posamezne senzorske naprave

Najprej fizično sestavimo eno ali več senzorskih naprav temelječih na Arduinu. Napravo najprej sestavimo na tim. protoboardu (plošči za izdelavo prototipnih vezij). Postopek sestavljanja bomo podrobneje opisali v enem prihodnjih nadaljevanj. V načrtu je sicer tudi izdelava namenskega tiskanega vezja.

Nato sprogramiramo Bluetooth modul in sicer tako, da mu določimo ustrezno ime (SENSOR1, SENSOR2, itd.) ter nastavimo PIN. V naslednjem koraku na Arduino naložimo aplikacijo (strojno programsko opremo) za branje podatkov iz senzorjev in posredovanje teh podatkov preko Bluetooth ali USB povezave.

BlueSensor: zgodnejša različica strojne programske opreme za senzorsko napravo.

BlueSensor: zgodnejša različica strojne programske opreme za senzorsko napravo.

Če je naprava pravilno sestavljena se na napravo najprej povežemo z USB kablom in preverimo ali preko serijske konzole prejemamo podatke. Nato pa se na senzorsko napravo povežemo z Androidnim telefonom s pomočjo aplikacije Bluetooth Terminal HC-05. Če vse deluje, bi morali videti podatke iz senzorjev v tekstovni obliki.

Priprava spletnega strežnika in Wifi dostopne točke

Sledi priprava RaspberryPi dostopne točke in spletnega strežnika. Najprej na RaspberryPi namestimo operacijski sistem Raspbian Jessie, nato pa nanj namestimo ustrezne Python aplikacije za branje podatkov preko Bluetooth povezave in prikaz podatkov v realnem času preko spletne aplikacije (aplikacije so še v razvoju, bodo pa objavljene na spletu). Namestimo še Supervisor s katerim bomo upravljali aplikacijo za zajem podatkov in prikaz na spletu ter Bluetooth naprave uparimo z računalnikom.

BlueSensor: stanje RaspberryPi Wifi dostopne točke.

BlueSensor: stanje RaspberryPi Wifi dostopne točke.

Python aplikacije trenutno sestojijo iz več delov. Glavna je btserver.py, ki zažene spletni strežnik Tornado in pokliče aplikacijo za branje podatkov. Le-te sta dve – ena omogoča branje podatkov preko Bluetooth modula, druga pa preko USB kabla. Pri pisanju te aplikacije sodelujeta Gašper Žejn in Matjaž Rihtar.

Trenutno je aplikacija narejena tako, da jo zaženemo s parametrom, ki pove ID senzorja. Če je ta ID enak npr. 2, potem bo aplikacija poiskala Bluetooth napravo z imenom SENSOR2, hkrati pa bo odprla spletno storitev na vratih 8882, kjer se v realnem času prikazuje graf. V primeru, da je parameter 3, bo naprava poiskala SENSOR3 in podatke prikazovala na vratih 8883. Pristop sicer ni najbolj celovit, je pa enostaven in povsem zadovoljiv za naš namen.

BlueSensor: prikaz grafa v realnem času (prototip).

BlueSensor: prikaz grafa v realnem času (prototip).

V naslednjem koraku RaspberryPi spremenimo v Wifi dostopno točko, ki omogoča povezovanje preko WPA ali WPA2. Ta dostopna točka omogoča deljenje internetne povezave, in sicer preko omrežnega kabla. Za ta amen uporabimo aplikaciji hostapd ter isc-dhcp-server, potrebno pa je tudi nekaj “čaranja” s požarnim zidom iptables.

Trenutno stanje projekta in načrti za naprej

Projekt je trenutno v fazi, da vse zgoraj opisano v grobem že deluje. RaspberryPi Wifi dostopna točka že deluje in omogoča povezovanje odjemalcev preko brezžičnega omrežja preko protokolov WPA ali WPA2. Testno smo sestavili dve senzorski napravi, ki se uparita z RaspberryPi, na katerem za vsako izmed njiju teče spletna aplikacija za prikaz grafov v realnem času. Na spodnji sliki sta vidni obe senzorski napravi in RaspberryPi, na računalniku pa se prikazuje graf za eno izmed teh senzorskih naprav. Ker smo v napravo pred tem spustili plin iz vžigalnika, se vidi kako je vrednost koncentracije plina na grafu praktično takoj močno poskočila.

BlueSensor: dva senzorska sistema in RaspberryPi.

BlueSensor: dva senzorska sistema in RaspberryPi.

V naslednjih korakih bo potrebno postoriti še nekaj malenkosti.

  • Do konca je potrebno razviti načrt tiskanega vezja in na to tiskano vezje prispajkati posamezne elemente senzorske naprave. To bo narejeno tako, da bodo na tiskano vezje prispajkane letvice na katere se bo potem nataknilo posamezne elemente (Arduino, senzorje, Bluetooth modul), pa se bo nato samo nataknilo na vezje. Vodoodporne temperaturne senzorje bo mogoče priklopiti s pomočjo posebnih konektorjev. Napravo bo tako mogoče brez spajkanja hitro sestaviti ali razstaviti na osnovne dele.
  • Na RaspberryPi napravi bo potrebno postaviti lokalni DNS strežnik, da bo spletna storitev enostavneje dostopna. Pri povezovanju Androidnih naprav v določenih okoliščinah prihaja do nenavadnih težav (opisali jih bomo v enem prihodnjih prispevkov), te težave pa bo verjetno rešila in postavitev DNS strežnika na napravi.
  • Rešiti bo potrebno težave s samodejnim zaganjanjem spletne storitve ob zagonu RaspberryPi ali pa narediti spletni vmesnik za preprosto priklapljanje in odklapljanje posameznih senzorskih naprav iz sistema.
  • Polepšati bo potrebno grafe (prikaz legende, opisa osi, itd.).
  • Še največji zalogaj pa bo verjetno predstavljala umeritev senzorjev ter izračun koncentracije plinov (v ppm) iz trenutnega odčitka iz senzorja.
  • Na dolgi rok se bodo podatki morda shranjevali v bazo ali celo na SD kartico, ki jo bo mogoče vstaviti na samo senzorsko napravo.

Za konec pa še na kratko o tem, čemu je naprava pravzaprav namenjena. Napravo bo sicer mogoče uporabiti kot poceni sistem za nadzor kvalitete zraka v stanovanju ali hiši. Zaradi nizke cene izdelave, bi lahko posamezno senzorsko napravo namestili v vsako sobo. Naprava bi tako merila temperaturo in vlago v prostoru, kvaliteto zraka in prisotnost nevarnega ogljikovega monoksida, dodatni temperaturni senzorji na kablu pa se lahko povežejo na radiator ali merijo zunanjo temperaturo.

V resnici pa je naprava trenutno namenjena otrokom (osnovnošolcem), ki se bodo konec meseca udeležili poletne šole eksperimentalne kemije na Institutu Jožef Stefan. Cilj je izdelati 5 senzorskih naprav, ki jih bodo otroci uporabili za poskuse (uporabljeni bodo senzorji za različne pline, tudi za vodik, LPG, butan, itd.). Čisto na začetku pa bodo otroci napravo tudi sami sestavili (zato bodo uporabljene letvice) ter si ogledali kako se nanjo naloži strojna programska oprema, sledila pa bo njena praktična uporaba.

Vsaka skupina osnovnošolcev se bo namreč lahko s pomočjo računalnika, telefona ali tablice povezala na RaspberryPi dostopno točko ter v živo gledala graf meritev iz svoje senzorske naprave ob izvajanju kemijskih poskusov.

Tak je trenutni cilj, in če bo naročeni material pravočasno prispel, ga bomo gotovo tudi dosegli.

Kategorije: Odprta koda, Odprta strojna oprema, Splošno
Ključne besede: Arduino, BlueSensor, Raspberry Pi, senzorski sistemi, otroci