Daftar Isi:
- Langkah 1: Yang Anda Butuhkan
- Langkah 2: Mempersiapkan Modul Bluetooth
- Langkah 3: Memasang Bagian
- Langkah 4: Memasangkan
- Langkah 5: Perangkat Lunak
- Langkah 6: Uji
Video: Sensor Debu Sodial di Android: 6 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:57
Setahun yang lalu seorang teman saya mengadakan lokakarya akhir pekan tentang pemantauan lingkungan. Tujuan dari lokakarya ini adalah untuk membangun sensor debu yang terhubung ke papan raspberry pi untuk menempatkan data pengukuran di beberapa server yang menyediakan peta konsentrasi debu yang sering diperbarui. Teman saya bertanya apakah ada cara untuk mendapatkan data sensor langsung di smartphone-nya untuk pemantauan dan logging. Jadi saya menggali internet untuk lembar data dan melihat bahwa sensor memiliki antarmuka UART sederhana dengan protokol 9600Baud 8N1. Tetapi bagaimana cara menghubungkan UART ke smartphone? Nah, itu mudah. Saya hanya perlu menggunakan salah satu modul Bluetooth kecil yang ada di mana-mana yang menyediakan perilaku yang ditiru di Android. Sekarang lihat bagaimana saya membuatnya.
Langkah 1: Yang Anda Butuhkan
Anda membutuhkan bagian-bagian berikut:
- Konektor kawin JST XH 7-pin untuk antarmuka Sodial dengan kabel. Saya membeli milik saya di Ebay.
- Modul Bluetooth HC05 atau 06 yang kompatibel dengan konektor UART
- Konverter serial USB dengan antarmuka level TTL. Kami menggunakan ini untuk memberi nama unik pada modul BT
- Sensor debu Sodial SDS011. Saya mendapatkan milik saya dari Ebay
- sepotong veroboard
- konektor USB-B
- kabel
- Sepotong kayu untuk memasang semuanya
Maka Anda memerlukan beberapa alat sederhana:
- Gergaji untuk memotong kayu
- pinset
- besi solder dan solder
- alat pemotong kawat
- Pistol lem panas
- Sepotong lengan silikon 8mm (tidak ada di gambar)
Anda dapat mengunduh lembar data Sodial SDS011 di sini Lembar data Sodial SDS011
Langkah 2: Mempersiapkan Modul Bluetooth
Modul BT memiliki antarmuka UART dengan level TTL. Itu dapat dikonfigurasi ulang dengan perintah "AT" seperti yang kita lakukan dengan modem internet di zaman kuno. Untuk menghubungkannya ke program terminal pada mesin Anda, Anda perlu menyesuaikan UART ke komputer Anda. Saya menggunakan konverter USB-RS232 yang saya beli di amazon. Saya menerapkan konektor untuk modul BT dan mengarahkan catu daya 3, 3V dan GND dari konverter ke modul BT. Kemudian saya menghubungkan garis TxD dan RxD masing-masing secara crossover. TxD dari USB-converter ke RxD dari BT-modul dan sebaliknya.
Saya memiliki mesin linux dan menggunakan cutecom. Setelah menghubungkan konverter USB, comport adalah "ttyUSB0". Anda dapat menemukan nama comport di direktori "/ dev" pada mesin linux Anda. Untuk pengguna windows saya akan merekomendasikan "hterm". Mudah dioperasikan. Ketik "AT" dan Anda harus mendapatkan "AT" sebagai respons. Kemudian ketik "AT+NameSensor" untuk memberi nama modul BT "Sensor"
Langkah 3: Memasang Bagian
Potong sepotong kayu dengan ukuran yang sesuai untuk mengambil semua bagian. Hubungkan semua sinyal seperti yang ditunjukkan dalam skema. Sebaiknya letakkan selongsong silikon di sekitar kabel untuk melindunginya. Solder steker USB-B pada perfboard. Itu hanya digunakan untuk catu daya. Perbaiki semua bagian dengan sekrup di dasar kayu. Akhirnya lem panas kabel untuk memperbaikinya di kayu.
Langkah 4: Memasangkan
Nyalakan aplikasi sensor dengan mencolokkan catu daya USB. LED merah pada modul BT akan mulai berkedip. Tidak mencoba untuk memasangkannya dengan smartphone android Anda. Anda harus memasukkan kode pin. Ini adalah "1234". Setelah memasukkan kode, ponsel cerdas Anda harus dipasangkan dengan modul BT.
Langkah 5: Perangkat Lunak
Saya suka menulis aplikasi Android di platform target itu sendiri. itu menyelamatkan Anda dari semua hal emulasi yang harus Anda pedulikan jika Anda bekerja dengan Android Studio. Saya menemukan tiga alat pengembangan yang sesuai di Android itu sendiri
- Dasar Mintori. Penerjemah dasar dengan serangkaian perintah yang kaya untuk mengotak-atik hampir semua hal di android. Anda dapat membuat pintasan untuk aplikasi Anda. Mintoris basic tidak mengandung compiler. Jadi Anda harus menginstal Mintoris di setiap perangkat yang Anda gunakan. Tetapi Anda hanya perlu membayarnya sekali (sekitar € 7)
- Dasar! Penerjemah dan kompiler Dasar yang sangat bagus (tambahan untuk beberapa €). Hampir terhubung dengan semua yang ada di android dan Anda dapat mengkompilasi aplikasi nyata untuk mendistribusikannya tanpa harus Basic! pada perangkat sasaran. Sayangnya Dasar! tidak memiliki fungsi bagan diagram yang sangat baik dari Mintoris
- AIDE adalah IDE semi profesional untuk melakukan pengembangan android di java di android. Dengan AIDE Anda memiliki fleksibilitas tertinggi tetapi Anda perlu belajar java. AIDE memiliki biaya tahunan sekitar 50€
Saya memilih Mintoris. Pada bagian ini saya tidak akan memberikan tutorial pemrograman di Mintoris tetapi deskripsi singkat tentang blok fungsi
Pada bagian berikut, tiga larik dideklarasikan untuk dua jalur data sensor dan stempel waktu masing-masing. Data timestamp digunakan untuk pelabelan sumbu x dari diagramm. Sodial mengeluarkan dua aliran data yang masing-masing ditentukan untuk ukuran partikel khusus. Dua dustdata-array mengambil nilai-nilai ini.
WakeLock Parsial
Warna Teks 100, 75, 10
TextColorA 50, 50, 50
Rata Teks 0
Ukuran Teks 24
CLS
Munculan "Pengukur Sensor Debu (c) ARJ 2017"
Global dustData(), dustDataF(), timeStamp() Indeks global, pilihan, maxData, namafile$
Stempel waktu redup(59)
Data debu redup(59)
Data debu redupF(59)
Menu Redup$(4) = "maks. 100 set data", "maks. 1000 set data", "maks. 5000 set data", "maks. 10.000 set data", "Keluar"
'Init array
Untuk i = 0 hingga 59
dustData(i) = 0
dustDataF(i) = 0
cap waktu(i)=i
Selanjutnya saya
Selanjutnya menu Daftar dikonfigurasi. Ini memberi pengguna pilihan untuk memilih ukuran maksimum data yang akan dikumpulkan. Ini hanyalah sakelar pengaman untuk mencegah smartphone menyedot data tanpa akhir. Fungsi BTgetPaired$() memberikan kembali daftar dengan semua perangkat yang dipasangkan pada perangkat android, nama dan alamat BT mereka.
Menu pertama$(), pilihan
'Pilih jumlah maksimal jika data akan disimpan
runLevel = 1
Pilih pilihan
Kasus 0 maxData = 100
Kasus 1 maxDate = 1000
Kasus 2 maxData = 5000
Kasus 3 maxData = 10000
Kasus 4 maxData = 0
Akhiri Pilih
''Sambungkan sensor
pasangan redup$(0)
pasangan$() = BTGetPaired$()
Jika pasangan$(0) = "tidak ada" Maka
Cetak "Tidak ditemukan perangkat yang dipasangkan. Apakah BT dihidupkan?" Cetak "Program dihentikan"
Akhir
Berakhir jika
Daftar pasangan$(), perangkat$
nama$=ItemExtract$(perangkat$, 0)
alamat$=ItemExtract$(perangkat$, 1)
BTConnect 1, alamat$
'Tunggu koneksi
Kemajuan AKTIF
Cetak "Mencoba terhubung ke ";alamat$
Untuk i = 1 sampai 20
Kemajuan i/2
Jika BTGetstate(1)=4 Kemudian Keluar Untuk Tunggu 1000
Selanjutnya saya
Kemajuan OFF
'Jika berhasil, sambungkan ke perangkat BT
Jika BTGetState(1) = 4 Kemudian Cetak "Terhubung" Lain Cetak "Tidak dapat terhubung ke ";nama$
Cetak "Program dihentikan"
Akhir
Berakhir jika
Blok berikutnya menunjukkan akuisisi data. Untuk setiap sesi data, sebuah file secara otomatis dibuka dan dinamai menurut waktu dan tanggal. Kemudian loop membaca data sensor. Data dikemas dalam beberapa byte. Satu set byte diidentifikasi oleh dua karakter ASCII 170 dan 171. Data berikut diatur ulang dan diisi ke dalam debu-array
Grafik Aktif
'Buka file data untuk menulis
fileName$ = FormatTime$(t, "yyyy-MM-dd-kk-mm-ss") + ".dat"
Buka 1, namafile$, "w+" Cetak "Datafile terbuka ";namafile$ Writeln 1, FormatTime$(Time(), "yy-MM-dd")
Tulis 1, "Waktu Debu2.5 Debu10"
'Isi array dengan data terukur
data$="" paket$=""
indeks=0
Lakukan Sementara maxData > 0
BTBaca 1, paket$, 10
data$=data$+paket$
Jika Len(data$) >= 10 Maka
Jika (ASCII(Kiri$(data$, 1))=170) & (ASCII(Kanan$(data$, 1)) = 171) Maka
dustDataF(indeks)=ASCII(Pertengahan$(data$, 2, 1))
dustDataF(indeks)=(dustDataF(indeks)+256*ASCII(Pertengahan$(data$, 3, 1)))/10
dustData(indeks)=ASCII(Pertengahan$(data$, 4, 1))
dustData(indeks)=(dustData(indeks)+256*ASCII(Pertengahan$(data$, 5, 1)))/10
Writeln 1, FormatTime$(Time(), "kk:mm:dd") + " " + Str$(dustDataF(index))+ " " + Str$(dustData(index))
data$=""
maxData = maxData-1
indeks=indeks+1
Jika indeks>59 Maka indeks=0
dustData(indeks)=0
dustDataF(indeks)=0
Berakhir jika
Berakhir jika
GambarGrafik()
Tunggu 100
Lingkaran
Tutup 1
Grafis Mati
CLS Cetak "Program dihentikan"
Akhir
Bagian terakhir adalah subrutin yang dipanggil setelah setiap penerimaan data. Ini membersihkan layar, menggambar ulang diagram dengan data aktual yang disimpan dalam array stempel waktu dan debu.
' Gambarkan koordinat, label, tanda centang, dan juga kurva datanya
Sub DrawGraph()
' Dalam mode Grafik, layar menjadi warna saat ini
Warna 0, 0, 0
CLS
Warna 0, 0, 100
' Atur warna grafik yang akan digunakan untuk menggambar garis kisi
Warna Teks 100, 100, 100, 50
'TextColor adalah warna dari judul utama grid
WarnaTeksA 100, 100, 100
' TextColorA digunakan untuk judul Axis dan anotasi kisi.
' Atur ukuran teks judul sumbu
' Judul utama kisi adalah 2x ukuran ini
Ukuran Teks 20
PerbaikiDesimal 0
' Setel untuk menampilkan 2 tempat desimal
PadDigit 2
' Gambar kisi untuk grafik ' Atur rentang dan judul X & Y
Sumbu Sumbu X 0, 59, "Waktu/dtk"
Sumbu 0, 10000, "ug/m3"
Kotak 3, "Konsentrasi debu"
' Gambarkan Grafik Debu
Warna 100, 0, 0
GraphXY timeStamp(), dustDataF()
Warna 0, 100, 0
GraphXY timeStamp(), dustData()
Warna Teks 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
Warna Teks 100, 100, 100, 50
Kembali
Unduh kode sumbernya di sini
Langkah 6: Uji
Nyalakan sensor dan mulai aplikasi. Dari daftar perangkat yang dipasangkan, pilih yang bernama "Sensor". Setelah menghubungkan sensor, layar akan mulai menampilkan data. Secara bersamaan file data dialokasikan. Setelah menyelesaikan mode, Anda dapat menggunakan GnuPlot untuk menampilkan data. Gunakan file "Test.gp" di GnuPlot untuk mengkonfigurasi GnuPlot untuk menampilkan file data bernama "Test.dat". Anda juga dapat menemukannya di sini
Lihat video untuk detail dan pengujian lebih lanjut. Selamat bersenang-senang dan lebih banyak ide!
Direkomendasikan:
Penyedot Debu Portabel Hitam+Decker Fix - Aspirador De Mano Dustbuster Litio 16.2Wh Con Acción Ciclónica. Modelo DVJ315J: 5 Langkah (dengan Gambar)
Penyedot Debu Portabel Black+Decker Fix - Aspirador De Mano Dustbuster Litio 16.2Wh Con Acción Ciclónica. Modelo DVJ315J: Anda dapat menghabiskan +70 Eur (dolar atau mata uang yang setara) untuk penyedot debu portabel yang hebat, dan setelah beberapa bulan atau satu tahun, itu tidak berfungsi dengan baik…Ya, masih berfungsi, tetapi kurang dari 1 menit bekerja dan itu tidak berharga. Butuh re-c
Perpanjang Umur Laptop Anda! Bersihkan Debu Dari Heat Sinknya.: 3 Langkah
Perpanjang Umur Laptop Anda! Bersihkan Debu dari Heat Sinknya.: Tinjauan yang sangat mendasar tentang bagaimana saya membersihkan debu dari heat sink laptop Toshiba saya. Ada begitu banyak di sana! Saya tidak percaya praktik ini tidak direkomendasikan dan didorong oleh produsen. Jika debu menghalangi saluran masuk dan keluar udara dan
Penyedot Debu Konversi Ni-MH ke Li-ion: 9 Langkah (dengan Gambar)
Penyedot Debu Konversi Ni-MH ke Li-ion: Hai Semuanya, Dalam Instruksi ini, kami akan mengubah penyedot debu genggam saya dari baterai Ni-MH ke Li-ion. Penyedot debu ini hampir berusia 10 tahun tetapi dalam 2 tahun terakhir , hampir tidak pernah digunakan karena mengalami masalah dengan baterainya
Penyedot Debu Pertama di Dunia dalam Altoids Tin: 18 Langkah (dengan Gambar)
Penyedot Debu Pertama di Dunia dalam Altoids Tin: Saya suka membuat penyedot debu kecil dan telah membuat banyak dari mereka sejak saya pertama kali memulai lebih dari 30 tahun yang lalu. Yang pertama berada di tabung film plastik hitam dengan tutup clip-on abu-abu atau kotak popper pesta. Semuanya dimulai ketika saya melihat ibu saya berjuang dengan
Studi Debu Arduino: 8 Langkah
Studi Debu Arduino: Bagaimana rasanya hidup di Mars? Apakah udaranya bisa bernapas? Apakah aman? Berapa banyak debu yang ada? Seberapa sering badai? Pernah bertanya-tanya jawaban atas pertanyaan-pertanyaan ini?