Isi kandungan:
- Langkah 1: Sediakan Raspberry Pi
- Langkah 2: Menyiapkan MySQL pada Raspberry Pi
- Langkah 3: Menyiapkan SensorBugs
- Langkah 4: Memasang Bluetooth LE Python Wrapper
- Langkah 5: Imbas dan Cari Alamat SensorBug
- Langkah 6: Tambahkan Skrip Python
- Langkah 7: Uji Skrip Python
- Langkah 8: Tambahkan Python Scrip ke Crontab
- Langkah 9: Tambahan: Konfigurasikan SensorBug untuk Output Sensing Position
Video: Pantau dan Catat Suhu Dengan Bluetooth LE dan RaspberryPi: 9 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:09
Instruksional ini adalah mengenai bagaimana menyatukan sistem pemantauan suhu pelbagai nod dengan bug sensor Bluetooth LE dari Blue Radios (BLEHome) dan RaspberryPi 3BTerima kasih kepada pengembangan standard Bluetooth LE, kini terdapat sensor tanpa wayar berkuasa rendah yang tersedia di pasaran dengan kos yang sangat rendah dan dapat dijalankan pada sel duit syiling selama berbulan-bulan dalam satu masa. Salah satu sensor yang saya ambil adalah dari Blue Radio yang disebut Sensor Bugs. Harganya sekitar $ 25 di Amazon, ia adalah peranti Bluetooth LE dengan sensor Suhu, sensor cahaya dan akerometer semuanya dibina ke dalam unit kecil yang dapat berkomunikasi tanpa wayar. Ini adalah padanan yang sesuai untuk Raspberry Pi 3B, yang mempunyai sokongan untuk radio Bluetooth LE.
Langkah 1: Sediakan Raspberry Pi
Langkah pertama adalah mendapatkan persediaan Raspberry Pi yang berfungsi. Ikuti arahan dari laman web Raspberry Pi, muatkan Raspbian pada kad SD, masukkan ke dalam Raspberry Pi dan boot. Saya menyediakan sistem saya dengan versi Raspbian Stretch Lite (No GUI) Nov 2017. Siapkan WiFi jika diperlukan, saya lebih suka menyesuaikan zon waktu ke zon waktu semasa dan bukannya UTC. Anda boleh melakukan ini walaupun arahannya: $ sudo dpkg-reconfigure tzdataRest of instruksi menganggap penyediaan dilakukan walaupun antara muka baris perintah.
Langkah 2: Menyiapkan MySQL pada Raspberry Pi
Adalah berguna untuk memasang pangkalan data secara tempatan untuk menyimpan semua data yang ditangkap. Memasang MySQL pada Raspberry Pi sangat mudah. Juga tidak sukar untuk mengubah skrip untuk menyambung ke pelayan SQL secara luaran, anda boleh melangkau langkah ini jika anda ingin menggunakan pelayan SQL di rangkaian. Terdapat banyak arahan di internet, saya mencadangkan ini: https:// www.stewright.me/2014/06/tutorial-install-…
Setelah pelayan SQL dipasang, anda boleh menggunakan klien MySQL CLI untuk membuat pengguna, pangkalan data dan jadual. Untuk memasukkan MySQL CLI, gunakan perintah:
$ sudo mysql -uroot-pFirst, buat pengguna tempatan untuk memasukkan data yang ditangkap:> BUAT PENGGUNA 'datasrc' @ 'localhost' DIENTIFKAN OLEH 'datasrc000'; Seterusnya, buat pangkalan data dan jadual:> BUAT DATABASE SensorBug; Menyiapkan pengguna kebenaran:> MEMBERIKAN SEMUA KEISTIMEWAAN PADA SensorBug. * KE 'datasrc' @ 'localhost'; Sekarang tambahkan jadual baru ke pangkalan data. Untuk contoh ini, saya akan menambahkan jadual dengan lajur berikut: TARIKH, MASA, ALAMAT, LOKASI, SUHU dan ACCEROMETER
- TARIKH / MASA - Ini adalah tarikh dan masa data direkodkan
- ALAMAT - Ini adalah MAC SensorBug yang diambil dari mesej
- LOKASI - Rentetan yang dapat dibaca manusia untuk menunjukkan di mana sensor berada
- SUHU - Ini adalah suhu yang direkodkan
- ACCELE - Ini adalah nilai output accelerometer, berguna untuk merakam kedudukan sensor (jika diaktifkan)
Perintah yang melakukan ini adalah:> GUNAKAN SensorBug; > BUAT data TABLE (tarikh DATE, waktu WAKTU, alamat TINYTEXT, lokasi TINYTEXT, suhu FLOAT, accele INT); Kini pangkalan data sudah siap, kita dapat beralih ke pengaturan sensorBugs.
Langkah 3: Menyiapkan SensorBugs
Bug sensor adalah peranti kecil yang cukup kemas. Malangnya, pengeluar hanya menyediakan aplikasi IOS untuk memprogramkannya. Walau bagaimanapun, masih boleh digunakan dengannya jika anda hanya mempunyai peranti Android. Langkah pertama, pasangkan peranti dengan telefon. Tanpa memasangkan peranti, SensorBug tidak akan mengiklankan data. Saya cuba melihat sama ada saya dapat melakukan ini secara langsung dengan RaspberryPi, malangnya, sepertinya pemacu Bluetooth LE pada RaspberryPi masih eksperimen dan mengandungi pepijat untuk mengelakkannya berpasangan dengan peranti Bluetooth LE. Versi pemacu blueZ masa depan mungkin memperbaikinya, tetapi seperti penulisan semasa, tidak ada cara untuk memasangkan SensorBug dengan RaspberryPi. Nasib baik, kami tidak perlu memasangkan peranti untuk menangkap data yang diiklankan. Satu-satunya perkara yang kita perlukan ialah telefon untuk mengkonfigurasi SensorBug. Secara lalai, SensorBug akan mula mengiklankan data suhu pada selang 1 saat setelah dipasangkan dengan peranti. Untuk data suhu tangkapan, hanya itu yang diperlukan. Sekiranya anda merancang untuk memperluas untuk menggunakan kedudukan atau sensor cahaya, daripada konfigurasi, peranti akan diperlukan. Untuk pemula, kami akan memasangkan peranti dan memutuskan sambungan. Ini akan cukup baik untuk tujuan penangkapan suhu. Mulakan dengan menekan kedua-dua butang pada SensorBug. LED biru / hijau akan berkelip, yang menunjukkan ia dihidupkan. Tekan salah satu butang, LED hijau akan menyala, menunjukkan bahawa suaranya sudah menyala. Sekiranya LED hijau tidak menyala, tekan kedua-dua butang untuk mencuba menghidupkan semula peranti. Tekan dan tahan salah satu butang sehingga LED biru mula berkedip. Ini akan menjadikan peranti menjadi mod pasangan. Pergi ke menu konfigurasi Bluetooth di telefon dan cari peranti SensorBug. Setelah muncul, pilih untuk dipasangkan dengan peranti. Itu sahaja, sekarang SensorBug diaktifkan dan mengiklankan data suhu
Langkah 4: Memasang Bluetooth LE Python Wrapper
Seterusnya kita perlu memasang perpustakaan untuk python untuk bercakap dengan Bluetooth LE stack. Arahan boleh didapati di sini: https://github.com/IanHarvey/bluepy Untuk Python 2.7, semudah memasukkan arahan berikut:
$ sudo apt-get install python-pip libglib2.0-dev $ sudo pip install bluepy
Langkah 5: Imbas dan Cari Alamat SensorBug
Untuk mengetahui alamat MAC SensorBug, gunakan arahan ini: $ sudo hcitool lescan Anda akan melihat output seperti:
EC: FE: 7E: 10: B1: 92 (tidak diketahui) Sekiranya anda mempunyai banyak peranti bluetooth LE, mungkin sukar untuk mengetahui yang mana anda bercakap. Anda boleh mencuba bluetoothctl yang memberikan lebih banyak butiran:
$ sudo bluetoothctl [bluetooth] # scan pada [BARU] EC Peranti: FE: 7E: 10: B1: 92 SensorBug10B192 [CHG] EC Device: FE: 7E: 10: B1: 92 ManufacturerData Key: 0x0085 [CHG] EC Device: FE: 7E: 10: B1: 92 PengeluarData Nilai: 0x02 [CHG] EC Device: FE: 7E: 10: B1: 92 ManufacturerData Value: 0x00 [CHG] EC Device: FE: 7E: 10: B1: 92 ManufacturerData Value: 0x3c [CHG] EC Device: FE: 7E: 10: B1: 92 ManufacturerData Value: 0x25 [CHG] EC Device: FE: 7E: 10: B1: 92 ManufacturerData Value: 0x09 [CHG] EC Device: FE: 7E: 10: B1: 92 PembuatData Nilai: 0x41 [CHG] EC Device: FE: 7E: 10: B1: 92 ManufacturerData Value: 0x02 [CHG] EC Device: FE: 7E: 10: B1: 92 ManufacturerData Value: 0x02 [CHG] Device EC: FE: 7E: 10: B1: 92 Nilai Data Pengilang: 0x43 [CHG] EC Peranti: FE: 7E: 10: B1: 92 Nilai Pengeluar Data: 0x0b [CHG] EC Peranti: FE: 7E: 10: B1: 92 ManufacturerData Nilai: 0x01 [CHG] EC Peranti: FE: 7E: 10: B1: 92 Pengilang Nilai Data: 0x6f
Catat alamat MAC, ini perlu dimasukkan ke dalam skrip python untuk menyaring peranti Bluetooth LE yang tidak diingini
Langkah 6: Tambahkan Skrip Python
Salinan skrip Python boleh didapati dari:
drive.google.com/open?id=10vOeEAbS7mi_eXn_…
Berikut adalah fail yang sama, jaga indent ketika menyalin:
Juga, kemas kini alamat MAC dalam fail python agar sesuai dengan alamat sensor yang diperoleh dari hasil imbasan.
# Program ini adalah perisian percuma: anda boleh mengagihkannya dan / atau mengubah suai
# di bawah syarat-syarat Lesen Awam Umum GNU seperti yang diterbitkan oleh
# Yayasan Perisian Percuma, sama ada versi 3 dari Lesen, atau
# (mengikut pilihan anda) versi lain.
#
# Program ini diedarkan dengan harapan dapat bermanfaat, # tetapi TANPA JAMINAN; tanpa jaminan tersirat dari
# KELEBIHAN atau KESESUAIAN UNTUK TUJUAN TERTENTU. Lihat
# GNU General Public License untuk maklumat lebih lanjut.
#
# Anda semestinya telah menerima salinan GNU General Public License
# bersama dengan program ini. Sekiranya tidak, lihat.
# bscan.py - Pengimbas bluetooth LE ringkas dan pengekstrak data
dari pengimbas import bluepy.btle, DefaultDelegate
masa import
import pymysql
struktur import
nama hos = 'localhost'
nama pengguna = 'datasrc'
kata laluan = 'datasrc000'
pangkalan data = 'SensorBug'
#Masukkan alamat MAC sensor dari lescan
SENSOR_ADDRESS = ["ec: fe: 7e: 10: b9: 92", "ec: fe: 7e: 10: b9: 93"]
SENSOR_LOCATION = ["Garage", "Exterior"]
kelas DecodeErrorException (Pengecualian):
def _init _ (diri, nilai):
diri.nilai = nilai
def _str _ (diri):
return repr (nilai diri.)
kelas ScanDelegate (DefaultDelegate):
def _init _ (diri):
DefaultDelegate._ init _ (diri)
def handleDiscovery (diri, dev, isNewDev, isNewData):
jika isNewDev:
cetak "Perisian yang ditemui", dev.addr
elif isNewData:
cetak "Menerima data baru dari", dev.addr
def doQueryInsert (samb, addr, loc, temp, accero):
Jadual #blesensor adalah tarikh, masa, addr, lokasi, temp, accero
cur = conn.cursor ()
dostr = 'MASUKKAN NILAI data (CURRENT_DATE (), SEKARANG (),% s,% s,% s,% s);'
cur.execute (dostr, (addr, loc, temp, accero))
conn.commit ()
scanner = Pengimbas (). denganDelegate (ScanDelegate ())
myConnection = pymysql.connect (host = nama host, pengguna = nama pengguna, passwd = kata laluan, db = pangkalan data)
ManuDataHex =
ReadLoop = Betul
cuba:
semasa (ReadLoop):
devices = scanner.scan (2.0)
ManuData = ""
untuk peranti dalam peranti:
kemasukan = 0
AcceroData = 0
Jenis Accero = 0
TempData = 0
untuk saddr di SENSOR_ADDRESS:
kemasukan + = 1
jika (dev.addr == saddr):
cetak "Peranti% s (% s), RSSI =% d dB"% (dev.addr, dev.addrType, dev.rssi)
CurrentDevAddr = saddr
CurrentDevLoc = SENSOR_LOCATION [entri-1]
untuk (adtype, desc, value) dalam dev.getScanData ():
cetak "% s =% s"% (turun, nilai)
jika (desc == "Pengilang"):
ManuData = nilai
jika (ManuData == ""):
cetak "Tidak ada data yang diterima, penyahkodan akhir"
teruskan
#cetak ManuData
untuk i, j dalam zip (ManuData [:: 2], ManuData [1:: 2]):
ManuDataHex.append (int (i + j, 16))
#Mulakan penyahkodan data Pengilang mentah
jika ((ManuDataHex [0] == 0x85) dan (ManuDataHex [1] == 0x00)):
cetak "Header byte 0x0085 ditemui"
lain:
cetak "Header byte 0x0085 tidak dijumpai, penyahkodan berhenti"
teruskan
#Skip Major / Minor
#Index 5 adalah 0x3c, menunjukkan tahap bateri dan konfigurasi #
jika (ManuDataHex [4] == 0x3c):
BatteryLevel = ManuDataHex [5]
ConfigCounter = ManuDataHex [6]
idx = 7
#print "TotalLen:" + str (len (ManuDataHex))
sementara (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
cetak "Alamat Peranti:" + CurrentDevAddr
cetak "Lokasi Peranti:" + CurrentDevLoc
cetak "Level Battery:" + str (BatteryLevel) + "%"
cetak "Config Counter:" + str (ConfigCounter)
cetak "Data Accelero:" + hex (Jenis Accelero) + "" + hex (AcceleroData)
cetak "Data Temp:" + str (TempData)
doQueryInsert (myConnection, CurrentDevAddr, CurrentDevLoc, TempData, AcceleroData)
ReadLoop = Salah
kecuali DecodeErrorException:
lulus
Langkah 7: Uji Skrip Python
Skrip mesti dijalankan secara root, jadi:
$ sudo python bscan.pyPerisian yang dijumpai ec: 6e: 7e: 10: b1: 92 Peranti ec: 6e: 7e: 10: b1: 92 (awam), RSSI = -80 dB Bendera = 06 Perkhidmatan 16b Tidak Lengkap = 0a18 Pengilang = 850002003c25094102024309016f Header byte 0x0085 dijumpai Alamat Peranti: ec: 6e: 7e: 10: b1: 92 Lokasi Peranti: Garasi Bateri Aras: 37% Konfigurasi Konter: 9 Data Accero: 0x2 0x2 Data Temp: 16.5625
Langkah 8: Tambahkan Python Scrip ke Crontab
Skrip python mesti dijalankan dalam root, jadi jika anda ingin menangkap data secara automatik, ia perlu ditambahkan ke crontab root. Untuk contoh ini, saya menjalankan skrip setiap 20 minit Gunakan arahan:
$ sudo crontab -e
# Edit fail ini untuk memperkenalkan tugas yang akan dijalankan oleh cron.
# # Setiap tugas yang dijalankan harus ditentukan melalui satu baris # menunjukkan dengan medan yang berlainan ketika tugas akan dijalankan # dan perintah apa yang akan dijalankan untuk tugas tersebut # # Untuk menentukan waktu anda dapat memberikan nilai konkrit selama # minit (m), jam (h), hari bulan (dom), bulan (mon), # dan hari dalam seminggu (dow) atau gunakan '*' dalam bidang ini (untuk 'mana-mana'). # # Perhatikan bahawa tugas akan dimulakan berdasarkan pengertian sistem daemon # daemon mengenai zon waktu dan waktu. # # Output dari pekerjaan crontab (termasuk kesalahan) dihantar melalui # e-mel kepada pengguna yang dimiliki oleh file crontab (kecuali diarahkan). # # Contohnya, anda boleh menjalankan sandaran semua akaun pengguna anda # jam 5 pagi setiap minggu dengan: # 0 5 * * 1 tar -zcf /var/backups/home.tgz / home / # # Untuk maklumat lebih lanjut, lihat halaman manual crontab (5) dan cron (8) # # mh dom mon dow command 0 * * * * python /home/pi/bscan.py 20 * * * * python /home/pi/bscan.py 40 * * * * python /home/pi/bscan.py
Itu sahaja. Skrip python akan dijalankan secara berkala dan mengekod semula output ke pangkalan data SQL
Langkah 9: Tambahan: Konfigurasikan SensorBug untuk Output Sensing Position
Adalah mungkin untuk mengkonfigurasi SensorBug pada Android untuk output penderiaan kedudukan Untuk penginderaan perubahan kedudukan, yang disebut pintu Garage. Sensor, SensorBug akan mengesan jika peranti berdiri tegak atau berbaring rata. Apabila peranti rata, nilai yang dicatat adalah 0x20 semasa peranti berdiri tegak, nilainya adalah 0x02. Ia tidak membezakan jika kedudukan X atau Y naik, selagi paksi Z tidak naik atau turun. Cara termudah untuk melakukannya adalah dengan menggunakan Aplikasi LightBlue. SensorBug akan muncul di menu imbasan. Pilih peranti yang ingin anda konfigurasikan, pergi ke ciri GATT untuk konfigurasi Accelerometer UUID: 9DC84838-7619-4F09-A1CE-DDCF63225B11
Lihat gambar: Tulis rentetan konfigurasi baru:
010d3f02020000002d00000002Baca semula rentetan konfigurasi untuk mengesahkan penulisan. Ini membolehkan pecutan untuk pengesanan kedudukan.
Disyorkan:
Pantau Suhu dan Kelembapan Dengan AM2301 di NodeMCU & Blynk: 3 Langkah
Monitor Suhu dan Kelembapan Dengan AM2301 di NodeMCU & Blynk: Ini adalah fakta yang sangat terkenal bahawa di kebanyakan menegak industri, suhu, kelembapan, tekanan, kualiti udara, kualiti air, dan lain-lain, memainkan faktor penting untuk dipantau secara berterusan dan perlu sistem amaran perlu ada ketika nilai
Monitor Cuaca M5Stack M5stick C Berbasis ESP32 Dengan DHT11 - Pantau Indeks Kelembapan & Haba Suhu pada M5stick-C Dengan DHT11: 6 Langkah
Monitor Cuaca Berasaskan ESP32 M5Stack M5stick C Dengan DHT11 | Pantau Indeks Kelembapan Suhu & Panas pada M5stick-C Dengan DHT11: Hai kawan-kawan, dalam instruksi ini kita akan belajar bagaimana menghubungkan antara sensor suhu DHT11 dengan m5stick-C (papan pengembangan oleh m5stack) dan memaparkannya pada paparan m5stick-C. Jadi dalam tutorial ini kita akan membaca suhu, kelembapan & panas saya
Pantau Galon Tangki Minyak Pemanasan Dengan Makluman E-mel, SMS, dan Pushbullet: 9 Langkah (dengan Gambar)
Pantau Galon Tangki Minyak Pemanas Dengan E-mel, SMS, dan Makluman Pushbullet: MAKLUMAT KESELAMATAN: Sekiranya ada yang ingin mengetahui sama ada " ini selamat dibina / dipasang " - Saya telah membawanya ke 2 syarikat Minyak yang berbeza untuk maklum balas / keselamatan, dan saya telah menjalankannya oleh Wakil Pencegahan Kebakaran jabatan pemadam kebakaran
Pantau Suhu Bilik Rumah / Pejabat di Desktop Anda: 4 Langkah
Pantau Suhu Bilik Rumah / Pejabat di Desktop Anda: Untuk memantau bilik atau pejabat atau di mana sahaja kita boleh menggunakan projek ini dan yang ditunjukkan dengan begitu banyak perincian seperti grafik, suhu masa nyata dan banyak lagi. Kami menggunakan: https://thingsio.ai/ Pertama sekali, kita mesti membuat akaun 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. Ini adalah bacaan suhu dengan reka bentuk saya sendiri, dengan sensor ini dan