Turinys:
- 1 žingsnis: ko jums reikia
- 2 veiksmas: „Bluetooth“modulio paruošimas
- 3 žingsnis: dalių montavimas
- 4 žingsnis: susiejimas
- 5 žingsnis: programinė įranga
- 6 žingsnis: išbandykite
Video: Sodialinis dulkių jutiklis „Android“: 6 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
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
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
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
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
Į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
Į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:
Ultragarsinis jutiklis ant roboto dulkių siurblio: 5 žingsniai
Ultragarsinis jutiklis ant robotų dulkių siurblio: Sveiki, mes turime „Dirt Devil“robotų dulkių siurblį maždaug 3 metus ir jis vis tiek atlieka savo darbą. Tai M611 tipas, kuris yra šiek tiek „kvailas“: nereikia nuskaityti srities ar atminties, kur negalima siurbti, bet su galimybe grįžti
„Pasidaryk pats“kvėpavimo jutiklis su „Arduino“(laidus megztas tempimo jutiklis): 7 žingsniai (su nuotraukomis)
„Pasidaryk pats“kvėpavimo jutiklis su „Arduino“(laidus megztas tempimo jutiklis): šis „pasidaryk pats“jutiklis bus laidus megztas tempimo jutiklis. Jis apsisuks jūsų krūtinę/skrandį, o kai krūtinė/skrandis išsiplės ir susitrauks, taip pat padidės jutiklis, taigi ir įvesties duomenys, kurie bus tiekiami „Arduino“. Taigi
Sąsajos jutiklis, SPS-30, kietųjų dalelių jutiklis su „Arduino Duemilanove“naudojant I2C režimą: 5 žingsniai
Sąsajos „Sensirion“, SPS-30, kietųjų dalelių jutiklis su „Arduino Duemilanove“naudojant I2C režimą: Kai nagrinėjau SPS30 jutiklių sąsajas, supratau, kad dauguma šaltinių yra skirti „Raspberry Pi“, bet ne tiek daug „Arduino“. Aš skiriu šiek tiek laiko, kad jutiklis veiktų su „Arduino“, ir nusprendžiau čia paskelbti savo patirtį, kad ji galėtų
„Arduino“saulės energijos temperatūros ir drėgmės jutiklis kaip 433 MHz „Oregon“jutiklis: 6 žingsniai
„Arduino“saulės energijos temperatūros ir drėgmės jutiklis kaip 433 MHz „Oregon“jutiklis: tai saulės energija varomo temperatūros ir drėgmės jutiklio konstrukcija. Jutiklis imituoja 433 MHz „Oregon“jutiklį ir matomas „Telldus Net“šliuzuose. Ko jums reikia: 1x „10-LED“Saulės energijos judesio jutiklis " iš Ebay. Įsitikinkite, kad parašyta 3,7 V tešla
Jutiklinis jutiklis ir garso jutiklis, valdantys kintamosios/nuolatinės srovės lemputes: 5 žingsniai
Jutiklinis jutiklis ir garso jutiklis, valdantys kintamosios/nuolatinės srovės žibintus: tai mano pirmasis projektas, kuris veikia remiantis dviem pagrindiniais jutikliais: vienas yra jutiklinis jutiklis, o antrasis - garso jutiklis, kai paspausite jutiklinį kilimėlį ant jutiklinio jutiklio, kintamosios srovės lemputė persijungs ĮJUNGTA, jei atleisite, šviesa bus išjungta ir tas pats