Ringo qui a rejoint une entreprise Web pour une raison quelconque à partir d'avril J'ai fini par toucher Laravel, MySQL et Ansible, que je n'avais jamais touchés lors de la formation. Donc, après avoir étudié, je vais visualiser la pièce à l'aide de la tarte aux râpes et du capteur qui se trouvaient dans la pièce. Il semble que vous ayez fait quelque chose de similaire avec le titre Créer un robot de surveillance de la température avec ESP8266 et Raspberry Pi.
J'essaierai de répondre à peu près aux conditions suivantes.
--Moniteur de température, d'humidité et de pression ――Je veux pouvoir voir de l'extérieur comme de l'intérieur de la maison ――Je souhaite afficher graphiquement non seulement les données actuelles, mais également les changements dans la journée.
--Razpai, 3b + a été utilisé dans cet article
Considérez la configuration en fonction des spécifications. Le capteur et l'OLED sont connectés par communication I2C en perçant la maquette. Les données acquises seront enregistrées dans Raspeye et envoyées à l'instance configurée sur CONOHA. La procédure de traitement est la suivante.
Je vais faire un processus selon la procédure de. Dans cet article, je vais expliquer 1-3.
Comme il s'agit d'une communication I2C, connectez simplement SDI et SCK, et le module est de 3,3 V, alors soyez prudent. ʻI2cdetect -y 1` S'il est confirmé et reconnu, ça va
Dans l'image, il existe d'autres connexions, mais 0x3C est l'adresse OLED et 0x76 est l'adresse BME280.
Dans I2C, il y a diverses choses telles que le pull-up est nécessaire, mais je vais continuer en supposant que c'est sur la carte du côté du capteur. Cependant, la communication I2C elle-même n'est pas résistante au bruit, il peut donc être préférable de ne pas trop l'étirer.
La bibliothèque a utilisé l'exemple SWITCH CIENCE. SWITCHSCIENCE/BME280 Il est écrit pour Python2, je vais donc le modifier un peu. Comme un changement
Le code modifié sera ici. Vous aurez également besoin de smbus pour l'exécuter.
J'ai pu confirmer l'acquisition de la valeur sur le terminal.
Le cristal liquide utilisé est un module OLED équipé du SSD1306. Je ne peux pas écrire parce que je ne me souviens pas où je l'ai acheté, mais je pense que c'est presque la même chose, peu importe où je l'ai acheté. J'ai utilisé la bibliothèque publiée par Adafruit. adafruit/Adafruit_Python_SSD1306
J'ai besoin de quelques conseils pour le déplacer. Déplacez l'exemple de code de l'écran EL organique avec Raspeye Reportez-vous à l'article ci-dessus et installez les bibliothèques nécessaires sur pyenv afin de pouvoir utiliser OLED. Ajoutez le traitement de bme280 en vous référant à Adafruit_Python_SSD1306 / examples / stats.py.
#Écran propre
draw.rectangle((0,0,width,height), outline=0, fill=0)
sensor_data = bme280.readData() #Acquisition des données du capteur
temp = "%6.2f" % (sensor_data[0])
draw.text((x, top), "Temp =" + temp + " °C", font = font, fill = 255)
press = "%7.2f" % (sensor_data[1])
draw.text((x, top + 8), "Press = " + press + " hPa", font = font, fill = 255)
hum = "%6.2f" % (sensor_data[2])
draw.text((x, top + 16), "Hum =" + hum + " %", font = font, fill = 255)
#Écran d'affichage
disp.image(image)
disp.display()
Extrait le traitement dans la boucle while. Quant au contenu du processus, les données sont acquises à partir du capteur et affichées ligne par ligne.
J'ai pu afficher les données acquises sur l'OLED.
J'ai dit enregistrer dans le cloud, mais je vais l'enregistrer en csv pour le moment.
#Processus d'écriture de fichier
date = str(datetime.date.today())
nowtime = datetime.datetime.now()
#Écraser s'il y a un fichier
if(os.path.exists(path + date +".csv")):
f = open(path + date +".csv", 'a')
f.write(str(nowtime.hour) + ':' + str(nowtime.minute) + ':' + str(nowtime.second) + ',')
f.write(temp + ',' + press + ',' + hum + ' \n')
f.close()
#Générer sinon
else:
f = open(path + date +".csv", 'w')
f.write("date,Temp,Press,Hum\n")
f.write(str(nowtime.hour) + ':' + str(nowtime.minute) + ':' + str(nowtime.second) + ',')
f.write(temp + ',' + press + ',' + hum + ' \n')
f.close()
J'ai écrit le processus pour séparer par date et enregistrer dans csv. Lorsque le graphique de sortie est affiché dans Excel, il ressemble à ceci.
Le programme final est publié sur gist. raspi_logger.py La prochaine fois, j'essaierai de créer une API à l'aide de Laravel et du cloud et d'afficher le graphique sur le navigateur.
Recommended Posts