Përmbajtje:
- Hapi 1: Konfiguroni Raspberry Pi
- Hapi 2: Vendosja e MySQL në Raspberry Pi
- Hapi 3: Vendosja e SensorBugs
- Hapi 4: Instalimi i Bluetooth LE Python Wrapper
- Hapi 5: Skanoni dhe gjeni adresën e SensorBug
- Hapi 6: Shtoni Skriptin Python
- Hapi 7: Provoni Skriptin Python
- Hapi 8: Shtoni Python Scrip në Crontab
- Hapi 9: Extra: Konfiguroni SensorBug për Position Sensing Output
Video: Monitoroni dhe regjistroni temperaturën me Bluetooth LE dhe RaspberryPi: 9 hapa (me fotografi)
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:19
Ky udhëzues ka të bëjë me mënyrën e krijimit të një sistemi të monitorimit të temperaturës me shumë nyje me defektin e sensorit Bluetooth LE nga Blue Radios (BLEHome) dhe RaspberryPi 3B Falë zhvillimit të standardit Bluetooth LE, tani ka në dispozicion sensorë pa tel me fuqi të ulët të gatshme në treg. me kosto shumë të ulët dhe mund të funksionojë në një qelizë të vetme monedhe për muaj në të njëjtën kohë. Një nga këta sensorë që mora është nga Blue Radio i quajtur Sensor Bugs. Kushton rreth 25 dollarë në Amazon, është një pajisje Bluetooth LE me sensorë të temperaturës, sensor të dritës dhe akrometër, të gjitha të ndërtuara në një njësi të vogël që mund të komunikojë pa tel. Kjo është një ndeshje e përkryer për Raspberry Pi 3B, e cila ka ndërtuar në mbështetje të radios Bluetooth LE Me
Hapi 1: Konfiguroni Raspberry Pi
Hapi i parë është të merrni një konfigurim të punës të Raspberry Pi. Ndiqni udhëzimet nga faqja e internetit e Raspberry Pi, ngarkoni Raspbian në një kartë SD, futeni në Raspberry Pi dhe niseni atë. Unë e konfigurova sistemin tim me versionin Raspbian Stretch Lite (Pa GUI) Nëntor 2017. Konfiguro WiFi nëse është e nevojshme, preferoj të rregulloj zona kohore në zonën kohore aktuale në vend të UTC. Ju mund ta bëni këtë me anë të komandës: $ sudo dpkg-rikonfiguroni tzdataResti i udhëzimit supozoni se konfigurimi është bërë përmes ndërfaqes së linjës së komandës.
Hapi 2: Vendosja e MySQL në Raspberry Pi
Usefulshtë e dobishme të keni një bazë të dhënash të instaluar në vend për të ruajtur të gjitha të dhënat e kapura. Instalimi i MySQL në Raspberry Pi është super i lehtë. Gjithashtu nuk është e vështirë të modifikoni skriptin për t'u lidhur me një server SQL nga jashtë, mund ta kaloni këtë hap nëse dëshironi të përdorni një server SQL në rrjet. Ka shumë udhëzime në rrjet, unë sugjeroj këtë: https:// www.stewright.me/2014/06/tutorial-install-…
Pasi të jetë instaluar serveri SQL, mund të përdorni klientin MySQL CLI për të krijuar përdoruesin, bazën e të dhënave dhe tabelën. Për të hyrë në MySQL CLI, përdorni komandën:
$ sudo mysql -uroot -pSë pari, krijoni një përdorues lokal për të futur të dhënat e kapura:> CREATE USER 'datasrc'@'localhost' IDENTIFYED BY 'datasrc000'; Tjetra, krijoni një bazë të dhënash dhe tabelë:> CREATE BAZA E TAT DHATNAVE SensorBug; Konfigurimi i përdoruesit leja:> JEPI T ALL GJITHA PRIVILEGJET N S SensorBug.* TE 'datasrc'@'localhost'; Tani shtoni një tabelë të re në bazën e të dhënave. Për këtë shembull, unë do të shtoj një tabelë me kolonat e mëposhtme: DATA, KOHA, ADRESA, LOKACIONI, TEMPERATURA dhe ACCEROMETER
- DATA/KOHA - Kjo është data dhe koha kur regjistrohen të dhënat
- ADRESA - Ky është MAC i SensorBug nga i cili kapet mesazhi
- LOKACIONI - Një varg i lexueshëm nga njerëzit për të treguar se ku ndodhet sensori
- TEMPERATURA - Kjo është temperatura e regjistruar
- ACCELE - Kjo është vlera e daljes së akselerometrit, e dobishme për regjistrimin e pozicionit të sensorit (nëse është e aktivizuar)
Komanda që e bën këtë është:> USE SensorBug; > Krijoni të dhëna TABELA (data DATA, koha KOHA, adresa TINYTEXT, vendndodhja TINYTEXT, temperatura FLOAT, shpejtimi INT); Tani baza e të dhënave është gati, mund të kalojmë në konfigurimin e sensorëveBugs.
Hapi 3: Vendosja e SensorBugs
Gabimet e sensorëve janë pajisje të vogla mjaft të pastra. Fatkeqësisht, prodhuesi siguroi vetëm aplikacionin IOS për programimin e tij. Sidoqoftë, është akoma e mundur të punosh me të nëse ke vetëm një pajisje Android. Hapi i parë, çiftoni pajisjen me një telefon. Pa e çiftuar pajisjen, SensorBug nuk do të reklamojë të dhëna. Unë u përpoqa të shikoja nëse mund ta bëj këtë drejtpërdrejt me RaspberryPi, për fat të keq, duket se drejtuesi i Bluetooth LE në RaspberryPi është ende eksperimental dhe përmban gabime për ta parandaluar atë nga çiftimi me pajisjet Bluetooth LE. Versioni i ardhshëm i shoferit blueZ mund ta rregullojë këtë, por siç shkruhet aktualisht, nuk ka asnjë mënyrë për të çiftuar SensorBug me RaspberryPi. Për fat të mirë, ne nuk kemi nevojë të çiftojmë pajisjen për të kapur të dhënat e saj të reklamuara. E vetmja gjë që na nevojitet është një telefon për të konfiguruar SensorBug. Si parazgjedhje, SensorBug do të fillojë të reklamojë të dhënat e temperaturës në intervalin 1s sapo të çiftëzohet me një pajisje. Për të kapur të dhënat e temperaturës, kjo është gjithçka që nevojitet. Nëse planifikoni të zgjeroheni për të përdorur pozicionin ose sensorin e dritës, atëherë konfigurimi i pajisjes do të jetë i nevojshëm. Për të filluar, ne do të çiftojmë pajisjen dhe do të shkëputemi. Kjo do të jetë mjaft e mirë për qëllimin e kapjes së temperaturës. Filloni duke shtypur të dy butonat në SensorBug. LED blu/jeshil do të pulsojë, gjë që tregon se është ndezur. Shtypni njërën prej butonave, LED i gjelbër duhet të ndizet, tregoni se fuqia është e ndezur. Nëse LED jeshil nuk është ndezur, shtypni të dy butonin për të provuar të ndizni pajisjen përsëri. Shtypni dhe mbani njërën prej butonave derisa LED blu të fillojë të pulsojë. Kjo do ta vendosë pajisjen në modalitetin e çiftimit. Shkoni në menunë e konfigurimit Bluetooth në telefon dhe kërkoni pajisjen SensorBug. Pasi të shfaqet, zgjidhni atë për t'u çiftuar me pajisjen. Kjo është ajo, tani SensorBug është mundësuar dhe reklamon të dhënat e temperaturës
Hapi 4: Instalimi i Bluetooth LE Python Wrapper
Tjetra ne duhet të instalojmë bibliotekën për python për të folur me stivën Bluetooth LE. Udhëzimi mund të gjendet këtu: https://github.com/IanHarvey/bluepyPër Python 2.7, është aq e thjeshtë sa të futësh komandat e mëposhtme:
$ sudo apt-get install python-pip libglib2.0-dev $ sudo pip install bluepy
Hapi 5: Skanoni dhe gjeni adresën e SensorBug
Për të gjetur adresën Mens të SensorBug, përdorni këtë komandë: $ sudo hcitool lescan Duhet të shihni daljen si:
EC: FE: 7E: 10: B1: 92 (e panjohur) Nëse keni shumë pajisje Bluetooth LE përreth, mund të jetë e vështirë të zbuloni se me cilën po flisni. Mund të provoni bluetoothctl i cili jep më shumë detaje:
$ sudo bluetoothctl [bluetooth]# skanim në [E RE] Pajisja EC: FE: 7E: 10: B1: 92 SensorBug10B192 [CHG] Pajisja EC: FE: 7E: 10: B1: 92 Prodhuesi Çelësi i të dhënave: 0x0085 [CHG] Pajisja EC: FE: 7E: 10: B1: 92 Vlera e të dhënave të prodhuesit: 0x02 [CHG] Pajisja EC: FE: 7E: 10: B1: 92 Vlera e të dhënave të prodhuesit: 0x00 [CHG] Pajisja EC: FE: 7E: 10: B1: 92 Vlera e të dhënave të prodhuesit: 0x3c [CHG] Pajisja EC: FE: 7E: 10: B1: 92 Vlera e të Dhënave: 0x25 [CHG] Pajisja EC: FE: 7E: 10: B1: 92 Vlera e të Dhënave të Prodhuesit: 0x09 [CHG] Pajisja EC: FE: 7E: 10: B1: 92 Vlera e të Dhënave të Prodhuesit: 0x41 [CHG] Pajisja EC: FE: 7E: 10: B1: 92 Vlera e të Dhënave të Prodhuesit: 0x02 [CHG] Pajisja EC: FE: 7E: 10: B1: 92 Vlera e të Dhënave të Prodhuesit: 0x02 [CHG] Pajisja EC: FE: 7E: 10: B1: 92 Vlera e të Dhënave të Prodhuesit: 0x43 [CHG] Pajisja EC: FE: 7E: 10: B1: 92 Prodhuesi Vlera e të dhënave: 0x0b [CHG] Pajisja EC: FE: 7E: 10: B1: 92 ProdhuesiData Vlera: 0x01 [CHG] Pajisja EC: FE: 7E: 10: B1: 92 Prodhuesi Vlera e të dhënave: 0x6f
Regjistroni adresën MAC, kjo do të duhet të futet në shkrimin python për të filtruar pajisjet e padëshiruara Bluetooth LE
Hapi 6: Shtoni Skriptin Python
Një kopje e shkrimit Python është në dispozicion nga:
drive.google.com/open?id=10vOeEAbS7mi_eXn_…
Këtu është e njëjta skedar, kujdesuni për indentin kur kopjoni:
Gjithashtu, përditësoni adresën MAC në skedarin python që të përputhet me adresën e sensorit të marrë nga rezultati i skanimit.
# Ky program është softuer falas: mund ta rishpërndani dhe/ose modifikoni
# ajo sipas kushteve të Licencës së Përgjithshme Publike GNU siç është botuar nga
# Fondacioni i Softuerit të Lirë, ose versioni 3 i Licencës, ose
# (sipas dëshirës tuaj) çdo version të mëvonshëm.
#
# Ky program shpërndahet me shpresën se do të jetë i dobishëm, # por pa asnjë garanci; pa as garancinë e nënkuptuar të
# TREGTUESHMRI ose P FRSHTATSI P FORR Q ALLIM T VETM. Shihni
# Licencë e Përgjithshme Publike GNU për më shumë detaje.
#
# Ju duhet të kishit marrë një kopje të Licencës së Përgjithshme Publike GNU
# së bashku me këtë program. Nëse jo, shihni.
# bscan.py - Skaner i thjeshtë bluetooth LE dhe nxjerrës i të dhënave
nga skaneri i importit bluepy.btle, DefaultDelegate
koha e importit
importo pymysql
struktura e importit
hostname = 'localhost'
emri i përdoruesit = 'datasrc'
fjalëkalim = 'datasrc000'
baza e të dhënave = 'SensorBug'
#Futni adresën MAC të sensorit nga lescan
SENSOR_ADDRESS = ["ec: fe: 7e: 10: b9: 92", "ec: fe: 7e: 10: b9: 93"]
SENSOR_LOCATION = ["Garazh", "Jashtë"]
klasa DecodeErrorException (Përjashtim):
def _init _ (vetja, vlera):
veta.vlera = vlera
def _str _ (vetja):
kthim repr (vlera e vetes)
klasa ScanDelegate (DefaultDelegate):
def _init _ (vetja):
DefaultDelegate._ init _ (vetë)
def handleDiscovery (vetja, dev, isNewDev, isNewData):
nëse ështëNewDev:
print "Pajisja e zbuluar", dev.addr
elif ështëData e Re:
print "Marrë të dhëna të reja nga", dev.addr
def doQueryInsert (conn, addr, loc, temp, accero):
Tabela #blesensor është data, koha, adr, vendndodhja, temp, accero
cur = conn.cursor ()
dostr = 'HYR NO VLERAT E T data DHNAVE (CURRENT_DATE (), TANI (), %s, %s, %s, %s);'
cur.execute (dostr, (addr, loc, temp, accero))
conn.commit ()
skaner = Skaner (). meDelegate (ScanDelegate ())
myConnection = pymysql.connect (host = emri i hostit, përdoruesi = emri i përdoruesit, passwd = fjalëkalimi, db = baza e të dhënave)
ManuDataHex =
ReadLoop = E vërtetë
provo:
ndërsa (ReadLoop):
pajisje = skaner. skanim (2.0)
ManuData = ""
për dev në pajisjet:
hyrje = 0
AcceroData = 0
AcceroType = 0
TempData = 0
për saddr në SENSOR_ADDRESS:
hyrja += 1
nëse (dev.addr == saddr):
print "Pajisja %s (%s), RSSI = %d dB" %(dev.addr, dev.addrType, dev.rssi)
CurrentDevAddr = saddr
CurrentDevLoc = SENSOR_LOCATION [hyrja-1]
për (adtype, desc, value) në dev.getScanData ():
print " %s = %s" %(desc, vlera)
nëse (desc == "Prodhuesi"):
ManuData = vlera
nëse (ManuData == ""):
print "Nuk janë marrë të dhëna, përfundo deshifrimin"
vazhdo
#print ManuData
për i, j në zip (ManuData [:: 2], ManuData [1:: 2]):
ManuDataHex.append (int (i+j, 16))
#Filloni deshifrimin e të dhënave të papërpunuara të Prodhuesit
nëse ((ManuDataHex [0] == 0x85) dhe (ManuDataHex [1] == 0x00)):
print "Bajti i kokës 0x0085 u gjet"
tjeter:
print "Bajti i kokës 0x0085 nuk u gjet, dekodimi ndalon"
vazhdo
#Skip Major/I Vogël
#Index 5 është 0x3c, tregoni nivelin e baterisë dhe konfiguroni #
nëse (ManuDataHex [4] == 0x3c):
BatteryLevel = ManuDataHex [5]
ConfigCounter = ManuDataHex [6]
idx = 7
#print "TotalLen:" + str (len (ManuDataHex))
ndërsa (idx <len (ManuDataHex)):
#print "Idx:" + str (idx)
#print "Të dhënat:" + gjashtëkëndësh (ManuDataHex [idx])
nëse (ManuDataHex [idx] == 0x41):
#Të dhëna të akrometrit
idx += 1
AcceleroType = ManuDataHex [idx]
AcceleroData = ManuDataHex [idx+1]
idx += 2
elif (ManuDataHex [idx] == 0x43):
#Të dhëna të temperaturës
idx += 1
TempData = ManuDataHex [idx]
TempData += ManuDataHex [idx +1] * 0x100
TempData = TempData * 0.0625
idx += 2
tjeter:
idx += 1
printoni "Adresa e pajisjes:" + CurrentDevAddr
printoni "Vendndodhja e pajisjes:" + CurrentDevLoc
printoni "Niveli i baterisë:" + str (BatteryLevel) + "%"
printoni "Countig Config:" + str (ConfigCounter)
print "Accelero Data:" + hex (AcceleroType) + "" + hex (AcceleroData)
shtyp "Temp Data:" + str (TempData)
doQueryInsert (myConnection, CurrentDevAddr, CurrentDevLoc, TempData, AcceleroData)
ReadLoop = E gabuar
përveç DecodeErrorException:
kaloj
Hapi 7: Provoni Skriptin Python
Skenari duhet të ekzekutohet në rrënjë, kështu që:
$ sudo python bscan.py Pajisja e zbuluar ec: 6e: 7e: 10: b1: 92 Pajisja ec: 6e: 7e: 10: b1: 92 (publike), RSSI = -80 dB Flamujt = 06 Shërbimet jo të plota 16b = 0a18 Prodhuesi = 850002003c25094102024309016f Header byte 0x0085 u gjet Adresa e pajisjes: ec: 6e: 7e: 10: b1: 92 Vendndodhja e pajisjes: Garazh Niveli i baterisë: 37% Counter Config: 9 Accero Data: 0x2 0x2 Temp Data: 16.5625
Hapi 8: Shtoni Python Scrip në Crontab
Skenari python duhet të ekzekutohet në rrënjë, kështu që nëse doni të kapni të dhënat automatikisht, do të duhet të shtohet në crontab të rrënjës. Për këtë shembull, unë ekzekutoj skriptin çdo 20 minuta Përdorni komandën:
$ sudo crontab -e
# Redaktoni këtë skedar për të prezantuar detyrat që do të drejtohen nga cron.
# # Çdo detyrë për t'u ekzekutuar duhet të përcaktohet përmes një rreshti të vetëm # duke treguar me fusha të ndryshme kur detyra do të ekzekutohet # dhe çfarë komande të ekzekutohet për detyrën # # Për të përcaktuar kohën mund të jepni vlera konkrete për # minuta (m), ora (h), dita e muajit (dom), muaji (e hënë), # dhe dita e javës (dow) ose përdorni '*' në këto fusha (për 'çdo'). # # Vini re se detyrat do të fillojnë bazuar në nocionin e sistemit të kronit # daemon për kohën dhe zonat kohore. # # Dalja e punëve të crontab (përfshirë gabimet) i dërgohet përmes # email përdoruesit të cilit i përket skedari crontab (nëse nuk ridrejtohet). # # Për shembull, mund të bëni një kopje rezervë të të gjitha llogarive tuaja të përdoruesit # në 5 të mëngjesit çdo javë me: # 0 5 * * 1 tar -zcf /var/backups/home.tgz/home/ # # Për më shumë informacion shikoni faqe manuale të crontab (5) dhe 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
Kjo eshte. Skripti python do të ekzekutohet në interval të rregullt dhe do të rikodojë daljen në bazën e të dhënave SQL
Hapi 9: Extra: Konfiguroni SensorBug për Position Sensing Output
Ensshtë e mundur të konfiguroni SensorBug në Android për daljen e ndjesisë së pozicionit Për ndijimin e ndryshimit të pozicionit, të ashtuquajtur derë Garage. Sensing, SensorBug do të zbulojë nëse pajisja qëndron drejt ose shtrihet e sheshtë. Kur pajisja është e sheshtë, vlera e regjistruar është 0x20 ndërsa nëse pajisja qëndron drejt, vlera është 0x02 Nuk ndryshon nëse pozicioni X ose Y është lart, përderisa boshti Z nuk është lart ose poshtë. Mënyra më e lehtë për ta bërë këtë është të përdorni LightBlue App. SensorBug duhet të shfaqet në menunë e skanimit. Zgjidhni pajisjen që dëshironi të konfiguroni, shkoni te karakteristikat e GATT për konfigurimin e Përshpejtuesit UUID: 9DC84838-7619-4F09-A1CE-DDCF63225B11
Shikoni imazhin: Shkruani një varg të ri konfigurimi:
010d3f02020000002d00000002Lexoni mbrapsht vargun e konfigurimit për të konfirmuar shkrimin. Kjo mundëson përshpejtuesin për zbulimin e pozicionit.
Recommended:
Monitoroni temperaturën dhe lagështinë me AM2301 në NodeMCU & Blynk: 3 hapa
Monitoroni Temperaturën dhe Lagështinë Me AM2301 në NodeMCU & Blynk: factshtë një fakt shumë i njohur se në shumicën e vertikaleve të industrisë, temperatura, lagështia, presioni, cilësia e ajrit, cilësia e ujit, etj., Luajnë faktorë të rëndësishëm që duhen monitoruar në mënyrë të vazhdueshme dhe të nevojshme sistemet e alarmit duhet të jenë në vend kur vlera
Monitoroni litarët e rezervuarit të naftës për ngrohje me email, SMS dhe paralajmërim Pushbullet: 9 hapa (me fotografi)
Monitoroni gallonët e rezervuarit të naftës për ngrohje me email, SMS dhe sinjalizim Pushbullet: INFORMACION P SAR SIGURIN:: Në rast se dikush dëshiron të dijë nëse " kjo është e sigurt për të ndërtuar/instaluar " - Unë e kam çuar këtë në 2 kompani të ndryshme të naftës për konsiderata/konsiderata sigurie, dhe e kam drejtuar këtë nga Zëvendës Zjarrfikësja e Parandalimit të Zjarrit C
Regjistroni të dhënat dhe hartoni një grafik në internet duke përdorur NodeMCU, MySQL, PHP dhe Chartjs.org: 4 hapa
Regjistroni të dhënat dhe hartoni një grafik në internet duke përdorur NodeMCU, MySQL, PHP dhe Chartjs.org: Ky udhëzues përshkruan se si mund të përdorim bordin Node MCU për të mbledhur të dhëna nga sensorë të shumtë, t'i dërgojmë këto të dhëna në një skedar PHP të pritur i cili më pas i shton të dhënat një bazë të dhënash MySQL. Të dhënat mund të shihen në internet si një grafik, duke përdorur tabelën.js.A ba
Monitoroni temperaturën e dhomës së shtëpisë/zyrës në desktopin tuaj: 4 hapa
Monitoroni Temperaturën e Dhomës së Shtëpisë/Zyrës në Desktopin tuaj: Për të monitoruar dhomat ose zyrat ose çdo vend ku mund të përdorim këtë projekt dhe që shfaqet me kaq shumë detaje si grafiku, temperatura në kohë reale dhe shumë më tepër. Ne po përdorim: https://thingsio.ai/ Para së gjithash, ne duhet të bëjmë llogari në këtë platformë IoT, një
ESP8266: Si të monitoroni temperaturën dhe lagështinë: 12 hapa
ESP8266: Si të monitoroni temperaturën dhe lagështinë: Në mësimin e sotëm, ne do të përdorim një ESP-01, i cili është ESP8266 në konfigurimin 01 (me vetëm 2 GPIO), për leximet e temperaturës dhe lagështisë së sensorit DHT22. Unë do t'ju tregoj një skemë elektrike dhe pjesën e programimit ESP me një Arduino.