IMP chef-kok: Internet-Connected BBQ-Thermometer (6 / 7 stap)

Stap 6: Een nauwere kijken hoe het werkt: apparaatcode


In het geval je nieuwsgierig bent: Neem een dichtere blik op wat maakt de BBQ-thermometer werken!

Laten we beginnen met de apparaatcode. Het is kort en simpel. Het heeft twee banen: temperatuur lezingen te verzamelen en te reageren op knooppersen.

Neem een kijkje op de functie-definitie voor getTemp().

 function getTemp() { imp.wakeup(INTERVAL, getTemp); vtherm_en_l.write(0); imp.sleep(0.01); local rawval = vtherm.read(); local 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()}); } 

Deze functie verzamelt temperatuur lezingen met een regelmatig interval. Het interval wordt gedefinieerd door een constante, INTERVAL, boven aan het bestand. Het eerste ding getTemp doet is plannen zelf uit te voeren in seconden INTERVAL weer door de aanroepende imp.wakeup (INTERVAL, getTemp). Deze plant een Terugbellen; het GMB kan om andere dingen te doen, terwijl in seconden INTERVAL, het werkende systeem zal terugbellen en vragen ons opnieuw uit te voeren getTemp.

Na het plannen zelf opnieuw uit te voeren, getTemp leest de spanning in het midden van de thermistor scheidingslijn, dan maakt gebruik van een eenvoudige 2e-order curve aanpassen aan de schatten van de temperatuur. De coëfficiënten voor de curve passen als constanten boven aan het bestand zijn opgeslagen (als je kijkt, zult u merken we eigenlijk alleen maar gebruik maken van een lineaire curve past! Maar de 2e orde pasvorm is er als u wilt uitproberen).

Vervolgens hebben we een functie die het GMB wat vertelt te doen wanneer het tijd is om te gaan slapen:

 function goToSleep() {wake.configure(DIGITAL_IN_WAKEUP); // go to sleepfor max sleep time (1 day minus 5 seconds) server.sleepfor(MAXSLEEP); } 

Deze functie doet twee dingen: ten eerste het Pin1 als een wakeup pin, zodanig geconfigureerd dat als de knop wordt ingedrukt zal het het GMB van diepe slaap wakker. Ten tweede, het vertelt het GMB naar diepe slaap voor zo lang als het is toegestaan (MAXSLEEP is gedefinieerd als 86396 seconden boven aan het bestand; dit is 1 dag minus 4 seconden. De aanroep server.sleepfor() waarschuwt de server dat het apparaat zal gaan om te slapen, zodat de agent niet hoeft te wachten voor het GMB naar ontbrekende voordat het beseft wat er is gebeurd.

Hieronder dat is er een handlerfunctie voor knop pers evenementen :

 function btnPressed() { // wait to see if this is a long press, and go to sleep if it is local start = hardware.millis(); while ((hardware.millis() - start) < LONGPRESS_TIME*1000) { if (!hardware.pin1.read()) {return;} } goToSleep(); } 

Dit is een interessante functie. Het blijkt dat, roept wanneer u druk op de knop helemaal niet, het GMB deze functie meteen. Het GMB wacht niet enkele seconden om te gaan slapen, als je zou kunnen hebben dacht van de werking van de thermometer. In plaats daarvan het GMB roept deze functie onmiddellijk, en wacht om te zien als de gebruiker de knop ingedrukt gedurende drie seconden houdt. Als u dit doet, gaat het om te slapen. Als u dat niet doet, het laat de functie en gaat terug naar het doen wat zij deed vóór.

Vervolgens zien we enkele callbacks voor agent- gebeurtenissenworden geregistreerd:

 agent.on("sleep", function(val) { imp.onidle(function() { goToSleep(); }); });<br> agent.on("needDeviceId", function(val) { agent.send("deviceId",hardware.getdeviceid()); }); 

Het eerste onderdeel handler hier kunt de agent om te vertellen van het apparaat om te gaan slapen. Terwijl het apparaat is uitgevoerd, de agent houdt een oogje op hoeveel temperatuur veranderen is te zien en past de hoeveelheid tijd die het zal het apparaat laten wakker te blijven voordat bellen van dit evenement en vertellen het apparaat om te gaan slapen om op te slaan batterij.

De tweede handler wordt alleen gebruikt in speciale gelegenheden. De agent niet automatisch weten van het apparaat, apparaat-ID, maar het het nodig heeft om de kanaalnamen gegevens te sturen naar Xively. Normaal gesproken, opstarten de agent en het apparaat samen wanneer de agent voor de eerste keer laarzen, waarna de agent blijft op. Echter, soms de agent opnieuw zal worden opgestart door zelf, bijvoorbeeld als u nieuwe code naar pushen. In dit geval de agent moet een manier om te vragen het apparaat wat haar Apparatenidentiteitskaart is - deze functie geeft het een manier om dat te doen.

Daarna, we zijn klaar met definities, en bereiken we het punt waar werkelijke runtime-bewerking wordt gestart wanneer het apparaat opstart. Het eerste wat dat het GMB doet wanneer op zelfstart is erachter te komen waarom het opgestart. Als het was vanwege een Pin1 wakeup, doet het GMB het zelfde ding dat het doet als je houd de knop te sturen om te slapen - het blijft hier en wacht om te zien als u de knop ingedrukt. Als je laten gaan voordat de 3 seconden wachttijd, gaat het GMB direct terug naar slapen voordat het zelfs verbinding met het internet.

 // check wakereason and make this a shallow wake if necessary if ((hardware.wakereason() == WAKEREASON_PIN1) || (hardware.wakereason() == WAKEREASON_TIMER)) { local start = hardware.millis(); while ((hardware.millis() - start) < LONGPRESS_TIME*1000) { if (!hardware.pin1.read()) {goToSleep();} } // if we made it here, somebody's just long-pressed the power button to wake the imp // go ahead and boot right up. } // not a shallow wake; fire up the radio and let's cook a turkey imp.setpowersave(true); // save juice, as this application is not latency-critical 

Tot slot, we instantiëren de objecten we moeten ons werk doen en inchecken met de agent, dan beginnen met het lezen van de temperatuur aan de slag.

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

Neem een blik bij de agent-code in de volgende stap, als je geïnteresseerd bent.

Gerelateerde Artikelen

De Muffin Man of chef-kok Paper Craft (EASY)

De Muffin Man of chef-kok Paper Craft (EASY)

dit instructable krijgt u de stap voor stap om uw eigen muffin man (of de chef-kok) te maken uit papier gebruikt goedkoop en makkelijk te gebruiken materialen.  Uw chef-kok zou de muffin man, paars cirkel man, wolf bende puck en vele andere personage
Het vak mes voor culinaire studenten, chef-koks en Avid kookt!

Het vak mes voor culinaire studenten, chef-koks en Avid kookt!

In dit instructable ga ik u tonen hoe te maken van een efficiënte opslagoplossing voor uw messen en andere culinaire hulpmiddelen.  Ik ben een professionele chef-kok voor een levende, en brengen van uw eigen gereedschap om te werken is de naam van he
Chef-kok binnen INTEL(CII) - de toekomst van geautomatiseerde thuis koken (INTEL IoT)

Chef-kok binnen INTEL(CII) - de toekomst van geautomatiseerde thuis koken (INTEL IoT)

Samenvatting:Geautomatiseerde IoT ingeschakeld digitale systeem, gecontroleerd en bewaakt vanuit een verre App over Internet.This digitale chef-kok kunt koken kwaliteit gerechten, uit een lijst met recepten gekozen en gecontroleerd door een hongerige
De geheimen van de chef-kok-en-klare hemelse friet--met stapsgewijze Videosamenvatting

De geheimen van de chef-kok-en-klare hemelse friet--met stapsgewijze Videosamenvatting

Zo vaak vragen wij ons af op watzou het geheim van de chef-kok-en-klare hemelse friet. Dit Instructable op deze chef-kok-en-klare hemelse friet koken zal worden onthuld hier--Maar eerst,Wat zijn chef-kok-en-klare hemelse friet zou kijken en voelen in
Making vis taco's met chef-kok Henry Bullock

Making vis taco's met chef-kok Henry Bullock

Vis Tacos deel 1... je koken met HENRY! - Meer gratis video's zijn hierKoken met de chef-kok Henry - maken van vis taco's - deel 2 - de grappigste film is hier. Vind het ik zal u tonen hoe maak je heerlijke vis taco's, snel en gemakkelijk.
Eenvoudige chef-kok hout Messenblok

Eenvoudige chef-kok hout Messenblok

Hallo iedereen!Hoe bent u alle doen? U kunt dat eigenlijk in de commentarensectie beantwoorden. Ik zou graag weten hoe je het doet :)Ik heb een paar maanden geleden een chef-kok mes als een cadeautje van mijn grootouders en tot nu toe hield ik het in
De piraat chef-kok: koken schort en Hat

De piraat chef-kok: koken schort en Hat

Avast gij scurvey Instructables.com Gemeenschap honden!  Als gij zoals ter tot grub aan boord van de barbecue-grill koken, worden deze hier Instructable voor gij.  Me, Cap'n Toglefritz, ziet gij hoe ter tuig van een schort en een hoed fer Cookin '. 
Hoe maak je een Fancy chef-kok hoed

Hoe maak je een Fancy chef-kok hoed

Ik heb gezegd "fancy".: D~ De, eh, fancy Hibachi restaurant de straat moedigt blijkbaar hun Hibachi chef-koks laten hun innerlijke fanciness doorkomen, niet alleen hun showmanship technieken, maar ook hun hoeden. Ik heb verschillende opdrachten
Aangepaste chef-kok mes met 3D-printer maken

Aangepaste chef-kok mes met 3D-printer maken

Een jaar geleden mijn vriendin en ik begon een drinks genaamd Yue'sFoodStory, wordt onze focus gespreid Californië eetcultuur (duurzaam, gezond, lokale afkomstig) tot Chinese gemeenschappen. een jaar later, zijn we uitgegroeid tot 50 k volgelingen he
Hoe te knippen een UI als een chef-kok!

Hoe te knippen een UI als een chef-kok!

Leren hoe te snijden van een UI als een echte chef-kok zonder snijden een van uw vingers!Stap 1: Stap 11. is afgesneden van beide uiteinden van de UI. De wortel intact laten, alleen het verwijderen van het deel van de harige wortel.Stap 2: Stap 2 2.
Maken van een voorraad verwijdering chef-koks mes

Maken van een voorraad verwijdering chef-koks mes

Eerste uit de vragen voor het aanbrengen van leer wedstrijd.Wat u? Ik maakte een keukenmes westerse of "Franse" stijl, het is een hele ontwerp dat alles uit chop groenten segment rundvlees (of in mijn huis, hertenvlees) doet. Het lemmet is gemaa
3 jaar oude jongen chef-kok maakt Veg hamburgers - eerste keer

3 jaar oude jongen chef-kok maakt Veg hamburgers - eerste keer

Kijken naar mij Maak nieuwe recepten alledaagse, dat mijn 3-jarige chef-kok besloten om zijn handen op voedsel en zijn eerste recept voor zijn vader maken - groenten hamburgers (uiteraard met mijn hulp) maar ik werkelijk hield van dit moment...
How To Make van een chef-kok Hat Toque patroon voor grote of kleine huisdieren

How To Make van een chef-kok Hat Toque patroon voor grote of kleine huisdieren

Vorig jaar mijn zoon noemde dat hij zou graag een chef-kok hoed of toque. Ik heb niet een patroon en toen de huisdier wedstrijd gepost, ik dacht het dat was een goede gelegenheid om te experimenteren met een zelf gemaakt patroon voor huisdieren. Ik d
Chef-kok Joel's keuken - elementaire voedselveiligheid thuis

Chef-kok Joel's keuken - elementaire voedselveiligheid thuis

Chef-kok Joel Schaefer, voormalig Disney chef-kok en manager van de speciale dieet, deelt zijn vele jaren van culinaire kennis waarmee u thuis veilig en gezond voedsel te bereiden.