J'ai utilisé Intel Edison et Python pour acquérir et visualiser des données de capteurs pour la culture de plantes. Même un débutant comme moi qui ne comprend pas le circuit peut facilement obtenir la valeur en écrivant simplement le code s'il y a un Base Shield et un capteur, ce qui est amusant. Il y a peu de choses écrites en Python dans Edison, j'ai donc décidé de l'écrire. Cela ne ressemble pas à l'IoT car il ne fonctionne pas avec le serveur.
configuration d'Edison Obtenir la valeur du capteur par python ・ Enregistrer le fichier csv Visualisation avec nvd3.js
Cela a été établi en référence à ce qui suit. Carte Arduino http://nonnoise.github.io/Edison/
J'ai utilisé les capteurs suivants.
Grove - Temperature Sensor Grove - Light Sensor Grove - Moisture Sensor http://www.seeedstudio.com/wiki/Grove_-Temperature_Sensor http://www.seeedstudio.com/wiki/Grove-Light_Sensor http://www.seeedstudio.com/wiki/Grove-_Moisture_Sensor
J'ai acheté un kit car je suis débutant et je ne comprends pas trop le circuit. http://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-4KNG
De plus, j'ai pensé que ce serait intéressant de parler, alors j'ai également attaché un moniteur LCD. http://www.seeedstudio.com/wiki/Grove_-_LCD_RGB_Backlight
Le système terminé ressemble à ceci. Cultivez la menthe poivrée.
Il est intéressant de noter que vous pouvez facilement obtenir des données simplement en les insérant dans la broche.
Cette fois, la date, la température, la quantité de lumière et l'humidité du sol sont enregistrées au format csv toutes les 10 minutes. Importez le module mraa et lisez la valeur du capteur épinglé. Il semble que lcd puisse être contrôlé par mraa, mais pyupm_i2lcd était plus facile, alors j'ai utilisé ceci.
sensor.py
#!/usr/bin/python
import datetime
import mraa
import csv
import time
import math
import pyupm_i2clcd as lcd
# definition of Pin
light = mraa.Aio(0)
temperature = mraa.Aio(1)
moisture = mraa.Aio(2)
lcdDis = lcd.Jhd1313m1(0, 0x3E, 0x62)
B = 3975
t = 0
OUT_FILE = "20150426_30.csv"
HOUR = 3600 * 30
with open(OUT_FILE,"wb")as f:
writer = csv.writer(f)
writer.writerow(["datetime","temperature","light","moisture"])
while t < HOUR:
if t % 600 == 0:
#read the value
light_val = light.read()
tem_val = temperature.read()
moi = moisture.read()
#calc temperature
resistance = (1023.0 - tem_val) * 10000 /tem_val
tem_last = round(1/(math.log(resistance /10000) / B+1 / 298.15) - 273.15,2)
#calc light
rsensor = round((1023.0 - light_val)*10 / light_val,2)
#calc today
d = datetime.datetime.today()
#calc moisture
moi_per = round(moi / 10.0,2)
strtime = d.strftime("%Y-%m-%d %H:%M:%S")
with open(OUT_FILE,"ab")as f:
writer = csv.writer(f)
writer.writerow([strtime,tem_last,rsensor,moi_per])
print "Now:",strtime,"," , "Temperature:",tem_last,"," , "Light:",rsensor,",","Moisture:",moi_per
#Check Moisture and Change LCD Display
if moi_per < 10.0:
lcdDis.write(" ")
lcdDis.setColor(128,0,128)
lcdDis.setCursor(0,0)
lcdDis.write("I am thirsty :(")
else:
lcdDis.write(" ")
lcdDis.setColor(255,255,0)
lcdDis.setCursor(0,0)
lcdDis.write("Iam fine :)")
time.sleep(1)
t += 1
La valeur obtenue est enregistrée au format csv.
Les données de capteur acquises ont été visualisées à l'aide de nvd3.js. http://nvd3.org/
Ça ressemble à ça. Puisqu'il a été placé à l'intérieur, la température n'a pas fluctué de manière significative. Est-ce dans la plage d'erreur que l'eau du sol monte? Ou est-ce parce qu'il aspire l'eau de la soucoupe? Lorsque la lumière est claire, la valeur est faible, et lorsqu'il fait sombre, la valeur est élevée. Vous pouvez voir que c'est un être humain nocturne.
・ L'environnement d'entraînement est mauvais (rires) Je l'ai essayé dans la pièce cette fois, mais le taux de croissance est bien meilleur si je le fais pousser sur la véranda (rires) Quand j'ai déplacé le pot dans la véranda, il grandissait régulièrement. Je pense que vous pouvez obtenir des données plus intéressantes si vous les mettez à l'extérieur.
・ Pas IoT Cette fois je ne suis pas allé au point d'envoyer la valeur au serveur La prochaine fois, j'aimerais l'envoyer au serveur et faire une prédiction basée sur les données envoyées
· Envoyer les valeurs directement au serveur ・ Prédire quand un arrosage est nécessaire à partir de là ・ Je souhaite fabriquer un arrosoir automatique ・ Je veux faire pousser des légumes
Recommended Posts