Talaan ng mga Nilalaman:
Video: RuuviTag at PiZero W at Blinkt! isang Bluetooth Beacon Base Thermometer: 3 Hakbang (na may Mga Larawan)
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:13
Inilalarawan ng itinuturo na ito ang isang diskarte upang basahin ang data ng temperatura at halumigmig mula sa isang RuuviTag gamit ang Bluetooth gamit ang isang Raspberry Pi Zero W at upang ipakita ang mga halaga sa mga binary number sa isang Pimoroni blinkt! pHAT. O upang mailagay itong maikli: kung paano bumuo ng isang estado ng sining at isang medyo nerdy thermometer.
Ang RuuviTag ay isang bukas na mapagkukunan ng sensor bluetooth beacon na may kasamang temperatura / halumigmig / presyon at accelation sensor, ngunit maaari rin itong kumilos bilang isang karaniwang Eddystone ™ / iBeacon proximity beacon. Ito ay isang matagumpay na proyekto ng Kickstarter at nakuha ko ang ilang linggo na ang nakakaraan. Mayroong isang Github na may python software upang mabasa ang RuuviTag gamit ang isang raspberry, at ginamit ko ang isa sa kanilang mga halimbawa, na may ilang mga karagdagan.
Ang Raspberry Pi Zero W ay ang pinakabagong miyembro ng pamilyang RPi, karaniwang isang Pi Zero na may Bluetooth at idinagdag ang WLAN.
Ang blinkt! Ang PHAT mula sa Pimoroni ay karaniwang isang strip ng walong RBG LED na naka-configure bilang isang HAT para sa Raspberry Pi. Napakadaling gamitin at may kasamang library ng sawa. Ang ideya ay basahin ang data mula sa RuuviTag at ipakita ito gamit ang blinkt! HAT Ang mga halaga ay ipinapakita bilang mga binary na numero gamit ang 7 ng mga LED, habang ang walong isa ay ginagamit upang ipahiwatig kung ang halumigmig o temperatura (+ / - / 0) ay ipinapakita.
Hakbang 1: Pag-set up ng System
Madali ang pag-set up ng system: - Lumipat sa RuuviTag (bersyon ng sensor ng temperatura ng RuuviTag).
- I-set up ang iyong RPi Zero W, RPi3, o anumang iba pang RPi na may idinagdag na kapasidad ng bluetooth, pagsunod sa mga tagubilin sa www.raspberrypi.org.
- Ilagay ang blinkt! HAT sa RPi (habang naka-off).
- I-install ang blinkt! at RuuviTag software, tulad ng ipinahiwatig sa kaukulang mga pahina ng GitHub.
- Kailangan mo ngayong kilalanin ang MAC address ng iyong RuuviTag
- kopyahin ang nakalakip na programa ng Python, buksan ito gamit ang IDLE para sa Python 3
- Baguhin ang MAC address ng RuuviTag sa iyo, pagkatapos ay i-save at patakbuhin ang programa.
- huwag mag-atubiling baguhin at i-optimize ang programa. Ang programa ay dumating tulad nito, upang magamit sa iyong sariling peligro, walang pananagutan na kinuha para sa anumang mga pinsala.
Hakbang 2: Ang Device at ang Program
Tulad ng nabanggit sa itaas, ang ideya ay upang bumuo ng isang simple at murang sistema upang mabasa ang data mula sa beacon at ipakita ang mga halagang may bilang sa blinkt! HAT, o isang katulad na LED strip.
Ang saklaw ng mga halaga para sa temperatura na sinusukat sa isang batay sa sistema ng RPi sa karamihan ng mga kaso ay nasa isang lugar sa pagitan ng - 50 ° C at + 80 ° C, para sa halumigmig sa pagitan ng 0 at 100%. Kaya't ang isang display na maaaring magbigay ng mga halaga mula -100 hanggang +100 ay magiging sapat para sa karamihan ng mga application. Ang decimal na bilang na mas maliit bilang 128 ay maaaring ipakita bilang mga binary number na may 7 bits (o LEDs). Kaya't ang programa ay tumatagal ng mga halaga ng temperatura at halumigmig mula sa RuuviTag bilang mga "float" na numero at binago ang mga ito sa mga binary number, na pagkatapos ay ipinapakita sa blinkt !.
Bilang unang hakbang, ang bilang ay bilugan, pinag-aralan kung positibo, negatibo o zero, at pagkatapos ay binago sa isang positibong numero gamit ang "abs". Pagkatapos ang decimal number ay na-convert sa isang 7-digit na binary number, karaniwang isang string ng 0 at 1s, na nasuri at ipinakita sa huling 7 mga pixel ng blinkt !.
Para sa mga halagang temperatura ang unang pixel ay nagpapahiwatig kung ang halaga ay positibo (pula), zero (magenta) o negatibo (asul). Ang pagpapakita ng mga halagang halumigmig ito ay nakatakda sa berde. Upang gawing simple ang diskriminasyon sa pagitan ng mga halaga ng temperatura at halumigmig ang mga binary pixel ay itinakda puti para sa temperatura at dilaw para sa kahalumigmigan. Upang mapagbuti ang kakayahang mabasa ng mga binary na numero, ang "0" na pixel ay hindi ganap na naka-off, ngunit sa halip ay itinatakda ng mas mahina kaysa sa estado na "1". Bilang blinkt! ang mga pixel ay maliwanag, maaari mong itakda ang pangkalahatang liwanag na binabago ang parameter na "maliwanag"
Ipinapakita ng programa ang mga halaga at bahagi ng proseso din sa screen. Bilang karagdagan makakakita ka ng maraming naka-mute (#) na tagubilin sa pag-print. Iniwan ko sila, dahil maaari mong makita silang kapaki-pakinabang upang maunawaan ang proseso kung hindi nabago ang isip.
Ang mga halaga ay maaari ring maiimbak sa isang file ng log.
Hakbang 3: Code ng Programa
Ang code ay medyo na-debug at na-optimize. Maaari mo na ngayong makita ang bersyon 3 (20_03_2017).
'Ang program na ito ay inilaan upang basahin ang temperatura, kahalumigmigan at mga halaga ng presyon na bumubuo ng isang RuuviTag' 'at upang ipakita ang mga halagang temperatura at halumigmig bilang mga binary number sa isang Pimorini blinkt! HAT '' '' Ito ay batay sa halimbawa ng print_to_screen.py mula sa ruuvitag library sa github. Nangangailangan ng isang Pi Zero W, Pi 3 o anumang iba pang RPi na nilagyan ng bluetooth at lahat ng mga kinakailangang aklatan na kinakailangan. '
oras ng pag-import
i-import ang os mula sa datime na pag-import ng datime
mula sa ruuvitag_sensor.ruuvi import RuuviTagSensor
mula sa blinkt import set_clear_on_exit, set_pixel, malinaw, ipakita
def temp_blinkt (bt):
# ang routine na ito ay tumatagal ng halaga ng temperatura at ipinapakita ito bilang isang binary number sa blinkt!
malinaw ()
# kulay at kasidhian ng "1" mga pixel: puti
r1 = 64 g1 = 64 b1 = 64
# kulay at tindi ng "0" na mga pixel: puti
r0 = 5 g0 = 5 b0 = 5
# Paikot at i-convert sa integer
r = bilog (bt)
Ang # vz ay kumakatawan sa algebraic sign para sa pixel ng tagapagpahiwatig
kung (r> 0): vz = 1 # positive elif (r <0): vz = 2 # negatibong iba: vz = 0 # zero # print (vz) i = abs (r) #print (i)
# baguhin sa ganap, 7-digit na binary number
i1 = i + 128 # para sa mga resulta sa isang 8-digit na binary number na nagsisimula sa 1 # print (i1)
b = "{0: b}". format (i1) # i-convert sa binary
# print (b)
b0 = str (b) # i-convert sa string
b1 = b0 [1: 8] #truncate muna ng kaunti
print ("binary number:", b1)
# Itakda ang mga pixel sa blinkt!
# itakda ang binary number
para sa h sa saklaw (0, 7): f = (h + 1) kung (b1 [h] == "1"): set_pixel (f, r1, g1, b1) # print ("bit", h, " ay 1, pixel ", f) iba pa: set_pixel (f, r0, g0, b0) # print (" nil ")
# Itakda ang pixel ng tagapagpahiwatig
kung (vz == 1): set_pixel (0, 64, 0, 0) # pula para sa mga positibong halagang elif (vz == 2): set_pixel (0, 0, 0, 64) # asul para sa mga negatibong halagang iba pa: set_pixel (0, 64, 0, 64) # magenta kung zero
ipakita ()
# pagtatapos ng temp_blinkt ()
def hum_blinkt (bh):
# kinukuha nito ang halagang halumigmig at ipinapakita ito bilang isang binary number sa blinkt!
malinaw ()
# kulay at kasidhian ng "1" mga pixel: dilaw
r1 = 64 g1 = 64 b1 = 0
# kulay at tindi ng "0" na mga pixel:
r0 = 5 g0 = 5 b0 = 0
# Paikot at ibahin ang bilang sa integer
r = bilog (bh)
# transform to absolute, 7-digit binary number i = abs (r) #print (i)
i1 = i + 128 # para sa nagbibigay ako ng isang 8-digit na binary number na nagsisimula sa 1
# print (i1)
b = "{0: b}". format (i1)
# print (b)
b0 = str (b)
b1 = b0 [1: 8] #truncate muna ng kaunti
i-print ("binary number:", b1)
# Itakda ang mga pixel sa blinkt!
# itakda ang binary number sa mga pixel
para sa h sa saklaw (0, 7): f = (h + 1) kung (b1 [h] == "1"): set_pixel (f, r1, g1, b1) iba pa: # mute to blank LEDs set_pixel (f, r0, g0, b0) # pipi sa mga blangkong LED
# Itakda ang pixel ng tagapagpahiwatig
set_pixel (0, 0, 64, 0) # berde para sa halumigmig
ipakita ()
# pagtatapos ng hum_blinkt ()
set_clear_on_exit ()
# Pagbasa ng data mula sa RuuviTag
mac = 'EC: 6D: 59: 6D: 01: 1C' # Baguhin sa mac-address ng iyong sariling aparato
i-print ('Simula')
sensor = RuuviTagSensor (mac)
habang Totoo:
data = sensor.update ()
line_sen = str.format ('Sensor - {0}', mac)
line_tem = str.format ('Temperatura: {0} C', data ['temperatura']) line_hum = str.format ('Humidity: {0}%', data ['halumigmig']) line_pre = str.format ('Presyon: {0}', data ['pressure'])
i-print ()
# display temperatura sa blinkt! ba = str.format ('{0}', data ['temperatura']) bt = float (ba) print (bt, "Â ° C") temp_blinkt (bt) print ()
oras. tulog (10) # display temperatura sa loob ng 10 segundo
# display halumigmig sa blinkt!
bg = str.format ('{0}', data ['kahalumigmigan']) bh = float (bg) print (bh, "%") hum_blinkt (bh) print ()
# I-clear ang data ng screen at i-print ang sensor sa isang screen
os.system ('clear') print ('Press Ctrl + C to quit. / n / n') print (str (datime.now ())) print (line_sen) print (line_tem) print (line_hum) print (line_pre) i-print ('\ n / n / r …….')
# Maghintay ng ilang segundo at magsimulang muli
subukan: time.s Sleep (8) maliban sa KeyboardInterrupt: # Kapag ang Ctrl + C ay pinindot ang pagpapatupad ng habang ang loop ay tumigil sa pag-print ('Exit') malinaw () show () break
Inirerekumendang:
Gumamit ng Smartphone Bilang Hindi Makipag-ugnay sa Thermometer / Portable Thermometer: 8 Hakbang (na may Mga Larawan)
Gumamit ng Smartphone Bilang Hindi Makipag-ugnay sa Thermometer / Portable Thermometer: Pagsukat sa temperatura ng katawan sa hindi contact / contactless tulad ng isang thermo gun. Nilikha ko ang proyektong ito sapagkat ang Thermo Gun ngayon ay napakamahal, kaya dapat kumuha ako ng kahalili upang makagawa ng DIY. At ang layunin ay gumawa ng may mababang bersyon ng badyet. Mga SuportaMLX90614Ardu
Thermometer sa Pag-log ng DIY Na May 2 Mga Sensor: 3 Mga Hakbang (na may Mga Larawan)
Thermometer sa Pag-log ng DIY Na May 2 Sensor: Ang proyektong ito ay isang pagpapahusay ng aking nakaraang proyekto " DIY Logging Thermometer ". Ini-log nito ang mga pagsukat sa tempearature sa isang micro SD card. Pagbabago ng hardware Nagdagdag ako ng sensor ng temperatura ng DS18B20 sa module ng real time na orasan, kung saan mayroong pr
Paano Mag-disassemble ng isang Computer Na May Madaling Hakbang at Mga Larawan: 13 Hakbang (na may Mga Larawan)
Paano Mag-disassemble ng isang Computer Na May Madaling Mga Hakbang at Larawan: Ito ay isang tagubilin tungkol sa kung paano i-disassemble ang isang PC. Karamihan sa mga pangunahing sangkap ay modular at madaling matanggal. Gayunpaman mahalaga na maging maayos ka tungkol dito. Makakatulong ito upang maiwasan ka sa pagkawala ng mga bahagi, at sa paggawa din ng muling pagsasama
Pagbuo ng isang DIY Arduino sa isang PCB at Ilang Mga Tip para sa Mga Nagsisimula: 17 Mga Hakbang (na may Mga Larawan)
Pagbuo ng isang DIY Arduino sa isang PCB at Ilang Mga Tip para sa Mga Nagsisimula: Ito ay sinadya bilang isang gabay sa sinumang paghihinang ng kanilang sariling Arduino mula sa isang kit, na maaaring mabili mula sa A2D Electronics. Naglalaman ito ng maraming mga tip at trick upang matagumpay itong mabuo. Malalaman mo rin ang tungkol sa kung ano ang lahat ng iba't ibang mga sangkap
Paano Gumawa ng isang Autonomous Basketball Playing Robot Paggamit ng isang IRobot Lumikha Bilang Base: 7 Mga Hakbang (na may Mga Larawan)
Paano Gumawa ng isang Autonomous Basketball Playing Robot Paggamit ng isang IRobot Lumikha Bilang Base: Ito ang aking entry para sa hamon sa iRobot Lumikha. Ang pinakamahirap na bahagi ng buong prosesong ito para sa akin ay ang pagpapasya kung ano ang gagawin ng robot. Nais kong ipakita ang mga cool na tampok ng Lumikha, habang nagdaragdag din sa ilang robo flair. Lahat ng akin