Talaan ng mga Nilalaman:

Sodial Dust Sensor sa Android: 6 na Hakbang
Sodial Dust Sensor sa Android: 6 na Hakbang

Video: Sodial Dust Sensor sa Android: 6 na Hakbang

Video: Sodial Dust Sensor sa Android: 6 na Hakbang
Video: How To Disable Safe Mode Samsung J7 Prime || How To Disable Safemode In Samsung Mobile ⚡⚡#shorts 2024, Nobyembre
Anonim
Sodial Dust Sensor sa Android
Sodial Dust Sensor sa Android

Noong isang taon ang isang kaibigan ko ay nagkaroon ng isang workshop sa katapusan ng linggo tungkol sa pagsubaybay sa kapaligiran. Ang layunin ng pagawaan ay upang maitayo ang isang dust sensor na konektado sa isang raspberry pi board upang ilagay ang data ng pagsukat sa ilang server na nagbibigay ng madalas na na-update na mga mapa ng konsentrasyon ng dust. Tinanong ng aking kaibigan kung may isang paraan upang makuha ang data ng sensor nang direkta sa kanyang smartphone para sa pagsubaybay at pag-log. Kaya't hinukay ko ang internet para sa isang datasheet at nakita kong ang sensor ay may isang simpleng interface ng UART na may 9600Baud 8N1 na protocol. Ngunit paano ikonekta ang isang UART sa isang smartphone? Kaya, madali iyon. Kailangan ko lang gamitin ang isa sa mga nasa lahat ng pook na maliit na mga module ng Bluetooth na nagbibigay ng isang tinulad na comport sa android. Ngayon tingnan kung paano ko ito nagawa.

Hakbang 1: Ano ang Kailangan Mo

Ang iyong kailangan
Ang iyong kailangan
Ang iyong kailangan
Ang iyong kailangan

Kailangan mo ang mga sumusunod na bahagi

  • Ang isang konektor ng isinangkot na JST XH 7-pin para sa interface ng Sodial na may mga wire. Binili ko ang sa Ebay.
  • Isang module ng Bluetooth na HC05 o 06 na katugma sa UART na konektor
  • Isang USB-serial converter na may interface na antas ng TTL. Ginagamit namin ito upang bigyan ang BT-module ng isang natatanging pangalan
  • Sodial SDS011 dust sensor. Nakuha ko ang sa Ebay
  • isang piraso ng veroboard
  • Konektor ng USB-B
  • kawad
  • Isang piraso ng kahoy upang mai-mount ang lahat

Pagkatapos kakailanganin mo ang ilang mga simpleng tool:

  • Isang bucksaw para sa pagputol ng kahoy
  • sipit
  • solder iron at solder
  • pamutol ng wire
  • Mainit na glue GUN
  • Isang piraso ng 8mm na silikon na manggas (wala sa larawan)

Maaari mong i-download ang Sodial SDS011 datasheet dito Sodial SDS011 datasheet

Hakbang 2: Paghahanda ng Module ng Bluetooth

Paghahanda ng Module ng Bluetooth
Paghahanda ng Module ng Bluetooth
Paghahanda ng Module ng Bluetooth
Paghahanda ng Module ng Bluetooth
Paghahanda ng Module ng Bluetooth
Paghahanda ng Module ng Bluetooth
Paghahanda ng Module ng Bluetooth
Paghahanda ng Module ng Bluetooth

Ang BT-Module ay may interface ng UART na may antas na TTL. Maaari itong mai-configure muli ang mga utos na "AT" tulad ng ginawa natin sa mga modem sa internet noong sinaunang panahon. Upang ikonekta ito sa isang terminal na programa sa iyong machine kailangan mong iakma ang UART sa iyong computer. Gumamit ako ng isang USB-RS232 converter na binili ko sa amazon. Nag-apply ako ng isang konektor para sa BT-module at itinuro ang 3, 3V power supply at GND mula sa converter sa BT-module. Pagkatapos ay ikinonekta ko ang kani-kanilang mga linya ng TxD at RxD sa crossover. TxD mula sa USB-converter sa RxD mula sa BT-module at vice versa.

Mayroon akong isang linux machine at ginamit ang cutecom. Matapos ikonekta ang USB-converter ang comport ay "ttyUSB0". Mahahanap mo ang mga pangalan ng comport sa direktoryo ng "/ dev" sa iyong linux machine. Para sa mga gumagamit ng windows inirerekumenda ko ang "hterm". Madali itong patakbuhin. I-type ang "AT" at dapat kang makakuha ng "AT" bilang tugon. Pagkatapos i-type ang "AT + NameSensor" upang bigyan ang module na BT ng pangalang "Sensor"

Hakbang 3: Pag-mount ng Mga Bahagi

Pag-mount ng Mga Bahagi
Pag-mount ng Mga Bahagi
Pag-mount ng Mga Bahagi
Pag-mount ng Mga Bahagi
Pag-mount ng Mga Bahagi
Pag-mount ng Mga Bahagi
Pag-mount ng Mga Bahagi
Pag-mount ng Mga Bahagi

Gupitin ang isang piraso ng kahoy sa isang sukat na angkop para sa pagkuha ng lahat ng mga bahagi. Ikonekta ang lahat ng mga signal tulad ng ipinahiwatig sa eskematiko. Magandang ideya na maglagay ng isang manggas ng silikon sa paligid ng mga wire upang maprotektahan sila. Solder ang USB-B plug sa perfboard. Ginagamit lang ito para sa power supply. Ayusin ang lahat ng mga bahagi ng mga turnilyo sa kahoy na base. Sa wakas ay mainit na pandikit ang mga kable upang ayusin ang mga ito sa kahoy.

Hakbang 4: Pagpapares

Pagpapares
Pagpapares
Pagpapares
Pagpapares

I-power ang application ng sensor sa pamamagitan ng pag-plug-in ng isang power supply ng USB. Ang isang pulang LED sa BT-module ay magsisimulang kumurap. Hindi subukan na ipares ito sa iyong android smartphone. Kailangan mong magpasok ng isang pin code. Ito ay "1234". Matapos ipasok ang code ang iyong smartphone ay dapat ipares sa BT-module.

Hakbang 5: Ang Software

Gusto kong isulat ang mga Android app sa mismong target na platform. sine-save ka nito mula sa lahat ng mga pekeng bagay na dapat mong pag-alagaan kung nagtatrabaho ka sa Android Studio. Nalaman ko ang tatlong naaangkop na mga tool sa pag-unlad sa mismong Android

  • Mintoris Basic. Isang Pangunahing interpreter na may isang mayamang hanay ng mga utos upang mag-isip sa halos lahat ng bagay sa android. Maaari kang lumikha ng mga shortcut para sa iyong mga app. Ang basic na Mintoris ay hindi naglalaman ng isang tagatala. Kaya dapat na na-install mo ang Mintoris sa bawat aparato na iyong ginagamit. Ngunit kailangan mo lang bayaran ito minsan (mga 7 €)
  • Batayan! Matinding mahusay na Pangunahing tagasalin at tagatala (add-on para sa ilang mga €). Halos mga kawit sa lahat ng bagay sa android at maaari kang mag-ipon ng mga tunay na app para ipamahagi ang mga ito nang walang pagkakaroon ng Pangunahing! sa target na aparato. Nakalulungkot na Batayan! kulang sa mahusay na paggana ng tsart ng diagram ng Mintoris
  • Ang AIDE ay isang semi propesyonal na IDE para sa paggawa ng android development sa java sa android. Sa AIDE mayroon kang pinakamahuhusay na kakayahang umangkop ngunit kailangan mong malaman ang java. Ang AIDE ay may taunang gastos na halos 50 €

Pinili ko si Mintoris. Sa seksyong ito, hindi kita bibigyan ng isang tutorial ng programa sa Mintoris ngunit isang maikling paglalarawan ng mga bloke ng pag-andar

Sa sumusunod na bahagi tatlong arrays ay idineklara para sa dalawang linya ng data ng sensor at ang kani-kanilang timestamp. Ginagamit ang data ng timestamp para sa pag-label ng x-axis ng diagramm. Ang Sodial ay naglalabas ng dalawang daloy ng data bawat tinukoy para sa isang espesyal na laki ng maliit na butil. Kinukuha ng dalawang dustdata-arrays ang mga halagang ito.

Bahagyang WakeLock

TextColor 100, 75, 10

TextColorA 50, 50, 50

TextAlign 0

TextSize 24

CLS

Popup na "Dust Sensor Meter (c) ARJ 2017"

Global dustData (), dustDataF (), timeStamp () Global index, pagpipilian, maxData, fileName $

Dim timeStamp (59)

Madilim na dustData (59)

Madilim na dustDataF (59)

Dim Menu $ (4) = "max. 100 datasets", "max. 1000 data set", "max. 5000 set ng data", "max. 10000 set ng data", "Exit"

'Init ang arrays

Para sa i = 0 hanggang 59

dustData (i) = 0

dustDataF (i) = 0

timeStamp (i) = i

Susunod na i

Susunod na naka-configure ang menue ng Listahan. Binibigyan nito ang gumagamit ng pagpipilian upang piliin ang maximum na laki ng data upang kolektahin. Ito ay isang switch ng kaligtasan lamang upang maiwasan ang pagsuso ng smartphone sa walang katapusang data. Ang Function BTgetPaired $ () ay nagbabalik ng isang listahan sa lahat ng mga ipinares na aparato sa android device, kanilang mga pangalan at BT-adress.

Sa menu $ (), pagpipilian

'Piliin ang maximum na halaga kung ang data ay maiimbak

runLevel = 1

Piliin ang pagpipilian

Kaso 0 maxData = 100

Kaso 1 maxDate = 1000

Kaso 2 maxData = 5000

Kaso 3 maxData = 10000

Kaso 4 maxData = 0

Tapusin ang Piliin

»Connect sensor

dim pares na $ (0)

pares na $ () = BTGetPaired $ ()

Kung pares ng $ (0) = "wala" Kung gayon

I-print ang "Walang nahanap na mga nakapares na aparato. Naka-on ba ang BT?" I-print ang "Natapos ang programa"

Tapusin

Tapusin kung

Maglagay ng pares na $ (), aparato $

pangalanan $ = ItemExtract $ (aparato $, 0)

address $ = ItemExtract $ (aparato $, 1)

BTConnect 1, address $

'Maghintay para sa koneksyon

PAGSUSUNOD SA

I-print ang "Sinusubukang kumonekta sa"; address $

Para sa i = 1 hanggang 20

Pagsulong i / 2

Kung BTGetstate (1) = 4 Pagkatapos Exit For Wait 1000

Susunod na i

Pag-usad OFF

'Sa tagumpay kumonekta sa BT aparato

Kung BTGetState (1) = 4 Pagkatapos I-print ang "Nakakonekta" Ibang Print "Hindi makakonekta sa"; pangalan ng $

I-print ang "Natapos ang programa"

Tapusin

Tapusin kung

Ipinapakita ng susunod na bloke ang data aquinary. Para sa bawat sesyon ng data ang isang file ay awtomatikong binubuksan at pinangalanan pagkatapos ng oras at petsa. Pagkatapos ay binabasa ng loop ang data ng sensor. Ang data ay naka-pack sa maraming mga byte. Ang isang hanay ng mga byte ay kinilala ng dalawang character na ASCII 170 at 171. Ang sumusunod na data ay muling naiayos at napunan sa mga dust-arrays

Nakuha ang Mga Grapika

'Buksan ang datafile upang magsulat

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

Buksan ang 1, fileName $, "w +" I-print "Binuksan ang datafile"; fileName $ Writeln 1, FormatTime $ (Oras (), "yy-MM-dd")

Writeln 1, "Time Dust2.5 Dust10"

'Punan ang array ng sinusukat na data

data $ = "" packet $ = ""

index = 0

Gawin Habang maxData> 0

BTRead 1, packet $, 10

data $ = data $ + packet $

Kung Len (data $)> = 10 Kung gayon

Kung (ASCII (Kaliwa $ (data $, 1)) = 170) & (ASCII (Kanan $ (data $, 1)) = 171) Kung gayon

dustDataF (index) = ASCII (Mid $ (data $, 2, 1))

dustDataF (index) = (dustDataF (index) + 256 * ASCII (Mid $ (data $, 3, 1))) / 10

dustData (index) = ASCII (Mid $ (data $, 4, 1))

dustData (index) = (dustData (index) + 256 * ASCII (Mid $ (data $, 5, 1))) / 10

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

data $ = ""

maxData = maxData-1

index = index + 1

Kung index> 59 Kung gayon index = 0

dustData (index) = 0

dustDataF (index) = 0

Tapusin kung

Tapusin kung

DrawGraph ()

Maghintay ng 100

Loop

Magsara 1

Naka-off ang Graphics

CLS Print "Natapos ang Program"

Tapusin

Ang huling bahagi ay isang subroutine na tinatawag pagkatapos ng bawat pagtanggap ng data. Nilinaw nito ang screen, binabago muli ang diagram sa aktwal na data na nakaimbak sa mga dust- at timestamp arrays.

'Iguhit ang mga coordinate, ang mga label, ticks at pati na rin ang mga curve ng data

Sub DrawGraph ()

'Sa mode na Mga graphic ang screen ay nalilimas sa kasalukuyang kulay

Kulay 0, 0, 0

CLS

Kulay 0, 0, 100

'Itakda ang kulay ng graphics na gagamitin upang iguhit ang mga linya ng grid

TextColor 100, 100, 100, 50

Ang 'TextColor ay ang kulay ng pangunahing pamagat ng grid

TextColorA 100, 100, 100

Ginagamit ang 'TextColorA para sa mga pamagat ng Axis at mga anotasyon ng grid.

'Itakda ang laki ng teksto ng pamagat ng axis

'Ang pangunahing pamagat ng grid ay 2x sa laki na ito

TextSize 20

FixDecimal 0

'Itakda upang ipakita ang 2 decimal na lugar

PadDigits 2

'Gumuhit ng isang grid para sa grap' Itakda ang saklaw at pamagat ng X & Y

Axis AxisX 0, 59, "Oras / s"

AxisY 0, 10000, "ug / m3"

Grid 3, "konsentrasyon ng alikabok"

'Gumuhit ng Mga Dust Graph

Kulay 100, 0, 0

Oras ng GraphXYStamp (), dustDataF ()

Kulay 0, 100, 0

TimeStamp ng GraphXY (), 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

Bumalik ka

I-download ang source code dito

Hakbang 6: Pagsubok

Image
Image
Pagsusulit
Pagsusulit
Pagsusulit
Pagsusulit
Pagsusulit
Pagsusulit

Patayin ang sensor at simulan ang app. Mula sa listahan ng mga nakapares na aparato piliin ang isang pinangalanang "Sensor". Matapos ikonekta ang sensor ang screen ay magsisimulang ipakita ang data. Kasabay ang data file na inilalaan. Pagkatapos matapos ang fashion maaari mong gamitin ang GnuPlot upang ipakita ang data. Gamitin ang file na "Test.gp" sa GnuPlot upang i-configure ang GnuPlot para sa pagpapakita ng isang datafile na pinangalanang "Test.dat". Maaari mo rin itong mahanap dito

Tingnan ang video para sa higit pang mga detalye at pagsubok. Magkaroon ng maraming kasiyahan at maraming mga ideya!

Inirerekumendang: