Inhaltsverzeichnis:
Video: RuuviTag und PiZero W und Blinkt! ein Bluetooth-Beacon-basiertes Thermometer - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:19
Dieses anweisbare beschreibt einen Ansatz zum Lesen von Temperatur- und Feuchtigkeitsdaten von einem RuuviTag über Bluetooth mit einem Raspberry Pi Zero W und zum Anzeigen der Werte in Binärzahlen auf einem Pimoroni blinkt! pHAT. Oder kurz gesagt: wie man ein hochmodernes und ein bisschen nerdiges Thermometer baut.
Der RuuviTag ist ein Open-Source-Sensor-Bluetooth-Beacon, der mit einem Temperatur-/Feuchtigkeits-/Druck- und Beschleunigungssensor ausgestattet ist, aber auch als Standard-Eddystone™ / iBeacon-Näherungsbeacon fungieren kann. Es war ein sehr erfolgreiches Kickstarter-Projekt und ich habe meins vor ein paar Wochen bekommen. Es gibt einen Github mit Python-Software, um den RuuviTag mit einer Himbeere zu lesen, und ich habe eines ihrer Beispiele mit einigen Ergänzungen verwendet.
Der Raspberry Pi Zero W ist das neueste Mitglied der RPi-Familie, im Grunde ein Pi Zero mit Bluetooth und WLAN.
Das blinkt! pHAT von Pimoroni ist im Grunde ein Streifen aus acht RBG-LEDs, der als HAT für den Raspberry Pi konfiguriert ist. Es ist sehr einfach zu bedienen und wird mit einer Python-Bibliothek geliefert. Die Idee war, die Daten aus dem RuuviTag auszulesen und mit dem blinken! HUT. Die Werte werden als Binärzahlen mit 7 der LEDs angezeigt, während die acht verwendet werden, um anzuzeigen, ob Feuchtigkeits- oder Temperaturwerte (+/-/0) angezeigt werden.
Schritt 1: Einrichten des Systems
Die Einrichtung des Systems ist einfach: - Schalten Sie den RuuviTag (RuuviTag Temperatursensor-Version) ein.
- Richten Sie Ihr RPi Zero W, RPi3 oder jedes andere RPi mit Bluetooth-Kapazität ein, indem Sie den Anweisungen auf www.raspberrypi.org folgen.
- Platziere das Blinken! HAT auf dem RPi (im ausgeschalteten Zustand).
- Installieren Sie das blinkt! und RuuviTag-Software, wie auf den entsprechenden GitHub-Seiten angegeben.
- Sie müssen nun die MAC-Adresse Ihres RuuviTags ermitteln
- Kopieren Sie das angehängte Python-Programm, öffnen Sie es mit IDLE für Python 3
- Ändern Sie die MAC-Adresse des RuuviTag in Ihre, speichern Sie das Programm und führen Sie es aus.
- Fühlen Sie sich frei, das Programm zu ändern und zu optimieren. Die Benutzung des Programms erfolgt auf eigene Gefahr, es wird keine Haftung für eventuelle Schäden übernommen.
Schritt 2: Das Gerät und das Programm
Wie oben erwähnt, war die Idee, ein einfaches und kostengünstiges System zu konstruieren, um Daten aus dem Beacon auszulesen und numerische Werte auf dem blinkt! HAT oder ein ähnlicher LED-Streifen.
Der Wertebereich für die zu messende Temperatur mit einem RPi-basierten System liegt in den meisten Fällen zwischen - 50 °C und +80 °C, für die Luftfeuchtigkeit zwischen 0 und 100 %. Für die meisten Anwendungen reicht also eine Anzeige, die Werte von -100 bis +100 anzeigen kann. Dezimalzahlen kleiner 128 können als Binärzahlen mit 7 Bit (oder LEDs) dargestellt werden. Das Programm nimmt also die Temperatur- und Feuchtigkeitswerte aus dem RuuviTag als "Float"-Zahlen und wandelt sie in Binärzahlen um, die dann auf dem blinken! angezeigt werden.
Im ersten Schritt wird die Zahl gerundet, auf positiv, negativ oder null analysiert und dann mit „abs“in eine positive Zahl umgewandelt. Dann wird die Dezimalzahl in eine 7-stellige Binärzahl umgewandelt, im Grunde eine Folge von 0 und 1, die analysiert und auf den letzten 7 Pixeln des blinkt! angezeigt wird.
Bei Temperaturwerten zeigt das erste Pixel an, ob der Wert positiv (rot), null (magenta) oder negativ (blau) ist. Bei der Anzeige von Feuchtewerten ist es auf Grün gesetzt. Um die Unterscheidung zwischen Temperatur- und Feuchtigkeitswerten zu vereinfachen, werden die Binärpixel weiß für Temperatur und gelb für Feuchtigkeit gesetzt. Um die Lesbarkeit der Binärzahlen zu verbessern, werden "0"-Pixel nicht vollständig ausgeschaltet, sondern stattdessen viel schwächer eingestellt als im "1"-Zustand. Wie blinkt! Pixel sind sehr hell, Sie können die allgemeine Helligkeit einstellen, indem Sie den Parameter "hell" ändern
Das Programm zeigt die Werte und Teile des Prozesses auch auf dem Bildschirm an. Darüber hinaus finden Sie mehrere Anweisungen zum stummgeschalteten (#) Druck. Ich habe sie drin gelassen, da sie für Sie hilfreich sein könnten, um den Vorgang zu verstehen, wenn die Stummschaltung nicht aktiviert ist.
Die Werte können auch in einer Protokolldatei gespeichert werden.
Schritt 3: Programmcode
Der Code wurde ein wenig debuggt und optimiert. Sie finden jetzt Version 3 (20_03_2017).
' Dieses Programm soll die Temperatur-, Feuchte- und Druckwerte aus einem RuuviTag '' auslesen und die Temperatur- und Feuchtewerte als Binärzahlen auf einem Pimorini blinkt anzeigen! HUT. ' '' ' Es basiert auf dem print_to_screen.py-Beispiel aus der ruuvitag-Bibliothek auf github. ' ' Erfordert einen Pi Zero W, Pi 3 oder einen anderen RPi mit Bluetooth und allen notwendigen Bibliotheken.'
Importzeit
Betriebssystem von Datum/Uhrzeit importieren Datum/Uhrzeit importieren
von ruuvitag_sensor.ruuvi importieren RuuviTagSensor
from blinkt import set_clear_on_exit, set_pixel, clear, show
def temp_blinkt(bt):
# diese Routine nimmt den Temperaturwert und zeigt ihn als Binärzahl beim Blinken an!
klar ()
# Farbe und Intensität von "1"pixeln: weiß
r1 = 64 g1 = 64 b1 = 64
#Farbe und Intensität von "0" Pixeln: weiß
r0 = 5 g0 = 5 b0 = 5
# Runden und in ganze Zahlen umwandeln
r = rund (bt)
# vz steht für Vorzeichen für Indikatorpixel
if (r>0): vz = 1 # positive elif (r<0): vz= 2 # negativ else: vz= 0 # null # print (vz) i = abs(r) #print (i)
# in absolute, 7-stellige Binärzahl umwandeln
i1 = i + 128 # für i ergibt eine 8-stellige Binärzahl beginnend mit 1 # print (i1)
b = "{0:b}".format(i1) # in binär konvertieren
# drucken (b)
b0 = str (b) # in String umwandeln
b1 = b0[1:8] #erstes Bit abschneiden
drucken ("Binärzahl: ", b1)
# Pixel auf blinkt setzen!
# Binärzahl setzen
für h im Bereich (0, 7): f = (h+1) if (b1[h] == "1"): set_pixel (f, r1, g1, b1) # print ("bit", h, " ist 1, Pixel", f) sonst: set_pixel (f, r0, g0, b0) # print("nil")
# Indikatorpixel setzen
if (vz==1): set_pixel (0, 64, 0, 0) # rot für positive Werte elif (vz==2): set_pixel (0, 0, 0, 64) # blau für negative Werte else: set_pixel (0, 64, 0, 64) # magenta wenn null
zeigen()
# Ende von temp_blinkt()
def hum_blinkt(bh):
# dies nimmt den Feuchtigkeitswert und zeigt ihn als Binärzahl an blinkt!
klar()
# Farbe und Intensität von "1" Pixeln: gelb
r1 = 64 g1 = 64 b1 = 0
#Farbe und Intensität von "0" Pixeln:
r0 = 5 g0 = 5 b0 = 0
# Runden und in eine ganze Zahl umwandeln
r = rund (bh)
# in absolute, 7-stellige Binärzahl transformieren i = abs(r) #print (i)
i1 = i + 128 # für i ergibt eine 8-stellige Binärzahl beginnend mit 1
# drucken (i1)
b = "{0:b}".format(i1)
# drucken (b)
b0 = str (b)
b1 = b0[1:8] #erstes Bit abschneiden
drucken ("Binärzahl: ", b1)
# Pixel auf blinkt setzen!
# Binärzahl auf Pixel setzen
für h im Bereich (0, 7): f = (h+1) if (b1[h] == "1"): set_pixel (f, r1, g1, b1) else: # auf leere LEDs stumm schalten set_pixel (f, r0, g0, b0) # auf leere LEDs stummschalten
# Indikatorpixel setzen
set_pixel (0, 0, 64, 0) # grün für Luftfeuchtigkeit
zeigen()
# Ende von hum_blinkt()
set_clear_on_exit()
# Daten aus dem RuuviTag lesen
mac = 'EC:6D:59:6D:01:1C' # Wechseln Sie zur Mac-Adresse Ihres eigenen Geräts
print('Start')
sensor = RuuviTagSensor(mac)
während Wahr:
data = sensor.update()
line_sen = str.format('Sensor - {0}', mac)
line_tem = str.format('Temperatur: {0} C', data['temperature']) line_hum = str.format('Luftfeuchtigkeit: {0} %', data['humidity']) line_pre = str.format('Druck: {0}', Daten['Druck'])
drucken()
# Temperaturanzeige an blinkt! ba = str.format('{0}', data['temperature']) bt = float (ba) print (bt, " °C") temp_blinkt (bt) print()
time.sleep (10) # Temperaturanzeige für 10 Sekunden
# Luftfeuchtigkeit anzeigen blinkt!
bg = str.format('{0}', data['humidity']) bh = float (bg) print (bh, " %") hum_blinkt (bh) print ()
# Bildschirm löschen und Sensordaten auf den Bildschirm drucken
os.system('clear') print('Drücken Sie Strg+C zum Beenden.\n\n') print(str(datetime.now())) print(line_sen) print(line_tem) print(line_hum) print(line_pre) print('\n\n\r…….')
# Warten Sie ein paar Sekunden und beginnen Sie von vorne
try: time.sleep(8) außer KeyboardInterrupt: # Wenn Strg+C gedrückt wird, wird die Ausführung der while-Schleife gestoppt print('Exit') clear() show() break
Empfohlen:
Ein Thermometer mit Arduino und LM35 herstellen – wikiHow
Wie man ein Thermometer mit Arduino und LM35 herstellt: Heute werde ich Ihnen zeigen, wie man ein Thermometer mit Arduino und LM35-Temperatursensor, LCD-Display, auf einem mit Drähten verbundenen Steckbrett herstellt. Es wird die Temperatur in Celsius und Fahrenheit anzeigen Beobachtet
Wie erstelle ich ein Infrarot-Thermometer?: 9 Schritte
Wie erstelle ich ein Infrarot-Thermometer?: Das Infrarot-Thermometer kann die Oberflächentemperatur eines Objekts messen. Sein Vorteil ist die berührungslose Temperaturmessung, mit der die Temperatur eines weit verbreiteten entfernten Objekts bequem und genau gemessen werden kann.Hier stellen wir
On Off Latch-Schaltung mit UC. Ein Druckknopf. Ein Stift. Diskrete Komponente.: 5 Schritte
On Off Latch-Schaltung mit UC. Ein Druckknopf. Ein Stift. Discrete Component.: Hallo zusammen, habe im Netz nach einer Ein/Aus-Schaltung gesucht. Alles, was ich fand, war nicht das, was ich suchte. Ich habe mit mir selbst gesprochen, es gibt unbedingt einen Weg dazu. Das habe ich gebraucht. - Nur ein Druckknopf zum Ein- und Ausschalten. - Muss nur
EIN ALTES HANDY (NOKIA 6600) IN EIN SUPERGADGET-MIKROCOMPUTER VERWANDELN: 37 Schritte
WIE MAN EIN ALTES HANDY (NOKIA 6600) IN EIN SUPERGADGET-MIKROCOMPUTER VERWANDELT: http://www.internetsecretbook.com https://www.youtube.com/thebibleformulaInmitten der Schwierigkeit liegt die Chance. - Albert Einstein Das Nokia 6600 bietet neue fortschrittliche Bildgebungsfunktionen, darunter ein helles TFT-Display mit 65.536 Farben und ca
Wie erstelle ich ein digitales Thermometer # 1: 4 Schritte
So erstellen Sie ein digitales Thermometer Nr. 1: In diesem Artikel werde ich ein Projekt namens "Digitales Thermometer" erstellen. Ich verwende "DHT11" für den Temperatursensor. Und verwenden Sie das "7Segmrnt-Modul" als Anzeige. Ich empfehle, diesen Artikel zuerst zu lesen "DHT11" und &q