Daftar Isi:

Sensor Debu Sodial di Android: 6 Langkah
Sensor Debu Sodial di Android: 6 Langkah

Video: Sensor Debu Sodial di Android: 6 Langkah

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

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

Apa yang kau butuhkan
Apa yang kau butuhkan
Apa yang kau butuhkan
Apa yang kau 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

Mempersiapkan Modul Bluetooth
Mempersiapkan Modul Bluetooth
Mempersiapkan Modul Bluetooth
Mempersiapkan Modul Bluetooth
Mempersiapkan Modul Bluetooth
Mempersiapkan Modul Bluetooth
Mempersiapkan Modul Bluetooth
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

Memasang Bagian
Memasang Bagian
Memasang Bagian
Memasang Bagian
Memasang Bagian
Memasang Bagian
Memasang Bagian
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

Memasangkan
Memasangkan
Memasangkan
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

Image
Image
Tes
Tes
Tes
Tes
Tes
Tes

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: