Turinys:

Sodialinis dulkių jutiklis „Android“: 6 žingsniai
Sodialinis dulkių jutiklis „Android“: 6 žingsniai

Video: Sodialinis dulkių jutiklis „Android“: 6 žingsniai

Video: Sodialinis dulkių jutiklis „Android“: 6 žingsniai
Video: 🟡 POCO X5 PRO - САМЫЙ ДЕТАЛЬНЫЙ ОБЗОР и ТЕСТЫ 2024, Lapkritis
Anonim
Sodialinis dulkių jutiklis „Android“
Sodialinis dulkių jutiklis „Android“

Prieš metus mano draugas savaitgalį surengė seminarą apie aplinkos stebėjimą. Seminaro tikslas buvo sukurti dulkių jutiklį, prijungtą prie aviečių pi plokštės, kad matavimo duomenys būtų patalpinti į kai kurį serverį, kuriame buvo dažnai atnaujinami dulkių koncentracijos žemėlapiai. Mano draugas paklausė, ar yra būdas gauti jutiklio duomenis tiesiai į savo išmanųjį telefoną, kad būtų galima stebėti ir registruoti. Taigi aš iškasiau internete duomenų lapą ir pamačiau, kad jutiklis turi paprastą UART sąsają su 9600Baud 8N1 protokolu. Bet kaip prijungti UART prie išmaniojo telefono? Na, tai lengva. Aš tiesiog turėjau naudoti vieną iš tų visur esančių mažų „Bluetooth“modulių, kurie suteikia „Android“emuliatorių. Dabar pažiūrėkite, kaip man tai pavyko.

1 žingsnis: ko jums reikia

Ko tau reikia
Ko tau reikia
Ko tau reikia
Ko tau reikia

Jums reikia šių dalių

  • Poravimosi jungtis JST XH 7 kontaktų, skirta „Sodial“sąsajai su laidais. Aš nusipirkau savo „Ebay“.
  • „Bluetooth“modulis HC05 arba 06, suderinamas su UART jungtimi
  • USB serijos keitiklis su TTL lygio sąsaja. Naudojame tai, kad suteiktume BT moduliui unikalų pavadinimą
  • Sodinis SDS011 dulkių jutiklis. Aš savo gavau iš ebay
  • gabalas veroboardo
  • USB-B jungtis
  • viela
  • Medžio gabalas, ant kurio galima sumontuoti viską

Tada jums reikės paprastų įrankių:

  • Pjūklas, skirtas pjauti medieną
  • pincetas
  • lituoklis ir lydmetalis
  • vielos pjaustytuvas
  • Karštas klijų pistoletas
  • 8 mm silikono rankovės gabalas (nėra nuotraukoje)

Sodial SDS011 duomenų lapą galite atsisiųsti čia Sodial SDS011 duomenų lapas

2 veiksmas: „Bluetooth“modulio paruošimas

„Bluetooth“modulio paruošimas
„Bluetooth“modulio paruošimas
„Bluetooth“modulio paruošimas
„Bluetooth“modulio paruošimas
„Bluetooth“modulio paruošimas
„Bluetooth“modulio paruošimas
„Bluetooth“modulio paruošimas
„Bluetooth“modulio paruošimas

BT modulis turi UART sąsają su TTL lygiu. Tai galima perkonfigūruoti naudojant „AT“komandas, kaip tai darėme su interneto modemais senovėje. Norėdami prijungti jį prie savo kompiuterio terminalo programos, turite pritaikyti UART prie kompiuterio. Aš naudojau USB-RS232 keitiklį, kurį nusipirkau „Amazon“. Aš prijungiau BT modulio jungtį ir nukreipiau 3, 3 V maitinimo šaltinį ir GND iš keitiklio į BT modulį. Tada aš sujungiau atitinkamas TxD ir RxD linijas kryžminant. TxD iš USB keitiklio į RxD iš BT modulio ir atvirkščiai.

Turiu „Linux“mašiną ir naudoju cutecom. Prijungus USB keitiklį, prievadas buvo „ttyUSB0“. Komporto pavadinimus galite rasti „Linux“įrenginio kataloge „/dev“. „Windows“vartotojams rekomenduočiau „hterm“. Tai lengva valdyti. Įveskite „AT“ir kaip atsakymą turėtumėte gauti „AT“. Tada įveskite „AT+NameSensor“ir suteikite BT moduliui pavadinimą „Sensor“

3 žingsnis: dalių montavimas

Dalių montavimas
Dalių montavimas
Dalių montavimas
Dalių montavimas
Dalių montavimas
Dalių montavimas
Dalių montavimas
Dalių montavimas

Iškirpkite medžio gabalą tokio dydžio, kad būtų galima paimti visas dalis. Prijunkite visus signalus, kaip nurodyta schemoje. Gera idėja aplink laidus uždėti silicio įvorę, kad jie būtų apsaugoti. Lituokite USB-B kištuką ant plokštės. Jis naudojamas tik maitinimo šaltiniui. Pritvirtinkite visas dalis varžtais ant medinio pagrindo. Galiausiai karštai klijuokite kabelius, kad pritvirtintumėte juos prie medžio.

4 žingsnis: susiejimas

Poravimas
Poravimas
Poravimas
Poravimas

Įjunkite jutiklio programą įjungdami USB maitinimo šaltinį. BT modulio raudonas šviesos diodas pradės mirksėti. Nebandykite jo suporuoti su „Android“išmaniuoju telefonu. Turite įvesti PIN kodą. Tai yra „1234“. Įvedus kodą, išmanusis telefonas turi būti suporuotas su BT moduliu.

5 žingsnis: programinė įranga

Man patinka rašyti „Android“programas pačioje tikslinėje platformoje. tai taupo jus nuo visų mėgdžiojimo dalykų, kuriais turite rūpintis, jei dirbate su „Android Studio“. Pačioje „Android“sužinojau tris tinkamus kūrimo įrankius

  • „Mintoris Basic“. Pagrindinis vertėjas su daugybe komandų, skirtų beveik visam „Android“. Galite sukurti savo programų nuorodas. „Mintoris basic“nėra kompiliatoriaus. Taigi „Mintoris“turite įdiegti kiekviename naudojamame įrenginyje. Bet už tai reikia sumokėti tik vieną kartą (apie 7 €)
  • Pagrindinis! Ypatingai geras Pagrindinis vertėjas ir kompiliatorius (priedas už kai kuriuos eurus). Beveik užkabina viską, kas yra „Android“, ir jūs galite sudaryti tikras programas, skirtas jas platinti, neturėdami „Basic“! tiksliniame įrenginyje. Deja, elementaru! trūksta puikių Mintoris diagramos diagramos funkcijų
  • AIDE yra pusiau profesionalus IDE, skirtas „Android“kūrimui „Java“„Android“. Naudodamiesi AIDE turite didžiausią lankstumą, tačiau turite išmokti java. AIDE metinės išlaidos yra apie 50 eurų

Aš pasirinkau „Mintoris“. Šiame skyriuje aš jums nepateiksiu programavimo „Mintoris“pamokos, bet trumpai aprašysiu funkcijų blokus

Tolesnėje dalyje pateikiami trys dviejų jutiklių duomenų linijų ir atitinkamų laiko žymų masyvai. Laiko žymos duomenys naudojami diagramos x ašiai žymėti. „Sodial“išleidžia du duomenų srautus, nurodytus kiekvienam konkretaus dydžio dalelėms. Dvi „dustdata“masyvai turi šias reikšmes.

„WakeLock“dalinis

„TextColor“100, 75, 10

„TextColor“: 50, 50, 50

„TextAlign“0

Teksto dydis 24

CLS

Iššokantis langas „Dulkių jutiklio matuoklis (c) ARJ 2017“

Global dustData (), dustDataF (), timeStamp () Pasaulinis indeksas, pasirinkimas, maxData, fileName $

Pašviesinti laiko žymę (59)

Duomenys (59)

Duomenų blizgesysDataF (59)

Dim meniu $ (4) = "maks. 100 duomenų rinkinių", "maks. 1000 duomenų rinkinių", "maks. 5000 duomenų rinkinių", "maks. 10000 duomenų rinkinių", "Išeiti"

„Inicijuokite masyvus

Jei i = nuo 0 iki 59

dustData (i) = 0

dustDataF (i) = 0

laiko žymė (i) = i

Kitas I.

Toliau sukonfigūruotas sąrašo meniu. Tai suteikia vartotojui galimybę pasirinkti didžiausią renkamų duomenų dydį. Tai tik saugos jungiklis, neleidžiantis išmaniajam telefonui įsiurbti begalės duomenų. Funkcijos BTgetPairs $ () pateikia sąrašą su visais „Android“įrenginyje suporuotais įrenginiais, jų pavadinimus ir BT adresą.

Meniu $ (), pasirinkimas

„Pasirinkite didžiausią saugomų duomenų kiekį

runLevel = 1

Pasirinkite pasirinkimą

0 atvejis maxData = 100

1 atvejis maxDate = 1000

2 atvejis maxData = 5000

3 atvejis maxData = 10000

4 atvejis maxData = 0

Pabaiga Pasirinkite

'' Prijunkite jutiklį

silpna pora $ (0)

pora $ () = BTGetPairs $ ()

Jei pora $ (0) = "nėra" Tada

Spausdinti "Nerasta suporuotų įrenginių. Ar įjungtas BT?" Spausdinti „Programa nutraukta“

Galas

Endif

Sąrašo pora $ (), įrenginys $

pavadinimas $ = ItemExtract $ (device $, 0)

adresas $ = ItemExtract $ (įrenginys $, 1)

„BTConnect 1“, adresas $

'Palaukite ryšio

Pažanga ĮJUNGTA

Spausdinti „Bandoma prisijungti“; adresas $

Jei i = nuo 1 iki 20

Pažanga i/2

Jei „BTGetstate“(1) = 4, išeikite laukti 1000

Kitas I.

Progresas IŠJUNGTAS

„Sėkmingai prisijunkite prie„ BT “įrenginio

Jei „BTGetState“(1) = 4, tada atspausdinkite „Prijungtas“, kitas spausdinimas „Nepavyko prisijungti prie“; pavadinimas $

Spausdinti „Programa nutraukta“

Galas

Endif

Kitas blokas rodo duomenų surinkimą. Kiekvieno duomenų seanso metu failas automatiškai atidaromas ir pavadinamas pagal laiką ir datą. Tada kilpa nuskaito jutiklio duomenis. Duomenys supakuoti keliais baitais. Baitų rinkinys yra identifikuojamas dviem ASCII simboliais 170 ir 171. Šie duomenys reorganizuojami ir užpildomi dulkių masyvu

Grafika įjungta

„Atidarykite duomenų failą, kad galėtumėte rašyti

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

Atidarykite 1, fileName $, „w+“Spausdinti „Atidaryta duomenų rinkmena“; fileName $ Writeln 1, FormatTime $ (laikas (), „yy-MM-dd“)

Writeln 1, „Time Dust2.5 Dust10“

„Užpildykite masyvą išmatuotais duomenimis

duomenys $ = "" paketas $ = ""

indeksas = 0

„Do do maxData“> 0

BTRead 1, paketas $ 10

duomenys $ = duomenys $+paketas $

Jei Len (duomenys $)> = 10 Tada

Jei (ASCII (kairysis $ (duomenys $, 1)) = 170) ir (ASCII (dešinysis $ (duomenys $, 1))) = 171) tada

dustDataF (indeksas) = ASCII (viduryje $ (duomenys $, 2, 1))

dustDataF (indeksas) = (dustDataF (indeksas)+256*ASCII (vidurkis $ (duomenys $, 3, 1)))/10

dustData (indeksas) = ASCII (vidurkis $ (duomenys $, 4, 1))

dustData (indeksas) = (dustData (indeksas)+256*ASCII (viduryje $ (duomenys $, 5, 1)))/10

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

duomenys $ = ""

maxData = maxData-1

indeksas = indeksas+1

Jei indeksas> 59, tada indeksas = 0

dustData (indeksas) = 0

dustDataF (indeksas) = 0

Endif

Endif

DrawGraph ()

Palaukite 100

Kilpa

Uždaryti 1

Grafika išjungta

CLS spausdinimas „Programa nutraukta“

Galas

Paskutinė dalis yra paprograma, kuri iškviečiama po kiekvieno duomenų priėmimo. Jis išvalo ekraną, perpiešia diagramą su faktiniais duomenimis, saugomais dulkių ir laiko žymose.

„Nubrėžkite koordinates, etiketes, erkutes ir duomenų kreives

Sub DrawGraph ()

„Grafikos režimu ekranas nusidažo esama spalva

Spalva 0, 0, 0

CLS

Spalva 0, 0, 100

„Nustatykite grafikos spalvą, kuri bus naudojama piešiant tinklelio linijas

„TextColor“100, 100, 100, 50

„„ TextColor “yra tinklelio pagrindinio pavadinimo spalva

„TextColor“: 100, 100, 100

„TextColorA“naudojama ašies pavadinimams ir tinklelio anotacijoms.

'Nustatykite ašies pavadinimo teksto dydį

„Pagrindinis tinklelio pavadinimas yra 2 kartus didesnis

20 teksto dydis

„FixDecimal“0

'Nustatykite, kad būtų rodomi 2 skaičiai po kablelio

PadDigits 2

„Nubrėžkite grafiko tinklelį“Nustatykite X & Y diapazoną ir pavadinimą

Ašis AxisX 0, 59, "Laikas/s"

Ašis Y 0, 10000, "ug/m3"

3 tinklelis, „Dulkių koncentracija“

„Nubrėžkite dulkių grafikus

Spalva 100, 0, 0

GraphXY timeStamp (), dustDataF ()

Spalva 0, 100, 0

GraphXY timeStamp (), dustData ()

„TextColor“100, 0, 0

Lygiosios tekstas „PM2.5“, 30, vidinis (ekranas Y ()-60), 90, 1

„TextColor“0, 100, 0

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

„TextColor“100, 100, 100, 50

Grįžti

Atsisiųskite šaltinio kodą čia

6 žingsnis: išbandykite

Image
Image
Bandymas
Bandymas
Bandymas
Bandymas
Bandymas
Bandymas

Įjunkite jutiklį ir paleiskite programą. Iš suporuotų įrenginių sąrašo pasirinkite tą, kuris pavadintas „Jutiklis“. Prijungus jutiklį, ekrane bus pradėti rodyti duomenys. Tuo pačiu metu priskiriamas duomenų failas. Baigę madą, galite naudoti duomenis „GnuPlot“. Naudokite „GnuPlot“failą „Test.gp“, kad sukonfigūruotumėte „GnuPlot“rodyti duomenų failą pavadinimu „Test.dat“. Taip pat galite rasti čia

Žiūrėkite vaizdo įrašą, kad gautumėte daugiau informacijos ir testavimo. Smagu ir daugiau idėjų!

Rekomenduojamas: