Nätkaffe i realtid

När man närmar sig slutet av sina studier så inser man att man allt oftare börjar sina meningar med ”Förr i tiden…”

Förr i tiden så hade DaTe sitt knasli på tredje våningen i Axelia. I många avseenden var det praktiskt då de inledande matematik-, elektronik- och fysikkurserna hölls i antingen Axelia eller Gado. Då var det bara att trippa upp till knasliet lite nu som då och oftast fann man en kråka eller två, pimplandes på en Kopp DaTe-Kaffe™. Kaffet var kokat med den (på den tiden) glänsande TFiF-kaffekokaren med LCD-skärm, kaffekvarn och termoskanna, årsfestgåva år 2009. Idag finns kaffekokaren fortfarande kvar, dock placerad i Knasli 2.0, ICT-husets tredje våning.

Om man hade morgonlektion i Axelia och tillgång till kanslinyckel så kunde man utnyttja denna termoskanna väldigt effektivt. Strax före lektionen började klockan 8 så kunde man gå via kansliet och sätta igång ett kaffekok, vilket resulterade i en uppfriskande kopp kaffe vid lektionspausen klockan 09:00. Allt detta gratis och utan att behöva fundera på om nån kokat morgonkaffe på Borgen (speciellt måndagsmorgnar brukar det glömmas bort). Dock så skapade detta ständiga kaffekokande problemet att det under dagens lopp fanns varierande mängder kaffe av obestämbar temperatur och därmed tveksam smak. För en ingenjör så är det förstås väldigt opassande att hälla upp en kopp av suspekt kvalitét och själv vara gastronomisk försökskanin. För att inte tala om den otäcka situationen då man tagit sig ända till tredje våningen för att inse att ingen kokat kaffe, då har man bedrivit oplanerad kardiovaskulär motion och för en äkta dateit så strider detta mot alla principer.

Det är farligt med motion.

Våren 2012 skedde det sig som så att denna skribent befann sig på kursen ”Programming Embedded Systems”. För de som är obekanta med denna så handlar kursen om att bekanta sig med olika typer av mikrokontrollers, med slutmålet att skapa ett projekt involverande desamma. Detta blev såklart ett utmärkt tillfälle att råda bot på de tidigare nämnda kaffe-problemen. Project Coffee-plugin föddes.

Så Kaffe

Väldigt kaffekopp

Målet med projektet var att via DaTe:s hemsida kunna ta reda på huruvida det fanns kaffe i kansliet och hur färskt detta var. Planen var följande:

  1. Ta reda på när kaffekokaren varit igång
  2. Då kokaren precis stängts av, anteckna tiden
  3. Rapportera denna tid till hemsidan
  4. Bonus: Ta reda på hur många koppar som kokats

Med denna plan i bakfickan och beväpnade med mikrokontrollern Arduino Duemilanove, lite grundläggande komponenter och en blandning resistanser skred vi vidare till experimentupplägget. Vår första tanke var att om möjligt, så ville vi inte börja skruva på vår dyra kaffekokare. Efter en stunds googlande kom vi då fram till att lösningen på våra problem skulle ligga i en EMF-detektor (ElectroMagneticField). Denna enkla krets krävde minimalt med elektriska komponenter och reagerar så enkelt som att en elektrisk ström induceras över en resistans i närheten av ett magnetfält, vilket enkelt kan avläsas som ett ospecifierat tal av Arduinon. Om man placerar EMF-detektorn tillräckligt nära kaffekokarens strömkälla, så borde man se en tydlig ökning av elektrisk fältstyrka då kokningen påbörjas.

Exempel på en Arduino EMF-krets

Problem från störningar i kansliet var att förvänta, men med justerande av både resistans och känslighetsändringar på mjukvarunivå så fick man en överraskande bra EMF-detektor. Trots detta så gick det inte att avläsa en fältförändring då kokaren slogs på eller av (men dock huruvida stöpseln var ikopplad eller ej!). Efter detta misslyckade försök så insåg vi att vi bara fick bita i gräset och göra en hederlig gammal analog värmemätning. Efter en liten googling och en snabb repetitionskurs i elektronik- och kretsanalys kom vi fram till följande krets:

En krets för temperaturmätning

En NTC-termistor är en resistor som byter resistans efter temperatur. Placerar man den som i den enkla fördelarkretsen ovan, med in-porten till Arduinon så kan man enkelt mäta värmeskillnader. Termistorn köpte vi ett stenkast från ICT-huset på Triopak.  Efter att ha skruvat upp kaffekokaren och snott lite kablage från knasli, så fick vi med ett hafsigt DIY termistorn på plats brevid kaffekokarens värmeslinga.

I can see your privates

Med ståltråd(blå) och svart isoleringstejp fixar sig allt

Trots att kursen gick ut på att lära sig programmering av mikrokontrollers, så blev programmeringen av Arduinon den enklaste biten i hela projektet:

#define READING_PIN 5 //Läs strömmen från pin 5

//Aktivera skrivande till serieporten(USB-porten)
void setup() {
  Serial.begin(9600);
}
void loop() {

  // Läser in värdet från termistorn
  double adc_raw = analogRead(READING_PIN);
  // Skriv värdet till serieporten
  Serial.println(adc_raw);

  delay(1000);  
}

Huvuddelen av systemet kördes via ett C-program på datorn kopplad till Arduinon, men råkar man ha ett nätverkstillägg så skulle det skriptet med lätthet kunna köras direkt på Arduinon. Läsning av serieporten i linux gick dock relativt enkelt och ett exempel på det resulterande programmet går att ses via denna länk. Efter lite analoga tidsmätningar av kaffekokandet så kom vi fram till följande tabell:

Koppar Tid
2 2:38
4 3:51
6 6:01
7 6:53
10 8:45

De uppmätta värdena var nästintill tillfredsställande, men om pannan snabbt kokades upp flera gånger i snabb följd, så stämde inte tiderna längre. Tillsammans med det faktum att vi saknade vissa mätpunkter så bestämde vi oss för att göra som vår ingenjörsmatematiske fader Tore G.  lärt oss och interpolera. Interpolationen skedde m.h.a. ett PHP-skript och justerade mätpunkterna statistiskt varje gång man kokade en ny panna, vilket ledde till mer exakta generella värden. Interpolationsgrafen efter en tids användning kan ses nedan. Jag hade turen att min labbpartner Tobias Zetter var allsmäktig spindelman(webbmaster) för DaTe  vid den tidpunkten och därmed kunde vi med enkelhet  skapa en notifikation på hemsidan som rapporterade denna värdefulla information till den gemene dateiten (lägger ej upp PHP-skriptet här av säkerhetsskäl).

Resultatet kan i efterhand beskådas i denna video. Nu kunde varje dateit (och även övriga internet) direkt veta huruvida det fanns färskt kaffe i kansliet och med en snabb titt på webcammen också bedöma huruvida det kanske fanns kaffe kvar : om det finns två personer i knasli och det kokades en full panna för en minut sedan så inser man att det troligen finns en kopp till övers. Men å andra sidan så är det dateiter vi talar om…

Tyvärr höll inte vår DIY-termistor som planerat utan slutade fungera efter ca två veckors användning. Om det var så att den lossnade från sin kontakt eller att den brann upp på grund av dess nära belägenhet till värmeelementet vet jag ej, men vid det här laget hade sommarlovet precis påbörjats och då tappar man inspiration för skolprojekt. Även om det var för allmänhetens bästa. Min Arduino ville jag inte heller lämna på knasliet så då slogs ytterligare en spik i kistan.

Denna historia är ett försök att få gulisar och övriga dateiter att inse bredden av vad man kan göra med lite enkla kretsar och en mikrokontroller, man kan till och med få studiepoäng för sådant pyssel! Då när jag gjorde detta projekt så hade mikrokontrollern Raspberry Pi nätt och jämnt sett dagens ljus och köerna var ohyggligt långa. I dagens läge så delar IT-Institutionen ut dem som om de vore godis, men få funderar på vad man egentligen kan göra med dem. Programmeringen av RPi:ns GPIO är inte mycket mer komplicerad än Arduino-skriptet ovan (länk till tutorial) och då krävs inte heller kommunikationen med serieporten, RPi:n har själv direktkontakt med internet och kan då genast kommunicera med hemsidor. Om man är intresserad av fler elektronikhistorier så rekommenderar jag artikeln om Albin. Så med detta uppmanar jag er alla att försöka identifiera småproblem i er omgivning och med era inre ingenjörsförmågor försöka hitta lösningar till dessa!

//F.D chefredaktör för Forward, Björn E

Det här inlägget postades i Elektronik(dödar)Klubben, Okategoriserade. Bokmärk permalänken.

En kommentar till Nätkaffe i realtid

  1. Jon von Weymarn skriver:

    Snyggt jobbat! Här är några andra exempel på vad man kan göra med Arduino och några enkla komponenter…
    http://www.instructables.com/id/myHome-temperatureoilelectricity-monitoring-wi/

Kommentera