Daftar Isi:
- Langkah 1: Siapkan Raspberry Pi
- Langkah 2: Menyiapkan MySQL di Raspberry Pi
- Langkah 3: Menyiapkan SensorBugs
- Langkah 4: Memasang Bluetooth LE Python Wrapper
- Langkah 5: Pindai dan Temukan Alamat SensorBug
- Langkah 6: Tambahkan Skrip Python
- Langkah 7: Uji Skrip Python
- Langkah 8: Tambahkan Script Python ke Crontab
- Langkah 9: Ekstra: Konfigurasikan SensorBug untuk Output Penginderaan Posisi
Video: Pantau dan Rekam Suhu Dengan Bluetooth LE dan RaspberryPi: 9 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:56
Instruksi ini adalah tentang bagaimana menyusun sistem pemantauan suhu multi-node dengan bug sensor Bluetooth LE dari Blue Radios (BLEHome) dan RaspberryPi 3BBerkat pengembangan standar Bluetooth LE, sekarang tersedia sensor nirkabel berdaya rendah di pasar untuk biaya yang sangat rendah dan dapat berjalan pada sel koin tunggal selama berbulan-bulan pada suatu waktu. Salah satu sensor yang saya ambil adalah dari Blue Radio yang disebut Sensor Bugs. Dengan biaya sekitar $25 di Amazon, ini adalah perangkat Bluetooth LE dengan Sensor suhu, sensor cahaya, dan akselometer, semuanya dibangun menjadi unit kecil yang dapat berkomunikasi secara nirkabel. Ini sangat cocok untuk Raspberry Pi 3B, yang memiliki dukungan bawaan untuk radio Bluetooth LE.
Langkah 1: Siapkan Raspberry Pi
Langkah pertama adalah mendapatkan pengaturan Raspberry Pi yang berfungsi. Ikuti instruksi dari situs web Raspberry Pi, muat Raspbian pada kartu SD, masukkan ke Raspberry Pi dan boot. Saya mengatur sistem saya dengan Raspbian Stretch Lite (Tanpa GUI) versi Nov 2017. Atur WiFi jika diperlukan, saya lebih suka menyesuaikan zona waktu ke zona waktu saat ini, bukan UTC. Anda dapat melakukan ini melalui perintah: $ sudo dpkg-reconfigure tzdataRest dari instruksi menganggap pengaturan dilakukan melalui antarmuka baris perintah.
Langkah 2: Menyiapkan MySQL di Raspberry Pi
Ini berguna untuk memiliki database yang diinstal secara lokal untuk menyimpan semua data yang diambil. Menginstal MySQL di Raspberry Pi sangat mudah. Juga tidak sulit untuk memodifikasi skrip untuk terhubung ke server SQL secara eksternal, Anda dapat melewati langkah ini jika Anda ingin menggunakan server SQL di jaringan. Ada banyak instruksi di internet, saya sarankan ini: https:// www.stewright.me/2014/06/tutorial-install-…
Setelah SQL server diinstal, Anda dapat menggunakan klien MySQL CLI untuk membuat pengguna, database, dan tabel. Untuk masuk ke MySQL CLI, gunakan perintah:
$ sudo mysql -uroot-pPertama, buat pengguna lokal untuk memasukkan data yang diambil: > CREATE USER 'datasrc'@'localhost' DIIDENTIFIKASI OLEH 'datasrc000';Selanjutnya, buat database dan tabel: > CREATE DATABASE SensorBug;Menyiapkan pengguna izin: > BERIKAN SEMUA HAK ISTIMEWA PADA SensorBug.* KE 'datasrc'@'localhost';Sekarang tambahkan tabel baru ke database. Untuk contoh ini, saya akan menambahkan tabel dengan kolom berikut: TANGGAL, WAKTU, ALAMAT, LOKASI, SUHU dan ACCEROMETER
- TANGGAL/WAKTU - Ini adalah tanggal dan waktu data direkam
- ADDRESS - Ini adalah MAC dari SensorBug tempat pesan diambil
- LOKASI - String yang dapat dibaca manusia untuk menunjukkan di mana sensor berada
- SUHU - Ini adalah suhu yang tercatat
- ACCELE - Ini adalah nilai output accelerometer, berguna untuk merekam posisi sensor (jika diaktifkan)
Perintah yang melakukan ini adalah: > GUNAKAN SensorBug; > CREATE TABLE data (tanggal TANGGAL, WAKTU waktu, alamat TINYTEXT, lokasi TINYTEXT, suhu FLOAT, accele INT);Sekarang database sudah siap, kita dapat melanjutkan untuk menyiapkan sensorBugs.
Langkah 3: Menyiapkan SensorBugs
Bug sensor adalah perangkat kecil yang cukup rapi. Sayangnya, pabrikan hanya menyediakan aplikasi iOS untuk memprogramnya. Namun demikian, masih mungkin untuk bekerja dengannya jika Anda hanya memiliki perangkat Android. Langkah pertama, pasangkan perangkat dengan telepon. Tanpa memasangkan perangkat, SensorBug tidak akan mengiklankan data. Saya mencoba melihat apakah saya dapat melakukan ini secara langsung dengan RaspberryPi, sayangnya, sepertinya driver Bluetooth LE di RaspberryPi masih eksperimental dan mengandung bug untuk mencegahnya dipasangkan dengan perangkat Bluetooth LE. Versi driver blueZ yang akan datang mungkin memperbaikinya, tetapi seperti tulisan saat ini, tidak ada cara untuk memasangkan SensorBug dengan RaspberryPi. Untungnya, kita tidak perlu memasangkan perangkat untuk menangkap data yang diiklankan. Satu-satunya hal yang kita butuhkan adalah telepon untuk mengkonfigurasi SensorBug. Secara default, SensorBug akan mulai mengiklankan data suhu pada interval 1 detik setelah dipasangkan dengan perangkat. Untuk menangkap data suhu, hanya itu yang diperlukan. Jika Anda berencana untuk memperluas menggunakan sensor posisi atau cahaya, maka konfigurasi perangkat akan diperlukan. Sebagai permulaan, kami akan memasangkan perangkat dan memutuskan sambungan. Ini akan cukup baik untuk tujuan penangkapan suhu. Mulailah dengan menekan kedua tombol pada SensorBug. LED biru/hijau akan berkedip, yang menunjukkan bahwa itu dihidupkan. Tekan salah satu tombol, LED hijau akan menyala, menunjukkan daya menyala. Jika LED hijau tidak menyala, tekan kedua tombol untuk mencoba menghidupkan perangkat lagi. Tekan dan tahan salah satu tombol hingga LED biru mulai berkedip. Ini akan menempatkan perangkat ke mode berpasangan. Masuk ke menu konfigurasi Bluetooth di telepon dan cari perangkat SensorBug. Setelah muncul, pilih untuk dipasangkan dengan perangkat. Itu saja, sekarang SensorBug diaktifkan dan mengiklankan data suhu
Langkah 4: Memasang Bluetooth LE Python Wrapper
Selanjutnya kita perlu menginstal perpustakaan untuk python untuk berbicara dengan Bluetooth LE stack. Instruksi dapat ditemukan di sini: https://github.com/IanHarvey/bluepyUntuk Python 2.7, semudah memasukkan perintah berikut:
$ sudo apt-get install python-pip libglib2.0-dev $ sudo pip install bluepy
Langkah 5: Pindai dan Temukan Alamat SensorBug
Untuk mengetahui alamat MAC SensorBug, gunakan perintah ini: $ sudo hcitool lescan Anda akan melihat output seperti:
EC:FE:7E:10:B1:92 (tidak diketahui)Jika Anda memiliki banyak perangkat bluetooth LE, mungkin sulit untuk mengetahui perangkat mana yang Anda ajak bicara. Anda dapat mencoba bluetoothctl yang memberikan detail lebih lanjut:
$ sudo bluetoothctl[bluetooth]# scan pada [BARU] Perangkat EC:FE:7E:10:B1:92 SensorBug10B192 [CHG] Perangkat EC:FE:7E:10:B1:92 ProdusenKunci Data: 0x0085 [CHG] Perangkat EC: FE:7E:10:B1:92 ProdusenNilai Data: 0x02 [CHG] Perangkat EC:FE:7E:10:B1:92 ProdusenNilai Data: 0x00 [CHG] Perangkat EC:FE:7E:10:B1:92 ProdusenNilai Data: 0x3c [CHG] Perangkat EC:FE:7E:10:B1:92 ProdusenNilai Data: 0x25 [CHG] Perangkat EC:FE:7E:10:B1:92 ProdusenNilai Data: 0x09 [CHG] Perangkat EC:FE:7E:10:B1:92 ProdusenNilai Data: 0x41 [CHG] Perangkat EC:FE:7E:10:B1:92 ProdusenNilai Data: 0x02 [CHG] Perangkat EC:FE:7E:10:B1:92 ProdusenNilai Data: 0x02 [CHG] Perangkat EC:FE:7E:10:B1:92 ProdusenNilai Data: 0x43 [CHG] Perangkat EC:FE:7E:10:B1:92 ProdusenNilai Data: 0x0b [CHG] Perangkat EC:FE:7E:10:B1:92 ManufacturerData Nilai: 0x01 [CHG] Perangkat EC:FE:7E:10:B1:92 ProdusenNilai Data: 0x6f
Catat alamat MAC, ini perlu dimasukkan ke dalam skrip python untuk menyaring perangkat Bluetooth LE yang tidak diinginkan
Langkah 6: Tambahkan Skrip Python
Salinan skrip Python tersedia dari:
drive.google.com/open?id=10vOeEAbS7mi_eXn_…
Ini file yang sama, jaga indentasi saat menyalin:
Juga, perbarui alamat MAC dalam file python agar sesuai dengan alamat sensor yang diperoleh dari hasil pemindaian.
# Program ini adalah perangkat lunak gratis: Anda dapat mendistribusikannya kembali dan/atau memodifikasi
# di bawah ketentuan Lisensi Publik Umum GNU sebagaimana diterbitkan oleh
# Yayasan Perangkat Lunak Bebas, baik versi 3 dari Lisensi, atau
# (sesuai pilihan Anda) versi yang lebih baru.
#
# Program ini disebarluaskan semoga bermanfaat, # tapi TANPA JAMINAN APAPUN; bahkan tanpa jaminan tersirat dari
# DAGANG atau KESESUAIAN UNTUK TUJUAN TERTENTU. Lihat
# Lisensi Publik Umum GNU untuk lebih jelasnya.
#
# Anda seharusnya telah menerima salinan GNU General Public License
# bersama dengan program ini. Jika tidak, lihat.
# bscan.py - Pemindai LE bluetooth sederhana dan pengekstrak data
dari bluepy.btle import Scanner, DefaultDelegate
waktu impor
impor pymysql
struktur impor
nama host = 'host lokal'
nama pengguna = 'datasrc'
kata sandi = 'datasrc000'
database = 'Sensor Bug'
#Masukkan alamat MAC sensor dari lescan
SENSOR_ADDRESS = ["ec:fe:7e:10:b9:92", "ec:fe:7e:10:b9:93"]
SENSOR_LOCATION = ["Garasi", "Eksterior"]
kelas DecodeErrorException(Pengecualian):
def _init_(diri, nilai):
diri.nilai = nilai
def _str_(sendiri):
kembali repr(nilai diri sendiri)
kelas ScanDelegate (DefaultDelegate):
def _init_(sendiri):
DefaultDelegate._init_(mandiri)
def handleDiscovery(self, dev, isNewDev, isNewData):
jika adalahNewDev:
print "Perangkat yang ditemukan", dev.addr
elif adalahDataBaru:
print "Menerima data baru dari", dev.addr
def doQueryInsert (sambungan, addr, loc, temp, accero):
Tabel #blesensor adalah tanggal, waktu, addr, lokasi, suhu, accero
skr = penghubung.kursor()
dostr = 'INSERT INTO data VALUES (CURRENT_DATE(), NOW(), %s, %s, %s, %s);'
cur.execute (dostr, (addr, loc, temp, accero))
samb.komit()
pemindai = Pemindai().denganDelegasi(ScanDelegate())
myConnection = pymysql.connect (host=hostname, user=username, passwd=password, db=database)
ManuDataHex =
ReadLoop = Benar
mencoba:
sementara (ReadLoop):
perangkat = scanner.scan(2.0)
ManuData = ""
untuk dev di perangkat:
entri = 0
AcceroData = 0
Tipe Akero = 0
TempData = 0
untuk saddr di SENSOR_ADDRESS:
entri += 1
jika (dev.addr == saddr):
print "Perangkat %s (%s), RSSI=%d dB" % (dev.addr, dev.addrType, dev.rssi)
CurrentDevAddr = saddr
CurrentDevLoc = SENSOR_LOCATION[entri-1]
for (adtype, desc, value) di dev.getScanData():
print " %s = %s" % (desc, nilai)
if (desc == "Produsen"):
ManuData = nilai
jika (ManuData == ""):
print "Tidak ada data yang diterima, akhiri decoding"
melanjutkan
#cetak ManuData
untuk saya, j di zip (ManuData[::2], ManuData[1::2]):
ManuDataHex.append(int(i+j, 16))
#Mulai decoding data Pabrikan mentah
jika ((ManuDataHex[0] == 0x85) dan (ManuDataHex[1] == 0x00)):
print "Byte header 0x0085 ditemukan"
lain:
print "Header byte 0x0085 tidak ditemukan, decoding berhenti"
melanjutkan
#Lewati Mayor/Minor
#Indeks 5 adalah 0x3c, menunjukkan level baterai dan konfigurasi #
jika (ManuDataHex[4] == 0x3c):
Tingkat Baterai = ManuDataHex[5]
ConfigCounter = ManuDataHex[6]
idx = 7
#print "TotalLen: " + str(len(ManuDataHex))
while (idx < len(ManuDataHex)):
#print "Idx: " + str(idx)
#print "Data: " + hex(ManuDataHex[idx])
jika (ManuDataHex[idx] == 0x41):
#Data accerometer
idx += 1
AcceleroType = ManuDataHex[idx]
AcceleroData = ManuDataHex[idx+1]
idx += 2
elif (ManuDataHex[idx] == 0x43):
#Data suhu
idx += 1
TempData = ManuDataHex[idx]
TempData += ManuDataHex[idx+1] * 0x100
TempData = TempData * 0,0625
idx += 2
lain:
idx += 1
print "Alamat Perangkat: " + CurrentDevAddr
print "Lokasi Perangkat: " + CurrentDevLoc
print "Level Baterai: " + str(Level Baterai) + "%"
print "Penghitung Konfigurasi: " + str(Penghitung Konfigurasi)
print "Data Accelero: " + hex(AcceleroType) + " " + hex(AcceleroData)
print "Data Suhu: " + str(Data Suhu)
doQueryInsert(myConnection, CurrentDevAddr, CurrentDevLoc, TempData, AcceleroData)
ReadLoop = Salah
kecuali DecodeErrorException:
lulus
Langkah 7: Uji Skrip Python
Script harus dijalankan di root, jadi:
$ sudo python bscan.pyPerangkat yang ditemukan ec:6e:7e:10:b1:92 Perangkat ec:6e:7e:10:b1:92 (publik), RSSI=-80 dB Bendera = 06 Layanan 16b Tidak Lengkap = 0a18 Produsen = 850002003c25094102024309016f Header byte 0x0085 ditemukan Alamat Perangkat: ec:6e:7e:10:b1:92 Lokasi Perangkat: Garasi Tingkat Baterai: 37% Penghitung Konfigurasi: 9 Data Accero: 0x2 0x2 Data Suhu: 16.5625
Langkah 8: Tambahkan Script Python ke Crontab
Skrip python harus dijalankan di root, jadi jika Anda ingin mengambil data secara otomatis, itu perlu ditambahkan ke crontab root. Untuk contoh ini, saya menjalankan skrip setiap 20 menit Gunakan perintah:
$ sudo crontab -e
# Edit file ini untuk memperkenalkan tugas yang akan dijalankan oleh cron.
# # Setiap tugas yang akan dijalankan harus didefinisikan melalui satu baris # menunjukkan dengan bidang yang berbeda kapan tugas akan dijalankan # dan perintah apa yang harus dijalankan untuk tugas tersebut # # Untuk menentukan waktu Anda dapat memberikan nilai konkret untuk # menit (m), jam (h), hari dalam bulan (dom), bulan (sen), # dan hari dalam seminggu (dow) atau gunakan '*' di kolom ini (untuk 'apa saja').# # Perhatikan bahwa tugas akan dimulai berdasarkan sistem cron # gagasan daemon tentang waktu dan zona waktu. # # Output dari tugas crontab (termasuk kesalahan) dikirim melalui # email ke pengguna yang memiliki file crontab (kecuali dialihkan). # # Misalnya, Anda dapat menjalankan pencadangan semua akun pengguna Anda # pada jam 5 pagi setiap minggu dengan: # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # # Untuk informasi lebih lanjut, lihat halaman manual crontab(5) dan cron(8) # # mh dom mon dow perintah 0 * * * * python /home/pi/bscan.py 20 * * * * python /home/pi/bscan.py 40 * * * * python /home/pi/bscan.py
Itu dia. Skrip python akan dijalankan secara berkala dan mengkode ulang output ke dalam database SQL
Langkah 9: Ekstra: Konfigurasikan SensorBug untuk Output Penginderaan Posisi
Dimungkinkan untuk mengonfigurasi SensorBug di Android untuk keluaran penginderaan posisiUntuk penginderaan perubahan posisi, disebut Garage door.sensing, SensorBug akan mendeteksi apakah perangkat berdiri tegak atau berbaring datar. Saat perangkat datar, nilai yang tercatat adalah 0x20 sedangkan jika perangkat berdiri tegak, nilainya 0x02Tidak membedakan apakah posisi X atau Y naik, selama sumbu Z tidak naik atau turun. Cara termudah untuk melakukannya adalah dengan menggunakan Aplikasi LightBlue. SensorBug akan muncul di menu pemindaian. Pilih perangkat yang ingin Anda konfigurasi, buka karakteristik GATT untuk konfigurasi Akselerometer UUID:9DC84838-7619-4F09-A1CE-DDCF63225B11
Lihat gambar: Tulis string konfigurasi baru:
010d3f02020000002d000000002Baca kembali string konfigurasi untuk mengonfirmasi penulisan. Ini mengaktifkan akselerometer untuk penginderaan posisi.
Direkomendasikan:
Pantau Suhu dan Kelembaban Dengan AM2301 di NodeMCU & Blynk: 3 Langkah
Memantau Suhu dan Kelembaban Dengan AM2301 di NodeMCU & Blynk: Ini adalah fakta yang sangat terkenal bahwa di sebagian besar vertikal industri, suhu, kelembaban, tekanan, kualitas udara, kualitas air, dll., memainkan faktor penting untuk dipantau terus menerus dan perlu sistem peringatan harus ada ketika nilai
Monitor Cuaca M5Stack M5stick C Berbasis ESP32 Dengan DHT11 - Pantau Suhu Kelembaban & Indeks Panas pada M5stick-C Dengan DHT11: 6 Langkah
Monitor Cuaca M5Stack M5stick C Berbasis ESP32 Dengan DHT11 | Memantau Suhu Kelembaban & Indeks Panas pada M5stick-C Dengan DHT11: Hai teman-teman, dalam instruksi ini kita akan belajar bagaimana menghubungkan sensor suhu DHT11 dengan m5stick-C (papan pengembangan oleh m5stack) dan menampilkannya di layar m5stick-C. Jadi dalam tutorial ini kita akan membaca suhu, kelembaban & panas aku
Pantau Galon Tangki Minyak Pemanas Dengan Email, SMS, dan Peringatan Pushbullet: 9 Langkah (dengan Gambar)
Pantau Galon Tangki Minyak Pemanas Dengan Email, SMS, dan Peringatan Pushbullet: INFORMASI KESELAMATAN: Jika ada yang ingin tahu apakah "ini aman untuk dibangun/diinstal" -- Saya telah membawa ini ke 2 perusahaan Minyak yang berbeda untuk umpan balik/pertimbangan keselamatan, dan saya telah menjalankan ini oleh Deputi Pencegahan Kebakaran pemadam kebakaran
Pantau Suhu Ruangan Rumah/Kantor di Desktop Anda: 4 Langkah
Memantau Suhu Ruang Rumah/Kantor di Desktop Anda: Untuk memantau ruangan atau kantor atau di mana pun kita dapat menggunakan proyek ini dan itu ditampilkan dengan begitu banyak detail seperti grafik, suhu waktu nyata, dan banyak lagi. Kami menggunakan: https://thingsio.ai/ Pertama-tama, kami harus membuat akun di platform IoT ini, sebuah
SENSOR SUHU DENGAN LCD DAN LED (Membuat Sensor Suhu Dengan LCD dan LED): 6 Langkah (Dengan Gambar)
SENSOR SUHU DENGAN LCD DAN LED (Membuat Sensor Suhu Dengan LCD dan LED): hai, saya Devi Rivaldi mahasiswa UNIVERSITAS NUSA PUTRA dari Indonesia, di sini saya akan berbagi cara membuat sensor suhu menggunakan Arduino dengan Output ke LCD dan LED. Ini adalah pembaca suhu dengan desain saya sendiri, dengan sensor ini dan