Ich habe Intel Edison und Python verwendet, um Sensordaten für wachsende Pflanzen zu erfassen und zu visualisieren. Selbst ein Anfänger wie ich, der die Schaltung nicht versteht, kann den Wert leicht erhalten, indem er einfach den Code schreibt, wenn es einen Basisschild und einen Sensor gibt, was Spaß macht. In Edison wurden nur wenige Dinge mit Python geschrieben, daher habe ich beschlossen, es zu schreiben. Es sieht nicht nach IoT aus, da es mit dem Server nicht funktioniert.
Edison Setup Sensorwert per Python abrufen ・ CSV-Datei speichern Visualisierung mit nvd3.js
Dies wurde unter Bezugnahme auf das Folgende eingestellt. Arduino Board http://nonnoise.github.io/Edison/
Ich habe die folgenden Sensoren verwendet.
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
Ich habe ein Kit gekauft, weil ich Anfänger bin und die Schaltung nicht allzu gut verstehe. http://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-4KNG
Außerdem dachte ich, es wäre interessant zu reden, also habe ich auch einen LCD-Monitor angeschlossen. http://www.seeedstudio.com/wiki/Grove_-_LCD_RGB_Backlight
Das fertige System sieht so aus. Pfefferminze anbauen.
Es ist interessant, dass Sie Daten einfach erhalten können, indem Sie sie in den Pin einfügen.
Dieses Mal werden Datum, Temperatur, Lichtmenge und Feuchtigkeit im Boden alle 10 Minuten im CSV-Format gespeichert. Importieren Sie das mraa-Modul und lesen Sie den Wert des fixierten Sensors. Es scheint, dass lcd von mraa gesteuert werden kann, aber pyupm_i2lcd war einfacher, also habe ich dies verwendet.
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
Der erhaltene Wert wird im CSV-Format gespeichert.
Die erfassten Sensordaten wurden mit nvd3.js visualisiert. http://nvd3.org/
Es sieht aus wie das. Da es in Innenräumen aufgestellt wurde, schwankte die Temperatur nicht wesentlich. Liegt das Wasser im Boden innerhalb des Fehlerbereichs? Oder liegt es daran, dass es das Wasser in der Untertasse aufgesaugt hat? Wenn das Licht hell ist, ist der Wert niedrig, und wenn es dunkel ist, ist der Wert hoch. Sie können sehen, dass es sich um einen nächtlichen Menschen handelt.
・ Die Trainingsumgebung ist schlecht (lacht) Ich habe es diesmal im Zimmer versucht, aber die Wachstumsrate ist viel besser, wenn ich es auf der Veranda anbaue (lacht) Als ich den Topf auf die Veranda stellte, wuchs er stetig. Ich denke, Sie können interessantere Daten erhalten, wenn Sie sie im Freien platzieren.
・ Nicht IoT Diesmal habe ich den Wert nicht an den Server gesendet Das nächste Mal möchte ich es an den Server senden und eine Vorhersage basierend auf den gesendeten Daten machen
· Senden Sie Werte direkt an den Server ・ Sagen Sie voraus, wann von dort aus Wasser benötigt wird ・ Ich möchte eine automatische Bewässerungsvorrichtung herstellen ・ Ich möchte Gemüse anbauen
Recommended Posts