Enkel trådlös temperatursensor uppdatera webbplatsen med elektriska imp och termistor (10 / 21 steg)
Steg 10: Lägga till den viktigaste koden för firmware
< koden börja >
Ange de konstanta värdena för Steinhart – Hart ekvation som
tillhandahålls av programmet från
http://www.Vishay.com/resistors-non-linear/NTC-Curve-List/
lokala constA = 0.003354016; A1
lokala constB = 0.00025698501802; B1
lokala constC = 0.0000026201306709; C1
lokala constD = 0.000000063830907998; D1
Initiera sensorn med värdena som krävs
lokala tempSensor = ThermistorCelcius (2, 10000, 4700, constA, constB, constC, constD, 0);
Skapa utdataport för att skicka temperaturavläsningar
lokala output = OutputPort ("Temp, volt, plats", "tabellen");
lokala iteration = 0; används för att räkna antalet prover som tagits
lokala tempval = 0; lagra det ackumulerade värdet för genomsnitt
Fånga och logga temperaturen läsa varje 30s
funktion capture()
{
Ställ in timern för nästa avskiljning
i 0.1 sekunder tid, gör funktionen "fånga"
IMP.wakeup (0.1, capture);
Utgående värdet efter insamling av 50 prov och i genomsnitt
Få en temperatur läsning med klassen ovan
lokala temperaturen = tempSensor.readTemp();
Om vi har 50 prov, sedan återställa räknaren och utgång
genomsnittligt värde
om (iteration == 50)
{
iteration = 0;
Skapa en tabell med nyckel: värdepar att skicka
lokala dTable = {
"temp": tempval/50,
"volt": hardware.voltage(),
"läge": "ovanför office switch"
}
output.set(dTable);
Server.show (format ("skickat:" temp':%3.1f,'volt':%3.2f ", tempval/50, hardware.voltage()));
tempval = 0;
}
annat / / annars hålla insamling av prov
{
iteration ++;
tempval = tempval + temperatur;
}
}
Registrera med servern
IMP.configure ("Wireless termistor", [], [utdata]);
Börja fånga temperatur
Capture();
Slutet av koden.
< code slut >