Indholdsfortegnelse:
Video: RuuviTag og PiZero W og Blinkt! et Bluetooth Beacon -baseret termometer: 3 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
Denne instruktive beskriver en tilgang til at læse temperatur- og fugtighedsdata fra en RuuviTag ved hjælp af Bluetooth med en Raspberry Pi Zero W og til at vise værdierne i binære tal på en Pimoroni -blinkt! pHAT. Eller for at sige det kort: hvordan man bygger et topmoderne og lidt nørdet termometer.
RuuviTag er en open source sensor bluetooth beacon, der leveres med temperatur-/fugtigheds-/tryk- og accelationssensorer, men kan også fungere som et standard Eddystone ™/iBeacon -nærhedssignal. Det var et meget vellykket Kickstarter -projekt, og jeg fik mit for et par uger siden. Der er en Github med python -software til at læse RuuviTag ved hjælp af en hindbær, og jeg har brugt et af deres eksempler med nogle tilføjelser.
Raspberry Pi Zero W er det seneste medlem af RPi -familien, dybest set en Pi Zero med Bluetooth og WLAN tilføjet.
Blinken! pHAT fra Pimoroni er dybest set en stribe med otte RBG -lysdioder konfigureret som en hat til Raspberry Pi. Det er meget let at bruge og leveres med et python -bibliotek. Ideen var at læse dataene fra RuuviTag og vise dem ved hjælp af blinkt! HAT. Værdierne vises som binære tal ved hjælp af 7 af lysdioderne, mens den otte bruges til at angive, om værdierne fugtighed eller temperatur (+/-/0) vises.
Trin 1: Opsætning af systemet
Det er let at konfigurere systemet:- Tænd for RuuviTag (RuuviTag temperaturfølerversion).
- Konfigurer din RPi Zero W, RPi3 eller enhver anden RPi med tilføjet bluetooth -kapacitet ved at følge instruktionerne på www.raspberrypi.org.
- Placer blinkt! HAT på RPi (mens den er slukket).
- Installer blinkt! og RuuviTag -software, som angivet på de tilsvarende GitHub -sider.
- Du skal nu identificere MAC -adressen på din RuuviTag
- kopier det vedhæftede Python -program, åbn det med IDLE til Python 3
- skift MAC -adressen på RuuviTag til din, gem derefter og kør programmet.
- Du er velkommen til at ændre og optimere programmet. Programmet kommer som det er, for at blive brugt på egen risiko, påtager vi sig intet ansvar for skader.
Trin 2: Enheden og programmet
Som nævnt ovenfor var tanken at konstruere et simpelt og billigt system til at læse data fra fyret og vise numeriske værdier på blinkt! HAT eller en lignende LED -strip.
Værdiområdet for temperatur, der skal måles med et RPi -baseret system, vil i de fleste tilfælde være et sted mellem - 50 ° C og +80 ° C, for fugtighed mellem 0 og 100%. Så et display, der kan give værdier fra -100 til +100, vil være tilstrækkeligt til de fleste applikationer. Decimaltal mindre som 128 kan vises som binære tal med 7 bits (eller lysdioder). Så programmet tager temperatur- og fugtighedsværdierne fra RuuviTag som "float" -numre og omdanner dem til binære tal, som derefter vises på blinkt !.
Som et første trin afrundes tallet, analyseres hvis det er positivt, negativt eller nul, og transformeres derefter til et positivt tal ved hjælp af "abs". Derefter konverteres decimaltallet til et 7-cifret binært tal, dybest set en streng på 0s og 1s, som bliver analyseret og vist på de sidste 7 pixels af blinkt !.
For temperaturværdier angiver den første pixel, om værdien er positiv (rød), nul (magenta) eller negativ (blå). Ved at vise fugtighedsværdier er den indstillet til grøn. For at forenkle forskellen mellem temperatur- og fugtighedsværdier er de binære pixels indstillet hvide til temperatur og gule til fugtighed. For at øge læsbarheden af de binære tal slukkes "0" pixel ikke helt, men er i stedet sat meget svagere end i tilstanden "1". Som blinkt! pixels er meget lyse, du kan indstille den generelle lysstyrke ved at ændre parameteren "lys"
Programmet viser værdierne og dele af processen også på skærmen. Derudover finder du flere dæmpede (#) udskrivningsinstruktioner. Jeg efterlod dem i, da du måske finder dem nyttige til at forstå processen, hvis de ikke er slået fra.
Værdierne kan også gemmes i en logfil.
Trin 3: Programkode
Koden blev en smule fejlfindet og optimeret. Du kan nu finde version 3 (20_03_2017).
'Dette program er beregnet til at læse temperatur-, fugtigheds- og trykværdierne fra en RuuviTag' 'og vise temperatur- og fugtighedsværdierne som binære tal på en Pimorini -blinkt! HAT. '' '' Det er baseret på eksemplet print_to_screen.py fra ruuvitag -biblioteket på github. '' Kræver en Pi Zero W, Pi 3 eller enhver anden RPi udstyret med bluetooth og alle nødvendige biblioteker installeret. '
importtid
import os fra datetime import datetime
fra ruuvitag_sensor.ruuvi importerer RuuviTagSensor
fra blinkt import set_clear_on_exit, set_pixel, clear, show
def temp_blinkt (bt):
# denne rutine tager temperaturværdien og viser den som et binært tal på blinkt!
klar ()
# farve og intensitet på "1" pixels: hvid
r1 = 64 g1 = 64 b1 = 64
#farve og intensitet på "0" pixel: hvid
r0 = 5 g0 = 5 b0 = 5
# Rund og konverter til heltal
r = rund (bt)
# vz repræsenterer algebraisk tegn for indikatorpixel
hvis (r> 0): vz = 1 # positiv elif (r <0): vz = 2 # negativ ellers: vz = 0 # zero # print (vz) i = abs (r) #print (i)
# transformer til absolut, 7-cifret binært tal
i1 = i + 128 # for i resulterer i et 8-cifret binært tal, der starter med 1 # print (i1)
b = "{0: b}". format (i1) # konverter til binært
# print (b)
b0 = str (b) # konverter til streng
b1 = b0 [1: 8] #afkort den første bit
print ("binært tal:", b1)
# Indstil pixels på blinkt!
# sæt binært tal
for h i området (0, 7): f = (h+1) hvis (b1 [h] == "1"): set_pixel (f, r1, g1, b1) # print ("bit", h, " er 1, pixel ", f) else: set_pixel (f, r0, g0, b0) # print (" nul ")
# Indstil indikatorpixel
hvis (vz == 1): set_pixel (0, 64, 0, 0) # rød for positive værdier elif (vz == 2): set_pixel (0, 0, 0, 64) # blå for negative værdier ellers: set_pixel (0, 64, 0, 64) # magenta hvis nul
at vise()
# slut på temp_blinkt ()
def hum_blinkt (bh):
# dette tager fugtighedsværdien og viser det som et binært tal på blinkt!
klar()
# farve og intensitet på "1" pixels: gul
r1 = 64 g1 = 64 b1 = 0
#farve og intensitet af "0" pixels:
r0 = 5 g0 = 5 b0 = 0
# Rund og transformer til heltal
r = rund (bh)
# transformer til absolut, 7-cifret binært tal i = abs (r) #print (i)
i1 = i + 128 # for i giver et 8-cifret binært tal, der starter med 1
# print (i1)
b = "{0: b}". format (i1)
# print (b)
b0 = str (b)
b1 = b0 [1: 8] #afkort den første bit
print ("binært tal:", b1)
# Indstil pixels på blinkt!
# indstil binært tal til pixels
for h i området (0, 7): f = (h+1) hvis (b1 [h] == "1"): set_pixel (f, r1, g1, b1) else: # mute til tomme LED'er set_pixel (f, r0, g0, b0) # mute til tomme lysdioder
# Indstil indikatorpixel
set_pixel (0, 0, 64, 0) # grøn for fugtighed
at vise()
# slutningen af hum_blinkt ()
set_clear_on_exit ()
# Læsning af data fra RuuviTag
mac = 'EC: 6D: 59: 6D: 01: 1C' # Skift til din egen enheds mac-adresse
print ('Start')
sensor = RuuviTagSensor (mac)
mens det er sandt:
data = sensor.update ()
line_sen = str.format ('Sensor - {0}', mac)
line_tem = str.format ('Temperatur: {0} C', data ['temperatur']) line_hum = str.format ('Fugtighed: {0} %', data ['luftfugtighed']) line_pre = str.format ('Tryk: {0}', data ['tryk'])
Print()
# displaytemperatur på blinkt! ba = str.format ('{0}', data ['temperatur']) bt = float (ba) print (bt, "Â ° C") temp_blinkt (bt) print ()
time.sleep (10) # displaytemperatur i 10 sekunder
# vis fugtighed på blinkt!
bg = str.format ('{0}', data ['fugtighed']) bh = float (bg) print (bh, " %") hum_blinkt (bh) print ()
# Ryd skærm, og udskriv sensordata til skærm
os.system ('clear') print ('Tryk på Ctrl+C for at afslutte. / n / n') print (str (datetime.now ())) print (line_sen) print (line_tem) print (line_hum) print (line_pre) udskriv ('\ n / n / r …….')
# Vent et par sekunder, og start forfra
prøv: time.sleep (8) undtagen KeyboardInterrupt: # Når der trykkes på Ctrl+C udføres udførelsen af mens loop er stoppet udskriv ('Exit') clear () show () break
Anbefalede:
Berøringsfrit IR-termometer: 8 trin (med billeder)
Berøringsfri IR-termometer: Mit lokale sundhedsministerium tog kontakt til mig, fordi de havde brug for en måde at spore kropstemperaturen for deres medarbejders helbred dagligt under Covid-19-krisen i 2020. Normalt begyndte IR -termometre på hylden at være knappe
Arduino laser infrarødt termometer: 7 trin (med billeder)
Arduino laser infrarødt termometer: I dette projekt vil jeg vise dig, hvordan du bygger et digitalt laser infrarødt termometer med et brugerdefineret 3D -printet kabinet
Weather Forecast Beacon: 4 trin (med billeder)
Weather Forecast Beacon: I dette projekt præsenterer jeg en model fra et lokalt vejrfyr, som jeg lavede ved hjælp af 3D -print, LED -striber, en strømforsyning og et Arduino -kort med wifi -forbindelse for at få adgang til vejrudsigten for den næste dag. Hovedformålet med
DIY Logging Termometer med 2 sensorer: 3 trin (med billeder)
DIY Logging Termometer Med 2 Sensorer: Dette projekt er en forbedring af mit tidligere projekt "DIY Logging Thermometer". Det logger temperaturmålingerne til et micro SD -kort. Hardwareændringer Jeg tilføjede en DS18B20 temperatursensor til realtidsurmodulet, hvor der er pr
Elektromagnetisk pendullaser Nixie -ur, med termometer: 5 trin (med billeder)
Elektromagnetisk pendullaser Nixie-ur, med termometer: Jeg har tidligere bygget et par Nixie Tube-ure ved hjælp af et Arduino Nixie-skjold, jeg købte på ebay her: https://www.ebay.co.uk/itm/Nixie-Tubes-Clock -IN-14 … Disse tavler leveres med et RTC (Real Time Clock) indbygget og gør det meget ligetil