Kazalo:

Senzor natrijevega prahu v sistemu Android: 6 korakov
Senzor natrijevega prahu v sistemu Android: 6 korakov

Video: Senzor natrijevega prahu v sistemu Android: 6 korakov

Video: Senzor natrijevega prahu v sistemu Android: 6 korakov
Video: Вентиляция в хрущевке. Как сделать? Переделка хрущевки от А до Я. #31 2024, Julij
Anonim
Senzor natrijevega prahu v sistemu Android
Senzor natrijevega prahu v sistemu Android

Pred letom dni je imela moja prijateljica vikend delavnico o spremljanju okolja. Cilj delavnice je bil izdelati senzor za prah, povezan z malinovo pi ploščo, da bi na nek strežnik dal merilne podatke, ki so zagotavljali pogosto posodobljene zemljevide koncentracije prahu. Moj prijatelj je vprašal, ali obstaja način, kako podatke senzorja dobiti neposredno na svoj pametni telefon za spremljanje in beleženje. Tako sem po internetu poiskal podatkovni list in videl, da ima senzor preprost vmesnik UART s protokolom 9600Baud 8N1. Toda kako povezati UART s pametnim telefonom? No, to je enostavno. Pravkar sem moral uporabiti enega od tistih vseprisotnih majhnih modulov Bluetooth, ki zagotavljajo emuliran primer na androidu. Zdaj pa poglejte, kako mi je to uspelo.

1. korak: Kaj potrebujete

Kaj rabiš
Kaj rabiš
Kaj rabiš
Kaj rabiš

Potrebujete naslednje dele

  • Parni konektor JST XH 7-pinski za vmesnik Sodial z žicami. Jaz sem svojega kupil na Ebayu.
  • Modul Bluetooth HC05 ali 06, združljiv s priključkom UART
  • Serijski pretvornik USB z vmesnikom na ravni TTL. S tem uporabimo modul BT edinstveno ime
  • Natrijev senzor za prah SDS011. Jaz sem svojega dobil z Ebaya
  • kos veroboarda
  • Priključek USB-B
  • žica
  • Kos lesa, na katerega lahko pritrdite vse

Potem boste potrebovali nekaj preprostih orodij:

  • Žaga za rezanje lesa
  • pinceto
  • spajkalnik in spajkanje
  • rezalnik žice
  • Pištola za vroče lepilo
  • Kos 8 mm silikonskega tulca (ni na sliki)

Podatkovni list Sodial SDS011 lahko prenesete tukaj Sodialni SDS011 podatkovni list

2. korak: Priprava modula Bluetooth

Priprava modula Bluetooth
Priprava modula Bluetooth
Priprava modula Bluetooth
Priprava modula Bluetooth
Priprava modula Bluetooth
Priprava modula Bluetooth
Priprava modula Bluetooth
Priprava modula Bluetooth

Modul BT ima UART vmesnik na ravni TTL. Lahko ga znova konfigurirate z ukazi "AT", kot smo to počeli v internetnih modemih v starih časih. Če ga želite povezati s terminalskim programom v napravi, morate UART prilagoditi računalniku. Uporabil sem pretvornik USB-RS232, ki sem ga kupil pri Amazonu. Uporabil sem konektor za BT-modul in 3, 3V napajanje in GND preusmeril iz pretvornika v BT-modul. Nato sem v križanju povezal ustrezne linije TxD in RxD. TxD iz pretvornika USB v RxD iz modula BT in obratno.

Imam stroj za Linux in uporabljam cutecom. Po priključitvi pretvornika USB je bil primerjal »ttyUSB0«. Imena komport najdete v imeniku "/dev" na vašem računalniku s sistemom Linux. Za uporabnike operacijskega sistema Windows priporočam "hterm". Je enostaven za upravljanje. Vnesite "AT" in kot odgovor bi morali dobiti "AT". Nato vnesite "AT+NameSensor", da modul BT poimenujete "Sensor"

3. korak: Montaža delov

Montaža delov
Montaža delov
Montaža delov
Montaža delov
Montaža delov
Montaža delov
Montaža delov
Montaža delov

Odrežite kos lesa v velikosti, ki je primerna za prevzem vseh delov. Povežite vse signale, kot je prikazano na shemi. Za zaščito je dobro, da okoli žic postavite silikonski tulec. Spajite vtič USB-B na ploščo. Uporablja se samo za napajanje. Vse dele pritrdite z vijaki na leseno podlago. Na koncu vroče lepite kable, da jih pritrdite na les.

4. korak: Seznanjanje

Seznanjanje
Seznanjanje
Seznanjanje
Seznanjanje

Aplikacijo senzorja vklopite tako, da priključite napajalnik USB. Rdeča LED na modulu BT bo začela utripati. Ne poskušajte ga povezati s pametnim telefonom Android. Vnesti morate pin kodo. To je "1234". Po vnosu kode mora biti vaš pametni telefon seznanjen z modulom BT.

5. korak: programska oprema

Rada pišem aplikacije za Android na sami ciljni platformi. rešuje vas pred vsemi stvarmi emulacije, za katere morate skrbeti, če delate z Android Studiom. Na samem Androidu sem odkril tri ustrezna razvojna orodja

  • Mintoris Basic. Osnovni tolmač z bogatim naborom ukazov, s katerimi se lahko ukvarjate s skoraj vsem na androidu. Ustvarite lahko bližnjice za svoje aplikacije. Mintoris basic ne vsebuje prevajalnika. Torej morate imeti nameščen Mintoris na vsaki napravi, ki jo uporabljate. Plačati morate le enkrat (približno 7 €)
  • Osnovno! Izjemno dober tolmač in prevajalnik Basic (dodatek za nekaj €). Skoraj vse poveže v androidu in lahko sestavite prave aplikacije za njihovo distribucijo, ne da bi imeli Basic! na ciljni napravi. Žal Osnovno! nima odličnih funkcij diagramov Mintorisa
  • AIDE je polprofesionalni IDE za razvoj androida v javi na androidu. Z AIDE imate največjo prilagodljivost, vendar se morate naučiti jave. AIDE ima letne stroške približno 50 €

Izbral sem Mintoris. V tem razdelku vam ne bom dal vadnice programiranja v Mintorisu, ampak kratek opis funkcijskih blokov

V naslednjem delu so za dve podatkovni liniji senzorjev in ustrezne časovne žige razglašeni tri matrike. Podatki o časovnem žigu se uporabljajo za označevanje osi x diagrama. Sodial oddaja dva podatkovna toka, od katerih je vsak določen za posebno velikost delcev. Dva niza podatkov o prahu sprejmeta te vrednosti.

Delno WakeLock

TextColor 100, 75, 10

TextColorA 50, 50, 50

TextAlign 0

Velikost besedila 24

CLS

Pojavno okno "Merilnik senzorja prahu (c) ARJ 2017"

Global dustData (), dustDataF (), timeStamp () Globalni indeks, izbira, maxData, fileName $

Zatemni časovni žig (59)

Zatemnjen prah Podatki (59)

Zatemnjen prah DataF (59)

Dim Menu $ (4) = "največ 100 naborov podatkov", "največ 1000 naborov podatkov", "največ 5000 naborov podatkov", "največ 10000 naborov podatkov", "Izhod"

'Začetek nizov

Za i = 0 do 59

dustData (i) = 0

dustDataF (i) = 0

časovni žig (i) = i

Naprej i

Nato je konfiguriran meni s seznamom. To daje uporabniku možnost izbire največje velikosti podatkov za zbiranje. To je samo varnostno stikalo, ki preprečuje, da bi pametni telefon sesal neskončne podatke. Funkcije BTgetPaired $ () vračajo seznam vseh povezanih naprav v napravi Android, njihovih imen in BT-naslova.

List Menu $ (), izbira

'Če želite shraniti podatke, izberite največjo količino

runLevel = 1

Izberite izbiro

Primer 0 maxData = 100

Primer 1 maxDate = 1000

Primer 2 maxData = 5000

Primer 3 maxData = 10000

Primer 4 maxData = 0

Konec Izberite

'' Priključite senzor

dim par $ (0)

par $ () = BTGetPaired $ ()

Če je par $ (0) = "nič", potem

Natisni "Ni mogoče najti nobene seznanjene naprave. Ali je BT vklopljen?" Natisni "Program zaključen"

Konec

Endif

Seznam par $ (), naprava $

name $ = ItemExtract $ (naprava $, 0)

naslov $ = ItemExtract $ (naprava $, 1)

BTConnect 1, naslov $

'Počakajte na povezavo

Napredek VKLOPLJEN

Natisnite "Poskušam se povezati"; naslov $

Za i = 1 do 20

Napredek i/2

Če je BTGetstate (1) = 4, potem zapustite za čakanje 1000

Naprej i

Napredek IZKLOPLJEN

'Ko je uspelo, se povežite z napravo BT

Če je BTGetState (1) = 4 Nato natisnite »Povezano« Drugače Natisnite »Ni mogoče vzpostaviti povezave z«; ime $

