Բովանդակություն:

Sodial Dust Sensor- ը Android- ում ՝ 6 քայլ
Sodial Dust Sensor- ը Android- ում ՝ 6 քայլ

Video: Sodial Dust Sensor- ը Android- ում ՝ 6 քայլ

Video: Sodial Dust Sensor- ը Android- ում ՝ 6 քայլ
Video: Fortress Android: Building an Unbreakable Mobile Defense 2024, Հուլիսի
Anonim
Sodial Dust Sensor- ը Android- ում
Sodial Dust Sensor- ը Android- ում

Մեկ տարի առաջ իմ ընկերը շաբաթավերջին աշխատաժողով ունեցավ շրջակա միջավայրի մոնիթորինգի վերաբերյալ: Սեմինարի նպատակն էր կառուցել փոշու սենսոր, որը միացված էր ազնվամորի պի տախտակին, որոշ սերվերների վրա չափումների տվյալները տեղադրելու համար, որոնք ապահովում էին փոշու հաճախակի թարմացվող համակենտրոնացման քարտեզներ: Ընկերս հարցրեց, թե կա՞ արդյոք սենսորային տվյալները անմիջապես իր սմարթֆոնի վրա դիտելու և մուտք գործելու համար: Այսպիսով, ես փորեցի ինտերնետը տվյալների թերթիկի համար և տեսա, որ սենսորը ունի պարզ UART ինտերֆեյս `9600Baud 8N1 արձանագրությամբ: Բայց ինչպես միացնել UART- ը սմարթֆոնին: Դե, դա հեշտ է: Ես պարզապես ստիպված էի օգտագործել այն ամենուր փոքրիկ Bluetooth մոդուլներից մեկը, որոնք ապահովում են նմանակված կոմպորտ Android- ում: Հիմա տեսեք, թե ինչպես եմ դա հասցրել:

Քայլ 1: Այն, ինչ ձեզ հարկավոր է

Այն, ինչ ձեզ հարկավոր է
Այն, ինչ ձեզ հարկավոր է
Այն, ինչ ձեզ հարկավոր է
Այն, ինչ ձեզ հարկավոր է

Ձեզ անհրաժեշտ են հետևյալ մասերը

  • STուգավորման միակցիչ JST XH 7-փին Sodial ինտերֆեյսի համար լարերով: Ես իմը գնել եմ Ebay- ում:
  • Bluetooth մոդուլ HC05 կամ 06 համատեղելի UART միակցիչի հետ
  • USB սերիական փոխարկիչ ՝ TTL մակարդակի ինտերֆեյսով: Մենք օգտագործում ենք սա BT- մոդուլին յուրահատուկ անուն տալու համար
  • Նյութական SDS011 փոշու տվիչ: Ես իմը ստացել եմ Ebay- ից
  • մի կտոր veroboard
  • USB-B միակցիչ
  • մետաղալար
  • Փայտանյութ ՝ ամեն ինչ ամրացնելու համար

Այնուհետև ձեզ հարկավոր են մի քանի պարզ գործիքներ.

  • Փայտ կտրելու համար նախատեսված սղոց
  • պինցետ
  • եռակցման երկաթ և զոդ
  • մետաղալար կտրող
  • Տաք սոսինձ ատրճանակ
  • 8 մմ սիլիկոնե թևի կտոր (նկարում չկա)

Դուք կարող եք ներբեռնել Sodial SDS011- ի տվյալների թերթիկը այստեղ `Sodial SDS011- ի տվյալների թերթիկից

Քայլ 2: Bluetooth մոդուլի պատրաստում

Bluetooth մոդուլի պատրաստում
Bluetooth մոդուլի պատրաստում
Bluetooth մոդուլի պատրաստում
Bluetooth մոդուլի պատրաստում
Bluetooth մոդուլի պատրաստում
Bluetooth մոդուլի պատրաստում
Bluetooth մոդուլի պատրաստում
Bluetooth մոդուլի պատրաստում

BT- մոդուլն ունի UART ինտերֆեյս TTL մակարդակով: Այն կարող է վերակազմակերպվել «AT» հրամաններով, ինչպես դա անում էինք ինտերնետային մոդեմներով հին ժամանակներում: Ձեր սարքի տերմինալ ծրագրին միացնելու համար անհրաժեշտ է UART- ը հարմարեցնել ձեր համակարգչին: Ես օգտագործել եմ USB-RS232 փոխարկիչ, որը գնել եմ Amazon- ում: Ես կիրառեցի միակցիչ BT- մոդուլի համար և 3, 3V հոսանքի աղբյուրը և GND- ը փոխարկիչից տեղափոխեցի BT- մոդուլ: Հետո ես միացրեցի համապատասխան TxD և RxD տողերը խաչմերուկում: TxD USB- փոխարկիչից RxD- ից BT- մոդուլից և հակառակը:

Ես ունեմ linux սարք և օգտագործում եմ cutecom: USB- փոխարկիչը միացնելուց հետո կոմպորտը «ttyUSB0» էր: Համակցման անունները կարող եք գտնել ձեր linux մեքենայի «/dev» գրացուցակում: Windows օգտագործողների համար ես խորհուրդ կտայի «hterm»: Հեշտ է գործել: Մուտքագրեք «AT» և որպես պատասխան պետք է ստանաք «AT»: Այնուհետև մուտքագրեք «AT+NameSensor» ՝ BT մոդուլին տալ «Սենսոր» անունը

Քայլ 3: Մասերի տեղադրում

Մասերի տեղադրում
Մասերի տեղադրում
Մասերի տեղադրում
Մասերի տեղադրում
Մասերի տեղադրում
Մասերի տեղադրում
Մասերի տեղադրում
Մասերի տեղադրում

Կտրեք փայտի կտոր մի չափի, որը հարմար է բոլոր մասերը վերցնելու համար: Միացրեք բոլոր ազդանշանները, ինչպես նշված է սխեմատիկայում: Լավ գաղափար է, որ մետաղալարերի շուրջ սիլիցիումի թեւ դնեք դրանք պաշտպանելու համար: Sոդեք USB-B վարդակը շերտի տախտակի վրա: Այն պարզապես օգտագործվում է էլեկտրամատակարարման համար: Փայտե հիմքի վրա պտուտակներով ամրացրեք բոլոր մասերը: Ի վերջո, մալուխները տաք սոսնձով ամրացրեք դրանք փայտի վրա:

Քայլ 4: iringուգավորում

Զուգավորում
Զուգավորում
Զուգավորում
Զուգավորում

Սենսորային հավելվածը միացրեք USB հոսանքի միացման միջոցով: BT- մոդուլի վրա կարմիր LED կսկսի թարթել: Մի փորձեք այն զուգակցել ձեր android սմարթֆոնի հետ: Դուք պետք է մուտքագրեք PIN կոդ: Սա «1234» -ն է: Կոդ մուտքագրելուց հետո ձեր սմարթֆոնը պետք է զուգակցվի BT- մոդուլի հետ:

Քայլ 5: Theրագրակազմ

Ինձ դուր է գալիս Android ծրագրեր գրել հենց թիրախային հարթակում: այն փրկում է ձեզ այն բոլոր էմուլյացիոն իրերից, որոնց մասին պետք է հոգ տանել, եթե աշխատում եք Android Studio- ի հետ: Ես գտա զարգացման երեք հարմար գործիք հենց Android- ում

  • Mintoris Basic. Հիմնական թարգմանիչ ՝ android- ի գրեթե ամեն ինչով շրջելու հրամանների հարուստ փաթեթով: Կարող եք դյուրանցումներ ստեղծել ձեր ծրագրերի համար: Mintoris Basic- ը չի պարունակում կոմպիլյատոր: Այսպիսով, դուք պետք է տեղադրեք Mintoris- ը ձեր օգտագործած յուրաքանչյուր սարքի վրա: Բայց դրա համար պետք է վճարել միայն մեկ անգամ (մոտ 7 €)
  • Հիմնական! Goodայրահեղ լավ հիմնական թարգմանիչ և կազմող (հավելյալ որոշ եվրոյով): Android- ում գրեթե ամեն ինչ կախված է, և դուք կարող եք կազմել իրական ծրագրեր ՝ դրանք առանց հիմնական բաշխելու համար: նպատակային սարքի վրա: Lyավոք Հիմնական! բացակայում է Mintoris- ի հիանալի դիագրամային գծապատկերային գործառույթները
  • AIDE- ը կիսամյակային մասնագիտական IDE է android- ում java- ում android- ի զարգացում կատարելու համար: AIDE- ի դեպքում դուք ունեք առավելագույն ճկունություն, բայց դուք պետք է սովորեք Java: AIDE- ի տարեկան ծախսերը կազմում են մոտ 50 եվրո

Ես ընտրեցի Մինտորիսը: Այս բաժնում ես ձեզ չեմ տա Mintoris ծրագրավորման ձեռնարկ, այլ գործառական բլոկների կարճ նկարագրություն:

Հետևյալ մասում երեք զանգվածներ հայտարարվում են երկու տվիչների տվյալների գծերի և համապատասխան ժամանակային նշանների համար: Estամկետային դրոշմման տվյալները օգտագործվում են դիագրամի x- առանցքը նշելու համար: Sodial- ը թողարկում է տվյալների երկու հոսք, որոնցից յուրաքանչյուրը նշված է մասնիկների հատուկ չափի համար: Երկու փոշոտ տվյալների զանգվածները վերցնում են այս արժեքները:

WakeLock մասնակի

TextColor 100, 75, 10

TextColorA 50, 50, 50

TextAlign 0

TextSize 24

CLS

Թռուցիկ «Փոշու սենսորաչափ (գ) ARJ 2017»

Global dustData (), dustDataF (), timeStamp () Գլոբալ ինդեքս, ընտրություն, maxData, ֆայլի անուն $

Պայծառ ժամանակ Կնիք (59)

Աղոտ փոշի Տվյալներ (59)

Թուլ փոշի DataF (59)

Dim Menu $ (4) = "առավելագույնը 100 տվյալների հավաքածու", "max. 1000 տվյալների հավաքածու", "max. 5000 տվյալների հավաքածու", "max. 10000 տվյալների հավաքածու", "Exit"

- Սկսեք զանգվածները

I = 0 -ից 59 -ի համար

փոշիՏվյալներ (i) = 0

dustDataF (i) = 0

timeStamp (i) = i

Հաջորդը ես

Հաջորդը կազմաձևված է ցուցակի ցանկը: Սա օգտվողին հնարավորություն է տալիս ընտրելու հավաքելու տվյալների առավելագույն չափը: Սա պարզապես անվտանգության անջատիչ է ՝ սմարթֆոնի անվերջ տվյալների ծծումը կանխելու համար: BTgetPaired $ () գործառույթները վերադարձնում են android սարքի բոլոր զուգակցված սարքերի ցուցակը, նրանց անունները և BT հասցեն:

L ist Menu $ (), ընտրություն

«Ընտրեք առավելագույն գումարը, եթե տվյալները պահվեն

runLevel = 1

Ընտրեք ընտրություն

Case 0 maxData = 100

Գործ 1 maxDate = 1000

Գործ 2 maxData = 5000

Գործ 3 maxData = 10000

Գործ 4 maxData = 0

Ավարտի ընտրություն

Միացրեք սենսոր

մուգ զույգ $ (0)

զույգ $ () = BTGetPaired $ ()

Եթե զույգ $ (0) = "ոչ մեկը" Հետո

Տպել «iredուգավորված սարքեր չեն գտնվել: BT- ն միացված է՞»: Տպել «termրագիրն ավարտված է»

Վերջ

Էնդիֆ

Listանկերի զույգ $ (), սարք $

անուն $ = ItemExtract $ (սարք $, 0)

հասցե $ = ItemExtract $ (սարք $, 1)

BTConnect 1, հասցե $

- Սպասեք կապի

Առաջընթացը միացված է

Տպեք «Փորձում եմ միանալ»; հասցեն $

I = 1 -ից 20 -ի համար

Առաջընթաց i/2

Եթե BTGetstate (1) = 4, ապա դուրս եկեք սպասեք 1000

Հաջորդը ես

Առաջընթացն անջատված է

«Հաջողության դեպքում միացեք BT սարքին

Եթե BTGetState (1) = 4 Այնուհետև տպեք «Միացված է» այլ տպագիր «Չհաջողվեց միանալ»; անունը $

Տպել «termրագիրն ավարտված է»

Վերջ

Էնդիֆ

Հաջորդ բլոկը ցույց է տալիս տվյալների ձեռքբերումը: Տվյալների յուրաքանչյուր նստաշրջանի համար ֆայլը ինքնաբերաբար բացվում և անվանվում է ըստ ժամի և ամսաթվի: Այնուհետև օղակը կարդում է սենսորի տվյալները: Տվյալները փաթեթավորված են մի քանի բայթ: Բայթերի հավաքածուն նույնականացվում է երկու ASCII 170 և 17 նիշերով: Հետևյալ տվյալները վերակազմակերպվում և լրացվում են փոշու զանգվածների մեջ

Գրաֆիկական պատկերները միացված են

'Բացեք datafile գրելու համար

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

Բացել 1, fileName $, "w+" Տպել "Բացված տվյալների ֆայլ"; fileName $ Writeln 1, FormatTime $ (Time (), "yy-MM-dd")

Գրող 1, «Dամանակի փոշի 2.5 փոշի 10»

'Լրացրեք զանգվածը չափված տվյալներով

տվյալներ $ = "" փաթեթ $ = ""

ինդեքս = 0

Do while maxData> 0

BTRead 1, փաթեթ $, 10

տվյալներ $ = տվյալներ $+փաթեթ $

Եթե Len (տվյալները $)> = 10 Հետո

Եթե (ASCII (Ձախ $ (տվյալներ $, 1)) = 170) և (ASCII (Աջ $ (տվյալներ $, 1)) = 171) Ապա

dustDataF (ինդեքս) = ASCII (Միջին $ (տվյալներ $, 2, 1))

dustDataF (ինդեքս) = (dustDataF (ինդեքս)+256*ASCII (Միջին $ (տվյալներ $, 3, 1)))/10

dustData (ինդեքս) = ASCII (Միջին $ (տվյալներ $, 4, 1))

dustData (ինդեքս) = (dustData (index)+256*ASCII (Միջին $ (տվյալներ $, 5, 1)))/10

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

տվյալներ $ = ""

maxData = maxData-1

ինդեքս = ինդեքս+1

Եթե ինդեքս> 59 Ապա ինդեքս = 0

dustData (ինդեքս) = 0

dustDataF (ինդեքս) = 0

Էնդիֆ

Էնդիֆ

DrawGraph ()

Սպասեք 100

Օղակ

Փակել 1

Գրաֆիկական պատկերներն անջատված են

CLS Print «termրագիրն ավարտված է»

Վերջ

Վերջին մասը ենթածրագիր է, որը կոչվում է տվյալների յուրաքանչյուր ընդունումից հետո: Այն մաքրում է էկրանը, վերագծում դիագրամը փոշու և ժամանակացույցի զանգվածներում պահվող փաստացի տվյալների հետ:

'Գծեք կոորդինատները, պիտակները, տիզերը և նաև տվյալների կորերը

Ենթ DrawGraph ()

'Գրաֆիկական ռեժիմում էկրանը մաքրվում է ընթացիկ գույնից

Գույն 0, 0, 0

CLS

Գույն 0, 0, 100

«Սահմանեք գրաֆիկայի գույնը, որն օգտագործվում է ցանցի գծերը գծելու համար

TextColor 100, 100, 100, 50

'TextColor- ը ցանցի հիմնական վերնագրի գույնն է

TextColorA 100, 100, 100

'TextColorA- ն օգտագործվում է առանցքի վերնագրերի և ցանցի ծանոթագրությունների համար:

«Սահմանեք առանցքի վերնագրի տեքստի չափը

«Idանցի հիմնական վերնագիրն այս չափի 2 անգամ է

TextSize 20

FixDcimal 0

'Սահմանել ցուցադրել 2 տասնորդական նիշ

PadDigits 2

'Գրաֆիկի համար ցանց գծեք' Սահմանեք X & Y- ի տիրույթը և վերնագիրը

Առանցք AxisX 0, 59, «/ամանակ/ներ»

AxisY 0, 10000, «ug/m3»

Gանց 3, «Փոշու կոնցենտրացիա»

«Նկարեք փոշու գրաֆիկները

Գույն 100, 0, 0

GraphXY timeStamp (), dustDataF ()

Գույն 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

Վերադառնալ

Ներբեռնեք աղբյուրի կոդը այստեղ

Քայլ 6: Փորձարկում

Image
Image
Փորձարկում
Փորձարկում
Փորձարկում
Փորձարկում
Փորձարկում
Փորձարկում

Միացրեք սենսորը և գործարկեք ծրագիրը: Paուգավորված սարքերի ցանկից ընտրեք «Սենսոր» անունը: Սենսորը միացնելուց հետո էկրանը կսկսի ցուցադրել տվյալները: Միաժամանակ տվյալների ֆայլը բաշխվում է: Նորաձևությունն ավարտելուց հետո կարող եք օգտագործել GnuPlot- ը ՝ տվյալները ցուցադրելու համար: Օգտագործեք «Test.gp» ֆայլը GnuPlot- ում ՝ GnuPlot- ը կազմաձևելու համար «Test.dat» անունով տվյալների ֆայլ ցուցադրելու համար: Կարող եք նաև այն գտնել այստեղ

Լրացուցիչ մանրամասների և թեստավորման համար տես տեսանյութը: Ունեք շատ զվարճալի և ավելի շատ գաղափարներ:

Խորհուրդ ենք տալիս: