Satura rādītājs:

Nātrija putekļu sensors operētājsistēmā Android: 6 soļi
Nātrija putekļu sensors operētājsistēmā Android: 6 soļi

Video: Nātrija putekļu sensors operētājsistēmā Android: 6 soļi

Video: Nātrija putekļu sensors operētājsistēmā Android: 6 soļi
Video: Торий: энергетическое решение - THORIUM REMIX 2011 2024, Novembris
Anonim
Nātrija putekļu sensors operētājsistēmā Android
Nātrija putekļu sensors operētājsistēmā Android

Pirms gada manam draugam bija nedēļas nogales seminārs par vides monitoringu. Semināra mērķis bija izveidot putekļu sensoru, kas savienots ar aveņu pi plāksni, lai ievietotu mērījumu datus kādā serverī, kas nodrošināja bieži atjauninātas putekļu koncentrācijas kartes. Mans draugs jautāja, vai ir veids, kā iegūt sensoru datus tieši savā viedtālrunī uzraudzībai un reģistrēšanai. Tāpēc es izraku internetā datu lapu un redzēju, ka sensoram ir vienkāršs UART interfeiss ar 9600Baud 8N1 protokolu. Bet kā savienot UART ar viedtālruni? Nu, tas ir viegli. Man vienkārši vajadzēja izmantot vienu no tiem visuresošajiem mazajiem Bluetooth moduļiem, kas nodrošina emulētu saderību Android ierīcēs. Tagad redziet, kā man tas izdevās.

1. darbība. Kas jums nepieciešams

Ko tev vajag
Ko tev vajag
Ko tev vajag
Ko tev vajag

Jums ir nepieciešamas šādas daļas

  • Savienojuma savienotājs JST XH 7-pin Sodial interfeisam ar vadiem. Savējo nopirku ebay.
  • Bluetooth modulis HC05 vai 06, kas saderīgs ar UART savienotāju
  • USB sērijas pārveidotājs ar TTL līmeņa interfeisu. Mēs to izmantojam, lai BT modulim piešķirtu unikālu nosaukumu
  • Nātrija SDS011 putekļu sensors. Savējo dabūju no ebay
  • gabals verboarda
  • USB-B savienotājs
  • vads
  • Koka gabals, uz kura visu uzstādīt

Tad jums būs nepieciešami daži vienkārši rīki:

  • Atslēga zāģēšanai koksnes griešanai
  • pincetes
  • lodēšanas dzelzs un lodēt
  • stieples griezējs
  • Karstās līmes pistole
  • 8 mm silikona piedurknes gabals (nav attēlā)

Sodial SDS011 datu lapu varat lejupielādēt šeit Sodial SDS011 datu lapa

2. darbība: Bluetooth moduļa sagatavošana

Bluetooth moduļa sagatavošana
Bluetooth moduļa sagatavošana
Bluetooth moduļa sagatavošana
Bluetooth moduļa sagatavošana
Bluetooth moduļa sagatavošana
Bluetooth moduļa sagatavošana
Bluetooth moduļa sagatavošana
Bluetooth moduļa sagatavošana

BT modulim ir UART interfeiss ar TTL līmeni. To var pārkonfigurēt ar “AT” komandām, kā mēs to darījām ar interneta modemiem senatnē. Lai to savienotu ar datora termināļa programmu, jums ir jāpielāgo UART datoram. Es izmantoju USB-RS232 pārveidotāju, ko nopirku vietnē amazon. Es uzliku BT moduļa savienotāju un novirzīju 3, 3 V barošanas avotu un GND no pārveidotāja uz BT moduli. Tad es savienoju attiecīgās TxD un RxD līnijas krustojumā. TxD no USB pārveidotāja uz RxD no BT moduļa un otrādi.

Man ir linux mašīna un izmantoju cutecom. Pēc USB pārveidotāja pievienošanas ports bija "ttyUSB0". Komportu nosaukumus varat atrast Linux datora direktorijā "/dev". Windows lietotājiem es ieteiktu "hterm". Tas ir viegli darbināms. Ierakstiet “AT”, un jums vajadzētu saņemt “AT” kā atbildi. Pēc tam ierakstiet "AT+NameSensor", lai BT modulim piešķirtu nosaukumu "Sensor"

3. solis: detaļu montāža

Detaļu montāža
Detaļu montāža
Detaļu montāža
Detaļu montāža
Detaļu montāža
Detaļu montāža
Detaļu montāža
Detaļu montāža

Izgrieziet koka gabalu tādā izmērā, kas piemērots visu detaļu paņemšanai. Pievienojiet visus signālus, kā norādīts shēmā. Lai aizsargātu vadus, ieteicams novietot silīcija uzmavu. Lodējiet USB-B kontaktdakšu uz paneļa. To izmanto tikai barošanas avotam. Piestipriniet visas detaļas ar skrūvēm uz koka pamatnes. Visbeidzot karsti pielīmējiet kabeļus, lai tos piestiprinātu pie koka.

4. darbība: savienošana pārī

Pārošana
Pārošana
Pārošana
Pārošana

Ieslēdziet sensoru lietojumprogrammu, pievienojot USB barošanas avotu. BT moduļa sarkanā gaismas diode sāks mirgot. Nemēģiniet to savienot pārī ar savu Android viedtālruni. Jums jāievada PIN kods. Tas ir "1234". Pēc koda ievadīšanas viedtālrunis ir jāsavieno pārī ar BT moduli.

5. solis: programmatūra

Man patīk rakstīt Android lietotnes pašā mērķa platformā. tas ietaupa jūs no visa, kas jums jārūpējas par emulāciju, ja strādājat ar Android Studio. Es uzzināju trīs piemērotus izstrādes rīkus pašā Android

  • Mintoris Basic. Pamata tulks ar bagātīgu komandu kopumu, lai varētu darboties gandrīz visā Android ierīcē. Savām lietotnēm varat izveidot saīsnes. Mintoris basic nesatur kompilatoru. Tātad jums ir jābūt instalētam Mintoris katrā ierīcē, kuru izmantojat. Bet par to jāmaksā tikai vienu reizi (apmēram 7 €)
  • Pamata! Ārkārtīgi labs Pamata tulks un kompilators (papildinājums dažiem €). Gandrīz visu saista android, un jūs varat apkopot reālas lietotnes to izplatīšanai, neizmantojot Basic! mērķa ierīcē. Diemžēl elementāri! trūkst Mintoris lielisko diagrammu diagrammas funkciju
  • AIDE ir daļēji profesionāla IDE, lai veiktu android attīstību java operētājsistēmā Android. Izmantojot AIDE, jums ir vislielākā elastība, taču jums jāiemācās java. AIDE ikgadējās izmaksas ir aptuveni 50 eiro

Es izvēlējos Mintoris. Šajā sadaļā es jums nedošu Mintoris programmēšanas pamācību, bet gan īsu funkciju bloku aprakstu

Nākamajā daļā ir norādīti trīs masīvi divām sensoru datu līnijām un attiecīgajiem laika zīmogiem. Laika zīmoga dati tiek izmantoti diagrammas x ass marķēšanai. Sodial izvada divas datu plūsmas, katra norādīta īpašam daļiņu izmēram. Abi putekļu datu masīvi ņem šīs vērtības.

WakeLock daļēja

TextColor 100, 75, 10

TextColorA 50, 50, 50

TextAlign 0

Teksta izmērs 24

CLS

Uznirstošais logs "Putekļu sensora mērītājs (c) ARJ 2017"

Global dustData (), dustDataF (), timeStamp () Globālais indekss, izvēle, maxData, fileName $

Laika zīmoga aptumšošana (59)

Dim putekļi Dati (59)

Putekļu blāvumsDataF (59)

Dim izvēlne $ (4) = "maks. 100 datu kopas", "maks. 1000 datu kopas", "maks. 5000 datu kopas", "maks. 10000 datu kopas", "Iziet"

'Sāciet masīvus

Ja i = no 0 līdz 59

dustData (i) = 0

dustDataF (i) = 0

timeStamp (i) = i

Tālāk i

Tālāk tiek konfigurēta saraksta izvēlne. Tas lietotājam dod iespēju izvēlēties maksimālo apkopojamo datu lielumu. Tas ir tikai drošības slēdzis, lai neļautu viedtālrunim iesūkt nebeidzamus datus. Funkcijas BTgetPairs $ () atgriež sarakstu ar visām Android ierīcē pārī savienotajām ierīcēm, to nosaukumiem un BT adresi.

Izvēlne $ (), izvēle

'Izvēlieties maksimālo apjomu, ja dati tiks saglabāti

runLevel = 1

Izvēlieties izvēli

Lieta 0 maxData = 100

1. gadījums maxDate = 1000

2. gadījums maxData = 5000

3. gadījums maxData = 10000

4. gadījums maxData = 0

Beigas Atlasīt

'' Savienojiet sensoru

blāvs pāris $ (0)

pāris $ () = BTGetPairs $ ()

Ja pāris $ (0) = "none" Tad

Drukāt "Nav atrasta pārī savienota ierīce. Vai BT ir ieslēgts?" Drukāt "Programma pārtraukta"

Beigas

Endif

Saraksta pāris $ (), ierīce $

nosaukums $ = ItemExtract $ (ierīce $, 0)

adrese $ = ItemExtract $ (ierīce $, 1)

BTConnect 1, adrese $

'Pagaidiet savienojumu

Progress IESLĒGTS

Drukāt "Mēģinu izveidot savienojumu"; adrese $

Ja i = 1 līdz 20

Progress i/2

Ja BTGetstate (1) = 4, tad izejiet nogaidīt 1000

Tālāk i

Progress OFF

'Veiksmīgi izveidojiet savienojumu ar BT ierīci

Ja BTGetState (1) = 4, tad drukājiet "Savienots" Citu druku "Nevar izveidot savienojumu ar"; nosaukums $

Drukāt "Programma pārtraukta"

Beigas

Endif

Nākamais bloks parāda datu iegūšanu. Katrai datu sesijai fails tiek automātiski atvērts un nosaukts pēc laika un datuma. Tad cilpa nolasa sensora datus. Dati ir iepakoti vairākos baitos. Baitu kopu identificē ar divām ASCII rakstzīmēm 170 un 171. Šie dati tiek pārkārtoti un iepildīti putekļu blokos

Grafika ieslēgta

'Atveriet datu failu rakstīšanai

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

Atvērt 1, fileName $, "w+" Drukāt "Atvērts datu fails"; fileName $ Writeln 1, FormatTime $ (Time (), "yy-MM-dd")

Writeln 1, "Time Dust2.5 Dust10"

“Aizpildiet masīvu ar izmērītajiem datiem

dati $ = "" packet $ = ""

indekss = 0

Darīt, kamēr maxData> 0

BTRead 1, pakete $ 10

dati $ = dati $+pakete $

Ja Len (dati $)> = 10 Tad

Ja (ASCII (pa kreisi $ (dati $, 1)) = 170) & (ASCII (pa labi $ (dati $, 1))) = 171) tad

dustDataF (indekss) = ASCII ($ USD (dati $, 2, 1))

dustDataF (indekss) = (dustDataF (indekss)+256*ASCII ($ USD (dati $, 3, 1)))/10

dustData (indekss) = ASCII ($ USD (dati $, 4, 1))

dustData (indekss) = (dustData (indekss)+256*ASCII ($ USD (dati $, 5, 1)))/10

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

dati $ = ""

maxData = maxData-1

indekss = indekss+1

Ja indekss> 59, tad indekss = 0

dustData (indekss) = 0

dustDataF (indekss) = 0

Endif

Endif

DrawGraph ()

Pagaidi 100

Cilpa

Aizvērt 1

Grafika izslēgta

CLS drukāšana "Programma ir pārtraukta"

Beigas

Pēdējā daļa ir apakšprogramma, kas tiek izsaukta pēc katras datu saņemšanas. Tas notīra ekrānu, pārzīmē diagrammu ar faktiskajiem datiem, kas saglabāti putekļu un laika zīmogu blokos.

“Uzzīmējiet koordinātas, etiķetes, ērces un arī datu līknes

Sub DrawGraph ()

'Grafikas režīmā ekrāns attīra pašreizējo krāsu

Krāsa 0, 0, 0

CLS

Krāsa 0, 0, 100

'Iestatiet grafikas krāsu, kas jāizmanto režģa līniju zīmēšanai

TextColor 100, 100, 100, 50

TextColor ir režģa galvenā nosaukuma krāsa

TextColorA 100, 100, 100

“TextColorA tiek izmantots asu nosaukumiem un režģa anotācijām.

'Iestatiet ass nosaukuma teksta lielumu

'Režģa galvenais nosaukums ir 2x lielāks par šo izmēru

Teksta izmērs 20

FixDecimal 0

'Iestatiet, lai tiktu parādītas 2 zīmes aiz komata

PadDigits 2

'Zīmēt režģi grafikam' Iestatiet X & Y diapazonu un nosaukumu

Asis AxisX 0, 59, "Laiks/s"

Ass Y 0, 10000, "ug/m3"

3. režģis "Putekļu koncentrācija"

'Zīmējiet putekļu grafikus

Krāsa 100, 0, 0

GraphXY timeStamp (), dustDataF ()

Krāsa 0, 100, 0

GraphXY timeStamp (), dustData ()

Teksta krāsa 100, 0, 0

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

Teksta krāsa 0, 100, 0

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

TextColor 100, 100, 100, 50

Atgriezties

Lejupielādējiet avota kodu šeit

6. darbība: pārbaudiet

Image
Image
Pārbaude
Pārbaude
Pārbaude
Pārbaude
Pārbaude
Pārbaude

Ieslēdziet sensoru un palaidiet lietotni. Pārī savienoto ierīču sarakstā izvēlieties ierīci ar nosaukumu "Sensors". Pēc sensora pievienošanas ekrānā tiks parādīti dati. Vienlaikus tiek piešķirts datu fails. Pabeidzot modi, jūs varat izmantot GnuPlot, lai parādītu datus. Izmantojiet GnuPlot failu "Test.gp", lai konfigurētu GnuPlot datu faila ar nosaukumu "Test.dat" parādīšanai. Jūs to varat atrast arī šeit

Plašāku informāciju un testēšanu skatiet videoklipā. Lai jums daudz jautrības un vairāk ideju!

Ieteicams: