Cuprins:
Video: RuuviTag și PiZero W și Blinkt! un termometru bazat pe baliza Bluetooth: 3 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
Această instrucțiune descrie o abordare pentru citirea datelor de temperatură și umiditate dintr-un RuuviTag folosind Bluetooth cu un Raspberry Pi Zero W și pentru a afișa valorile în numere binare pe un clipire Pimoroni! Sau, pentru a rezuma: cum să construiți o stare de artă și un termometru cam nerd.
RuuviTag este un baliză bluetooth cu senzor open source care vine cu senzori de temperatură / umiditate / presiune și accelerație, dar poate acționa și ca un baliz de proximitate Eddystone ™ / iBeacon standard. A fost un proiect Kickstarter cu mare succes și l-am luat pe al meu acum câteva săptămâni. Există un Github cu software Python pentru a citi RuuviTag folosind o zmeură și am folosit unul dintre exemplele lor, cu câteva adăugiri.
Raspberry Pi Zero W este cel mai recent membru al familiei RPi, practic un Pi Zero cu Bluetooth și WLAN adăugate.
Clipitul! pHAT de la Pimoroni este practic o bandă de opt LED-uri RBG configurate ca HAT pentru Raspberry Pi. Este foarte ușor de utilizat și vine cu o bibliotecă python. Ideea a fost să citim datele din RuuviTag și să le afișăm folosind clipirea! PĂLĂRIE. Valorile sunt afișate ca numere binare utilizând 7 dintre LED-uri, în timp ce cel de opt este utilizat pentru a indica dacă sunt afișate valorile de umiditate sau temperatură (+ / - / 0).
Pasul 1: Configurarea sistemului
Configurarea sistemului este ușoară: - Porniți RuuviTag (versiunea senzorului de temperatură RuuviTag).
- Configurați RPi Zero W, RPi3 sau orice alt RPi cu capacitate bluetooth adăugată, urmând instrucțiunile de pe www.raspberrypi.org.
- Puneți clipirea! HAT pe RPi (în timp ce este oprit).
- Instalați clipirea! și software-ul RuuviTag, așa cum este indicat pe paginile GitHub corespunzătoare.
- Acum trebuie să identificați adresa MAC a RuuviTag
- copiați programul Python atașat, deschideți-l cu IDLE pentru Python 3
- schimbați adresa MAC a RuuviTag la a dvs., apoi salvați și rulați programul.
- nu ezitați să modificați și să optimizați programul. Programul vine așa cum este, pentru a fi utilizat pe propriul risc, nu sunt asumate răspunderi pentru daune.
Pasul 2: Dispozitivul și programul
După cum sa menționat mai sus, ideea a fost de a construi un sistem simplu și ieftin pentru a citi datele de la baliză și a afișa valori numerice pe clipire! HAT sau o bandă LED similară.
Gama de valori pentru temperatură care trebuie măsurată cu un sistem bazat pe RPi va fi în majoritatea cazurilor undeva între - 50 ° C și + 80 ° C, pentru umiditate între 0 și 100%. Deci, un afișaj care poate da valori de la -100 la +100 va fi suficient pentru majoritatea aplicațiilor. Numerele zecimale mai mici de 128 pot fi afișate ca numere binare cu 7 biți (sau LED-uri). Deci, programul preia valorile de temperatură și umiditate din RuuviTag ca numere „flotante” și le transformă în numere binare, care sunt apoi afișate pe clipire !.
Ca prim pas, numărul este rotunjit, analizat dacă este pozitiv, negativ sau zero și apoi transformat într-un număr pozitiv folosind „abs”. Apoi, numărul zecimal este convertit într-un număr binar de 7 cifre, practic un șir de 0 și 1, care este analizat și afișat pe ultimii 7 pixeli ai clipirii !.
Pentru valorile temperaturii, primul pixel indică dacă valoarea este pozitivă (roșu), zero (magenta) sau negativă (albastru). Afișarea valorilor de umiditate este setată la verde. Pentru a simplifica discriminarea între valorile de temperatură și umiditate, pixelii binari sunt setați albi pentru temperatură și galbeni pentru umiditate. Pentru a îmbunătăți lizibilitatea numerelor binare, pixelii „0” nu sunt dezactivați complet, ci sunt setați mult mai slabi decât în starea „1”. Ca clipind! pixelii sunt foarte luminoși, puteți seta luminozitatea generală schimbând parametrul „luminos”
Programul afișează valorile și părțile procesului și pe ecran. În plus, veți găsi mai multe instrucțiuni de imprimare dezactivate (#). Le-am lăsat înăuntru, deoarece le-ați putea găsi de ajutor pentru a înțelege procesul, dacă sunt dezactivate.
Valorile pot fi, de asemenea, stocate într-un fișier jurnal.
Pasul 3: Codul programului
Codul a fost puțin depanat și optimizat. Puteți găsi acum versiunea 3 (20_03_2017).
„Acest program este destinat să citească valorile de temperatură, umiditate și presiune care formează un RuuviTag” și să afișeze valorile de temperatură și umiditate ca numere binare pe un clipire Pimorini! PĂLĂRIE. '' '' Se bazează pe exemplul print_to_screen.py din biblioteca ruuvitag de la github. "Necesită un Pi Zero W, Pi 3 sau orice alt RPi echipat cu bluetooth și toate bibliotecile necesare instalate."
timpul de import
import os din datetime import datetime
de la ruuvitag_sensor.ruuvi import RuuviTagSensor
din blinkt import set_clear_on_exit, set_pixel, clear, show
def temp_blinkt (bt):
# această rutină ia valoarea temperaturii și o afișează ca un număr binar la clipire!
clar ()
# culoare și intensitatea pixelilor „1”: alb
r1 = 64 g1 = 64 b1 = 64
# culoare și intensitatea pixelilor „0”: alb
r0 = 5 g0 = 5 b0 = 5
# Rotunjiți și convertiți în număr întreg
r = rotund (bt)
# vz reprezintă semnul algebric pentru pixelul indicator
if (r> 0): vz = 1 # pozitiv elif (r <0): vz = 2 # negative else: vz = 0 # zero # print (vz) i = abs (r) #print (i)
# transformați în număr binar absolut din 7 cifre
i1 = i + 128 # pentru i rezultă un număr binar din 8 cifre începând cu 1 # print (i1)
b = "{0: b}". format (i1) # convertiți în binar
# print (b)
b0 = str (b) # convertiți în șir
b1 = b0 [1: 8] #truncate primul bit
print ("număr binar:", b1)
# Setați pixeli pe clipire!
# setează numărul binar
pentru h în intervalul (0, 7): f = (h + 1) if (b1 [h] == "1"): set_pixel (f, r1, g1, b1) # print ("bit", h, " este 1, pixel ", f) altceva: set_pixel (f, r0, g0, b0) # print (" zero ")
# Setați pixelul indicator
if (vz == 1): set_pixel (0, 64, 0, 0) # roșu pentru valori pozitive elif (vz == 2): set_pixel (0, 0, 0, 64) # albastru pentru valori negative else: set_pixel (0, 64, 0, 64) # magenta dacă zero
spectacol()
# end of temp_blinkt ()
def hum_blinkt (bh):
# aceasta ia valoarea umidității și o afișează ca număr binar la clipire!
clar()
# culoare și intensitatea pixelilor „1”: galben
r1 = 64 g1 = 64 b1 = 0
# culoare și intensitatea pixelilor „0”:
r0 = 5 g0 = 5 b0 = 0
# Rotunjeste și transformă în număr întreg
r = rotund (bh)
# transformare în număr binar absolut din 7 cifre i = abs (r) #print (i)
i1 = i + 128 # pentru i dă un număr binar din 8 cifre începând cu 1
# print (i1)
b = "{0: b}". format (i1)
# print (b)
b0 = str (b)
b1 = b0 [1: 8] #truncate primul bit
print ("număr binar:", b1)
# Setați pixeli pe clipire!
# setați numărul binar la pixeli
pentru h în intervalul (0, 7): f = (h + 1) if (b1 [h] == "1"): set_pixel (f, r1, g1, b1) altceva: # mute la LED-uri goale set_pixel (f, r0, g0, b0) # mute la LED-uri goale
# Setați pixelul indicator
set_pixel (0, 0, 64, 0) # verde pentru umiditate
spectacol()
# end of hum_blinkt ()
set_clear_on_exit ()
# Citirea datelor din RuuviTag
mac = 'EC: 6D: 59: 6D: 01: 1C' # Schimbați adresa de mac a propriului dispozitiv
print („Începând”)
senzor = RuuviTagSensor (mac)
în timp ce este adevărat:
date = sensor.update ()
line_sen = str.format ('Senzor - {0}', mac)
line_tem = str.format ('Temperatură: {0} C', date ['temperature']) line_hum = str.format ('Umiditate: {0}%', date ['umiditate']) line_pre = str.format („Presiune: {0}”, date [„presiune”])
imprimare()
# temperatura afișării pe clipire! ba = str.format ('{0}', date ['temperature']) bt = float (ba) print (bt, "Â ° C") temp_blinkt (bt) print ()
time.sleep (10) # temperatura afișajului timp de 10 secunde
# afișarea umidității pe clipire!
bg = str.format ('{0}', date ['umiditate']) bh = float (bg) print (bh, "%") hum_blinkt (bh) print ()
# Ștergeți ecranul și imprimați datele senzorului pe ecran
os.system ('clear') print ('Apăsați Ctrl + C pentru a ieși. / n / n') print (str (datetime.now ())) print (line_sen) print (line_tem) print (line_hum) print (line_pre)) print („\ n / n / r …….”)
# Așteptați câteva secunde și începeți din nou
încercați: time.sleep (8) cu excepția KeyboardInterrupt: # Când este apăsat Ctrl + C executarea buclei în timp ce este oprită print ('Exit') clear () show () break
Recomandat:
Utilizați smartphone-ul ca termometru fără contact / termometru portabil: 8 pași (cu imagini)
Utilizați telefonul inteligent ca termometru fără contact / termometru portabil: măsurarea temperaturii corpului cu un contact fără contact / ca un pistol termic. Am creat acest proiect deoarece Thermo Gun este acum foarte scump, așa că trebuie să primesc o alternativă pentru a face DIY. Și scopul este de a face cu versiune cu buget redus. Furnizează MLX90614Ardu
Termometru digital bazat pe Arduino: 3 pași
Termometru digital pe bază de Arduino: În acest proiect, este proiectat un termometru digital pe bază de Arduino care poate fi utilizat pentru a analiza temperatura camerei. Termometrul este utilizat în general ca instrument de măsurare a temperaturii. Există diferite principii care pot fi utilizate pentru a măsura
Termometru cu infraroșu fără contact pe bază de Arduino - Termometru IR folosind Arduino: 4 pași
Termometru cu infraroșu fără contact pe bază de Arduino | Termometru bazat pe IR folosind Arduino: Bună băieți, în acest instructables vom face un termometru fără contact folosind arduino. temperatura atunci în acel scenariu
Generator de muzică bazat pe vreme (Generator Midi bazat pe ESP8266): 4 pași (cu imagini)
Generator de muzică bazat pe vreme (Generator midi bazat pe ESP8266): Bună, astăzi vă voi explica cum să vă creați propriul generator de muzică bazat pe vreme. Se bazează pe un ESP8266, care este un fel ca un Arduino și răspunde la temperatură, ploaie și intensitatea luminii. Nu vă așteptați să producă melodii întregi sau programe de acord
Termometru digital bazat pe Picaxe cu max și min: 13 pași
Termometru digital bazat pe Picaxe cu Max și Min: (Vă rugăm să lăsați un mesaj, dar să nu fiți prea critici, acesta este primul meu instructable !!) Acesta este un termometru pe care l-am făcut pentru camper-ul nostru, pentru a arăta temperatura externă. Se bazează pe un cip Picaxe deoarece sunt ieftine și ușor de utilizat. Dacă este pentru