Mündəricat:

Android -də Sodial Toz Sensoru: 6 addım
Android -də Sodial Toz Sensoru: 6 addım

Video: Android -də Sodial Toz Sensoru: 6 addım

Video: Android -də Sodial Toz Sensoru: 6 addım
Video: মোবাইল দিয়ে ভিডিও এডিটিং | InShot Video Editing Full Bangla Tutorial | Tech Unlimited 2024, Iyul
Anonim
Android -də Sodial Toz Sensoru
Android -də Sodial Toz Sensoru

Bir il əvvəl bir dostum ətraf mühitin monitorinqi ilə bağlı həftə sonu seminar keçirdi. Seminarın məqsədi, tez -tez yenilənən toz konsentrasiyası xəritələrini təqdim edən bəzi serverlərdə ölçü məlumatlarını yerləşdirmək üçün moruq pi lövhəsinə bağlı bir toz sensoru qurmaq idi. Dostum izləmə və qeydiyyat üçün sensor məlumatlarını birbaşa smartfonunda əldə etməyin bir yolunun olub olmadığını soruşdu. Bir məlumat cədvəli üçün İnternet qazdım və sensorun 9600Baud 8N1 protokolu olan sadə bir UART interfeysinə sahib olduğunu gördüm. Ancaq UART -ı bir smartfona necə bağlamaq olar? Yaxşı, bu asandır. Android -də təqlid edilmiş bir komport təmin edən hər yerdə olan kiçik Bluetooth modullarından birini istifadə etməli oldum. İndi gör necə bacardım.

Addım 1: Nə lazımdır

Nə lazımdır
Nə lazımdır
Nə lazımdır
Nə lazımdır

Aşağıdakı hissələrə ehtiyacınız var

  • Telli Sodial interfeysi üçün bir cüt bağlayıcı JST XH 7 pin. Ebaydan özüm aldım.
  • UART konnektoru ilə uyğun olan Bluetooth modulu HC05 və ya 06
  • TTL səviyyəli interfeysi olan USB seriyalı çevirici. BT moduluna unikal bir ad vermək üçün bundan istifadə edirik
  • Sodial SDS011 toz sensoru. Ebaydan aldım
  • veroboard parçası
  • USB-B konnektoru
  • tel
  • Hər şeyi taxmaq üçün taxta parçası

Sonra bəzi sadə vasitələrə ehtiyacınız olacaq:

  • Odun kəsmək üçün bir taxta
  • cımbız
  • lehim dəmir və lehim
  • tel kəsici
  • İsti yapışqan silahı
  • 8 mm silikon qollu bir parça (şəkil yoxdur)

Sodial SDS011 məlumat cədvəlini buradan yükləyə bilərsiniz Sodial SDS011

Addım 2: Bluetooth Modulunun Hazırlanması

Bluetooth modulunun hazırlanması
Bluetooth modulunun hazırlanması
Bluetooth modulunun hazırlanması
Bluetooth modulunun hazırlanması
Bluetooth modulunun hazırlanması
Bluetooth modulunun hazırlanması
Bluetooth modulunun hazırlanması
Bluetooth modulunun hazırlanması

BT-Modul, TTL səviyyəli UART interfeysinə malikdir. Qədim zamanlarda internet modemlərində etdiyimiz kimi "AT" əmrləri ilə yenidən konfiqurasiya edilə bilər. Cihazınızdakı bir terminal proqramına qoşulmaq üçün UART -ı kompüterinizə uyğunlaşdırmalısınız. Amazonda aldığım USB-RS232 çeviricisini istifadə etdim. BT modulu üçün bir bağlayıcı tətbiq etdim və 3, 3V enerji təchizatı və GND-ni çeviricidən BT-moduluna yönləndirdim. Sonra krossoverdə müvafiq TxD və RxD xətlərini bağladım. USB çeviricidən TxD, BT modulundan RxD-ə və əksinə.

Linux maşınım var və cutecom istifadə edirəm. USB çeviricisini bağladıqdan sonra komport "ttyUSB0" idi. Kompüter adlarını linux maşınınızdakı "/dev" qovluğunda tapa bilərsiniz. Windows istifadəçiləri üçün "hterm" tövsiyə edərdim. İşlətmək asandır. "AT" yazın və cavab olaraq "AT" almalısınız. Sonra BT moduluna "Sensor" adını vermək üçün "AT+NameSensor" yazın.

Addım 3: Parçaların quraşdırılması

Parçaların quraşdırılması
Parçaların quraşdırılması
Parçaların quraşdırılması
Parçaların quraşdırılması
Parçaların quraşdırılması
Parçaların quraşdırılması
Parçaların quraşdırılması
Parçaların quraşdırılması

Bütün hissələri götürmək üçün uyğun olan bir ağac parçası kəsin. Şemada göstərildiyi kimi bütün siqnalları bağlayın. Telləri qorumaq üçün tellərin ətrafına bir silikon manşon taxmaq yaxşı bir fikirdir. Perfboardda USB-B fişini lehimləyin. Yalnız enerji təchizatı üçün istifadə olunur. Bütün hissələri taxta bazaya vintlər ilə bərkidin. Nəhayət, kabelləri taxtaya yapışdırmaq üçün isti yapışdırın.

Addım 4: Cütləşdirmə

Cütləşmə
Cütləşmə
Cütləşmə
Cütləşmə

Sensor tətbiqini USB enerji təchizatı ilə bağlayın. BT modulundakı qırmızı LED yanıb-sönməyə başlayacaq. Android smartfonunuzla birləşdirməyə çalışmayın. Bir pin kodu daxil etməlisiniz. Bu "1234" dir. Kodu daxil etdikdən sonra smartfonunuz BT modulu ilə birləşdirilməlidir.

Addım 5: Proqram təminatı

Android tətbiqlərini hədəf platformanın özündə yazmağı sevirəm. Android Studio ilə işləyirsinizsə, qayğı göstərməli olduğunuz bütün emulyasiya şeylərindən sizi xilas edir. Android -in özündə üç uyğun inkişaf vasitəsi tapdım

  • Əsas Mintoris. Android -də demək olar ki, hər şeyi araşdırmaq üçün zəngin bir sıra əmrləri olan əsas tərcüməçi. Tətbiqləriniz üçün qısa yollar yarada bilərsiniz. Mintoris basic -də tərtibçi yoxdur. Beləliklə, istifadə etdiyiniz hər bir cihazda Mintoris quraşdırmalısınız. Ancaq bunun üçün yalnız bir dəfə ödəməlisiniz (təxminən 7 €)
  • Əsas! Həddindən artıq yaxşı Əsas tərcüməçi və tərtibatçı (bəzi avrolara əlavə). Demək olar ki, Android -də hər şeyi bağlayırsınız və Basic olmadan onları yaymaq üçün real tətbiqlər toplaya bilərsiniz! hədəf cihazda. Təəssüf ki, Əsas! Mintorisin əla diaqram diaqram funksiyalarından məhrumdur
  • AIDE, android -də javada android inkişaf etdirmək üçün yarı peşəkar bir IDE -dir. AIDE ilə maksimum elastikliyə sahibsiniz, ancaq java öyrənməlisiniz. AIDE -nin illik xərcləri təxminən 50 avrodur

Mintorisi seçdim. Bu bölmədə sizə Mintoris proqramlaşdırma dərsliyi verməyəcəyəm, ancaq funksiya bloklarının qısa təsvirini verəcəyəm

Növbəti hissədə iki sensor məlumat xətti və müvafiq zaman damgaları üçün üç sıra elan edilir. Zaman damgası məlumatları, diaqramın x oxunu etiketləmək üçün istifadə olunur. Sodial, xüsusi bir hissəcik ölçüsü üçün hər biri müəyyən edilmiş iki məlumat axını çıxarır. İki toz məlumat dizisi bu dəyərləri alır.

WakeLock Qismən

TextColor 100, 75, 10

TextColorA 50, 50, 50

TextAlign 0

TextSize 24

CLS

Popup "Toz Sensor Ölçən (c) ARJ 2017"

Global dustData (), dustDataF (), timeStamp () Qlobal indeks, seçim, maxData, fileName $

Qaranlıq vaxt damgası (59)

Az tozlu məlumatlar (59)

Qaranlıq tozDataF (59)

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

'Dizileri başlayın

İ = 0 ilə 59 arasında

dustData (i) = 0

dustDataF (i) = 0

vaxt damgası (i) = i

Sonrakı i

Sonra Siyahı menyusu konfiqurasiya olunur. Bu istifadəçiyə toplamaq üçün maksimum məlumat ölçüsünü seçmək imkanı verir. Bu, smartfonun sonsuz məlumatları udmasını qarşısını almaq üçün yalnız bir təhlükəsizlik açarıdır. Funksiyalar BTgetPaired $ (), android cihazdakı bütün qoşalaşmış cihazları, adlarını və BT-ünvanını əks etdirən bir siyahı verir.

Menyu $ (), seçim

'Məlumatların saxlanılması üçün maksimum məbləği seçin

runLevel = 1

Seçim seçin

Vəziyyət 0 maxData = 100

Dava 1 maxDate = 1000

Vəziyyət 2 maxData = 5000

Case 3 maxData = 10000

Vəziyyət 4 maxData = 0

Seçimi bitir

'' Sensoru qoşun

qaranlıq cüt $ (0)

cüt $ () = BTGetPaired $ ()

Əgər $ (0) = "none" cütü olarsa

Çap et "Cütlənmiş cihaz tapılmadı. BT aktivdir?" "Proqram dayandırıldı" yazdırın

Bitirin

Endif

Siyahı cütü ($), cihaz $

adı $ = ItemExtract $ (cihaz $, 0)

ünvan $ = ItemExtract $ (cihaz $, 1)

BTConnect 1, ünvan $

'Bağlantı gözləyin

Tərəqqi AÇIQ

"Bağlanmağa çalışılır" yazın; ünvan $

İ = 1 ilə 20 arasında

Tərəqqi i/2

BTGetstate (1) = 4 olarsa, 1000 gözləmək üçün çıxın

Sonrakı i

Gediş OFF

'Uğur qazananda BT cihazına qoşulun

BTGetState (1) = 4 Əgər "Bağlandı" Çap et, Başqa Çap "Qoşula bilmədi"; adı $

"Proqram dayandırıldı" yazdırın

Bitirin

Endif

Növbəti blok məlumatların əldə olunmasını göstərir. Hər bir məlumat sessiyası üçün bir fayl avtomatik olaraq açılır və vaxt və tarixə görə adlandırılır. Sonra döngə sensor məlumatlarını oxuyur. Məlumatlar bir neçə baytda yığılır. Bir bayt dəsti iki ASCII simvolu 170 və 171 ilə müəyyən edilir. Aşağıdakı məlumatlar yenidən təşkil edilir və toz-massivlərə doldurulur.

Qrafika aktivdir

Yazmaq üçün məlumat faylını açın

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

1, fileName $, "w+" Çap et "Açılmış məlumat faylını" açın; fileName $ Writeln 1, FormatTime $ (Time (), "yy-MM-dd")

Yazı 1, "Zaman Tozu2.5 Toz10"

'Dizini ölçülmüş məlumatlar ilə doldurun

məlumat $ = "" paket $ = ""

indeks = 0

MaxData> 0 edərkən bunu edin

BTR 1, paket $, 10

data $ = data $+paket $

Əgər Len (data $)> = 10 Sonra

Əgər (ASCII (Sol $ (data $, 1)) = 170) & (ASCII (Sağ $ (data $, 1)) = 171) Sonra

dustDataF (indeks) = ASCII (Orta $ (data $, 2, 1))

dustDataF (indeks) = (dustDataF (indeks)+256*ASCII (Orta $ (data $, 3, 1)))/10

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

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

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

məlumat $ = ""

maxData = maxData-1

indeks = indeks+1

Əgər indeks> 59 Sonra indeks = 0

dustData (indeks) = 0

dustDataF (indeks) = 0

Endif

Endif

DrawGraph ()

100 gözləyin

Döngə

Bağlayın 1

Qrafika deaktivdir

CLS Print "Proqram dayandırıldı"

Bitirin

Son hissə, hər bir məlumat qəbulundan sonra çağırılan bir alt proqramdır. Ekranı təmizləyir, toz və zaman damgası massivlərində saxlanan faktiki məlumatlarla diaqramı yenidən tərtib edir.

'Koordinatları, etiketləri, gənələri və eyni zamanda məlumat əyrilərini çəkin

Alt DrawGraph ()

'Qrafik rejimində ekran cari rəngə qədər təmizlənir

Rəng 0, 0, 0

CLS

Rəng 0, 0, 100

Şəbəkə xətləri çəkmək üçün istifadə ediləcək qrafik rəngini təyin edin

TextColor 100, 100, 100, 50

'TextColor, ızgaranın əsas başlığının rəngidir

TextColorA 100, 100, 100

'TextColorA, Axis başlıqları və ızgara şərhləri üçün istifadə olunur.

Eksen başlığı mətninin ölçüsünü təyin edin

Şəbəkənin əsas adı bu ölçüdən 2 dəfə böyükdür

TextSize 20

FixDecimal 0

'2 onluq yeri göstərmək üçün qurun

PadDigits 2

'Qrafik üçün bir cədvəl çəkin' X & Y aralığını və başlığını təyin edin

Axis AxisX 0, 59, "Zaman/s"

AxisY 0, 10000, "ug/m3"

Şəbəkə 3, "Toz konsentrasiyası"

'Toz qrafikləri çəkin

Rəng 100, 0, 0

GraphXY timeStamp (), dustDataF ()

Rəng 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

Geri qayıt

Mənbə kodunu buradan yükləyin

Addım 6: Test edin

Image
Image
Test
Test
Test
Test
Test
Test

Sensoru işə salın və proqramı işə salın. Cütlənmiş cihazlar siyahısından "Sensor" adlı birini seçin. Sensoru bağladıqdan sonra ekran məlumatları göstərməyə başlayacaq. Eyni zamanda məlumat faylı ayrılır. Modanı bitirdikdən sonra məlumatları göstərmək üçün GnuPlot -dan istifadə edə bilərsiniz. GnuPlot'u "Test.dat" adlı bir məlumat faylını göstərmək üçün konfiqurasiya etmək üçün GnuPlotdakı "Test.gp" faylını istifadə edin. Burada da tapa bilərsiniz

Daha ətraflı və test üçün videoya baxın. Çox əylənin və daha çox fikir əldə edin!

Tövsiyə: