Isi kandungan:
- Langkah 1: Apa yang Anda Perlu
- Langkah 2: Menyiapkan Modul Bluetooth
- Langkah 3: Memasang Bahagian
- Langkah 4: Berpasangan
- Langkah 5: Perisian
- Langkah 6: Uji
Video: Sensor Debu Sodial pada Android: 6 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:10
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
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
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
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
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
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:
Mengubah Pad Dance L-tek ke Poll pada 1000hz pada Windows dan Linux: 9 Langkah
Mengubah Pad Dance L-tek ke Poll pada 1000hz di Windows dan Linux: Mengapa mod ini? Sekiranya anda pernah menatal ke grafik pada lagu 125 BPM, anda mungkin tertanya-tanya, ada apa dengan boi spikey ini? Mengapa masa jatuh ke dalam "slot" diskrit? ITG dan DDR mempunyai tetingkap masa yang sangat ketat, dan dengan ini
Kajian Debu Arduino: 8 Langkah
Kajian Debu Arduino: Bagaimana rasanya tinggal di Marikh? Adakah udara boleh bernafas? Adakah ia selamat? Berapa banyak habuk yang ada? Berapa kerap berlaku ribut? Pernah terfikir jawapan untuk salah satu daripada soalan ini?
Stesen Pemantauan Partikel Debu Bertenaga Arduino: 4 Langkah (dengan Gambar)
Stesen Pemantauan Partikel Debu Bertenaga Arduino: Anda boleh dengan mudah membina sebuah peranti DIY barang-barang DIY yang memantau pencemaran debu di rumah anda dengan harga kurang dari $ 50 dan mendapat pemberitahuan apabila tahap debu terlalu tinggi sehingga anda dapat mengudara bilik, atau anda dapat mengatur di luar dan diberitahu jika
Pembuangan Penutup Paparan Nokia 6280 untuk Pembersihan Debu: 7 Langkah
Nokia 6280 Penutup Penutup Paparan untuk Pembersihan Debu: Tidak seperti model lain, Nokia 6280 sepertinya tidak dibuat sehingga pengguna dapat melepaskan penutup layar sendiri. Ini mengganggu mereka yang mendapat habuk antara LCD sebenar dan penutup paparan, yang banyak pemiliknya … Sebenarnya, lama-kelamaan, ia
Pembaikan Debu Skrin Samsung I600 / Blackjack: 4 Langkah
Samsung I600 / Blackjack Screen Dust Fix: Halo semua, jika anda (seperti saya) mempunyai Samsung SGH-i600 (atau blackjack di Amerika) dan menyedari habuk memasuki unit dan terkumpul di sudut kiri atas skrin - saya rasa Saya ada penyelesaian untuk anda. Sebelum gambar dengan izin baik dari Tracy