Innehållsförteckning:
Video: RuuviTag och PiZero W och Blinkt! en Bluetooth Beacon -baserad termometer: 3 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
Denna instruerbara beskriver ett tillvägagångssätt för att läsa temperatur- och luftfuktighetsdata från en RuuviTag med Bluetooth med en Raspberry Pi Zero W och för att visa värdena i binära tal på en Pimoroni -blinkt! pHAT. Eller för att säga det kort: hur man bygger en toppmodern och lite nördig termometer.
RuuviTag är en Bluetooth -signal med öppen källsensor som levereras med temperatur-/luftfuktighets-/tryck- och accelationssensorer, men kan också fungera som en standard Eddystone ™/iBeacon -närhetsfyr. Det var ett mycket framgångsrikt Kickstarter -projekt och jag fick mitt för några veckor sedan. Det finns en Github med pythonprogramvara för att läsa RuuviTag med ett hallon, och jag har använt ett av deras exempel, med några tillägg.
Raspberry Pi Zero W är den senaste medlemmen i RPi -familjen, i grunden en Pi Zero med Bluetooth och WLAN tillagt.
Blinken! pHAT från Pimoroni är i grunden en remsa med åtta RBG -lysdioder konfigurerade som en hatt för Raspberry Pi. Det är mycket lätt att använda och levereras med ett python -bibliotek. Tanken var att läsa data från RuuviTag och visa den med hjälp av blinkt! HATT. Värdena visas som binära tal med 7 av lysdioderna, medan de åtta används för att indikera om luftfuktighet eller temperatur (+/-/0) visas.
Steg 1: Installera systemet
Det är enkelt att installera systemet:- Slå på RuuviTag (RuuviTag temperaturgivare version).
- Konfigurera din RPi Zero W, RPi3 eller någon annan RPi med Bluetooth -kapacitet tillagd, följ instruktionerna på www.raspberrypi.org.
- Placera blinkt! HAT på RPi (medan den är avstängd).
- Installera blinkt! och RuuviTag -programvara, som anges på motsvarande GitHub -sidor.
- Du måste nu identifiera MAC -adressen för din RuuviTag
- kopiera det bifogade Python -programmet, öppna det med IDLE för Python 3
- ändra MAC -adressen för RuuviTag till din, spara sedan och kör programmet.
- modifiera och optimera programmet. Programmet kommer som det är, för att användas på egen risk, tar inga ansvar för eventuella skador.
Steg 2: Enheten och programmet
Som nämnts ovan var tanken att konstruera ett enkelt och billigt system för att läsa data från fyren och visa numeriska värden på blinkt! HAT, eller en liknande LED -remsa.
Värdeintervallet för temperatur som ska mätas med ett RPi -baserat system kommer i de flesta fall att ligga någonstans mellan - 50 ° C och +80 ° C, för luftfuktighet mellan 0 och 100%. Så en display som kan ge värden från -100 till +100 är tillräcklig för de flesta applikationer. Decimalnummer som är mindre än 128 kan visas som binära tal med 7 bitar (eller lysdioder). Så programmet tar temperatur- och luftfuktighetsvärdena från RuuviTag som "float" -tal och omvandlar dem till binära tal, som sedan visas på blinkt !.
Som ett första steg avrundas talet, analyseras om det är positivt, negativt eller noll och transformeras sedan till ett positivt tal med hjälp av "abs". Därefter omvandlas decimaltalet till ett 7-siffrigt binärt tal, i grunden en sträng av 0s och 1s, som analyseras och visas på de sista 7 pixlarna i blinkt !.
För temperaturvärden indikerar den första pixeln om värdet är positivt (rött), noll (magenta) eller negativt (blått). Med fuktighetsvärden är den inställd på grön. För att förenkla skillnaden mellan temperatur- och luftfuktighetsvärden är de binära pixlarna inställda vita för temperatur och gula för fuktighet. För att förbättra de binära talens läsbarhet stängs inte "0" pixeln helt av, utan ställs istället in mycket svagare än i "1" -läget. Som blinkt! pixlar är väldigt ljusa, du kan ställa in den allmänna ljusstyrkan genom att ändra parametern "ljus"
Programmet visar även värden och delar av processen på skärmen. Dessutom hittar du flera dämpade (#) utskriftsinstruktioner. Jag lämnade dem kvar, eftersom du kan tycka att de är till hjälp för att förstå processen om de inte är tysta.
Värdena kan också lagras i en loggfil.
Steg 3: Programkod
Koden var lite felsökad och optimerad. Du kan nu hitta version 3 (20_03_2017).
'Det här programmet är avsett att läsa temperatur, luftfuktighet och tryckvärden från en RuuviTag' 'och att visa temperatur- och fuktighetsvärdena som binära tal på en Pimorini -blinkt! HATT. '' '' Det är baserat på exemplet print_to_screen.py från ruuvitag -biblioteket på github. '' Kräver en Pi Zero W, Pi 3 eller någon annan RPi utrustad med bluetooth och alla nödvändiga bibliotek installerade. '
importtid
importera os från datetime import datetime
från ruuvitag_sensor.ruuvi importera RuuviTagSensor
från blinkt import set_clear_on_exit, set_pixel, clear, show
def temp_blinkt (bt):
# denna rutin tar temperaturvärdet och visar det som ett binärt tal på blinkt!
klar ()
# färg och intensitet på "1" pixlar: vit
r1 = 64 g1 = 64 b1 = 64
#färg och intensitet på "0" pixlar: vit
r0 = 5 g0 = 5 b0 = 5
# Runda och konvertera till heltal
r = rund (bt)
# vz representerar algebraiskt tecken för indikatorpixel
if (r> 0): vz = 1 # positiv elif (r <0): vz = 2 # negativ annat: vz = 0 # zero # print (vz) i = abs (r) #print (i)
# transformera till absolut, 7-siffrigt binärt tal
i1 = i + 128 # för i resulterar i ett åttasiffrigt binärt tal som börjar med 1 # utskrift (i1)
b = "{0: b}". format (i1) # konvertera till binärt
# tryck (b)
b0 = str (b) # konvertera till sträng
b1 = b0 [1: 8] #avkorta första biten
print ("binärt tal:", b1)
# Ställ in pixlar på blinkt!
# ställ in binärt tal
för h i intervallet (0, 7): f = (h+1) if (b1 [h] == "1"): set_pixel (f, r1, g1, b1) # print ("bit", h, " är 1, pixel ", f) else: set_pixel (f, r0, g0, b0) # print (" noll ")
# Ställ indikatorpixel
if (vz == 1): set_pixel (0, 64, 0, 0) # röd för positiva värden elif (vz == 2): set_pixel (0, 0, 0, 64) # blå för negativa värden annars: set_pixel (0, 64, 0, 64) # magenta om noll
show()
# slutet av temp_blinkt ()
def hum_blinkt (bh):
# detta tar fuktvärdet och visar det som ett binärt tal på blinkt!
klar()
# färg och intensitet på "1" pixlar: gul
r1 = 64 g1 = 64 b1 = 0
#färg och intensitet för "0" pixlar:
r0 = 5 g0 = 5 b0 = 0
# Runda och förvandla till heltal
r = rund (bh)
# transformera till absolut, 7-siffrigt binärt tal i = abs (r) #print (i)
i1 = i + 128 # för i ger ett åttasiffrigt binärt tal som börjar med 1
# print (i1)
b = "{0: b}". format (i1)
# tryck (b)
b0 = str (b)
b1 = b0 [1: 8] #avkorta första biten
print ("binärt tal:", b1)
# Ställ in pixlar på blinkt!
# ställ in binärt tal till pixlar
för h i intervallet (0, 7): f = (h+1) if (b1 [h] == "1"): set_pixel (f, r1, g1, b1) else: # tyst till tomma lysdioder set_pixel (f, r0, g0, b0) # tyst till tomma lysdioder
# Ställ indikatorpixel
set_pixel (0, 0, 64, 0) # grönt för luftfuktighet
show()
# slutet av hum_blinkt ()
set_clear_on_exit ()
# Läser data från RuuviTag
mac = 'EC: 6D: 59: 6D: 01: 1C' # Ändra till din egen enhets mac-adress
print ('Startar')
sensor = RuuviTagSensor (mac)
medan det är sant:
data = sensor.update ()
line_sen = str.format ('Sensor - {0}', mac)
line_tem = str.format ('Temperatur: {0} C', data ['temperatur']) line_hum = str.format ('Luftfuktighet: {0} %', data ['fuktighet']) line_pre = str.format ('Tryck: {0}', data ['tryck'])
skriva ut()
# displaytemperatur på blinkt! ba = str.format ('{0}', data ['temperatur']) bt = float (ba) print (bt, "Â ° C") temp_blinkt (bt) print ()
tid. sover (10) # displaytemperatur i 10 sekunder
# visa fuktighet på blinkt!
bg = str.format ('{0}', data ['fuktighet']) bh = float (bg) print (bh, " %") hum_blinkt (bh) print ()
# Rensa skärmen och skriv ut sensordata till skärmen
os.system ('clear') print ('Tryck Ctrl+C för att avsluta. / n / n') print (str (datetime.now ())) print (line_sen) print (line_tem) print (line_hum) print (line_pre) skriv ut ('\ n / n / r …….')
# Vänta några sekunder och börja om igen
försök: time.sleep (8) utom KeyboardInterrupt: # När Ctrl+C trycks utför körningen av medan loop är stoppad utskrift ('Exit') clear () show () break
Rekommenderad:
Använd smartphone som kontaktfri termometer / bärbar termometer: 8 steg (med bilder)
Använd smarttelefon som kontaktfri termometer / bärbar termometer: Mät kroppstemperatur med beröringsfri / kontaktlös som en termopistol. Jag skapade det här projektet eftersom Thermo Gun nu är väldigt dyrt, så jag måste skaffa alternativ för att göra DIY. Och syftet är att göra med låg budgetversion.SuppliesMLX90614Ardu
Övervaka och registrera temperatur med Bluetooth LE och RaspberryPi: 9 steg (med bilder)
Övervaka och registrera temperatur med Bluetooth LE och RaspberryPi: Den här instruerbara handlingen handlar om hur man sätter ihop ett temperaturövervakningssystem med flera noder med Bluetooth LE-sensorbugg från Blue Radios (BLEHome) och RaspberryPi 3B Tack vare utvecklingen av standarden Bluetooth LE finns det nu tillgängligt
Arduino -robot med avstånd, riktning och rotationsgrad (öst, väst, norr, söder) som styrs med röst med hjälp av Bluetooth -modul och autonom robotrörelse .: 6 steg
Arduino -robot med avstånd, riktning och rotationsgrad (öst, väst, norr, söder) som styrs med röst med hjälp av Bluetooth -modul och autonom robotrörelse.: Denna instruktion förklarar hur man gör Arduino -robot som kan flyttas i önskad riktning (framåt, bakåt , Vänster, höger, öst, väst, norr, syd) krävs Distans i centimeter med röstkommando. Roboten kan också flyttas autonomt
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: 5 steg (med bilder)
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: Styrning av 8 reläväxlar med nodemcu och IR -mottagare via wifi och IR -fjärrkontroll och Android -app. Fjärrkontrollen fungerar oberoende av wifi -anslutning. HÄR ÄR EN UPPDATERAD VERSIONKLICK HÄR
Temperatur och fuktighet Display och datainsamling med Arduino och bearbetning: 13 steg (med bilder)
Temperatur- och luftfuktighetsvisning och datainsamling med Arduino och bearbetning: Intro: Detta är ett projekt som använder ett Arduino -kort, en sensor (DHT11), en Windows -dator och ett bearbetningsprogram (ett gratis nedladdningsbart) för att visa temperatur, luftfuktighetsdata i digital och stapeldiagramform, visa tid och datum och kör en räkningstid