AINA: Fältet Lab med Edison IoT (3 / 12 steg)
Steg 3: Enhetstestning sensorer
När att utvecklingssystemet är i drift, är det tid att få upptagen med sensorer.
Grove Wiki ger omfattande information om sina sensorer. Varje sensor har en egen wikisida med beskrivningar, länkar till leverantör litteratur på sensorn, och användning exempelkoden för en mängd olika microcontrollers. Tyvärr är de enda Python exempel raspberry pi med hjälp av grovepi biblioteket. Detta bibliotek finns inte på Edison, så vi ser någon annanstans.
Intel MRAA och UPM bibliotek att ge högre nivå stödja GPIO funktioner i olika Linuxsystem. Biblioteken är skrivna i C/C++ med bindningar för Python, Java, JavaScript. Installera dessa för Edison gjordes i inställningen för utveckling.
Vår enhet tester utforskar användningen av olika sensorer använder biblioteken. En Python tool skapas för varje sensor och testats med hjälp av terminal utdata.
Exempel enhetstester
Exempel på dessa program ingår här. Andra kan hittas i den UPM GIT repostitory, med förbehållet att sensorerna heter det vid deras kryptiska chip nummer. Tsl2561.py är till exempel deras demo för modulen digital ljussensor.
Digital ljussensor kod
http://www.seeedstudio.com/wiki/Grove_-_Digital_Light_Sensor
Importera tid, sys, signal, atexit
importera pyupm_tsl2561 som upmTsl2561
# Instansiera en digital ljussensor TSL2561 på I2C
myDigitalLightSensor = upmTsl2561.TSL2561()
## Avsluta hanterare ##
# Den här funktionen slutar python från utskrift en stacktrace när du trycker Ctrl-C
def SIGINTHandler (signum, ram):
höja SystemExit
# Den här funktionen kan du köra kod på avfarten, inklusive funktioner från myDigitalLightSensor
def exitHandler():
skriva ut "Avslutar"
sys.Exit(0)
# Registrera exit hanterare
atexit.register(exitHandler)
signal.signal (signal. SIGINT, SIGINTHandler)
While(1):
skriva ut "ljus värde är" + str(myDigitalLightSensor.getLux())
Time.Sleep(1)
Fukt-Sensor kod
http://seeedstudio.com/wiki/Grove_-_Moisture_Sensor
Importera tid, sys, signal, atexit
importera pyupm_grovemoisture som upmMoisture
# Instansiera en Grove fukt sensor på analoga pin A0
myMoisture = upmMoisture.GroveMoisture(0)
## Avsluta hanterare ##
# Den här funktionen slutar python från utskrift en stacktrace när du trycker Ctrl-C
def SIGINTHandler (signum, ram):
höja SystemExit
# Den här funktionen kan du köra kod på avfarten, inklusive funktioner från myMoisture
def exitHandler():
skriva ut "Avslutar"
sys.Exit(0)
# Registrera exit hanterare
atexit.register(exitHandler)
signal.signal (signal. SIGINT, SIGINTHandler)
# Värden (ungefärlig):
# 0-300, sensorn i luft eller torr mark
# 300-600, sensor i fuktig jord
# 600 +, sensorn i våt mark eller nedsänkt i vatten
# Läsa värdet varje sekund och skriva ut den motsvarande fuktnivå
While(1):
moisture_val = myMoisture.value()
om (moisture_val > = 0 och moisture_val < 300):
resultat = "Torra"
Elif (moisture_val > = 300 och moisture_val < 600):
resultat = "Moist"
annat:
resultat = "Våt"
skriva ut "fukt värde: {0}, {1}".format (moisture_val, resultat)
Time.Sleep(1)
Temperatursensor
http://www.seeedstudio.com/wiki/Grove_-_Temperature_Sensor
Anteckningar: Sensorn ger ibland udda värden, men de är konsekventa så kan du bara lägga till avvikelsen för en mer sant läsning.
Där det står:
Celsius = temp.value()
Skriva:
Celsius = temp.value() + [avvikelse]
Observera att detta är en analog temperatursensor.
#raw mraa läsare
# Från utsäde studio sida http://www.seeedstudio.com/wiki/Grove_-_Temperature_Sensor
#
importera mraa
Importera tid
importera matematik
B = 3975
Ain = mraa. AIO(1)
While(1):
en = ain.read()
motstånd = (1023-a) * 10000.0 / a
temp = 1 / (math.log(resistance/10000.0) /B+1/298.15)-273.15
Print "Temperatur nu är" + str(temp)
Time.Sleep(1)
Analoga läsaren med hjälp av UPM biblioteket
Importera tid
importera pyupm_grove som grove
# Skapa objektet temperatur sensor med AIO stift 3
Temp = grove. GroveTemp(3)
skriva ut temp.name()
# Läs temperaturen tio gånger, skriva ut både i Celsius och
# motsvarande Fahrenheit temperatur, väntar på en sekund mellan behandlingarna
för jag i intervall (0, 10):
Celsius = temp.value()
Fahrenheit = celsius * 9.0/5.0 + 32,0;
skriva ut "%d grader Celsius eller %d grader Fahrenheit" \
% (celsius, fahrenheit)
Time.Sleep(1)
# Ta bort objektet temperatur sensor
del temp
UV-sensorn
http://www.seeedstudio.com/wiki/Grove_-_UV_Sensor
UV-sensorn exempel med UPM biblioteket
Importera tid, sys, signal, atexit
importera pyupm_guvas12d som upmUV
# Instansiera en UV sensor på analoga pin A1
myUVSensor = upmUV.GUVAS12D(1);
# analog spänning, vanligtvis 3.3 eller 5.0
GUVAS12D_AREF = 5.0;
SAMPLES_PER_QUERY = 1024;
## Avsluta hanterare ##
# Den här funktionen slutar python från utskrift en stacktrace när du trycker Ctrl-C
def SIGINTHandler (signum, ram):
höja SystemExit
# Den här funktionen kan du köra kod på avfarten, inklusive funktioner från myUVSensor
def exitHandler():
skriva ut "Avslutar"
sys.Exit(0)
# Registrera exit hanterare
atexit.register(exitHandler)
signal.signal (signal. SIGINT, SIGINTHandler)
### För alltid slinga
While(1):
s = ("AREF: {0},"
"Spänning värde (högre betyder mer UV):"
{1}-.format (GUVAS12D_AREF,
myUVSensor.value (GUVAS12D_AREF, SAMPLES_PER_QUERY)))
skriva ut s
Time.Sleep(1)
Vatten Sensor
http://www.seeedstudio.com/wiki/Grove_-_Water_Sensor
Vatten sensorn är en enkel digital ingång. Det fungerar som en switch - när vattnet är presentera det returnerar sant.
Importera tid, sys, signal, atexit
importera pyupm_grovewater som upmGrovewater
# Instansiera en Grove vatten sensor på digital pin D3
myWaterSensor = upmGrovewater.GroveWater(3)
## Avsluta hanterare ##
# Den här funktionen slutar python från utskrift en stacktrace när du trycker Ctrl-C
def SIGINTHandler (signum, ram):
höja SystemExit
# Den här funktionen kan du köra kod på avfarten, inklusive funktioner från myWaterSensor
def exitHandler():
skriva ut "Avslutar"
sys.Exit(0)
# Registrera exit hanterare
atexit.register(exitHandler)
signal.signal (signal. SIGINT, SIGINTHandler)
While(1):
om (myWaterSensor.isWet()):
skriva ut "Sensor är våt"
annat:
skriva ut "Sensor är torr"
Time.Sleep(1)