Mundarija:

Android -dagi sodali chang sensori: 6 qadam
Android -dagi sodali chang sensori: 6 qadam

Video: Android -dagi sodali chang sensori: 6 qadam

Video: Android -dagi sodali chang sensori: 6 qadam
Video: Юный Гений Превращает Безобидного Робота В Неуязвимую Боевую Машину 2024, Noyabr
Anonim
Android uchun natriy chang sensori
Android uchun natriy chang sensori

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 nima kerak
Sizga nima kerak
Sizga nima kerak
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

Bluetooth modulini tayyorlash
Bluetooth modulini tayyorlash
Bluetooth modulini tayyorlash
Bluetooth modulini tayyorlash
Bluetooth modulini tayyorlash
Bluetooth modulini tayyorlash
Bluetooth modulini tayyorlash
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

Qismlarni o'rnatish
Qismlarni o'rnatish
Qismlarni o'rnatish
Qismlarni o'rnatish
Qismlarni o'rnatish
Qismlarni o'rnatish
Qismlarni o'rnatish
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

Ulanish
Ulanish
Ulanish
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

Image
Image
Sinov
Sinov
Sinov
Sinov
Sinov
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: