Orodha ya maudhui:
- Hatua ya 1: Sanidi Raspberry Pi
- Hatua ya 2: Kuanzisha MySQL kwenye Raspberry Pi
- Hatua ya 3: Kuanzisha SensorBugs
- Hatua ya 4: Kusanikisha kifuniko cha Bluetooth LE Python
- Hatua ya 5: Changanua na Tafuta Anwani ya SensorBug
- Hatua ya 6: Ongeza hati ya Python
- Hatua ya 7: Jaribu Hati ya Python
- Hatua ya 8: Ongeza Chombo cha Python kwenye Crontab
- Hatua ya 9: Ziada: Sanidi SensorBug kwa Position Sensing Output
Video: Kufuatilia na Kurekodi Joto na Bluetooth LE na RaspberryPi: Hatua 9 (na Picha)
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:51
Mafundisho haya ni juu ya jinsi ya kuweka pamoja mfumo wa ufuatiliaji wa joto la nodi nyingi na kifaa cha senji cha Bluetooth LE kutoka Redio za Bluu (BLEHome) na RaspberryPi 3B Shukrani kwa ukuzaji wa kiwango cha Bluetooth LE, sasa kuna sensorer za nguvu za chini za umeme zinazopatikana kwa urahisi kwenye soko kwa gharama ya chini sana na inaweza kukimbia kwenye seli moja ya sarafu kwa miezi moja kwa wakati. Moja ya sensorer hizi nilizozichukua ni kutoka kwa Redio ya Bluu iitwayo Sensor Bugs. Kugharimu karibu $ 25 kwa Amazon, ni kifaa cha Bluetooth LE kilicho na sensor ya Joto, sensor nyepesi na kiashiria cha kujiboresha vyote vinajengwa kwenye kitengo kidogo kinachoweza kuwasiliana bila waya. Hii ni mechi inayofaa kwa Raspberry Pi 3B, ambayo imeunda msaada wa redio ya LE LE.
Hatua ya 1: Sanidi Raspberry Pi
Hatua ya kwanza ni kupata usanidi wa Raspberry Pi inayofanya kazi. Fuata maagizo kutoka kwa wavuti ya Raspberry Pi, pakia Raspbian kwenye kadi ya SD, ingiza kwenye Raspberry Pi na uiwashe. Ninaweka mfumo wangu na toleo la Raspbian Stretch Lite (No GUI) Novemba 2017. Weka WiFi ikiwa inahitajika, napendelea kurekebisha eneo la saa kwa saa ya sasa badala ya UTC. Unaweza kufanya hivyo ingawa amri:
Hatua ya 2: Kuanzisha MySQL kwenye Raspberry Pi
Ni muhimu kuwa na hifadhidata iliyosanikishwa ndani ili kuhifadhi data zote zilizonaswa. Kuweka MySQL kwenye Raspberry Pi ni rahisi sana. Pia sio ngumu kurekebisha hati ili kuungana na seva ya SQL nje, unaweza kuruka hatua hii ikiwa unataka kutumia seva ya SQL kwenye mtandao. Kuna maagizo mengi kwenye wavu, ninashauri hii: https:// www.stewright.me/2014/06/install-install-
Mara tu seva ya SQL imewekwa, unaweza kutumia mteja wa MySQL CLI kuunda mtumiaji, hifadhidata na meza. Ili kuingia MySQL CLI, tumia amri:
$ sudo mysql -uroot-p Kwanza, tengeneza mtumiaji wa mahali kuingiza data iliyonaswa:> Unda Mtumiaji 'datasrc' @ 'localhost' INAYOTAMBULISHWA NA 'datasrc000'; Ifuatayo, tengeneza hifadhidata na meza: ruhusa:> TOA MAHAKAMA YOTE KWENYE SensorBug. * KWA 'datasrc' @ 'localhost'; Kwa mfano huu, nitaongeza meza na safu zifuatazo: TAREHE, MUDA, ANWANI, MAHALI, JOTO NA AJIRA
- DATE / MUDA - Hii ni tarehe na wakati data imeandikwa
- ANWANI - Hii ni MAC ya SensorBug ujumbe umechukuliwa kutoka
- MAHALI - Kamba inayoweza kusomwa na mwanadamu kuonyesha mahali sensor iko
- JOTO - Hii ndio joto lililorekodiwa
- ACCELE - Hii ndio thamani ya pato la kuharakisha, muhimu kwa nafasi ya sensa ya kurekodi (ikiwa imewezeshwa)
Amri inayofanya hivi ni:> TUMIA SensorBug; > Tengeneza data ya JEDWALI (tarehe TAREHE, saa TIME, anwani TINYTEXT, eneo TINYTEXT, joto FLOAT, accele INT); Sasa hifadhidata iko tayari, tunaweza kuendelea na kuanzisha sensorBugs.
Hatua ya 3: Kuanzisha SensorBugs
Mende za sensorer ni vifaa vyenye nadhifu. Kwa bahati mbaya, mtengenezaji alitoa tu programu ya IOS kwa kuipangilia. Kamwe kidogo, bado inawezekana kufanya kazi nayo ikiwa una kifaa cha Android tu. Hatua ya kwanza, unganisha kifaa na simu. Bila kuoanisha kifaa, SensorBug haitatangaza data. Nilijaribu kuona ikiwa ninaweza kufanya hivyo moja kwa moja na RaspberryPi, kwa bahati mbaya, inaonekana kama dereva wa Bluetooth LE kwenye RaspberryPi bado ni wa majaribio na ana mende kuizuia kuoana na vifaa vya Bluetooth LE. Toleo la baadaye la dereva wa blueZ linaweza kurekebisha hii, lakini kama maandishi ya sasa, hakuna njia ya kuoanisha SensorBug na RaspberryPi. Kwa bahati nzuri, hatuitaji kuoanisha kifaa ili kunasa data iliyotangazwa. Kitu pekee tunachohitaji ni simu kusanidi SensorBug. Kwa chaguo-msingi, SensorBug itaanza kutangaza data ya joto kwa muda wa 1s mara tu iwe imeunganishwa na kifaa. Kwa data ya joto ya kukamata, hiyo ndiyo tu ambayo inahitajika. Ikiwa unapanga kupanua kutumia nafasi au sensorer ya taa, kuliko usanidi kifaa kitahitajika. Kwa kuanza, tutaunganisha kifaa na tukate muunganisho. Hii itakuwa nzuri kwa kusudi la kukamata hali ya joto Anza kwa kubonyeza vifungo vyote kwenye SensorBug. LED ya bluu / kijani itang'aa, ambayo inaonyesha inawashwa. Bonyeza kitufe kimoja, LED ya kijani inapaswa kuwasha, onyesha nguvu imewashwa. Ikiwa taa ya kijani kibichi haijawashwa, bonyeza kitufe zote mbili ili kujaribu kuwasha kifaa tena. Bonyeza na ushikilie kitufe kimoja hadi LED ya bluu ianze kupepesa. Hii itaweka kifaa katika hali ya jozi. Nenda kwenye menyu ya usanidi wa Bluetooth kwenye simu na utafute kifaa cha SensorBug. Mara tu inapojitokeza, chagua kuoanisha na kifaa. Hiyo ndio, sasa SensorBug inatumiwa na kutangaza data ya joto
Hatua ya 4: Kusanikisha kifuniko cha Bluetooth LE Python
Ifuatayo tunahitaji kusanikisha maktaba ya chatu kuzungumza na mpangilio wa Bluetooth LE. Maagizo yanaweza kupatikana hapa:
$ sudo apt-get kufunga python-pip libglib2.0-dev $ sudo pip kufunga bluepy
Hatua ya 5: Changanua na Tafuta Anwani ya SensorBug
Ili kujua anwani ya SensorBug MAC, tumia amri hii: $ sudo hcitool lescan Unapaswa kuona pato kama:
EC: FE: 7E: 10: B1: 92 (haijulikani) Ikiwa una vifaa vingi vya Bluetooth LE karibu, inaweza kuwa ngumu kujua ni ipi unazungumza nayo. Unaweza kujaribu bluetoothctl ambayo inatoa maelezo zaidi:
$ sudo Bluetooth FE: 7E: 10: B1: 92 Thamani ya Mtengenezaji: 0x02 [CHG] Kifaa EC: FE: 7E: 10: B1: 92 Thamani ya Mtengenezaji: 0x00 [CHG] Kifaa EC: FE: 7E: 10: B1: 92 Thamani ya Mtengenezaji wa Takwimu: 0x3c [CHG] Kifaa EC: FE: 7E: 10: B1: 92 Thamani ya Mtengenezaji: 0x25 [CHG] Kifaa EC: FE: 7E: 10: B1: 92 Thamani ya Mtengenezaji Data: 0x09 [CHG] Kifaa EC: FE: 7E: 10: B1: 92 Mtengenezaji Thamani ya data: 0x41 [CHG] EC ya Kifaa: FE: 7E: 10: B1: 92 Thamani ya Mtengenezaji: 0x02 [CHG] Kifaa EC: FE: 7E: 10: B1: 92 Thamani ya Mtengenezaji wa Takwimu: 0x02 [CHG] Kifaa EC: FE: 7E: 10: B1: 92 Thamani ya Mtengenezaji: 0x43 [CHG] Kifaa EC: FE: 7E: 10: B1: 92 Thamani ya Mtengenezaji wa Takwimu: 0x0b [CHG] Kifaa EC: FE: 7E: 10: B1: 92 ManufacturerData Thamani: 0x01 [CHG] Kifaa EC: FE: 7E: 10: B1: 92 Mtengenezaji Thamani ya Data: 0x6f
Rekodi anwani ya MAC, hii itahitaji kuingizwa kwenye hati ya chatu ili kuchuja vifaa visivyohitajika vya Bluetooth LE
Hatua ya 6: Ongeza hati ya Python
Nakala ya hati ya Python inapatikana kutoka:
drive.google.com/open?id=10vOeEAbS7mi_eXn_…
Hapa kuna faili hiyo hiyo, tunza indent wakati wa kunakili:
Pia, sasisha anwani ya MAC katika faili ya chatu ili ilingane na anwani ya kitambuzi iliyopatikana kutoka kwa matokeo ya skana.
# Programu hii ni programu ya bure: unaweza kuisambaza tena na / au kurekebisha
# chini ya masharti ya Leseni Kuu ya Umma ya GNU kama ilivyochapishwa na
# Free Software Foundation, ama toleo la 3 la Leseni, au
# (kwa chaguo lako) toleo lolote la baadaye.
#
# Programu hii inasambazwa kwa matumaini kwamba itakuwa muhimu, # lakini BILA DHAMANA YOYOTE; bila hata dhamana ya kusema
# Uuzaji au ustadi kwa MADHUMUNI FULANI. Tazama
# GNU General Leseni ya Umma kwa maelezo zaidi.
#
# Ungekuwa umepokea nakala ya Leseni Kuu ya Umma ya GNU
# pamoja na mpango huu. Ikiwa sivyo, ona.
# bscan.py - Rahisi skana ya Bluetooth LE na dondoo la data
kutoka kwa bluepy.btle kuagiza Scanner, DefaultDelegate
muda wa kuagiza
kuagiza pymysql
kuagiza muundo
jina la mwenyeji = 'localhost'
jina la mtumiaji = 'datasrc'
nywila = 'datasrc000'
hifadhidata = 'SensorBug'
Ingiza anwani ya MAC ya sensa kutoka kwa lescan
SENSOR_ADDRESS = ["ec: fe: 7e: 10: b9: 92", "ec: fe: 7e: 10: b9: 93"]
SENSOR_LOCATION = ["Gereji", "Nje"]
darasa DecodeErrorException (Isipokuwa):
def _init _ (binafsi, thamani):
thamani ya kibinafsi = thamani
def _str _ (binafsi):
kurudi repr (self. Value)
darasa ScanDelegate (DefaultDelegate):
def _init _ (binafsi):
DefaultDelegate._ init _ (binafsi)
ugunduzi wa defDisvery (self, dev, isNewDev, isNewData):
ikiwa niNewDev:
chapa "Kifaa kilichopatikana", dev.addr
Elif niNewData:
chapa "Imepokea data mpya kutoka", dev.addr
def doQueryInsert (conn, addr, loc, temp, accero):
Jedwali la #sensensor ni tarehe, saa, nyongeza, eneo, temp, accero
cur = conn.cursor ()
dostr = 'Ingiza kwenye Maadili ya data (CURRENT_DATE (), SASA (),% s,% s,% s,% s);'
cur.execute (dostr, (addr, loc, temp, accero))
kujitolea ()
skana = skana () naDelegate (ScanDelegate ())
myConnection = pymysql.connect (mwenyeji = jina la mwenyeji, mtumiaji = jina la mtumiaji, passwd = nywila, db = hifadhidata)
ManuDataHex =
ReadLoop = Kweli
jaribu:
wakati (ReadLoop):
vifaa = skana. skan (2.0)
ManuData = ""
kwa dev katika vifaa:
kuingia = 0
AcceroData = 0
Aina ya Accero = 0
TempData = 0
kwa saddr katika SENSOR_ADDRESS:
kuingia + = 1
ikiwa (dev.addr == saddr):
chapisha "Kifaa% s (% s), RSSI =% d dB"% (dev.addr, dev.addrType, dev.rssi)
CurrentDevAddr = saddr
CurrentDevLoc = SENSOR_LOCATION [ingizo-1]
kwa (adtype, desc, value) katika dev.getScanData ():
chapisha "% s =% s"% (chini, thamani)
ikiwa (desc == "Mtengenezaji"):
ManuData = thamani
ikiwa (ManuData == ""):
chapisha "Hakuna data iliyopokea, mwisho kusimbua"
endelea
#print ManuData
kwa i, j katika zip (ManuData [:: 2], ManuData [1:: 2]):
ManuDataHex.append (int (i + j, 16))
#Anza kuondoa data mbichi ya Mtengenezaji
ikiwa ((ManuDataHex [0] == 0x85) na (ManuDataHex [1] == 0x00)):
chapisha "Kichwa cha kichwa 0x0085 kimepatikana"
mwingine:
chapa "Kichwa cha kichwa 0x0085 haipatikani, uamua kuacha"
endelea
#Ruka Kubwa / Ndogo
#Index 5 ni 0x3c, onyesha kiwango cha betri na usanidi #
ikiwa (ManuDataHex [4] == 0x3c):
BatteryLevel = ManuDataHex [5]
ConfigCounter = ManuDataHex [6]
idx = 7
#print "TotalLen:" + str (len (ManuDataHex))
wakati (idx <len (ManuDataHex)):
#print "Idx:" + str (idx)
#print "Takwimu:" + hex (ManuDataHex [idx])
ikiwa (ManuDataHex [idx] == 0x41):
Takwimu za #Accerometer
idx + = 1
AcceleroType = ManuDataHex [idx]
AcceleroData = ManuDataHex [idx + 1]
idx + = 2
Elif (ManuDataHex [idx] == 0x43):
Takwimu za #Joto
idx + = 1
TempData = ManuDataHex [idx]
TempData + = ManuDataHex [idx + 1] * 0x100
TempData = TempData * 0.0625
idx + = 2
mwingine:
idx + = 1
chapa "Anwani ya Kifaa:" + CurrentDevAddr
chapa "Mahali pa Kifaa:" + CurrentDevLoc
chapisha "Kiwango cha Betri:" + str (BatteryLevel) + "%"
chapisha "Config Counter:" + str (ConfigCounter)
chapisha "Data ya Accelero:" + hex (AcceleroType) + "" + hex (AcceleroData)
chapisha "Takwimu za Muda:" + str (TempData)
doQueryInsert (myConnection, CurrentDevAddr, CurrentDevLoc, TempData, AcceleroData)
ReadLoop = Uongo
isipokuwa DecodeErrorException:
kupita
Hatua ya 7: Jaribu Hati ya Python
Hati lazima iendeshwe kwenye mizizi, kwa hivyo:
$ sudo python bscan. Kichwa cha kichwa 0x0085 kimepatikana Anwani ya Kifaa: ec: 6e: 7e: 10: b1: 92 Mahali pa Kifaa: Garage Kiwango cha Betri: 37% Sanidi Kadi: 9 Data ya Accero: 0x2 0x2 Takwimu za Temp: 16.5625
Hatua ya 8: Ongeza Chombo cha Python kwenye Crontab
Hati ya chatu lazima iendeshwe kwenye mizizi, kwa hivyo ikiwa unataka kukamata data kiotomatiki, itahitaji kuongezwa kwenye crontab ya mzizi. Kwa mfano huu, ninaendesha hati kila dakika 20 Tumia amri:
$ sudo crontab -e
# Hariri faili hii ili kuanzisha kazi zinazoendeshwa na cron.
# # Kila kazi ya kukimbia lazima ifafanuliwe kupitia laini moja # inayoonyesha na uwanja tofauti wakati kazi itaendeshwa # na ni amri gani ya kukimbia kwa kazi # # Kufafanua wakati unaweza kutoa maadili halisi kwa dakika # (m), saa (h), siku ya mwezi (dom), mwezi (mon), # na siku ya wiki (chini) au tumia '*' katika sehemu hizi (kwa 'yoyote'). # # Ona kwamba kazi zitaanza kulingana na mfumo wa cron # daemon wazo la saa na saa za eneo. Pato la kazi za crontab (pamoja na makosa) hutumwa kupitia barua pepe # kwa mtumiaji faili ya crontab ni ya (isipokuwa itaelekezwa). # # Kwa mfano, unaweza kutumia chelezo ya akaunti zako zote za mtumiaji # saa 5 asubuhi kila wiki na: # 0 5 * * 1 tar -zcf /var/backups/home.tgz / home / # # Kwa habari zaidi angalia kurasa za mwongozo za crontab (5) na cron (8) # # mh dom mon dow amri 0 * * * * python /home/pi/bscan.py 20 * * * * python /home/pi/bscan.py 40 * * * * chatu / nyumba/pi/bscan.py
Hiyo tu. Hati ya chatu itaendeshwa kwa muda wa kawaida na kurudisha pato kwenye hifadhidata ya SQL
Hatua ya 9: Ziada: Sanidi SensorBug kwa Position Sensing Output
Inawezekana kusanidi SensorBug kwenye Android kwa pato la kuhisi nafasi Kwa kuhisi mabadiliko ya msimamo, inayoitwa mlango wa Garage. Sensorer, SensorBug itagundua ikiwa kifaa kimesimama wima au kimelala chini. Wakati kifaa kiko gorofa, thamani iliyorekodiwa ni 0x20 wakati kifaa kimesimama wima, thamani ni 0x02 Haitofautishi ikiwa nafasi ya X au Y iko juu, ikiwa mhimili wa Z sio juu au chini Njia rahisi zaidi ya kufanya hivyo ni kutumia LightBlue App. SensorBug inapaswa kuonekana kwenye menyu ya skana. Chagua kifaa unachotaka kusanidi, nenda kwa sifa za GATT za usanidi wa Accelerometer UUID: 9DC84838-7619-4F09-A1CE-DDCF63225B11
Tazama picha: Andika kamba mpya ya usanidi:
010d3f02020000002d00000002 Soma tena kamba ya usanidi ili kudhibitisha maandishi.
Ilipendekeza:
DIY Smart Robot Kufuatilia Kits za Gari Kufuatilia Gari Pichaensitive: Hatua 7
DIY Smart Robot Tracking Car Kits Tracking Car Photosensitive: Design by SINONING ROBOTUnaweza kununua kutoka kufuatilia gari la robotTheoryLM393 chip linganisha picharesistor mbili, wakati kuna upande mmoja photoresistor LED kwenye WHITE upande wa motor utasimama mara moja, upande mwingine wa motor inazunguka, ili
ARUPI - Kitengo cha Kurekodi Kiotomatiki cha Gharama ya chini / Kitengo cha Kurekodi kwa Uhuru (ARU) kwa Wanaikolojia wa Sauti za Sauti: Hatua 8 (na Picha)
ARUPI - Kitengo cha Kurekodi Kiotomatiki cha Gharama ya chini / Kitengo cha Kurekodi kwa Uhuru (ARU) kwa Wataalam wa Ikolojia ya Sauti: Hii inaweza kufundishwa na Anthony Turner. Mradi huo ulibuniwa kwa msaada mwingi kutoka kwa Shed katika Shule ya Kompyuta, Chuo Kikuu cha Kent (Bwana Daniel Knox alikuwa msaada mkubwa!). Itakuonyesha jinsi ya kuunda Kurekodi Sauti kwa Moja kwa Moja
Jinsi ya kutumia Sensor ya Joto la DHT11 na Arduino na Joto la Uchapishaji wa Joto na Unyevu: Hatua 5
Jinsi ya Kutumia Sensorer ya Joto la DHT11 Na Arduino na Joto la Uchapishaji Joto na Unyevu: Sura ya DHT11 hutumiwa kupima joto na unyevu. Unyevu wa DHT11 na sensorer ya joto hufanya iwe rahisi sana kuongeza data ya unyevu na joto kwenye miradi yako ya elektroniki ya DIY. Ni kwa kila
Joto la joto la ESP32 NTP Kuchunguza Thermometer na Sauti ya Steinhart-Hart na Alarm ya Joto.: Hatua 7 (na Picha)
Joto la kupima joto la ESP32 NTP na Thermometer ya kupikia ya joto na Alarm ya Steinhart-Hart na Alarm ya joto. ni ya kufundisha inayoonyesha jinsi ninavyoongeza uchunguzi wa joto la NTP, piezo b
Joto -Joto La Kudhibitiwa la Joto La joto: Hatua 6
Joto -Joto La Kutabasamu La Kudhibiti Joto: ******************************************* ************************************************** +