Table des matières:
Vidéo: RuuviTag et PiZero W et Blinkt ! un thermomètre basé sur une balise Bluetooth : 3 étapes (avec photos)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:08
Cette instructable décrit une approche pour lire les données de température et d'humidité d'un RuuviTag à l'aide de Bluetooth avec un Raspberry Pi Zero W et pour afficher les valeurs en nombres binaires sur un blinkt Pimoroni ! pHAT. Ou pour faire court: comment construire un thermomètre à la pointe de la technologie et un peu ringard.
Le RuuviTag est une balise Bluetooth à capteur open source qui est livrée avec des capteurs de température/humidité/pression et d'accélération, mais peut également servir de balise de proximité Eddystone™ / iBeacon standard. C'était un projet Kickstarter très réussi et j'ai eu le mien il y a quelques semaines. Il existe un Github avec un logiciel python pour lire le RuuviTag à l'aide d'une framboise, et j'ai utilisé un de leurs exemples, avec quelques ajouts.
Le Raspberry Pi Zero W est le dernier membre de la famille RPi, essentiellement un Pi Zero avec Bluetooth et WLAN ajoutés.
Le clin d'oeil ! pHAT de Pimoroni est essentiellement une bande de huit LED RBG configurées comme un HAT pour le Raspberry Pi. Il est très facile à utiliser et est livré avec une bibliothèque python. L'idée était de lire les données du RuuviTag et de les afficher en utilisant le blinkt ! CHAPEAU. Les valeurs sont affichées sous forme de nombres binaires à l'aide de 7 des LED, tandis que la huitième est utilisée pour indiquer si les valeurs d'humidité ou de température (+/-/0) sont affichées.
Étape 1: Configuration du système
La mise en place du système est simple:- Allumez le RuuviTag (version sonde de température RuuviTag).
- Configurez votre RPi Zero W, RPi3 ou tout autre RPi avec capacité Bluetooth ajoutée, en suivant les instructions sur www.raspberrypi.org.
- Placez le clignotant ! HAT sur le RPi (lorsqu'il est éteint).
- Installez le blinkt ! et le logiciel RuuviTag, comme indiqué sur les pages GitHub correspondantes.
- Vous devez maintenant identifier l'adresse MAC de votre RuuviTag
- copier le programme Python joint, l'ouvrir avec IDLE pour Python 3
- remplacez l'adresse MAC du RuuviTag par la vôtre, puis enregistrez et exécutez le programme.
- n'hésitez pas à modifier et optimiser le programme. Le programme est livré tel quel, pour être utilisé à vos risques et périls, aucune responsabilité n'est prise pour les dommages.
Étape 2: L'appareil et le programme
Comme mentionné ci-dessus, l'idée était de construire un système simple et peu coûteux pour lire les données de la balise et afficher les valeurs numériques sur le flasht ! HAT, ou une bande LED similaire.
La plage de valeurs de température à mesurer avec un système basé sur RPi se situera dans la plupart des cas entre - 50°C et +80°C, pour une humidité comprise entre 0 et 100%. Ainsi, un affichage pouvant donner des valeurs de -100 à +100 sera suffisant pour la plupart des applications. Les nombres décimaux inférieurs à 128 peuvent être affichés sous forme de nombres binaires avec 7 bits (ou LED). Ainsi, le programme prend les valeurs de température et d'humidité du RuuviTag sous forme de nombres "flottants" et les transforme en nombres binaires, qui sont ensuite affichés sur le flasht!.
Dans un premier temps, le nombre est arrondi, analysé s'il est positif, négatif ou nul, puis transformé en un nombre positif à l'aide de "abs". Ensuite, le nombre décimal est converti en un nombre binaire à 7 chiffres, essentiellement une chaîne de 0 et de 1, qui est analysée et affichée sur les 7 derniers pixels du flasht!.
Pour les valeurs de température, le premier pixel indique si la valeur est positive (rouge), zéro (magenta) ou négative (bleu). Affichage des valeurs d'humidité, il est mis au vert. Pour simplifier la discrimination entre les valeurs de température et d'humidité, les pixels binaires sont réglés en blanc pour la température et en jaune pour l'humidité. Pour améliorer la lisibilité des nombres binaires, les pixels « 0 » ne sont pas complètement désactivés, mais sont définis beaucoup plus faibles que dans l'état « 1 ». Comme flasht ! les pixels sont très lumineux, vous pouvez régler la luminosité générale en modifiant le paramètre "lumineux"
Le programme affiche également les valeurs et les parties du processus à l'écran. De plus, vous trouverez plusieurs instructions d'impression en sourdine (#). Je les ai laissés, car ils peuvent vous être utiles pour comprendre le processus s'ils ne sont pas mis en sourdine.
Les valeurs peuvent également être stockées dans un fichier journal.
Étape 3: Code de programme
Le code a été un peu débogué et optimisé. Vous pouvez maintenant trouver la version 3 (20_03_2017).
' Ce programme est destiné à lire les valeurs de température, d'humidité et de pression à partir d'un RuuviTag '' et à afficher les valeurs de température et d'humidité sous forme de nombres binaires sur un clignotant Pimorini ! CHAPEAU. ' '' ' Il est basé sur l'exemple print_to_screen.py de la bibliothèque ruuvitag sur github. ' ' Nécessite un Pi Zero W, Pi 3 ou tout autre RPi équipé de bluetooth et toutes les librairies nécessaires installées.'
heure d'importation
importer le système d'exploitation à partir de datetime importer datetime
de ruuvitag_sensor.ruuvi importer RuuviTagSensor
à partir de l'importation de blinkt set_clear_on_exit, set_pixel, clear, show
def temp_blinkt (bt):
# cette routine prend la valeur de la température et l'affiche sous forme de nombre binaire sur blinkt !
dégager ()
# couleur et intensité des "1"pixels: blanc
r1 = 64 g1 = 64 b1 = 64
#couleur et intensité des pixels "0": blanc
r0 = 5 g0 = 5 b0 = 5
# Arrondir et convertir en entier
r = rond (bt)
# vz représente le signe algébrique du pixel indicateur
if (r>0): vz = 1 # positif elif (r<0): vz= 2 # négatif else: vz= 0 # zero # print (vz) i = abs(r) #print (i)
# transformation en nombre binaire absolu à 7 chiffres
i1 = i + 128 # pour i résulte en un nombre binaire à 8 chiffres commençant par 1 # print (i1)
b = "{0:b}".format(i1) # convertir en binaire
# imprimer (b)
b0 = str (b) # convertir en chaîne
b1 = b0[1:8] #tronquer le premier bit
print ("numéro binaire: ", b1)
# Définir les pixels sur blinkt !
# définir un nombre binaire
pour h dans la plage (0, 7): f = (h+1) if (b1[h] == "1"): set_pixel (f, r1, g1, b1) # print (" bit ", h, " est 1, pixel ", f) sinon: set_pixel (f, r0, g0, b0) # print("nil")
# Définir le pixel indicateur
if (vz==1): set_pixel (0, 64, 0, 0) # rouge pour les valeurs positives elif (vz==2): set_pixel (0, 0, 0, 64) # bleu pour les valeurs négatives else: set_pixel (0, 64, 0, 64) # magenta si zéro
spectacle()
# fin de temp_blinkt()
def hum_blinkt(bh):
# cela prend la valeur d'humidité et l'affiche sous forme de nombre binaire sur blinkt !
dégager()
# couleur et intensité des pixels "1": jaune
r1 = 64 g1 = 64 b1 = 0
#couleur et intensité de "0" pixels:
r0 = 5 g0 = 5 b0 = 0
# Arrondir et transformer en entier
r = rond (bh)
# transformer en nombre binaire absolu à 7 chiffres i = abs(r) #imprimer (i)
i1 = i + 128 # pour i donne un nombre binaire à 8 chiffres commençant par 1
# imprimer (i1)
b = "{0:b}".format(i1)
# imprimer (b)
b0 = str (b)
b1 = b0[1:8] #tronquer le premier bit
print ("numéro binaire: ", b1)
# Définir les pixels sur blinkt !
# définir le nombre binaire en pixels
pour h dans la plage (0, 7): f = (h+1) if (b1[h] == "1"): set_pixel (f, r1, g1, b1) else: # mute pour vider les LED set_pixel (f, r0, g0, b0) # mute aux voyants vides
# Définir le pixel indicateur
set_pixel (0, 0, 64, 0) # vert pour l'humidité
spectacle()
# fin de hum_blinkt()
set_clear_on_exit()
# Lecture des données du RuuviTag
mac = 'EC:6D:59:6D:01:1C' # Changez pour l'adresse mac de votre propre appareil
print('Démarrage')
capteur = RuuviTagSensor (mac)
tant que vrai:
données = sensor.update()
line_sen = str.format('Capteur - {0}', mac)
line_tem = str.format('Temperature: {0} C', data['temperature']) line_hum = str.format('Humidity: {0} %', data['humidity']) line_pre = str.format('Pression: {0}', données['pression'])
imprimer()
# afficher la température au clignotement ! ba = str.format('{0}', data['temperature']) bt = float (ba) print (bt, " °C") temp_blinkt (bt) print()
time.sleep (10) # afficher la température pendant 10 secondes
# afficher l'humidité sur blinkt !
bg = str.format('{0}', data['humidité']) bh = float (bg) print (bh, " %") hum_blinkt (bh) print ()
# Effacer l'écran et imprimer les données du capteur à l'écran
os.system('clear') print('Appuyez sur Ctrl+C pour quitter.\n\n') print(str(datetime.now())) print(line_sen) print(line_tem) print(line_hum) print(line_pre) print('\n\n\r…….')
# Attendez quelques secondes et recommencez
try: time.sleep(8) sauf KeyboardInterrupt: # Lorsque Ctrl+C est appuyé, l'exécution de la boucle while est arrêtée print('Exit') clear() show () break
Conseillé:
Utiliser un smartphone comme thermomètre sans contact / thermomètre portable : 8 étapes (avec photos)
Utiliser le smartphone comme thermomètre sans contact/thermomètre portable : mesure de la température corporelle avec sans contact/sans contact comme un pistolet thermique. J'ai créé ce projet parce que Thermo Gun est maintenant très cher, je dois donc trouver une alternative pour faire du bricolage. Et le but est de faire avec la version à petit budget.SuppliesMLX90614Ardu
Thermomètre infrarouge sans contact basé sur Arduino - Thermomètre IR utilisant Arduino : 4 étapes
Thermomètre infrarouge sans contact basé sur Arduino | Thermomètre basé sur IR utilisant Arduino : Salut les gars dans cette instructables, nous allons faire un thermomètre sans contact à l'aide d'arduino. Puisque parfois la température du liquide/solide est beaucoup trop élevée ou trop basse, puis il est difficile d'entrer en contact avec lui et de lire son température alors dans ce scen
Générateur de musique basé sur la météo (Générateur Midi basé sur ESP8266): 4 étapes (avec images)
Générateur de musique basé sur la météo (Générateur Midi basé sur ESP8266): Bonjour, aujourd'hui, je vais vous expliquer comment créer votre propre petit générateur de musique basé sur la météo. Il est basé sur un ESP8266, qui ressemble un peu à un Arduino, et il réagit à la température, à la pluie et l'intensité lumineuse. Ne vous attendez pas à ce qu'il fasse des chansons entières ou un programme d'accords
Comment contrôler le commutateur intelligent de base Sonoff basé sur ESP8266 avec un smartphone : 4 étapes (avec photos)
Comment contrôler le commutateur intelligent de base Sonoff basé sur ESP8266 avec un smartphone : Sonoff est une gamme d'appareils pour Smart Home développée par ITEAD. L'un des appareils les plus flexibles et les moins chers de cette gamme est le Sonoff Basic. Il s'agit d'un commutateur compatible Wi-Fi basé sur une excellente puce, ESP8266. Cet article décrit comment configurer le Cl
Thermomètre numérique basé sur Picaxe avec Max et Min: 13 étapes
Thermomètre numérique basé sur Picaxe avec Max et Min : (Veuillez laisser un message, mais ne soyez pas trop critique, c'est mon premier instructable !!) Il s'agit d'un thermomètre que j'ai fait pour notre camping-car, pour afficher la température extérieure. Il est basé sur une puce Picaxe car ils sont bon marché et faciles à utiliser. Si c'est pour