TempBug: internet-ansluten termometer (7 / 7 steg)

Steg 7: Gräva i koden



IMP firmwares är skrivna i ett objektorienterat språk kallas ekorren, som ser ut och känns mycket som javascript. Ekorre körs i en virtuell maskin ovanpå den imp OS inom den integrerade havspolitiken, så runtime fel kommer inte att slå enheten offline, och du har tillgång till en massa trevliga OS-baserade funktioner, som buffrade seriell indata och lätt en rad APIs ange GPIOs eller kommunicera med kringutrustning.

Ta en titt på alla de saker du kan göra i din imp firmware, kolla den elektriska imp API-referens och elektriska imp arbetade exempel sida. Att se vilket stift kan göra vad, kolla in den imp pin mux.

Vår kod här är ganska enkel. Här är vår grundläggande operativa proceduren:

  • Ange några konstanter
  • Definiera en klass för våra temperaturgivare
  • Initiera vår klass för att skapa en temperatur sensor objekt
  • Läs temperaturgivare
  • Skicka datapoint till agent
  • Schemalägga oss att vakna upp i lite och gör det igen

Konstanterna på linje 8 och 9 ser lite illavarslande, men de är enkla. Detta är parametrar för din termistor - du hittar dem i databladet för termistor som du använder. Om du använder en termistor jag länkade till tidigare, du kan även hålla parametrarna som redan ställts här.

Linjerna 20 till 71 är en klassdefinition - detta är i grunden en uppsättning instruktioner för hur man gör olika viktiga saker med en termistor, som läsa temperaturen. Detta kommer direkt från github - det är en trevlig, modulära bit kod så att den enkelt kan återanvändas.

Efter det behöver vi bara definiera våra hög nivå logik. På linjerna 79-83 konfigurerar vi två stiften vi använder. Kom ihåg från när vi byggt enheten - en av stiften är enaktiverar PIN-kod, vilket gör att nuvarande flöda genom termistor när det är låg. Det andra stiftet är våra analoga ingångsstift, som vi använder för att läsa spänningen över en termistor.

Konfigurera Pins
stift 8 drivs hög till vända bort temp monitor (sparar ström) eller låg att läsa
therm_en_l <-hardware.pin8;
therm_en_l.configure(DIGITAL_OUT);
therm_en_l.write(1);
stift 9 är mitten av spänningsavdelare bildas av NTC - läsa analog spänning för att bestämma temperaturen
temp_sns <-hardware.pin9;

På linje 86 uppmanar vi våra klassdefinitionen från tidigare för att skapa en termistor objekt. Detta objekt krävs i konstanterna vi som tidigare, och har metoder som tillåter oss att läsa temperaturen i Celsius eller Fahrenheit.

instansiera våra termistor
myThermistor <-termistor (temp_sns, b_therm, t0_therm, 10, falsk);

88 och 96 är där magiskt händer - vi aktiverar sensorn, ta en behandling, skicka det till agenten och inaktivera sensorn igen för att spara batteri.

therm_en_l.write(0);
IMP.Sleep(0.001);
lokalt id = hardware.getdeviceid();
lokala datapoint = {
"id": id,
"temp": format("%.2f",myThermistor.read_f()),
}
agent.send("data",Datapoint);
therm_en_l.write(1);

Och slutligen, schemalägga ett wakeup i femton minuter. Vi ska gå till djup sömn under tiden, spara batteriet:

Sömn i 15 minuter och 1 sekund, minus tiden förbi 0:15
så vaknar vi upp nära varje 15 minuter märke (förhindrar drifting på långsam DHCP)
IMP.ONIDLE (function() {
Server.sleepfor (1 + 15 - (time() % (WAKEINTERVAL_MIN * 15)));
Server.sleepfor (1 + WAKEINTERVAL_MIN * 60 - (time() % (WAKEINTERVAL_MIN * 60)));
});

Det är den enhet firmware - låt oss ta en titt på agent. Har du redan sett del av agent - vi satt Sparkfun offentliga och privata nyckeln linjerna 6 och 7 i agenten tidigare. Under dessa har vi en annan klassdefinition; här definierar metoder för att interagera med en Sparkfun dataström.

62-65 är en riktigt intressant bit kod - detta är kroken som agenten använder för att ta emot nya temperaturdata från enheten. Detta görs genom att registrera en agent "callback" med agent.on. Detta säger, "när enheten skickar du ett evenemang som kallas"temp", ring följande funktion med uppgifterna markerade med taggen". Tittar tillbaka på linje 95 av enhetens firmware, ser vi att vi skickat data märkt "temp" med en funktion kallad "agent.send". Detta är där informationen gick!

Device.on ("data", function(datapoint) {
lokala resp = stream.push ({"temp": datapoint.temp});
Server.log (format ("PUSH: %i - %s", resp.statuscode, resp.body));
});

Slutligen ser vi agenten göra två saker när det börjar först kör. Först: skickar en loggmeddelandet låter oss veta att det börjat och är redo att få data. Andra, det instansierar ett Sparkfun dataströmmen objekt med klassen vi definierat tidigare, att låta oss använda metoderna i dessa klasser för att skicka data till Sparkfun som det kommer.

Agenten inte vila eller sova; Det startar första gången enheten startar med denna modell, och fortsätter att köra för evigt, hantering av varje ny datapoint när det kommer i genom att ringa "device.on" callback. Det är enhetens hjärnan i molnet!

Det är firmware! Njut av din nya Internet-ansluten termometer.

Se Steg
Relaterade Ämnen

Bländande Fundraising tecken: 140 watt av Internet ansluten lysdioder

Bygga internet anslutna tecknet för att samla in pengar till en lokal välgörenhetsorganisation!Läs mer om high power LED, Arduino, Raspberry Pi & python, digital radio, ledningar & lödning och ett litet snickeri.Förhoppningsvis i 10 timmar eller s...

ImPrinter: elektriska Imp trådlös, internet-ansluten termoskrivaren

termisk skrivare har fått (igen) mycket populär under de senaste månaderna; massor av människor verkar vara ganska intresserad av att ha relevant information dyka upp på en liten rulle av termopapper i stället för i telefonen varningar eller liknande...

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...

Internet ansluten kaffebryggare

Hej alla, i detta instructable, jag kommer att visa dig hur man gör en internet ansluten kaffebryggare. Du kan använda den till sätta den när du är nästan hemma så kan du ha kaffe när du kommer hem från jobbet. Jag dricker inte kaffe (jag är 14), men...

Internet ansluten anläggning Monitor

Hej alla, i detta instructable, jag kommer att visa dig hur man gör en internet ansluten anläggning monitor. Detta är starkt baserad på planterbot, en av mina äldre instructables. Fotografering och instruktioner var av lägre kvalitet, så jag beslöt a...

Internet-ansluten joystick

förra veckan, jag postat en demo på att bygga impBot, en enkel pan/tilt servo "robot" kontrolleras via internet med den elektriska imp. Vid tiden, allt jag hade för kontrollerande nämnda robot var en potentiometer i en låda, som gjorde den total...

Rudolph är näsa - Internet ansluten!

Genom "magi" trådlös kraftöverföring, Rudolphs näsa lyser ljust när han är nära sin älskade, Clarice. Använda cloudBit och en IFTTT recept, lyser Rudolph är näsan också ljust när det finns snö i mitt område eller när Norad Santa tracker, tweets....

SnackBot: Internet ansluten godis maskinen!

Under 2013 Bay området Maker Faire, elektriska Imp distribuerade en häpnadsväckande 40-plus pounds av M & Ms med vår Internet ansluten SnackBot. Hundratals deltagare älskade det, så vi beslutade att dela hur vi byggde den.Våra SnackBot är uppbyggd kr...

Steampunk ESP8266 Internet ansluten klockan med hjälp av Arduino IDE

Vad du får när en NeoPixel ring, en billig Arduino Wifi ombord och en laserskärare går in i en ånga Punk Saloon?En fashionabla Steampunk designade Internet ansluten klocka med ESP8266 chip och Arduino IDE förstås!Här är ett projekt för kvällen eller...

ESP8266 - $5 internet ansluten växla

I den här guiden visar vi hur man bygger WiFi internet anslutna switch ansluten till EasyIoT moln. Vi kommer att använda ESP8266, solid state-relä och Arduino IDE. Switch kan styras av webben, infödda Android ansökan eller knappen.Förbättrad version...

Internet ansluten LED-tecken

Internet är LED en fysisk LED-tecken som lever i mitt hemmakontor.Du har möjlighet att skicka meddelanden till den från den levande RSS-flöde på min hemsida.Jag har haft tusentals meddelanden från hela världen skickas till mitt hem kontor via tecken....

ESP8266 $5 internet ansluten switch - förbättrad

I den här guiden visar vi hur man bygger WiFi internet kontrollerad switch ansluten till EasyIoT moln. Denna handledning är förbättrad version av ESP8266 internet anslutna växeln. Vi kommer att använda ESP8266, solid state-relä och Arduino IDE. AP oc...

Internet-ansluten hem energi monitor

Detta är en magisk låda som kommer att låta dig övervaka energiförbrukningen i ditt hus från var som helst på Internet! Den mäter både verklig effekt (watt) och Skenbar effekt (VA), det håller en löpande totalt El enheter används, och åtgärder nätfre...

Gör en Internet ansluten älsklings-förlagematare

Först av allt, behöver du speciell hårdvara för att göra detta, som du kan köpa i länken jag ska ge. Tänk på att detta är en Arduino-liknande plattform, så du kommer att kunna göra en nästan oändlig mängd projekt.Köpa Altair @ Tindie butikI denna tut...

Internet-ansluten strömbrytare

I den här guiden visar vi hur du skapar internet anslutna växeln med Raspberry Pi och relä modul. Du kan använda internet switch fjärrstyra upp till 17 enheter (ljus, värmare, sprinkler..) över internet. Du behöver inte kunskaper i programmering.Se f...

Dataöverföring av icke-internet ansluten solvärmesystem med Arduino, PHP och MySQL

BeskrivningSyftet med denna arduino projekt är att förvärva och överföra data via GSM-nätet. Fördelen är att kunna samla in data (till exempel övervakning av en sol anläggning) även om det finns ingen svårt kabelansluten Internetanslutning.Detta är h...

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 en Internet ansluten piller Dispenser

P.I.L. Box - en bättre medicinering påminnelse systemetStudier visar konsekvenserna av patienter som inte tar mediciner enligt läkarens order kan bli allvarliga, speciellt hos äldre patienter. Med dagens billiga mikro-styrenheter och sensorer (och in...

Internet ansluten skala

Tänk om du aldrig hade oroa löpande ute om din favorit saker, eftersom ett nytt paket av dem skulle komma strax innan du gjorde!Det är tanken för NeverOut - internet anslutna skala. Lagra något på den och aldrig tar slut, eftersom molnet vet hur myck...