Obsah:
Video: RuuviTag a PiZero W a Blinkt! teplomer na báze majáku Bluetooth: 3 kroky (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:58
Tento návod popisuje prístup k čítaniu údajov o teplote a vlhkosti z RuuviTag pomocou Bluetooth s Raspberry Pi Zero W a k zobrazeniu hodnôt v binárnych číslach na Pimoroni blinkt! pHAT. Alebo stručne povedané: ako vytvoriť najmodernejší a trochu nerdový teplomer.
RuuviTag je bluetooth maják s otvoreným zdrojovým senzorom, ktorý je dodávaný so snímačmi teploty/vlhkosti/tlaku a akcelerácie, ale môže fungovať aj ako štandardný bezdotykový maják Eddystone ™/iBeacon. Bol to veľmi úspešný projekt Kickstarter a ja som ten svoj dostal pred niekoľkými týždňami. Existuje Github so softvérom python na čítanie RuuviTag pomocou maliny a ja som použil jeden z ich príkladov s niekoľkými dodatkami.
Raspberry Pi Zero W je najnovším členom rodiny RPi, v zásade ide o Pi Zero s pripojením Bluetooth a WLAN.
Blinkt! pHAT od Pimoroni je v podstate pásom ôsmich LED diód RBG nakonfigurovaných ako HAT pre Raspberry Pi. Jeho použitie je veľmi jednoduché a je dodávaný s knižnicou python. Cieľom bolo prečítať údaje z RuuviTag a zobraziť ich pomocou blinkt! Klobúk. Hodnoty sa zobrazujú ako binárne čísla pomocou 7 diód LED, zatiaľ čo osem číslic sa používa na označenie, či sú zobrazené hodnoty vlhkosti alebo teploty (+/-/0).
Krok 1: Nastavenie systému
Nastavenie systému je jednoduché:- Zapnite RuuviTag (verzia snímača teploty RuuviTag).
- Nastavte RPi Zero W, RPi3 alebo akékoľvek iné RPi s pridanou kapacitou bluetooth podľa pokynov na www.raspberrypi.org.
- Umiestnite blinkt! Klobúk na RPi (keď je vypnutý).
- Nainštalujte si blinkt! a softvér RuuviTag, ako je uvedené na príslušných stránkach GitHub.
- Teraz musíte identifikovať MAC adresu vášho RuuviTag
- skopírujte priložený program Python, otvorte ho pomocou IDLE pre Python 3
- zmeňte MAC adresu RuuviTag na svoju, potom uložte a spustite program.
- neváhajte program upraviť a optimalizovať. Program prichádza tak, ako je, je používaný na vlastné riziko, nepreberáme žiadnu zodpovednosť za žiadne škody.
Krok 2: Zariadenie a program
Ako bolo uvedené vyššie, myšlienkou bolo vytvoriť jednoduchý a lacný systém na čítanie údajov z majáku a zobrazovanie číselných hodnôt na zariadení blinkt! HAT, alebo podobný LED pásik.
Rozsah hodnôt teploty, ktoré sa majú merať systémom založeným na RPi, bude vo väčšine prípadov niekde medzi - 50 ° C a +80 ° C, pre vlhkosť medzi 0 a 100%. Displej, ktorý môže dávať hodnoty od -100 do +100, bude teda postačovať pre väčšinu aplikácií. Desatinné čísla menšie ako 128 je možné zobraziť ako binárne čísla so 7 bitmi (alebo diódami LED). Program teda vezme hodnoty teploty a vlhkosti z RuuviTag ako „plávajúce“čísla a transformuje ich na binárne čísla, ktoré sa potom zobrazia na blinkt !.
V prvom kroku sa číslo zaokrúhli, analyzuje sa, či je kladné, záporné alebo nulové, a potom sa pomocou „abs“transformuje na kladné číslo. Potom sa desatinné číslo prevedie na 7-miestne binárne číslo, v zásade na reťazec 0 s a 1 s, ktoré sa analyzuje a zobrazí na posledných 7 pixeloch blinkt !.
Pri hodnotách teploty prvý pixel označuje, či je hodnota kladná (červená), nula (purpurová) alebo záporná (modrá). Po zobrazení hodnôt vlhkosti je nastavený na zelenú. Na zjednodušenie rozlíšenia hodnôt teploty a vlhkosti sú binárne pixely nastavené na teplotu bielu a žltú na vlhkosť. Na zvýšenie čitateľnosti binárnych čísel nie sú pixely „0“úplne vypnuté, ale naopak sú nastavené oveľa slabšie ako v stave „1“. Ako blinkt! pixely sú veľmi svetlé, všeobecný jas môžete nastaviť zmenou parametra „jasný“
Program zobrazí hodnoty a časti procesu aj na obrazovke. Okrem toho nájdete niekoľko tlmených (#) pokynov na tlač. Nechal som ich tam, pretože vám môžu pomôcť pri porozumení postupu, ak nie sú ignorovaní.
Hodnoty môžu byť tiež uložené v protokolovom súbore.
Krok 3: Programový kód
Kód bol trochu odladený a optimalizovaný. Teraz môžete nájsť verziu 3 (20_03_2017).
„Tento program je určený na čítanie hodnôt teploty, vlhkosti a tlaku z RuuviTag“a na zobrazenie hodnôt teploty a vlhkosti ako binárnych čísel na blinkri Pimorini! Klobúk. '' '' Je založená na príklade print_to_screen.py z knižnice ruuvitag na github. '' Vyžaduje Pi Zero W, Pi 3 alebo akékoľvek iné RPi vybavené bluetooth a nainštalované všetky potrebné knižnice. '
čas importu
import os from datetime import datetime
z ruuvitag_sensor.ruuvi importovať RuuviTagSensor
z blinkt import set_clear_on_exit, set_pixel, clear, show
def temp_blinkt (bt):
# táto rutina zoberie hodnotu teploty a zobrazí ju ako binárne číslo na blinkt!
jasný ()
# farba a intenzita „1“pixelov: biela
r1 = 64 g1 = 64 b1 = 64
#farba a intenzita „0“pixelov: biela
r0 = 5 g0 = 5 b0 = 5
# Zaokrúhľujte a konvertujte na celé číslo
r = kolo (bt)
# vz predstavuje algebraický znak pre indikátorový pixel
ak (r> 0): vz = 1 # pozitívny elif (r <0): vz = 2 # negatívny ostatné: vz = 0 # nula # tlač (vz) i = abs (r) # tlač (i)
# transformovať na absolútne, 7-miestne binárne číslo
i1 = i + 128 # pre i má za následok 8-miestne binárne číslo začínajúce 1 # tlačou (i1)
b = "{0: b}". formát (i1) # previesť na binárne
# tlač (b)
b0 = str (b) # previesť na reťazec
b1 = b0 [1: 8] #skrátiť prvý bit
tlač ("binárne číslo:", b1)
# Nastavte pixely na blinkt!
# nastaviť binárne číslo
pre h v rozsahu (0, 7): f = (h+1) if (b1 [h] == "1"): set_pixel (f, r1, g1, b1) # print ("bit", h, " je 1, pixel ", f) else: set_pixel (f, r0, g0, b0) # print (" nula ")
# Nastavte indikátorový pixel
if (vz == 1): set_pixel (0, 64, 0, 0) # red for positive values elif (vz == 2): set_pixel (0, 0, 0, 64) # blue for negative values else: set_pixel (0, 64, 0, 64) # purpurová, ak je nula
šou()
# end of temp_blinkt ()
def hum_blinkt (bh):
# toto zoberie hodnotu vlhkosti a zobrazí ju ako binárne číslo na blinkt!
jasný()
# farba a intenzita „1“pixelov: žltá
r1 = 64 g1 = 64 b1 = 0
#farba a intenzita „0“pixelov:
r0 = 5 g0 = 5 b0 = 0
# Zaokrúhľujte a transformujte na celé číslo
r = kolo (bh)
# transformácia na absolútne, 7-miestne binárne číslo i = abs (r) #print (i)
i1 = i + 128 # pre i dáva 8-miestne binárne číslo začínajúce sa 1
# print (i1)
b = "{0: b}". formát (i1)
# tlač (b)
b0 = str (b)
b1 = b0 [1: 8] #skrátiť prvý bit
tlač ("binárne číslo:", b1)
# Nastavte pixely na blinkt!
# nastaviť binárne číslo na pixely
pre h v rozsahu (0, 7): f = (h+1) if (b1 [h] == "1"): set_pixel (f, r1, g1, b1) else: # mute to blank LEDs set_pixel (f, r0, g0, b0) # stlmenie na prázdne diódy LED
# Nastavte indikátorový pixel
set_pixel (0, 0, 64, 0) # zelená pre vlhkosť
šou()
# koniec hum_blinkt ()
set_clear_on_exit ()
# Čítanie údajov z RuuviTag
mac = 'EC: 6D: 59: 6D: 01: 1C' # Zmeňte adresu mac svojho zariadenia
tlač („Začína“)
senzor = RuuviTagSensor (mac)
kým je pravda:
data = sensor.update ()
line_sen = str.format ('Senzor - {0}', mac)
line_tem = str.format ('Teplota: {0} C', údaje ['teplota']) line_hum = str.format ('Vlhkosť: {0} %', údaje ['vlhkosť']) line_pre = str.format ('Tlak: {0}', údaje ['tlak'])
vytlačiť ()
# zobrazenie teploty na blinkt! ba = str.format ('{0}', data ['teplota']) bt = float (ba) print (bt, "Â ° C") temp_blinkt (bt) print ()
time.sleep (10) # teplota displeja na 10 sekúnd
# zobrazte vlhkosť na blinkt!
bg = str.format ('{0}', údaje ['vlhkosť']) bh = float (bg) print (bh, " %") hum_blinkt (bh) print ()
# Vymažte obrazovku a vytlačte údaje senzora na obrazovku
os.system ('clear') print ('Ukončite stlačením Ctrl+C. / n / n') print (str (datetime.now ())) print (line_sen) print (line_tem) print (line_hum) print (line_pre) vytlačiť ('\ n / n / r …….')
# Počkajte niekoľko sekúnd a začnite znova
skúste: time.sleep (8) okrem KeyboardInterrupt: # Keď stlačíte Ctrl+C, vykonanie cyklu while sa zastaví tlač ('Exit') clear () show () break
Odporúča:
Hodiny majáku LIndesnes Fyr: 6 krokov
Maják LIndesnes Fyr: Našiel som tento veľmi roztomilý majákový papierový model (ďakujem Gunnar Sillén!) Na stránke Lindesnes Fyr: http://bildrum.se/lindesnes.htm a keďže ma zaujímajú aj modelové vlaky ( H0) Rozhodol som sa zmenšiť model na 1: 87. Zatiaľ pekný
Používajte smartfón ako bezkontaktný teplomer / prenosný teplomer: 8 krokov (s obrázkami)
Používajte smartfón ako bezkontaktný teplomer / prenosný teplomer: Meranie telesnej teploty bezkontaktným / bezkontaktným teplomerom. Vytvoril som tento projekt, pretože Thermo Gun je teraz veľmi drahý, takže musím nájsť alternatívu k vlastnoručnému vyrobeniu. Cieľom je vytvoriť nízkorozpočtovú verziu. DodávkyMLX90614Ardu
Digitálny teplomer na báze Arduina: 3 kroky
Digitálny teplomer na báze Arduino: V tomto projekte je navrhnutý digitálny teplomer na báze Arduina, ktorý je možné použiť na analýzu teploty v miestnosti. Teplomer sa spravidla používa ako prístroj na meranie teploty. Na meranie je možné použiť rôzne princípy
Bezkontaktný infračervený teplomer na báze Arduina - IR teplomer využívajúci Arduino: 4 kroky
Bezkontaktný infračervený teplomer na báze Arduina | IR teplomer využívajúci Arduino: Ahoj chlapci, v tomto návode vyrobíme bezkontaktný teplomer pomocou arduina. Pretože niekedy je teplota kvapaliny/tuhej látky príliš vysoká alebo príliš nízka, je ťažké s ňou nadviazať kontakt a prečítať si ju. teplota potom v tomto scenári
Digitálny teplomer na báze Picaxe s max a min: 13 krokov
Digitálny teplomer na báze Picaxe s maximom a minimom: (Zanechajte prosím správu, ale nebuďte príliš kritickí, toto je môj prvý pokyn !!) Toto je teplomer, ktorý som vyrobil pre náš obytný automobil a ktorý zobrazuje vonkajšiu teplotu. Je založený na čipe Picaxe, pretože sú lacné a ľahko sa používajú. Ak je to pre