Sadržaj:

Senzor natrijeve prašine na Androidu: 6 koraka
Senzor natrijeve prašine na Androidu: 6 koraka

Video: Senzor natrijeve prašine na Androidu: 6 koraka

Video: Senzor natrijeve prašine na Androidu: 6 koraka
Video: 💦Blackview BV9200 ЧЕСТНЫЙ ОБЗОР ПРОТИВОУДАРНОГО 2024, Juli
Anonim
Senzor natrijeve prašine na Androidu
Senzor natrijeve prašine na Androidu

Prije godinu dana moj prijatelj je imao vikend radionicu o monitoringu okoliša. Cilj radionice je bio izgraditi senzor za prašinu spojen na malinu pi ploču za postavljanje mjernih podataka na neki server koji je pružao često ažurirane karte koncentracije prašine. Moj prijatelj je pitao postoji li način da se podaci senzora unesu direktno na njegov pametni telefon radi praćenja i evidentiranja. Pa sam iskopao internet za podatkovnu tablicu i vidio da senzor ima jednostavno UART sučelje sa 9600Baud 8N1 protokolom. Ali kako spojiti UART na pametni telefon? Pa, to je lako. Morao sam samo koristiti jedan od onih sveprisutnih malih Bluetooth modula koji pružaju oponašanje kompjutera na androidu. Sada pogledajte kako sam uspio.

Korak 1: Šta vam treba

Sta ti treba
Sta ti treba
Sta ti treba
Sta ti treba

Potrebni su vam sledeći delovi

  • Konektor za spajanje JST XH 7-pinski za Sodial interfejs sa žicama. Ja sam svoj kupio na Ebayu.
  • Bluetooth modul HC05 ili 06 kompatibilan sa UART konektorom
  • USB serijski pretvarač sa interfejsom na nivou TTL. Koristimo ovo kako bismo BT-modulu dali jedinstveno ime
  • Natrijev SDS011 senzor za prašinu. Ja sam svoje nabavio sa Ebaya
  • komad veroboarda
  • USB-B konektor
  • žica
  • Komad drveta na koji se može sve montirati

Tada će vam trebati nekoliko jednostavnih alata:

  • Motorna pila za rezanje drva
  • pinceta
  • lemilica i lemljenje
  • rezač žice
  • Pištolj za vruće ljepilo
  • Komad silikonske čaure od 8 mm (nije na slici)

Tehnički list Sodial SDS011 možete preuzeti ovdje Sodial SDS011 podatkovni list

Korak 2: Priprema Bluetooth modula

Priprema Bluetooth modula
Priprema Bluetooth modula
Priprema Bluetooth modula
Priprema Bluetooth modula
Priprema Bluetooth modula
Priprema Bluetooth modula
Priprema Bluetooth modula
Priprema Bluetooth modula

BT-modul ima UART interfejs sa TTL nivoom. Može se ponovo konfigurirati pomoću "AT" naredbi kao što smo to radili s internetskim modemima u davna vremena. Da biste ga povezali s terminalnim programom na računaru, morate prilagoditi UART računaru. Koristio sam USB-RS232 pretvarač koji sam kupio u Amazonu. Primijenio sam konektor za BT-modul i preusmjerio 3, 3V napajanje i GND iz pretvarača u BT-modul. Zatim sam povezao odgovarajuće linije TxD i RxD u skretnici. TxD sa USB-pretvarača na RxD sa BT-modula i obrnuto.

Imam linux mašinu i koristio sam cutecom. Nakon povezivanja USB-pretvarača, usporedba je bila "ttyUSB0". Nazive za sortiranje možete pronaći u direktoriju "/dev" na vašoj Linux mašini. Korisnicima operativnog sistema Windows preporučio bih "hterm". Lako je rukovati. Upišite "AT" i trebali biste dobiti "AT" kao odgovor. Zatim upišite "AT+NameSensor" da biste BT-modulu dali ime "Sensor"

Korak 3: Montiranje dijelova

Montaža delova
Montaža delova
Montaža delova
Montaža delova
Montaža delova
Montaža delova
Montaža delova
Montaža delova

Izrežite komad drveta veličine prikladne za uzimanje svih dijelova. Povežite sve signale kako je prikazano na shemi. Bilo bi dobro staviti silikonski omotač oko žica kako biste ih zaštitili. Lemite USB-B utikač na ploču. Koristi se samo za napajanje. Pričvrstite sve dijelove vijcima na drvenu podlogu. Na kraju vruće zalijepite kablove kako biste ih pričvrstili na drvo.

Korak 4: Uparivanje

Uparivanje
Uparivanje
Uparivanje
Uparivanje

Uključite aplikaciju senzora uključivanjem USB izvora napajanja. Crvena LED dioda na BT-modulu će početi treptati. Ne pokušavajte ga upariti sa svojim Android pametnim telefonom. Morate unijeti pin kod. Ovo je "1234". Nakon unosa koda, vaš pametni telefon treba upariti s BT-modulom.

Korak 5: Softver

Volim pisati Android aplikacije na samoj ciljnoj platformi. štedi vas od svih stvari o emulaciji o kojima morate brinuti ako radite s Android Studiom. Otkrio sam tri prikladna razvojna alata na samom Androidu

  • Mintoris Basic. Osnovni tumač s bogatim skupom naredbi za petljanje po gotovo svemu na androidu. Možete stvoriti prečace za svoje aplikacije. Mintoris basic ne sadrži kompajler. Dakle, morate instalirati Mintoris na svaki uređaj koji koristite. Ali morate to platiti samo jednom (oko 7 €)
  • Osnovno! Izuzetno dobar osnovni tumač i kompajler (dodatak za nekih €). Gotovo se zakači na sve u androidu i možete sastaviti prave aplikacije za njihovu distribuciju bez osnovnog! na ciljnom uređaju. Nažalost osnovno! nedostaju odlične funkcije grafikona dijagrama Mintorisa
  • AIDE je poluprofesionalni IDE za razvoj androida u javi na androidu. S AIDE -om imate najveću fleksibilnost, ali morate naučiti java. AIDE ima godišnje troškove od oko 50 €

Ja sam izabrao Mintoris. U ovom odjeljku neću vam dati vodič o programiranju u Mintorisu, već kratak opis funkcionalnih blokova

U sljedećem dijelu tri niza su deklarirana za dvije linije podataka senzora i odgovarajuće vremenske oznake. Podaci vremenske oznake koriste se za označavanje osi x dijagrama. Sodial emituje dva toka podataka od kojih je svaki specificiran za posebnu veličinu čestica. Dva matrična polja podataka uzimaju ove vrijednosti.

WakeLock Partial

TextColor 100, 75, 10

TextColorA 50, 50, 50

TextAlign 0

TextSize 24

CLS

Skočni prozor "Mjerač senzora prašine (c) ARJ 2017"

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

Zatamnjena vremenska oznaka (59)

Prigušena prašinaPodaci (59)

Prigušena prašinaDataF (59)

Dim Menu $ (4) = "max. 100 skupova podataka", "max. 1000 skupova podataka", "max. 5000 skupova podataka", "max. 10000 skupova podataka", "Izlaz"

'Pokreni nizove

Za i = 0 do 59

dustData (i) = 0

dustDataF (i) = 0

vremenska oznaka (i) = i

Next i

Zatim je konfiguriran izbornik List. Ovo daje korisniku izbor da odabere maksimalnu veličinu podataka za prikupljanje. Ovo je samo sigurnosni prekidač koji sprječava pametni telefon da usisa beskonačne podatke. Funkcije BTgetPaired $ () vraćaju listu sa svim uparenim uređajima na android uređaju, njihova imena i BT adresu.

Lista izbornika $ (), izbor

'Odaberite maksimalni iznos ako želite pohraniti podatke

runLevel = 1

Odaberite izbor

Slučaj 0 maxData = 100

Slučaj 1 maxDate = 1000

Slučaj 2 maxData = 5000

Slučaj 3 maxData = 10000

Slučaj 4 maxData = 0

Kraj Odaberite

'' Povežite senzor

prigušen par $ (0)

par $ () = BTGetPaired $ ()

Ako je par $ (0) = "none" Tada

Ispis "Nije pronađen nijedan upareni uređaj. Je li BT uključen?" Odštampaj "Program je prekinut"

Kraj

Endif

List lista $ (), uređaj $

naziv $ = ItemExtract $ (uređaj $, 0)

adresa $ = ItemExtract $ (uređaj $, 1)

BTConnect 1, adresa $

'Sačekajte vezu

Napredak UKLJUČEN

Ispišite "Pokušavam se povezati s"; adresa $

Za i = 1 do 20

Napredak i/2

Ako je BTGetstate (1) = 4, onda izađite na čekanje 1000

Next i

Napredak ISKLJUČEN

'Nakon uspješnog povezivanja na BT uređaj

Ako je BTGetState (1) = 4, tada ispišite "Povezano". U suprotnom ispišite "Nije moguće povezati se s"; naziv $

Odštampaj "Program je prekinut"

Kraj

Endif

Sljedeći blok prikazuje potrebu za podacima. Za svaku sesiju podataka datoteka se automatski otvara i imenuje po vremenu i datumu. Zatim petlja čita podatke senzora. Podaci su upakovani u nekoliko bajtova. Skup bajtova identificiran je s dva ASCII znaka 170 i 171. Sljedeći podaci su reorganizirani i ispunjeni u polja prašine

Grafika uključena

'Otvorite datoteku podataka za pisanje

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

Otvorite 1, ime datoteke $, "w+" Ispiši "Otvorena datoteka podataka"; ime datoteke $ Writeln 1, FormatTime $ (Time (), "yy-MM-dd")

Napišite 1, "Vremenska prašina 2,5 Dust10"

'Napunite niz izmjerenim podacima

podaci $ = "" paket $ = ""

indeks = 0

Učiniti Dok maxData> 0

BTRead 1, paket $, 10

podaci $ = podaci $+paket $

Ako je Len (podatak $)> = 10 Tada

Ako je (ASCII (lijevo $ (podaci $, 1)) = 170) & (ASCII (desno $ (podaci $, 1)) = 171) Tada

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

dustDataF (indeks) = (prašinaDataF (indeks)+256*ASCII (sredina $ (podaci $, 3, 1)))/10

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

dustData (index) = (dustData (index)+256*ASCII (sredina $ (podaci $, 5, 1)))/10

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

podaci $ = ""

maxData = maxData-1

indeks = indeks+1

Ako je indeks> 59, tada je indeks = 0

dustData (indeks) = 0

dustDataF (indeks) = 0

Endif

Endif

DrawGraph ()

Čekaj 100

Petlja

Zatvori 1

Grafika isključena

CLS Ispis "Program je završen"

Kraj

Posljednji dio je potprogram koji se poziva nakon svakog prijema podataka. Očisti ekran, ponovo iscrtava dijagram sa stvarnim podacima pohranjenim u nizovima prašine i vremenske oznake.

'Nacrtajte koordinate, oznake, kvačice i krivulje podataka

Sub DrawGraph ()

'U grafičkom načinu rada ekran postaje jasniji u trenutnoj boji

Boja 0, 0, 0

CLS

Boja 0, 0, 100

'Postavite boju grafike koja će se koristiti za iscrtavanje linija mreže

TextColor 100, 100, 100, 50

'TextColor je boja glavnog naslova mreže

TextColorA 100, 100, 100

'TextColorA se koristi za naslove osi i napomene u mreži.

'Postavite veličinu teksta naslova osi

'Glavni naslov mreže je 2x ove veličine

TextSize 20

FixDecimal 0

'Postavljeno za prikaz 2 decimalna mjesta

PadDigits 2

'Nacrtajte mrežu za grafikon' Postavite raspon i naslov X & Y

Osa AxisX 0, 59, "Vrijeme/s"

Osovina 0, 10000, "ug/m3"

Mreža 3, "Koncentracija prašine"

'Nacrtajte grafikone prašine

Boja 100, 0, 0

GraphXY timeStamp (), dustDataF ()

Boja 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

Povratak

Izvorni kod preuzmite ovdje

Korak 6: Testirajte

Image
Image
Test
Test
Test
Test
Test
Test

Uključite senzor i pokrenite aplikaciju. S popisa uparenih uređaja odaberite onaj pod nazivom "Senzor". Nakon povezivanja senzora, zaslon će početi prikazivati podatke. Istovremeno se dodjeljuje datoteka podataka. Nakon završetka mode možete koristiti GnuPlot za prikaz podataka. Upotrijebite datoteku "Test.gp" u GnuPlotu da biste konfigurirali GnuPlot za prikaz datoteke s imenom "Test.dat". Možete ga pronaći i ovdje

Za više detalja i testiranje pogledajte video. Zabavite se i više ideja!

Preporučuje se: