IMP kock: Internet-Connected BBQ termometer (6 / 7 steg)

Steg 6: En närmare titt på hur det fungerar: styrkod



Om du är nyfiken: Låt oss ta en närmare titt på vad som gör BBQ termometern fungerar!

Låt oss börja med styrkod. Det är kort och enkelt. Den har två jobb: samla temperaturavläsningar och reagera på knapptryckningar.

Ta en titt på funktionsdefinitionen för getTemp().

funktion getTemp() {imp.wakeup (intervall, getTemp);
vtherm_en_l.write(0);
IMP.Sleep(0.01);
lokala rawval = vtherm.read();
lokala temp = (TEMP_COEFF_2*(math.pow(rawval,2))) +(TEMP_COEFF_1*rawval) + TEMP_OFFSET;
Temp = (temp * 1,8) + 32,0;
vtherm_en_l.write(1);
agent.send("Temp",{"Temp":Temp,"vbat":Hardware.Voltage()});
}

Denna funktion samlar temperaturavläsningar med regelbundna mellanrum. Intervallet definieras av en konstant, intervall, högst upp i filen. Den första sak getTemp gör är schema sig att köra igen i intervall sekunder, genom att ringa imp.wakeup (intervall, getTemp). Detta schemalägger en motringning; försöksläkemedlet kan fortsätta att göra andra saker, och i intervall sekunder, operativsystemet kommer att ringa tillbaka och ber oss att köra getTemp igen.

Efter schemaläggning själv köra igen, getTemp läser spänningen i mitten av termistor avdelare och sedan använder en enkel 2: a ordningens kurvanpassning att uppskatta temperaturen. Koefficienterna för den kurvanpassade lagras som konstanter överst i filen (om du ser, du kommer att märka vi faktiskt bara använder en linjär kurvanpassning! Men 2: a ordningens passformen är det om du vill prova).

Nästa, vi har en funktion som talar om försöksläkemedlet vad att göra när det är dags för att sova:

funktion goToSleep() {wake.configure(DIGITAL_IN_WAKEUP);
gå till sleepfor max insomningstid (1 dag minus 5 sekunder)
Server.sleepfor(MAXSLEEP);
}

Denna funktion gör två saker: för det första den konfigurerar Pin1 som en wakeup stift, så att om knappen trycks det vaknar imp från djup sömn. För det andra säger det imp att gå till djup sömn för så länge det är tillåtet (MAXSLEEP definieras som 86396 sekunder överst i filen, detta är 1 dag minus 4 sekunder. Anropet till server.sleepfor() varnar servern att enheten kommer att gå att sova, så att agenten inte behöver vänta på imp till försvinner innan det inser vad som har hänt.

Under dessa finns det en hanterarfunktion för knappen press evenemang :

funktion btnPressed() {
vänta och se om detta är en lång tryckning, och somnar om det är
lokala start = hardware.millis();
medan ((hardware.millis()-start) < LONGPRESS_TIME * 1000) {
om (! hardware.pin1.read()) {återvänder;}
}
goToSleep();
}

Detta är en intressant funktion. Som det visar sig, anropar när du trycker på knappen alls, den integrerade havspolitiken funktionen direkt. Försöksläkemedlet vänta inte flera sekunder för att sova, som du kanske trodde från hur termometern fungerar. I stället imp anropar funktionen omedelbart, och väntar att se om användaren håller knappen i tre sekunder. Om du gör det, går det för att sova. Om du inte lämnar funktionen och går tillbaka till gör vad det gjorde innan.

Därefter ser vi några callbacks registrering för agent händelser:

agent.on ("sova", function(val) {
IMP.ONIDLE(function() {
goToSleep();
});
{}); < br >
agent.on ("needDeviceId", function(val) {
agent.send("deviceId",Hardware.getdeviceid());
});

Den första handtag här kan agenten att tala om enheten för att sova. Medan enheten är igång, hålla den agent håller ett öga på hur mycket temperaturen ändra det är att se och justerar hur lång tid det kommer att låta enheten sig vaken innan du ringer denna händelse och talar om enheten för att somna för att spara batteri.

Den andra handtag används endast vid speciella tillfällen. Agenten vet inte automatiskt enhetens enhets-ID, men det behöver det för att ställa in kanal namnen att skicka data till Xively. Normalt, starta agent och enheten upp tillsammans när agenten startar upp för första gången, efter vilken agenten är tänd. Dock ibland agenten kommer att starta av sig själv, till exempel om du trycker ny kod till den. I detta fall agenten måste ett sätt frågar enheten vad dess enhets-ID är - denna funktion ger det ett sätt att göra detta.

Efter det, vi är klara med definitioner, och vi når den punkt där själva körningen driften startar när enheten startas. Det första den integrerade havspolitiken gör när det startar är att lista ut varför det startas upp. Om det var på grund av en Pin1 wakeup, gör den integrerade havspolitiken samma sak om du håller knappen Skicka den i viloläge - det stannar här och väntar på att se om du håller knappen. Om du släpper innan den 3 andra vänta tid, kommer den integrerade havspolitiken gå direkt tillbaka till sova innan det ens ansluter till internet.

Kontrollera wakereason och göra detta till en ytlig vakna vid behov
om ((hardware.wakereason() == WAKEREASON_PIN1) || (Hardware.wakereason() == WAKEREASON_TIMER)) {
lokala start = hardware.millis();
medan ((hardware.millis()-start) < LONGPRESS_TIME * 1000) {
om (! hardware.pin1.read()) {goToSleep();}
}
om vi gjorde det här, har någon bara långa pressade strömbrytaren för att vakna om försöksläkemedlet
gå vidare och starta rätt upp.
}
inte en ytlig vakna; brand upp radion och låt oss lagar en kalkon
IMP.setpowersave(true); Spara saften, eftersom detta program inte är latens-kritiska

Slutligen instansierar vi objekten vi måste göra vårt jobb och kolla in med agenten, sedan börja läsa temperaturen att komma igång.

agent.send("justwokeup",Hardware.getdeviceid());
getTemp()

Låt oss ta en titt på agent koden i nästa steg, om du är intresserad.

Se Steg
Relaterade Ämnen

Öka antalet trådlösa BBQ termometer (rev 2)

detta Instructable kommer att beskriva en mycket enkel process för att öka utbudet av en trådlös termometer för BBQ.Medan processen bör vara densamma för nästan alla RF termometrar, är den specifika modellen jag hacking en "ensamvarg RediChek Remote...

IMUPPHÖJT - (elektriska Imp drivs) Internet ansluten växelströmsuttag

Detta Instructable visar hur man koppla en PowerSwitch svans II och en Elektrisk Imp och bygga en enkel webbsida för att kontrollera det!PowerSwitch kan du växla växelström med en opto-isolerade styrkretsen. Detta innebär att trådarna du ansluter til...

Skapa din egen smart ljus med hjälp av elektriska Imp

Skapa din egen smart ljus med hjälp av elektriska Imp. Lär dig att kontrollera och övervaka dina lampor från mobil, Tablet PC och skrivbordet i 15 minuter. $44 i hårdvara. Posten nivå.Steg 1: hårdvaraFör att slutföra denna tutorial behöver du följand...

Styrenhet: En internet-ansluten ratten för att styra... något!

Efter att sätta ihop ett halvdussin eller så elektriska Imp projekt, det slog mig att bara för den integrerade havspolitiken är kraftfull nog att hantera komplicerade uppgifter inte betyder att att göra en enkel sak Internetanslutning är mindre kraft...

Elektriska Imp Garage dörröppnare

Jag har tappat räkningen på hur många gånger har vi iväg på en resa bara för att vända tillbaka för att se om vi mindes att stänga garageporten. Detta "vänners kompatibla visar dig hur du ansluter den elektriska Imp till ditt garage dörröppnare, hur...

Att göra en vertikal rökare och Grill

I en tidigare Instructable gjort jag en rökare från en gammal expansionskärlet. Det kom ut awesome, så jag tänkte jag skulle prova att göra en större rökare men kan fungera som en grill, inspirerad av japansk Kamado spisar ("ägg" ser bbqs). Om d...

En billig IoT möjliggörare med ESP8266

En viktig del av eller snarare själva konceptet, Sakernas Internet, handlar om hur man ansluta olika enheter till nätverket så att de kan både skicka data och ta emot kommandon. Olika tekniker att ta itu med den sista mil connectivity, som bluetooth,...

IoT Critter Trap

I detta Instructable ska jag visa dig hur man bygger en "Sakernas Internet" (IoT) levande djur trap.Levande djur fällor är trevligt om du har skadedjur att befria ditt hem av men du inte vill göra det genom ett medel för att döda djuret.Probleme...

Personliga intranätet (del 2).

i del två kommer vi att få in i virtuella privata nätverk, dnsmasq och andra media-servrar.VPN.Mediatomb.IRC.Se också:Du kanske också gillar:Uppdatering: lagt till trådlösa alternativ.Steg 1: Byta ut router 1 för en dator och installera dnsmasq. Efte...

Kontroll An Arduino med telefonen

Hej alla! I detta instructible jag kommer att visa dig hur man styr och läsa sensorer med arduino och blynk. Blynk är en app som ger full kontroll över arduino, rasberry pi och spark kärna. Med din smartphone! Och det är lika enkelt som att lägga upp...

PS3 på uppringd

i thisinstructable kommer jag visa dig hur du kör en ps3 på uppringd internet.För att göra detta behöver du:1: en dator med en Lan och uppringda Adapter2: Windows XP eller senare3: en Ethernet-Router4: 2 Ethernetkabeln (endast en behövs om routern st...

Blynk + JavaScript på 20 minuter [Raspberry Pi, Edison, Espruino...]

Någonsin velat styra "nåt" från din smartphone?Nu är det verkligen lätt. Blynk är en universalfjärrkontroll som kan också Visa och plotta data (och fungerar över internet). Det gör prototyper Sakernas Internet applikationer så lätt, att många mä...

Anslutna Mousetrap drivs av Afero

Vad är Afero och vad gör de? Afero bygger inbyggda maskinvara, programvara och molntjänster för Sakernas Internet connectivity. Deras nyckelfärdiga, säker kommunikation stack är för framsynt företagare och företag som vill få bättre produkter och tjä...

Google spela store och YouTube ingen anslutning fix 2015 androd

detta är den garanterade att arbeta lösning för frågan där både Google spela store och YouTube visar ingen anslutningsfel även om du har en fin internet.connection. Credits.to:ZimmerSid Jr.Steg 1: Hämta ROOT explorer apk - säker länk1: först gå till...

Hur man gör Dahlia kronblad örhängen

Hej alla,Ett tag tillbaka visade vi dig hur man gör en dahlia brosch. Nu vill vi visa dig hur du kan göra matchande örhängen. Material du behöver är: Nespresso kapslar, vi använde lila en (Arpeggio), en cirkel punch (vi använde varumärket Heyda,) örh...

IoT vägguttag med Arduino och ESP8266

I detta instructable, jag visa dig hur du lägger till förbättrad tillgänglighet, intelligens och anslutning till ett vanligt vägguttag. Detta görs med en kombination av mikrokontroller, Arduino, olika sensorer, ESP8266 och en blandning av programvaru...

Hoe Maak Je Een startbar USB-minne

Iedereen ögla er wel eens tegen aan dat je dator är gecrasht en dat je Windows opnieuw moet installeren. het probleem wat je tegenwoordig veel ziet är dat je dator geen CD-enheten meer heeft. Gelukkig heeft ieder huishouden i Nederland wel een USB-mi...

Smart IOT vagn för intern logistik (Intel IoT)

Projektet heter "Smart IOT vagn för intern logistik". Nu för tiden shopping om inte i sin helhet, men i ökande majoritet görs online. Det är de flesta kloster form av shopping, som det kan göras inom komfort i våra hem. Men inte allt kan köpas o...

NeoWeather: Ambient Weather indikator

Vi kan inte alla ha skrivbordet bredvid fönstret. I mitt fall har min medarbetare vid skrivbordet mittemot mig plats vid fönstret. När det blir dags att vandringen ner på gatan för att få lite lunch, är jag aldrig helt säker på vad jag ska hitta i de...