Natisni "Program zaključen"

Konec

Endif

Naslednji blok prikazuje zahteve po podatkih. Za vsako podatkovno sejo se datoteka samodejno odpre in poimenuje po času in datumu. Nato zanka bere podatke senzorja. Podatki so pakirani v več bajtov. Niz bajtov sta označena z dvema znakoma ASCII 170 in 171. Naslednji podatki so reorganizirani in napolnjeni v matrike prahu.

Grafika vklopljena

'Za pisanje odprite podatkovno datoteko

fileName $ = FormatTime $ (t, "yyyy-MM-dd-kk-mm-ss") + ".dat"

Odprite 1, fileName $, "w+" Natisnite "Odprto datoteko podatkov"; fileName $ Writeln 1, FormatTime $ (Time (), "yy-MM-dd")

Napišite 1, "Časovni prah2,5 Dust10"

„Polje napolnite z izmerjenimi podatki

data $ = "" paket $ = ""

indeks = 0

Ali Med maxData> 0

BTRead 1, paket $ 10

podatki $ = podatki $+paket $

Če je Len (podatki $)> = 10 Potem

Če je (ASCII (Levo $ (podatki $, 1)) = 170) & (ASCII (Desno $ (podatki $, 1)) = 171) Potem

dustDataF (indeks) = ASCII (sredina $ (podatki $, 2, 1))

dustDataF (indeks) = (dustDataF (indeks)+256*ASCII (sredina $ (podatki $, 3, 1)))/10

dustData (indeks) = ASCII (sredina $ (podatki $, 4, 1))

dustData (indeks) = (dustData (indeks)+256*ASCII (sredina $ (podatki $, 5, 1)))/10

Writeln 1, FormatTime $ (Time (), "kk: mm: ss") + "" + Str $ (dustDataF (indeks)) + "" + Str $ (dustData (indeks))

podatki $ = ""

maxData = maxData-1

indeks = indeks+1

Če je indeks> 59, potem je indeks = 0

dustData (indeks) = 0

dustDataF (indeks) = 0

Endif

Endif

DrawGraph ()

Počakaj 100

Zanka

Zapri 1

Grafika izklopljena

CLS Natisni "Program zaključen"

Konec

Zadnji del je podprogram, ki se pokliče po vsakem sprejemu podatkov. Počisti zaslon, nariše diagram z dejanskimi podatki, shranjenimi v matrikah prahu in časovnih žigov.

'Narišite koordinate, oznake, kljukice in tudi krivulje podatkov

Sub DrawGraph ()

'V grafičnem načinu se zaslon počisti na trenutno barvo

Barva 0, 0, 0

CLS

Barva 0, 0, 100

'Nastavite barvo grafike za risanje linij mreže

TextColor 100, 100, 100, 50

'TextColor je barva glavnega naslova mreže

TextColorA 100, 100, 100

'TextColorA se uporablja za naslove osi in opombe v mreži.

'Nastavite velikost besedila naslova osi

Glavni naslov mreže je 2x te velikosti

Velikost besedila 20

FixDecimal 0

'Nastavljeno za prikaz dveh decimalk

PadDigits 2

'Nariši mrežo za graf' Nastavi obseg in naslov X & Y

Os AxisX 0, 59, "Čas/s"

Os 0, 10000, "ug/m3"

Mreža 3, "Koncentracija prahu"

'Nariši grafe prahu

Barva 100, 0, 0

GraphXY timeStamp (), dustDataF ()

Barva 0, 100, 0

GraphXY timeStamp (), dustData ()

TextColor 100, 0, 0

DrawText "PM2.5", 30, Int (ScreenY ()-60), 90, 1

TextColor 0, 100, 0

DrawText "PM10", 30, Int (ScreenY ()-150), 90, 1

TextColor 100, 100, 100, 50

Vrnitev

Prenesite izvorno kodo tukaj

6. korak: Preizkusite

Image
Image
Test
Test
Test
Test
Test
Test

Vklopite senzor in zaženite aplikacijo. S seznama seznanjenih naprav izberite eno z imenom "Senzor". Po priključitvi senzorja bo zaslon začel prikazovati podatke. Hkrati je dodeljena podatkovna datoteka. Ko končate modo, lahko za prikaz podatkov uporabite GnuPlot. Uporabite datoteko "Test.gp" v GnuPlotu, da konfigurirate GnuPlot za prikaz podatkovne datoteke z imenom "Test.dat". Lahko ga najdete tudi tukaj

Za več podrobnosti in testiranje si oglejte video. Veliko zabave in več idej!

Priporočena: