İçindekiler:

Android'de Sodial Toz Sensörü: 6 Adım
Android'de Sodial Toz Sensörü: 6 Adım

Video: Android'de Sodial Toz Sensörü: 6 Adım

Video: Android'de Sodial Toz Sensörü: 6 Adım
Video: Telefonun donursa, mütləq izlə! 🙂 #irshad #seneuyghun #tech 2024, Temmuz
Anonim
Android'de Sodial Toz Sensörü
Android'de Sodial Toz Sensörü

Bir yıl önce bir arkadaşım çevresel izleme hakkında bir hafta sonu çalıştayı yaptı. Çalıştayın amacı, ölçüm verilerini sık sık güncellenen toz konsantrasyon haritaları sağlayan bir sunucuya koymak için bir ahududu pi kartına bağlı bir toz sensörü oluşturmaktı. Arkadaşım, izleme ve kayıt için sensör verilerini doğrudan akıllı telefonuna almanın bir yolu olup olmadığını sordu. Bu yüzden interneti bir veri sayfası için kazdım ve sensörün 9600Baud 8N1 protokolü ile basit bir UART arayüzüne sahip olduğunu gördüm. Ancak bir UART'ı bir akıllı telefona nasıl bağlayabilirim? Bu kolay. Android'de öykünülmüş bir uyum sağlayan her yerde bulunan küçük Bluetooth modüllerinden birini kullanmak zorunda kaldım. Şimdi nasıl yaptığımı görün.

Adım 1: İhtiyacınız Olan Şey

Neye ihtiyacın var
Neye ihtiyacın var
Neye ihtiyacın var
Neye ihtiyacın var

Aşağıdaki parçalara ihtiyacınız var

  • Kablolu Sodial arabirim için JST XH 7 pimli bir eşleşen konektör. Benimkini Ebay'den satın aldım.
  • UART konektörüyle uyumlu bir Bluetooth modülü HC05 veya 06
  • TTL seviye arayüzüne sahip bir USB seri dönüştürücü. BT modülüne benzersiz bir ad vermek için bunu kullanıyoruz
  • Sodial SDS011 toz sensörü. benimkini ebay'den aldım
  • bir parça veroboard
  • USB-B konektörü
  • Tel
  • Her şeyi monte etmek için bir tahta parçası

O zaman bazı basit araçlara ihtiyacınız olacak:

  • Odun kesmek için bir testere
  • cımbız
  • havya ve lehim
  • Tel makası
  • Sıcak yapıştırıcı tabancası
  • Bir parça 8mm silikon kılıf(resimde yok)

Sodial SDS011 veri sayfasını buradan indirebilirsiniz Sodial SDS011 veri sayfasını

2. Adım: Bluetooth Modülünü Hazırlama

Bluetooth Modülünü Hazırlama
Bluetooth Modülünü Hazırlama
Bluetooth Modülünü Hazırlama
Bluetooth Modülünü Hazırlama
Bluetooth Modülünü Hazırlama
Bluetooth Modülünü Hazırlama
Bluetooth Modülünü Hazırlama
Bluetooth Modülünü Hazırlama

BT Modülü, TTL düzeyinde bir UART arayüzüne sahiptir. Eski zamanlarda internet modemlerde yaptığımız gibi "AT" komutları ile yeniden yapılandırılabilir. Makinenizdeki bir terminal programına bağlamak için UART'ı bilgisayarınıza uyarlamanız gerekir. Amazon'dan aldığım bir USB-RS232 dönüştürücü kullandım. BT modülü için bir konektör uyguladım ve 3, 3V güç kaynağını ve GND'yi dönüştürücüden BT modülüne yönlendirdim. Ardından ilgili TxD ve RxD hatlarını crossover'a bağladım. USB dönüştürücüden RxD'ye BT modülünden TxD ve tam tersi.

Bir linux makinem var ve cutecom kullandım. USB dönüştürücüyü bağladıktan sonra comport "ttyUSB0" oldu. Komport adlarını linux makinenizde "/dev" dizininde bulabilirsiniz. Windows kullanıcıları için "hterm" i tavsiye ederim. Çalıştırmak kolaydır. "AT" yazın ve yanıt olarak "AT" almalısınız. Ardından BT modülüne "Sensör" adını vermek için "AT+NameSensor" yazın.

Adım 3: Parçaların Montajı

Parçaların Montajı
Parçaların Montajı
Parçaların Montajı
Parçaların Montajı
Parçaların Montajı
Parçaların Montajı
Parçaların Montajı
Parçaların Montajı

Tüm parçaları almaya uygun boyutta bir tahta parçası kesin. Tüm sinyalleri şemada gösterildiği gibi bağlayın. Telleri korumak için etrafına silikon bir kılıf koymak iyi bir fikirdir. Perfboard üzerindeki USB-B fişini lehimleyin. Sadece güç kaynağı için kullanılır. Tüm parçaları vidalarla ahşap tabana sabitleyin. Son olarak, kabloları tahtaya sabitlemek için sıcak tutkalla yapıştırın.

4. Adım: Eşleştirme

Eşleştirme
Eşleştirme
Eşleştirme
Eşleştirme

Bir USB güç kaynağı takarak sensör uygulamasını çalıştırın. BT modülündeki kırmızı LED yanıp sönmeye başlayacaktır. Android akıllı telefonunuzla eşleştirmeye çalışmayın. Bir pin kodu girmelisiniz. Bu "1234". Kodu girdikten sonra akıllı telefonunuz BT modülü ile eşleştirilmelidir.

Adım 5: Yazılım

Hedef platformun kendisinde Android uygulamaları yazmayı seviyorum. Android Studio ile çalışıyorsanız ilgilenmeniz gereken tüm öykünme işlerinden sizi kurtarır. Android'in kendisinde üç uygun geliştirme aracı buldum

  • Mintoris Temel. Android'deki hemen hemen her şeyi kurcalamak için zengin komut setine sahip Temel bir yorumlayıcı. Uygulamalarınız için kısayollar oluşturabilirsiniz. Mintoris basic bir derleyici içermez. Yani kullandığınız her cihaza Mintoris'i kurmuş olmalısınız. Ama bunun için sadece bir kez ödemeniz gerekiyor (yaklaşık 7€)
  • Temel! Aşırı iyi Temel yorumlayıcı ve derleyici (bazı € için eklenti). Neredeyse androiddeki her şeye takılır ve bunları Basic olmadan dağıtmak için gerçek uygulamaları derleyebilirsiniz! hedef cihazda. Ne yazık ki Temel! Mintoris'in mükemmel diyagram grafiği işlevlerinden yoksundur
  • AIDE, android üzerinde java'da android geliştirme yapmak için yarı profesyonel bir IDE'dir. AIDE ile en yüksek esnekliğe sahipsiniz ancak java öğrenmeniz gerekiyor. AIDE'nin yıllık maliyeti yaklaşık 50€

Mintoris'i seçtim. Bu bölümde size Mintoris'te programlama eğitimi vermeyeceğim, fonksiyon bloklarının kısa bir tanımını vereceğim

Aşağıdaki bölümde, iki sensör veri hattı ve ilgili zaman damgaları için üç dizi bildirilmektedir. Zaman damgası verileri, diyagramın x eksenini etiketlemek için kullanılır. Sodial, her biri özel bir parçacık boyutu için belirtilen iki veri akışı verir. İki toz veri dizisi bu değerleri alır.

Uyandırma Kilidi Kısmi

MetinRengi 100, 75, 10

MetinRenkA 50, 50, 50

Metin Hizalama 0

MetinBoyutu 24

CLS

Popup "Toz Sensörü Ölçer (c) ARJ 2017"

Global DustData(), DustDataF(), timeStamp() Global indeks, seçim, maxData, fileName$

Zaman Damgasını karart(59)

Loş tozData(59)

Soluk tozDataF(59)

Dim Menu$(4) = "maks. 100 veri seti", "maks. 1000 veri seti", "maks. 5000 veri seti", "maks. 10000 veri seti", "Çıkış"

'Dizileri başlat

i = 0 ila 59 için

tozData(i) = 0

tozDataF(i) = 0

zaman Damgası(i)=i

sonraki ben

Ardından bir Liste menüsü yapılandırılır. Bu, kullanıcıya toplanacak maksimum veri boyutunu seçme seçeneği sunar. Bu, akıllı telefonun sonsuz verileri emmesini önlemek için yalnızca bir güvenlik anahtarıdır. BTgetPaired$() İşlevleri, android cihazdaki tüm eşleştirilmiş cihazları, adlarını ve BT adresini içeren bir liste verir.

Liste Menü$(), seçim

'Depolanacak veri varsa maksimum miktarı seçin

runLevel = 1

Seçimi seçin

Durum 0 maxData = 100

Durum 1 maxDate = 1000

Durum 2 maxData = 5000

Durum 3 maxData = 10000

Durum 4 maxData = 0

Seçimi Bitir

'' Sensörü bağlayın

karartma çifti$(0)

çift$() = BTGetPaired$()

Eğer çift$(0) = "yok" ise

Yazdır "Eşleştirilmiş cihaz bulunamadı. BT açık mı?" "Program sonlandırıldı" yazdır

Son

Endif

Liste çifti$(), cihaz$

isim$=ItemExtract$(cihaz$, 0)

adres$=ItemExtract$(cihaz$, 1)

BTConnect 1, adres$

'Bağlantıyı bekleyin

İlerleme AÇIK

"Adres$'a bağlanmaya çalışılıyor" yazdır

i = 1 ila 20 için

İlerleme i/2

BTGetstate(1)=4 ise 1000 Beklemek İçin Çıkın

sonraki ben

İlerleme KAPALI

Başarıyla BT cihazına bağlanın

BTGetState(1) = 4 ise "Bağlandı" Yazdır Aksi takdirde Yazdır "bağlanamadı";name$

"Program sonlandırıldı" yazdır

Son

Endif

Sonraki blok veri alımını gösterir. Her veri oturumu için otomatik olarak bir dosya açılır ve saat ve tarihten sonra adlandırılır. Ardından döngü sensör verilerini okuyor. Veriler birkaç bayt olarak paketlenir. Bir bayt kümesi iki ASCII karakteri 170 ve 171 ile tanımlanır. Aşağıdaki veriler yeniden düzenlenir ve toz dizilerine doldurulur

Grafikler Açık

'Yazmak için veri dosyasını açın

dosyaAdı$ = FormatTime$(t, "yyyy-AA-gg-kk-aa-ss") + ".dat"

Open 1, fileName$, "w+" Print "Açık veri dosyası ";fileName$ Writeln 1, FormatTime$(Time(), "yy-MM-dd")

Writeln 1, "Zaman Dust2.5 Dust10"

'Diziyi ölçülen verilerle doldurun

veri$="" paket$=""

indeks=0

maxData > 0 iken yapın

BTRead 1, paket$, 10

veri$=veri$+paket$

Len(data$) >= 10 ise

Eğer (ASCII(Sol$(veri$, 1))=170) & (ASCII(Sağ$(veri$, 1)) = 171) O zaman

tozDataF(index)=ASCII(Orta$(veri$, 2, 1))

tozDataF(index)=(dustDataF(index)+256*ASCII(Orta$(veri$, 3, 1)))/10

tozData(index)=ASCII(Orta$(veri$, 4, 1))

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

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

veri$=""

maxData = maxData-1

indeks=indeks+1

İndeks>59 ise İndeks=0

tozData(indeks)=0

tozDataF(indeks)=0

Endif

Endif

DrawGraph()

100 bekle

Döngü

1'i kapat

Grafikler Kapalı

CLS Print "Program sonlandırıldı"

Son

Son kısım, her veri alımından sonra çağrılan bir alt programdır. Ekranı temizler, diyagramı, toz ve zaman damgası dizilerinde saklanan gerçek verilerle yeniden çizer.

' Koordinatları, etiketleri, keneleri ve ayrıca veri eğrilerini çizin

Alt DrawGraph()

' Grafik modunda ekran mevcut renge döner

Renk 0, 0, 0

CLS

Renk 0, 0, 100

Izgara çizgilerini çizmek için kullanılacak grafik rengini ayarlayın

MetinRengi 100, 100, 100, 50

'TextColor, ızgara ana başlığının rengidir

MetinRenkA 100, 100, 100

' TextColorA, Eksen başlıkları ve ızgara açıklamaları için kullanılır.

' Eksen başlık metninin boyutunu ayarlayın

' Izgara ana başlığı bu boyutun 2 katı

MetinBoyutu 20

Ondalık Düzeltme 0

' 2 ondalık basamak gösterecek şekilde ayarla

PadDigits 2

' Grafik için bir ızgara çizin ' X & Y'nin aralığını ve başlığını ayarlayın

Eksen EksenX 0, 59, "Zaman/sn"

EksenY 0, 10000, "ug/m3"

Izgara 3, "Toz konsantrasyonu"

' Toz Grafikleri Çiz

Renk 100, 0, 0

GraphXY timeStamp(), tozDataF()

Renk 0, 100, 0

GraphXY timeStamp(), tozData()

MetinRengi 100, 0, 0

DrawText "PM2.5", 30, Int(EkranY()-60), 90, 1

MetinRengi 0, 100, 0

DrawText "PM10", 30, Int(EkranY()-150), 90, 1

MetinRengi 100, 100, 100, 50

Dönüş

Kaynak kodunu buradan indirin

Adım 6: Test Et

Image
Image
Ölçek
Ölçek
Ölçek
Ölçek
Ölçek
Ölçek

Sensörü açın ve uygulamayı başlatın. Eşleştirilmiş cihazlar listesinden "Sensör" adlı cihazı seçin. Sensörü bağladıktan sonra ekran verileri görüntülemeye başlayacaktır. Eşzamanlı olarak veri dosyası tahsis edilir. Modayı bitirdikten sonra verileri görüntülemek için GnuPlot'u kullanabilirsiniz. GnuPlot'u "Test.dat" adlı bir veri dosyasını görüntülemek üzere yapılandırmak için GnuPlot'taki "Test.gp" dosyasını kullanın. Burada da bulabilirsiniz

Daha fazla ayrıntı ve test için videoya bakın. İyi eğlenceler ve daha fazla fikir var!

Önerilen: