Cuprins:
- Pasul 1: De ce aveți nevoie
- Pasul 2: Pregătirea modulului Bluetooth
- Pasul 3: Montarea pieselor
- Pasul 4: Asocierea
- Pasul 5: Software-ul
- Pasul 6: Testează
Video: Senzor de praf sodic pe Android: 6 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
Acum un an, un prieten de-al meu a avut un atelier de weekend despre monitorizarea mediului. Scopul atelierului a fost să construiască un senzor de praf conectat la o placă de zmeură pi pentru a pune date de măsurare pe un server care furniza hărți de concentrație de praf actualizate frecvent. Prietenul meu a întrebat dacă există o modalitate de a obține datele senzorului direct pe smartphone-ul său pentru monitorizare și înregistrare. Așa că am săpat internetul pentru o foaie de date și am văzut că senzorul avea o interfață UART simplă cu protocolul 9600Baud 8N1. Dar cum să conectați un UART la un smartphone? Ei bine, este ușor. A trebuit doar să folosesc unul dintre acele module Bluetooth omniprezente care oferă un comportament emulat pe Android. Acum vezi cum am reușit.
Pasul 1: De ce aveți nevoie
Aveți nevoie de următoarele părți
- Un conector de împerechere JST XH cu 7 pini pentru interfața Sodial cu fire. Mi-am cumpărat-o pe Ebay.
- Un modul Bluetooth HC05 sau 06 compatibil cu conectorul UART
- Un convertor serial USB cu interfață la nivel TTL. Folosim acest lucru pentru a da modulului BT un nume unic
- Senzor de praf Sodial SDS011. Mi-am luat-o pe a mea de la Ebay
- o bucată de veroboard
- Conector USB-B
- sârmă
- O bucată de lemn pentru a monta totul
Apoi, veți avea nevoie de câteva instrumente simple:
- O ferăstrău pentru tăiat lemnul
- pensetă
- fier de lipit și lipit
- cleste de sarma
- Pistol de lipit fierbinte
- O bucată de manșon de silicon de 8 mm (nu în imagine)
Puteți descărca fișa tehnică Sodial SDS011 aici Fișă tehnică Sodial SDS011
Pasul 2: Pregătirea modulului Bluetooth
Modulul BT are o interfață UART cu nivel TTL. Poate fi reconfigurat cu comenzi „AT”, așa cum am făcut cu modemurile de internet din vremuri străvechi. Pentru a-l conecta la un program terminal de pe aparatul dvs., trebuie să adaptați UART la computer. Am folosit un convertor USB-RS232 pe care l-am cumpărat de pe Amazon. Am aplicat un conector pentru modulul BT și am dirijat sursa de alimentare de 3, 3V și GND de la convertor la modulul BT. Apoi am conectat respectivele linii TxD și RxD în crossover. TxD de la convertorul USB la RxD de la modulul BT și invers.
Am o mașină Linux și am folosit cutecom. După conectarea convertorului USB, comportamentul a fost „ttyUSB0”. Puteți găsi numele comportamentului în directorul „/ dev” de pe mașina dvs. Linux. Pentru utilizatorii de Windows aș recomanda „hterm”. Este ușor de operat. Tastați „AT” și ar trebui să primiți „AT” ca răspuns. Apoi tastați „AT + NameSensor” pentru a da modulului BT numele „Sensor”
Pasul 3: Montarea pieselor
Tăiați o bucată de lemn într-o dimensiune adecvată pentru a lua toate piesele. Conectați toate semnalele conform indicațiilor din schemă. Este o idee bună să puneți un manșon de siliciu în jurul firelor pentru a le proteja. Lipiți mufa USB-B de pe panoul de perfecționare. Este folosit doar pentru alimentarea cu energie electrică. Fixați toate piesele cu șuruburi pe baza de lemn. În cele din urmă, lipiți fierbinte cablurile pentru a le fixa pe lemn.
Pasul 4: Asocierea
Alimentați aplicația senzor conectând o sursă de alimentare USB. Un LED roșu de pe modulul BT va începe să clipească. Nu încercați să-l asociați cu smartphone-ul dvs. Android. Trebuie să introduceți un cod PIN. Acesta este „1234”. După introducerea codului, smartphone-ul dvs. trebuie asociat cu modulul BT.
Pasul 5: Software-ul
Îmi place să scriu aplicații Android pe platforma țintă în sine. vă scutește de toate acele lucruri de emulare la care trebuie să vă intereseze dacă lucrați cu Android Studio. Am aflat trei instrumente de dezvoltare adecvate chiar pe Android
- Mintoris Basic. Un interpret de bază, cu un set bogat de comenzi pentru a se amesteca aproape cu totul pe Android. Puteți crea comenzi rapide pentru aplicațiile dvs. Mintoris basic nu conține un compilator. Deci, trebuie să fi instalat Mintoris pe fiecare dispozitiv pe care îl folosești. Dar trebuie să plătiți o singură dată (aproximativ 7 €)
- De bază! Interpretor și compilator de bază extrem de bun (supliment pentru câțiva €). Aproape că se leagă de orice în Android și puteți compila aplicații reale pentru a le distribui fără a avea Basic! pe dispozitivul țintă. Din păcate de bază! nu are funcțiile excelente ale diagramelor diagramelor Mintoris
- AIDE este un IDE semi-profesional pentru realizarea dezvoltării Android în Java pe Android. Cu AIDE aveți cea mai mare flexibilitate, dar trebuie să învățați java. AIDE are costuri anuale de aproximativ 50 €
Am ales Mintoris. În această secțiune nu vă voi oferi un tutorial de programare în Mintoris, ci o scurtă descriere a blocurilor funcționale
În partea următoare sunt declarate trei tablouri pentru cele două linii de date ale senzorilor și marcajele de timp respective. Datele marcajului de timp sunt utilizate pentru etichetarea axei x a diagramei. Sodial produce două fluxuri de date, fiecare specificat pentru o dimensiune specială a particulelor. Cele două matrice de date de praf iau aceste valori.
WakeLock Parțial
TextColor 100, 75, 10
TextColorA 50, 50, 50
TextAlign 0
Text Size 24
CLS
Popup "Meter senzor de praf (c) ARJ 2017"
Global dustData (), dustDataF (), timeStamp () Global index, choice, maxData, fileName $
Dim timeStamp (59)
Dim dustData (59)
Dim dustDataF (59)
Dim Menu $ (4) = "max. 100 seturi de date", "max. 1000 seturi de date", "max. 5000 seturi de date", "max. 10000 seturi de date", "Exit"
„Inițiați matricele
Pentru i = 0 până la 59
dustData (i) = 0
dustDataF (i) = 0
timeStamp (i) = i
Apoi eu
Apoi este configurat un meniu List. Aceasta oferă utilizatorului posibilitatea de a alege dimensiunea maximă a datelor de colectat. Acesta este doar un comutator de siguranță pentru a împiedica smartphone-ul să aspire date nesfârșite. Funcțiile BTgetPaired $ () redă o listă cu toate dispozitivele asociate de pe dispozitivul Android, numele și adresa BT.
Meniul L $ (), alegere
„Selectați suma maximă dacă datele vor fi stocate
runLevel = 1
Selectați alegerea
Cazul 0 maxData = 100
Cazul 1 maxDate = 1000
Cazul 2 maxData = 5000
Cazul 3 maxData = 10000
Cazul 4 maxData = 0
Selectare sfârșit
'' Conectați senzorul
pereche slabă $ (0)
pair $ () = BTGetPaired $ ()
Dacă perechea $ (0) = "none" Atunci
Tipăriți "Nu s-au găsit dispozitive asociate. BT este pornit?" Tipăriți „Programul a fost terminat”
Sfârșit
Endif
Listează perechea $ (), dispozitivul $
nume $ = ItemExtract $ (dispozitiv $, 0)
adresa $ = ItemExtract $ (dispozitiv $, 1)
BTConnect 1, adresa $
- Așteptați conexiunea
Progres ON
Tipăriți „Încercând să vă conectați la”; adresa $
Pentru i = 1 până la 20
Progres i / 2
Dacă BTGetstate (1) = 4, atunci Exit For Wait 1000
Apoi eu
Progres oprit
„La succes conectați-vă la dispozitivul BT
Dacă BTGetState (1) = 4 Apoi tipăriți „Conectat” Altfel Tipăriți „Nu s-a putut conecta la”; nume $
Tipăriți „Programul a fost terminat”
Sfârșit
Endif
Următorul bloc arată achiziția datelor. Pentru fiecare sesiune de date, un fișier este deschis automat și denumit după ora și data. Apoi bucla citește datele senzorului. Datele sunt ambalate în mai mulți octeți. Un set de octeți este identificat prin două caractere ASCII 170 și 171. Următoarele date sunt reorganizate și completate în tablourile de praf
Grafică activată
'Deschideți fișierul de date pentru a scrie
fileName $ = FormatTime $ (t, "aaaa-MM-dd-kk-mm-ss") + ".dat"
Deschideți 1, fișierNume $, "w +" Imprimați "Fișier de date deschis"; fișierNume $ Writeln 1, FormatTime $ (Time (), "aa-MM-dd")
Writeln 1, „Time Dust2.5 Dust10”
'Completați matricea cu datele măsurate
date $ = "" pachet $ = ""
index = 0
Faceți În timp ce maxData> 0
BTRead 1, pachetul $, 10
date $ = date $ + pachet $
Dacă Len (date $)> = 10 Apoi
Dacă (ASCII (Stânga $ (date $, 1)) = 170) & (ASCII (Dreapta $ (date $, 1)) = 171) Atunci
dustDataF (index) = ASCII (Mid $ (date $, 2, 1))
dustDataF (index) = (dustDataF (index) + 256 * ASCII (Mid $ (date $, 3, 1)))) / 10
dustData (index) = ASCII (Mid $ (date $, 4, 1))
dustData (index) = (dustData (index) + 256 * ASCII (Mid $ (data $, 5, 1))) / 10
Writeln 1, FormatTime $ (Time (), "kk: mm: ss") + "" + Str $ (dustDataF (index)) + "" + Str $ (dustData (index))
date $ = ""
maxData = maxData-1
index = index + 1
Dacă index> 59, atunci index = 0
dustData (index) = 0
dustDataF (index) = 0
Endif
Endif
DrawGraph ()
Așteptați 100
Buclă
Închideți 1
Grafică dezactivată
CLS Print "Program terminat"
Sfârșit
Ultima parte este un subrutin care este apelat după fiecare recepție de date. Șterge ecranul, redesenează diagrama cu datele efective stocate în matricea de praf și marcaj de timp.
'Desenați coordonatele, etichetele, căpușele și, de asemenea, curbele de date
Sub DrawGraph ()
„În modul Grafică, ecranul se curăță la culoarea curentă
Culoare 0, 0, 0
CLS
Culoare 0, 0, 100
'Setați culoarea grafică care va fi utilizată pentru a desena liniile de grilă
TextColor 100, 100, 100, 50
'TextColor este culoarea titlului principal al grilei
TextColorA 100, 100, 100
'TextColorA este utilizat pentru titlurile Axis și adnotările în grilă.
'Setați dimensiunea textului titlului axei
„Titlul principal al grilei este de două ori mai mare decât această dimensiune
Text Size 20
FixDecimal 0
'Setați să afișeze 2 zecimale
PadDigits 2
„Desenați o grilă pentru grafic” Setați intervalul și titlul X & Y
Axis AxisX 0, 59, „Timp / s”
Axa Y 0, 10000, "ug / m3"
Grila 3, „Concentrație de praf”
„Desenați graficele de praf
Culoare 100, 0, 0
GraphXY timeStamp (), dustDataF ()
Culoare 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
Întoarcere
Descărcați codul sursă aici
Pasul 6: Testează
Porniți senzorul și porniți aplicația. Din lista de dispozitive asociate alegeți-l pe cel numit „Senzor”. După conectarea senzorului, ecranul va începe să afișeze datele. În același timp, fișierul de date este alocat. După terminarea modei, puteți utiliza GnuPlot pentru a afișa datele. Utilizați fișierul „Test.gp” din GnuPlot pentru a configura GnuPlot pentru afișarea unui fișier de date numit „Test.dat”. Puteți găsi și aici
Vedeți videoclipul pentru mai multe detalii și teste. Distrează-te mult și mai multe idei!
Recomandat:
Senzor de respirație DIY cu Arduino (senzor stretch stretch tricotat): 7 pași (cu imagini)
Senzor de respirație DIY cu Arduino (senzor stretch stretch tricotat): Acest senzor DIY va lua forma unui senzor conductiv tricotat stretch. Se va înfășura în jurul pieptului / stomacului, iar atunci când pieptul / stomacul se extinde și se contractă, la fel se va simți senzorul și, în consecință, datele de intrare care sunt alimentate către Arduino. Asa de
Baghetă cu strat de praf: 5 pași
Baghetă cu strat de pudră: Iată instrucțiuni detaliate despre modul în care am creat bagheta cu strat de pudră. ******* Avertisment NU DOARE. Dacă ajungeți între firul de masă și perie. ******** Scopul acestui lucru este de a vopsi cu putere un obiect mic (în acest caz o monedă transformată în inel) cu
Lampă LED animată Arduino de perete praf cu efect de lumină: 11 pași (cu imagini)
Lampă cu LED animată Dusty Wall Arduino cu efect de lumină: tocmai am avut un copil și, după ce i-am făcut dormitorul, aveam nevoie de o lumină pe un perete. Întrucât iubesc foarte mult LED-ul, am decis să creez ceva. Îmi place și avionul în general, așa că de ce să nu pun un avion dintr-un desen animat pe perete, așa cum începe și cum am făcut-o. Sper
Lumini praf (snowboard cu muzică LED): 4 pași
Powdered Lights (LED Music Snowboard): Cumpărați aici: https: //www.facebook.com/PLDesigns-823895051322350 … Căutare pe Facebook: @CustomPLDesignsInstagram Search: @ CustomPLDesignsTools / Things needed Philips Screw Driver 7/16 inch Wrench Heat Gun or Uscător de păr alcool izopropilic Pape
Stație de monitorizare a particulelor de praf alimentate de Arduino: 4 pași (cu imagini)
Stația de monitorizare a particulelor de praf alimentate de Arduino: puteți construi destul de ușor un dispozitiv DIY de obiecte care monitorizează poluarea prafului în casa dvs. pentru mai puțin de 50 USD și primiți o notificare când nivelul de praf devine prea mare, astfel încât să puteți aeriza camera sau puteți seta afară și primiți o notificare dacă este