Isi kandungan:

Sensor Debu Sodial pada Android: 6 Langkah
Sensor Debu Sodial pada Android: 6 Langkah

Video: Sensor Debu Sodial pada Android: 6 Langkah

Video: Sensor Debu Sodial pada Android: 6 Langkah
Video: REALME 3" PROXYMITY SENSOR BERMASALAH‼ SENSOR PANGGILAN LAYAR LCD GELAP‼ 2024, November
Anonim
Sensor Debu Sodial pada Android
Sensor Debu Sodial pada Android

Setahun yang lalu seorang rakan saya mengadakan bengkel hujung minggu mengenai pemantauan alam sekitar. Matlamat bengkel ini adalah untuk membina sensor debu yang disambungkan ke papan pi raspberry untuk meletakkan data pengukuran pada beberapa pelayan yang menyediakan peta kepekatan debu yang sering dikemas kini. Rakan saya bertanya adakah cara untuk mendapatkan data sensor secara langsung di telefon pintarnya untuk pemantauan dan pembalakan. Oleh itu, saya menggali internet untuk lembar data dan melihat bahawa sensor mempunyai antara muka UART sederhana dengan protokol 9600Baud 8N1. Tetapi bagaimana menyambungkan UART ke telefon pintar? Nah, itu mudah. Saya hanya perlu menggunakan salah satu modul Bluetooth kecil yang terdapat di mana-mana yang memberikan komplotan yang ditiru pada android. Sekarang lihat bagaimana saya membuatnya.

Langkah 1: Apa yang Anda Perlu

Apa yang kamu perlu
Apa yang kamu perlu
Apa yang kamu perlu
Apa yang kamu perlu

Anda memerlukan bahagian berikut

  • Penyambung kawin JST XH 7-pin untuk antara muka Sodial dengan wayar. Saya membeli tambang di Ebay.
  • Modul Bluetooth HC05 atau 06 yang serasi dengan penyambung UART
  • Penukar bersiri USB dengan antara muka tahap TTL. Kami menggunakan ini untuk memberi nama unik modul BT
  • Sensor habuk Sodial SDS011. Saya mendapat milik saya dari Ebay
  • sekeping papan kenyataan
  • Penyambung USB-B
  • wayar
  • Sekeping kayu untuk memasang semuanya

Kemudian anda memerlukan beberapa alat mudah:

  • Bucksaw untuk memotong kayu
  • pinset
  • besi pateri dan pateri
  • pemotong wayar
  • Pistol gam panas
  • Sekeping lengan silikon 8mm (tidak ada pada gambar)

Anda boleh memuat turun lembaran data Sodial SDS011 di sini lembar data Sodial SDS011

Langkah 2: Menyiapkan Modul Bluetooth

Menyiapkan Modul Bluetooth
Menyiapkan Modul Bluetooth
Menyiapkan Modul Bluetooth
Menyiapkan Modul Bluetooth
Menyiapkan Modul Bluetooth
Menyiapkan Modul Bluetooth
Menyiapkan Modul Bluetooth
Menyiapkan Modul Bluetooth

Modul BT mempunyai antara muka UART dengan tahap TTL. Ia dapat dikonfigurasi ulang dengan perintah "AT" seperti yang kita lakukan dengan modem internet pada zaman dahulu. Untuk menyambungkannya ke program terminal pada mesin anda, anda perlu menyesuaikan UART ke komputer anda. Saya menggunakan penukar USB-RS232 yang saya beli di amazon. Saya menggunakan penyambung untuk modul BT dan mengarahkan bekalan kuasa 3, 3V dan GND dari penukar ke modul BT. Kemudian saya menyambungkan garis TxD dan RxD masing-masing secara crossover. TxD dari penukar USB ke RxD dari modul BT dan sebaliknya.

Saya mempunyai mesin linux dan cutecom terpakai. Selepas menyambungkan penukar USB, comport adalah "ttyUSB0". Anda boleh mendapatkan nama comport dalam direktori "/ dev" pada mesin linux anda. Untuk pengguna windows saya akan mengesyorkan "hterm". Ia senang dikendalikan. Ketik "AT" dan anda akan mendapat "AT" sebagai tindak balas. Kemudian ketik "AT + NameSensor" untuk memberi modul BT nama "Sensor"

Langkah 3: Memasang Bahagian

Memasang Bahagian
Memasang Bahagian
Memasang Bahagian
Memasang Bahagian
Memasang Bahagian
Memasang Bahagian
Memasang Bahagian
Memasang Bahagian

Potong sekeping kayu dengan ukuran yang sesuai untuk mengambil semua bahagian. Sambungkan semua isyarat seperti yang ditunjukkan dalam skema. Adalah idea yang baik untuk meletakkan sarung silikon di sekitar wayar untuk melindunginya. Pateri palam USB-B pada papan wangi. Ia hanya digunakan untuk bekalan kuasa. Betulkan semua bahagian dengan skru di dasar kayu. Akhirnya lekatkan kabel untuk memasangnya di atas kayu.

Langkah 4: Berpasangan

Berpasangan
Berpasangan
Berpasangan
Berpasangan

Kuatkan aplikasi sensor dengan memasukkan bekalan kuasa USB. LED merah pada modul BT akan mula berkelip. Jangan cuba memasangkannya dengan telefon pintar android anda. Anda mesti memasukkan kod pin. Ini adalah "1234". Setelah memasukkan kod telefon pintar anda harus dipasangkan dengan modul BT.

Langkah 5: Perisian

Saya suka menulis aplikasi Android pada platform sasaran itu sendiri. ia menjimatkan anda dari semua perkara emulasi yang harus anda rawat jika anda bekerja dengan Android Studio. Saya menemui tiga alat pembangunan yang sesuai pada Android itu sendiri

  • Asas Mintoris. Jurubahasa Asas dengan sekumpulan perintah yang kaya untuk bermain-main dengan hampir semua perkara di android. Anda boleh membuat jalan pintas untuk aplikasi anda. Mintoris basic tidak mengandungi penyusun. Oleh itu, anda mesti memasang Mintoris pada setiap peranti yang anda gunakan. Tetapi anda hanya perlu membayarnya sekali (sekitar 7 €)
  • Asas! Jurubahasa dan penyusun asas yang sangat baik (tambahan untuk beberapa €). Hampir mengaitkan semua yang ada di android dan anda boleh menyusun aplikasi sebenar untuk menyebarkannya tanpa mempunyai Asas! pada peranti sasaran. Sedih Asas! kekurangan fungsi carta rajah Mintoris yang sangat baik
  • AIDE adalah IDE separa profesional untuk melakukan pengembangan android di java di android. Dengan AIDE, anda mempunyai fleksibiliti yang tinggi tetapi anda perlu belajar java. AIDE mempunyai kos tahunan sekitar 50 €

Saya memilih Mintoris. Pada bahagian ini saya tidak akan memberi anda tutorial pengaturcaraan di Mintoris tetapi penerangan ringkas mengenai blok fungsi

Pada bahagian berikut tiga susunan dinyatakan untuk dua baris data sensor dan cap waktu masing-masing. Data cap waktu digunakan untuk pelabelan paksi-x diagram. Sodial mengeluarkan dua aliran data yang masing-masing ditentukan untuk ukuran zarah khas. Dua susunan data-debu mengambil nilai-nilai ini.

WakeLock Separa

TeksWarna 100, 75, 10

TeksWarnaA 50, 50, 50

Teks Align 0

Saiz Teks 24

CLS

Popup "Dust Sensor Meter (c) ARJ 2017"

Debu globalData (), dustDataF (), timeStamp () Indeks global, pilihan, maxData, nama fail $

Waktu redup Setem (59)

Debu redupData (59)

Debu redup DataF (59)

Menu Dim $ (4) = "set data maksimum 100", "set data maksimum 1000", "set data maksimum 5000", "set data maksimum 10000", "Keluar"

'Masukkan susunan

Untuk i = 0 hingga 59

debuData (i) = 0

debuDataF (i) = 0

cap masa (i) = i

Seterusnya i

Seterusnya menu List dikonfigurasikan. Ini memberi pengguna pilihan untuk memilih ukuran maksimum data yang akan dikumpulkan. Ini hanyalah suis keselamatan untuk mengelakkan telefon pintar menghisap data tanpa henti. Fungsi BTgetPaired $ () memberikan kembali senarai dengan semua peranti berpasangan pada peranti android, nama mereka dan alamat BT.

Menu L $ $), pilihan

'Pilih jumlah maksimum jika data akan disimpan

runLevel = 1

Pilih pilihan

Kes 0 maxData = 100

Kes 1 MaxDate = 1000

Kes 2 maxData = 5000

Kes 3 maxData = 10000

Kes 4 maxData = 0

Pilih Akhir

Sambungkan sensor

pasangan redup $ (0)

pasangan $ () = BTGetPaired $ ()

Sekiranya pasangan $ (0) = "none" Maka

Cetak "Tidak dijumpai peranti berpasangan. Adakah BT dihidupkan?" Cetak "Program ditamatkan"

Tamat

Endif

Senaraikan pasangan $ (), peranti $

name $ = ItemExtract $ (peranti $, 0)

alamat $ = ItemExtract $ (peranti $, 1)

BTConnect 1, alamat $

'Tunggu sambungan

Kemajuan HIDUP

Cetak "Mencuba untuk menyambung ke"; alamat $

Untuk i = 1 hingga 20

Kemajuan i / 2

Sekiranya BTGetstate (1) = 4 Kemudian Keluar Untuk Menunggu 1000

Seterusnya i

Kemajuan MATI

'Berjaya sambung ke peranti BT

Jika BTGetState (1) = 4 Kemudian Cetak "Connected" Else Print "Tidak dapat menyambung ke"; beri nama $

Cetak "Program ditamatkan"

Tamat

Endif

Blok seterusnya menunjukkan pemerolehan data. Untuk setiap sesi data fail dibuka dan dinamakan secara automatik berdasarkan waktu dan tarikh. Kemudian gelung membaca data sensor. Data dikemas dalam beberapa bait. Satu set bait dikenal pasti oleh dua watak ASCII 170 dan 171. Data berikut disusun semula dan diisi ke dalam array debu

Grafik Hidup

'Buka datafile untuk menulis

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

Buka 1, fileName $, "w +" Print "Open datafile"; fileName $ Writeln 1, FormatTime $ (Time (), "yy-MM-dd")

Writeln 1, "Debu Masa2.5 Debu10"

Isi array dengan data yang diukur

data $ = "" paket $ = ""

indeks = 0

Lakukan Walaupun MaxData> 0

BTRead 1, paket $, 10

data $ = data $ + paket $

Sekiranya Len (data $)> = 10 Maka

Jika (ASCII (Kiri $ (data $, 1)) = 170) & (ASCII (Kanan $ (data $, 1)) = 171) Kemudian

dustDataF (index) = ASCII (Mid $ (data $, 2, 1))

dustDataF (index) = (dustDataF (index) + 256 * ASCII (Mid $ (data $, 3, 1))) / 10

dustData (indeks) = ASCII (Mid $ (data $, 4, 1))

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

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

data $ = ""

maxData = maxData-1

indeks = indeks + 1

Sekiranya indeks> 59 Kemudian indeks = 0

dustData (indeks) = 0

dustDataF (indeks) = 0

Endif

Endif

DrawGraph ()

Tunggu 100

Gelung

Tutup 1

Grafik Dimatikan

Cetakan CLS "Program ditamatkan"

Tamat

Bahagian terakhir adalah subrutin yang dipanggil setelah setiap penerimaan data. Ia membersihkan skrin, melukis semula gambar rajah dengan data sebenar yang tersimpan dalam array debu dan cap waktu.

'Lukiskan koordinat, label, kutu dan juga lengkung data

Sub DrawGraph ()

Dalam mod Grafik, skrin akan berubah menjadi warna semasa

Warna 0, 0, 0

CLS

Warna 0, 0, 100

'Tetapkan warna grafik yang akan digunakan untuk menggambar garis grid

TeksWarna 100, 100, 100, 50

'TextColor adalah warna tajuk utama grid

TeksColorA 100, 100, 100

'TextColorA digunakan untuk tajuk Axis dan anotasi grid.

'Tetapkan ukuran teks tajuk paksi

'Judul utama grid adalah 2x ukuran ini

Saiz Teks 20

PerbaikiDecimal 0

'Tetapkan untuk memaparkan 2 tempat perpuluhan

PadDigits 2

'Lukiskan grid untuk grafik' Tetapkan julat dan tajuk X & Y

Axis AxisX 0, 59, "Masa / s"

Paksi 0, 10000, "ug / m3"

Grid 3, "Kepekatan habuk"

'Lukiskan Graf Debu

Warna 100, 0, 0

GrafXY timeStamp (), dustDataF ()

Warna 0, 100, 0

Cap masa GrafXY (), DebuData ()

TeksWarna 100, 0, 0

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

Warna Teks 0, 100, 0

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

TeksWarna 100, 100, 100, 50

Kembali

Muat turun kod sumber di sini

Langkah 6: Uji

Image
Image
Uji
Uji
Uji
Uji
Uji
Uji

Hidupkan sensor dan mulakan aplikasinya. Dari senarai peranti berpasangan pilih yang bernama "Sensor". Setelah menyambungkan sensor, skrin akan mula memaparkan data. Serentak fail data diperuntukkan. Setelah menyelesaikan fesyen anda boleh menggunakan GnuPlot untuk memaparkan data. Gunakan file "Test.gp" di GnuPlot untuk mengkonfigurasi GnuPlot untuk memaparkan file data bernama "Test.dat". Anda juga boleh mendapatkannya di sini

Lihat video untuk maklumat lebih lanjut dan ujian. Selamat mencuba dan lebih banyak idea!

Disyorkan: