Talaan ng mga Nilalaman:
- Hakbang 1: Ano ang Kailangan Mo
- Hakbang 2: Paghahanda ng Module ng Bluetooth
- Hakbang 3: Pag-mount ng Mga Bahagi
- Hakbang 4: Pagpapares
- Hakbang 5: Ang Software
- Hakbang 6: Pagsubok
Video: Sodial Dust Sensor sa Android: 6 na Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:14
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
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
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
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
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
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:
Paano Lumikha ng isang Android App Sa Android Studio: 8 Hakbang (na may Mga Larawan)
Paano Lumikha ng isang Android App Sa Android Studio: Ituturo sa iyo ng tutorial na ito ang mga pangunahing kaalaman sa kung paano bumuo ng isang Android app gamit ang kapaligiran sa pag-unlad ng Android Studio. Habang nagiging mas karaniwan ang mga Android device, tataas lamang ang pangangailangan para sa mga bagong app. Ang Android Studio ay isang madaling gamitin (isang
Ang Dust Ruffler (Sumo Bot): 4 na Hakbang
Ang Dust Ruffler (Sumo Bot): Listahan ng tool at materyal Ang mga tool at materyales na ginamit upang maitayo ang Dust Ruffler ay napaka prangka at madaling kunin. Elektronika: Pack ng baterya, tuluy-tuloy na pag-ikot ng mga high torque servos (x3), receiver, at remote. 3x2 'sheet ng foam core x-a
Arduino Dust Study: 8 Hakbang
Pag-aaral ng Arduino Dust: Ano ang gusto na mabuhay sa Mars? Humihinga ba ang hangin? Ito ba ay ligtas? Gaano karaming alikabok ang mayroon? Gaano kadalas ang mga bagyo? Naisip mo ba ang sagot sa alinman sa mga katanungang ito?
Station ng Pagsubaybay na Pinapatakbo ng Arduino Powered Dust: 4 Mga Hakbang (na may Mga Larawan)
Arduino Powered Dust Particle Monitoring Station: Madali kang makakagawa ng isang DIY internet ng mga aparato ng mga bagay na sinusubaybayan ang polusyon sa alikabok sa iyong bahay nang mas mababa sa $ 50 at maabisuhan kapag ang antas ng alikabok ay napakataas upang maaari mong mai-aerate ang silid, o maaari mong itakda ito sa labas at maabisuhan kung
Ang Samsung I600 / Blackjack Screen Dust Fix: 4 na Hakbang
Samsung I600 / Blackjack Screen Dust Fix: Kamusta lahat, kung ikaw (tulad ko) ay mayroong isang Samsung SGH-i600 (o blackjack sa Amerika) at napansin ang pagpasok ng alikabok sa yunit at pagkolekta sa kaliwang sulok sa itaas ng screen - sa palagay ko Mayroon akong pag-aayos para sa iyo. Bago ang imahe sa pamamagitan ng uri ng pahintulot mula sa Tracy