Stap 5: Codering de Edison
Python script hebben we gebruikt in plaats van met behulp van de Arduino, vanwege gemakkelijk beschikbare bibliotheken. Sommige groove sensoren evenals LCD's zijn niet beschikbaar in Arduino vanaf nu.
Deze code haalt gewoon invoer van beide sensoren manipuleert de steekproef opgenomen gegevens en het posten naar Thingspeak kanaal-ID.
Python Code:
import pyupm_i2clcd as lcddimport mraa import time import httplib import math import time import socket import sys temppin=0 heartbeatpin=2temp=mraa.Aio(temppin) beat=mraa.Gpio(heartbeatpin)beat.dir(mraa.DIR_IN)lcd= lcdd.Jhd1313m1(0, 0x3E, 0x62) count=0 beatrate=0 currtime=time.time() key="your_key_here"def beatme(args): global count global beatrate global currtime count=count+1 if ((time.time()-currtime)>20): beatrate=60*count/(time.time()-currtime) currtime=time.time() count=0 returnbeat.isr(mraa.EDGE_RISING,beatme,beatme)B=3975 def gettemp(): a=temp.read() resistance=(float)(1023-a)*10000/a temperature=1/(math.log(resistance/10000)/B+1/298.15)-273.15 return temperaturedef updateme(f1,f2): global key conn = httplib.HTTPConnection("api.thingspeak.com") query="/update?api_key="+key+("&field1=%d&field2=%d" %(f1,f2)) conn.request("GET", query) r1 = conn.getresponse() preresult = r1.read() observation("temp",f2) observation("beat",f1) return preresultdef observation(var,val): UDP_PORT = 41234 # UDP port iotkit-agent is listening: defined in /etc/iotkit-agent/config.json sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.sendto('{"n":"' + str(var) + '","v":"' + str(val) + '"}', ('localhost', UDP_PORT)) return while 1: lcd.setCursor(0,0) lcd.write("Temperature:%d" %(gettemp())) lcd.setCursor(1,0) lcd.write("Heartbeat:%d" %(beatrate)) updateme(beatrate,gettemp())