Mundarija:
- 1 -qadam: Sizga nima kerak
- 2 -qadam: Bluetooth modulini tayyorlash
- 3 -qadam: qismlarni o'rnatish
- 4 -qadam: ulanish
- 5 -qadam: Dasturiy ta'minot
- 6 -qadam: Sinov
Video: Android -dagi sodali chang sensori: 6 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
Bir yil oldin bir do'stim atrof -muhit monitoringi bo'yicha seminar o'tkazdi. Seminarning maqsadi - chang kontsentratsiyasi xaritalarini tez -tez yangilab turadigan serverga o'lchov ma'lumotlarini kiritish uchun malina pi taxtasiga ulangan chang sensori yaratish. Do'stim sensorlar ma'lumotlarini to'g'ridan -to'g'ri smartfonga kuzatish va yozish uchun olishning iloji bormi, deb so'radi. Shunday qilib, men ma'lumotlar varag'i uchun Internetni qazib oldim va sensor 9600Baud 8N1 protokoli bilan oddiy UART interfeysiga ega ekanligini ko'rdim. Ammo UARTni smartfonga qanday ulash mumkin? Xo'sh, bu oson. Men Android -da taqlid qilingan komportni ta'minlaydigan hamma joyda mavjud bo'lgan kichik Bluetooth modullaridan birini ishlatishim kerak edi. Endi men qanday erishganimni ko'ring.
1 -qadam: Sizga nima kerak
Sizga quyidagi qismlar kerak bo'ladi
- Simli sodali interfeys uchun JST XH 7-pinli ulanish ulagichi. Men o'zimni Ebay -dan sotib oldim.
- UART ulagichiga mos keladigan HC05 yoki 06 Bluetooth moduli
- TTL darajali interfeysli USB-seriyali konvertor. Biz buni BT-modulga o'ziga xos nom berish uchun ishlatamiz
- Sodial SDS011 chang sensori. Men o'zimni Ebaydan oldim
- veroboardning bir qismi
- USB-B ulagichi
- sim
- Hamma narsani o'rnatish uchun yog'och bo'lak
Keyin sizga oddiy vositalar kerak bo'ladi:
- Yog'ochni kesish uchun pul
- cımbızlar
- lehim temir va lehim
- tel kesuvchi
- Issiq yopishtiruvchi qurol
- 8 mm silikon qisma qismi (rasmda emas)
Bu erda Sodial SDS011 ma'lumotlar jadvalini yuklab olishingiz mumkin
2 -qadam: Bluetooth modulini tayyorlash
BT-moduli TTL darajasidagi UART interfeysiga ega. Buni "AT" buyruqlari bilan, biz ilgari Internet -modemlarda bo'lgani kabi, qayta sozlash mumkin. Uni mashinangizdagi terminal dasturiga ulash uchun siz UARTni kompyuteringizga moslashtirishingiz kerak. Men Amazonda sotib olgan USB-RS232 konvertoridan foydalandim. Men BT-moduli uchun ulagichni qo'lladim va 3, 3V quvvat manbai va GND ni konvertordan BT-moduliga o'tkazdim. Keyin men tegishli TxD va RxD liniyalarini krossoverga uladim. TxD USB-konvertordan RxD-ga BT-modulidan va aksincha.
Menda linux mashinasi bor va cutecom ishlatilgan. USB-konvertorni ulaganingizdan so'ng komport "ttyUSB0" edi. Kompyuter nomlarini Linux mashinangizdagi "/dev" katalogidan topishingiz mumkin. Windows foydalanuvchilari uchun "hterm" ni tavsiya qilaman. Ishlash oson. "AT" yozing va javob sifatida "AT" ni olishingiz kerak. Keyin BT-modulga "Sensor" nomini berish uchun "AT+NameSensor" yozing.
3 -qadam: qismlarni o'rnatish
Yog'och bo'lagini barcha qismlarini olish uchun mos o'lchamda kesib oling. Barcha signallarni sxemada ko'rsatilgan tarzda ulang. Simlarni himoya qilish uchun ularni atrofiga kremniy gilzani yopish yaxshidir. Perfboardga USB-B vilkasini lehimlang. U faqat elektr ta'minoti uchun ishlatiladi. Yog'och taglikdagi barcha qismlarni vintlar bilan mahkamlang. Nihoyat, kabellarni yog'ochga mahkamlash uchun ularni issiq yopishtiring.
4 -qadam: ulanish
Sensor dasturini USB quvvat manbaiga ulang. BT-modulidagi qizil LED yonib-o'chib turadi. Buni Android smartfoningiz bilan bog'lashga urinmang. Siz pin kodini kiritishingiz kerak. Bu "1234". Kodni kiritgandan so'ng, smartfoningiz BT-moduli bilan bog'lanishi kerak.
5 -qadam: Dasturiy ta'minot
Men maqsadli platformaning o'zida Android ilovalarini yozishni yaxshi ko'raman. Agar siz Android Studio bilan ishlayotgan bo'lsangiz, bu sizni emulyatsiya qilish kerak bo'lgan narsalardan qutqaradi. Men Android -ning o'zida uchta mos ishlab chiqish vositasini topdim
- Mintoris asosiy. Ko'p sonli buyruqlar to'plamiga ega bo'lgan asosiy tarjimon Android -dagi deyarli hamma narsani o'ylab topadi. Siz ilovalar uchun yorliqlar yaratishingiz mumkin. Mintoris basicda kompilyator yo'q. Shunday qilib, siz foydalanadigan har bir qurilmaga Mintoris -ni o'rnatgan bo'lishingiz kerak. Ammo buning uchun faqat bir marta to'lash kerak (taxminan 7 evro)
- Asosiy! Juda yaxshi asosiy tarjimon va kompilyator (bir necha evroga qo'shimcha). Deyarli hamma narsa Android -da joylashgan va siz ularni Basic -ga ega bo'lmagan holda tarqatish uchun haqiqiy ilovalarni yig'ishingiz mumkin! maqsadli qurilmada. Afsuski, asosiy! Mintorisning ajoyib diagramma diagramma funktsiyalari yo'q
- AIDE - bu Android -da java -da android -ni ishlab chiqish uchun yarim professional IDE. AIDE yordamida siz juda moslashuvchan bo'lasiz, lekin siz javani o'rganishingiz kerak. AIDE yillik xarajatlari taxminan 50 evroni tashkil qiladi
Men Mintorisni tanladim. Bu bo'limda men sizga Mintoris dasturlash bo'yicha qo'llanma bermayman, lekin funktsional bloklarning qisqacha tavsifini beraman
Keyingi qismda ikkita sensorli ma'lumotlar liniyasi va tegishli vaqt tamg'alari uchun uchta massiv e'lon qilingan. Vaqt tamg'asi ma'lumotlari diagrammaning x o'qini belgilash uchun ishlatiladi. Sodial har bir alohida zarracha o'lchami uchun ko'rsatilgan ikkita ma'lumot oqimini chiqaradi. Ikki changdata-massiv bu qiymatlarni oladi.
WakeLock qisman
TextColor 100, 75, 10
TextColorA 50, 50, 50
TextAlign 0
TextSize 24
CLS
"Chang sensori o'lchagich (c) ARJ 2017" qalqib chiquvchi oynasi
Global dustData (), dustDataF (), timeStamp () Global indeks, tanlov, maxData, fileName $
Qorong'i vaqt belgisi (59)
Kichik chang Ma'lumotlar (59)
Dim chang DataF (59)
Dim menyusi $ (4) = "maks. 100 ta ma'lumotlar to'plami", "maks. 1000 ta ma'lumotlar to'plami", "maks. 5000 ma'lumotlar to'plami", "maks. 10000 ma'lumotlar to'plami", "Chiqish"
'Massivlarni boshlang
I = 0 dan 59 gacha
dustData (i) = 0
dustDataF (i) = 0
timeStamp (i) = i
Keyingi i
Keyin ro'yxat menyusi tuziladi. Bu foydalanuvchiga yig'iladigan ma'lumotlarning maksimal hajmini tanlash imkoniyatini beradi. Bu shunchaki smartfonning cheksiz ma'lumotlarni so'rib olishiga yo'l qo'ymaslik uchun xavfsizlik tugmasi. BTgetPaired $ () funktsiyalari android qurilmasidagi barcha bog'langan qurilmalar, ularning ismlari va BT-manzili ro'yxatini qaytarib beradi.
Menyu $ () menyusi, tanlov
Ma'lumot saqlanadigan bo'lsa, maksimal miqdorni tanlang
runLevel = 1
Tanlovni tanlang
Vaziyat 0 maxData = 100
Vaziyat 1 maxDate = 1000
2 -holat maxData = 5000
3 -holat maxData = 10000
Vaziyat 4 maxData = 0
Tanlashni tugatish
Sensorni ulang
xira juft $ (0)
juft $ () = BTGetPaired $ ()
Agar $ (0) = "none" juftligi bo'lsa
Chop etish "Bog'langan qurilmalar topilmadi. BT yoqilganmi?" "Dastur to'xtatildi" ni chop eting
Oxiri
Endif
$ () Ro'yxat juftligi, $ qurilma
nomi $ = ItemExtract $ (qurilma $, 0)
manzil $ = ItemExtract $ (qurilma $, 1)
BTConnect 1, manzil $
'Ulanishni kuting
Progress ON
"Ulanishga harakat qilyapman" ni chop eting; manzil $
I = 1 dan 20 gacha
Taraqqiyot i/2
Agar BTGetstate (1) = 4 bo'lsa, 1000 kutish uchun chiqing
Keyingi i
Progress OFF
Muvaffaqiyatli bo'lsa, BT qurilmasiga ulaning
Agar BTGetState (1) = 4 bo'lsa, "Bog'langan" ni chop eting, boshqa chop etish "ulana olmadi"; nomi $
"Dastur to'xtatildi" ni chop eting
Oxiri
Endif
Keyingi blok ma'lumotlarning paydo bo'lishini ko'rsatadi. Har bir ma'lumot sessiyasi uchun fayl avtomatik ravishda ochiladi va vaqt va sana bilan nomlanadi. Keyin tsikl sensor ma'lumotlarini o'qiydi. Ma'lumotlar bir necha baytda to'plangan. Baytlar to'plami ikkita ASCII 170 va 171 belgilar bilan belgilanadi. Quyidagi ma'lumotlar qayta tashkil etilgan va chang massivlariga to'ldirilgan.
Grafika yoqilgan
Yozish uchun ma'lumotlar faylini oching
fileName $ = FormatTime $ (t, "yyyy-MM-dd-kk-mm-ss") + ".dat"
1-ni oching, fileName $, "w+" "Ochilgan ma'lumotlar faylini" chop eting; fileName $ Writeln 1, FormatTime $ (Time (), "yy-MM-dd")
Yozuvchi 1, "Vaqt kukuni 2.5 chang 10"
O'lchangan ma'lumotlar bilan qatorni to'ldiring
ma'lumotlar $ = "" paketi $ = ""
indeks = 0
MaxData> 0 ni bajaring
BTo'q 1, paket $, 10
ma'lumotlar $ = ma'lumotlar $+paket $
Agar Len (ma'lumotlar $)> = 10 bo'lsa
Agar (ASCII (Chap $ (ma'lumotlar $, 1)) = 170) & (ASCII (O'ng $ (ma'lumotlar $, 1)) = 171) Keyin
dustDataF (indeks) = ASCII (O'rta $ (ma'lumotlar $, 2, 1))
dustDataF (indeks) = (dustDataF (indeks)+256*ASCII (O'rta $ (ma'lumotlar $, 3, 1)))/10
dustData (indeks) = ASCII (O'rta $ (ma'lumotlar $, 4, 1))
dustData (indeks) = (dustData (indeks)+256*ASCII (O'rta $ (ma'lumotlar $, 5, 1)))/10
Writeln 1, FormatTime $ (Time (), "kk: mm: ss") + "" + Str $ (dustDataF (indeks)) + "" + Str $ (dustData (indeks))
ma'lumotlar $ = ""
maxData = maxData-1
indeks = indeks+1
Agar indeks> 59 bo'lsa, indeks = 0
dustData (indeks) = 0
dustDataF (indeks) = 0
Endif
Endif
DrawGraph ()
100 kuting
Loop
Yopish 1
Grafika o'chirilgan
CLS Print "Dastur to'xtatildi"
Oxiri
Oxirgi qism - har bir ma'lumotlarni qabul qilishdan so'ng chaqiriladigan kichik dastur. U ekranni tozalaydi, chang va vaqt tamg'asi qatorlarida saqlangan haqiqiy ma'lumotlar bilan diagrammani qayta tuzadi.
Koordinatalarni, teglarni, shomillarni, shuningdek ma'lumotlar egri chizig'ini chizish
Sub DrawGraph ()
Grafika rejimida ekran joriy rangga tozalanadi
Rang 0, 0, 0
CLS
Rang 0, 0, 100
Tarmoqli chiziqlarni chizish uchun ishlatiladigan grafik rangini o'rnating
TextColor 100, 100, 100, 50
'TextColor - bu panjara bosh sarlavhasining rangi
TextColorA 100, 100, 100
'TextColorA Axis nomlari va panjara izohlari uchun ishlatiladi.
Eksa sarlavhasi matnining hajmini belgilang
Tarmoqning asosiy sarlavhasi bu o'lchamdan 2 baravar katta
TextSize 20
FixDecimal 0
'2 ta kasrli joyni ko'rsatishga sozlang
PadDigits 2
'Grafika uchun panjara chizish' X va Y diapazonini va sarlavhasini o'rnating
Axis AxisX 0, 59, "Vaqt/soniya"
AxisY 0, 10000, "ug/m3"
3 -grid, "Chang kontsentratsiyasi"
'Chang grafikalarini chizish
Rang 100, 0, 0
GraphXY timeStamp (), dustDataF ()
Rang 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
Qaytish
Manba kodini bu yerdan yuklab oling
6 -qadam: Sinov
Sensorni yoqing va dasturni ishga tushiring. Birlashtirilgan qurilmalar ro'yxatidan "Sensor" nomli qurilmani tanlang. Sensor ulangandan so'ng, ekranda ma'lumotlarni ko'rsatish boshlanadi. Bir vaqtning o'zida ma'lumotlar fayli ajratiladi. Modani tugatgandan so'ng, ma'lumotlarni ko'rsatish uchun GnuPlot -dan foydalanishingiz mumkin. GnuPlot -ni "Test.dat" nomli ma'lumotlar faylini ko'rsatish uchun sozlash uchun GnuPlot -dagi "Test.gp" faylidan foydalaning. Siz bu erda ham topishingiz mumkin
Batafsil ma'lumot va sinov uchun videoni ko'ring. Ko'p kulgili va ko'proq fikrlarga ega bo'ling!
Tavsiya:
Sodali idishlardan egizak qo'ng'iroqli budilnik: 7 qadam (rasmlar bilan)
Sodali idishlardan egizak qo'ng'iroqli budilnik: bu yo'riqnomada sodali suv qutilaridan egizak qo'ng'iroqli budilnikni qanday yasash mumkinligi ko'rsatilgan. Loyihada siyoh olib tashlangan sodali qutilar ishlatiladi (Havola: Sodali idishlardan siyohni olib tashlash). Bu budilnikni to'liq ishlashi uchun DIY kvartsli soat moduli birlashtirildi
Qor uchun Arduino Bluetooth chang'i RC avtomobili: 5 qadam
Qor uchun Arduino Bluetooth chang'i RC avtomobili: Bu RC avtomashinasi bizni ishlab chiqarishga taxminan 3 kun davom etdi, shu jumladan 3D bosib chiqarish vaqti. Bu RC avtomobili HC 05 Bluetooth moduli, arduino uchun dvigatel va ikkita tishli dvigatel bilan ishlab chiqarilgan. Bu siz uchun haqiqatan ham qiziqarli loyiha va tez rad javobini berish
Chang ko'taruvchi (Sumo Bot): 4 qadam
Dust Ruffler (Sumo Bot): asboblar va materiallar ro'yxati Dust Ruffler qurilishida ishlatiladigan asboblar va materiallar juda sodda va sotib olish oson. Elektronika: Batareya to'plami, doimiy aylanadigan yuqori torkli servo (x3), qabul qilgich va masofadan boshqarish pulti. 3x2 'ko'pikli yadroli x-a
Chang tayoqcha: 5 qadam
Chang tayoqchasi: Men kukunli tayoqchani qanday yaratganim haqida batafsil ko'rsatmalar. ******* Ogohlantirish zarar etkazadi. Agar siz sim va cho'tka orasiga kirsangiz. ******** Buning maqsadi - kichkina buyumni (bu holda tanga halqaga aylangan) bo'yash
Sodali farishta: 7 qadam (rasmlar bilan)
Sodali farishta: Bu ko'rsatma sizga sodali suv idishidan qanday qilib farishta bezak yasashni ko'rsatib beradi, agar u asta -sekin tashqarida sovuqlashsa va shimoliy yarim sharda kunlar qisqaroq bo'lsa, shamni yoqish vaqti keldi. men xohlagan sham