Cuprins:

RuuviTag și PiZero W și Blinkt! un termometru bazat pe baliza Bluetooth: 3 pași (cu imagini)
RuuviTag și PiZero W și Blinkt! un termometru bazat pe baliza Bluetooth: 3 pași (cu imagini)

Video: RuuviTag și PiZero W și Blinkt! un termometru bazat pe baliza Bluetooth: 3 pași (cu imagini)

Video: RuuviTag și PiZero W și Blinkt! un termometru bazat pe baliza Bluetooth: 3 pași (cu imagini)
Video: DIY Hydroponic Garden w/Arduino and IoT 2024, Noiembrie
Anonim
RuuviTag și PiZero W și Blinkt! un termometru bazat pe baliza Bluetooth
RuuviTag și PiZero W și Blinkt! un termometru bazat pe baliza Bluetooth
RuuviTag și PiZero W și Blinkt! un termometru bazat pe baliza Bluetooth
RuuviTag și PiZero W și Blinkt! un termometru bazat pe baliza Bluetooth
RuuviTag și PiZero W și Blinkt! un termometru bazat pe baliza Bluetooth
RuuviTag și PiZero W și Blinkt! un termometru bazat pe baliza Bluetooth

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

Dispozitivul și programul
Dispozitivul și programul
Dispozitivul și programul
Dispozitivul și programul
Dispozitivul și programul
Dispozitivul și programul
Dispozitivul și programul
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: