Internet of Things – hemma hos dig

Skola: Bygg dina egna internetprylar

Nyfiken på sakernas Internet? Här visar vi hur du relativt enkelt kan bygga din egen internetuppkopplade pryl.

Publicerad Senast uppdaterad

Läs gärna vårt reportage där vi förklarar vad sakernas internet, IoT och M2M egentligen är för något

IOT är ett riktigt modeord i mobilbranschen och alla stora tillverkare jobbar med det. Ett sätt att själv förstå konceptet är att bygga en prototyp hemma. Det är inte särskilt svårt.

Att utveckla en mikrokontroller eller modemkrets är en kostsam process som bara en handfull företag i världen klarar. Det krävs sedan serier på flera miljoner enheter för att räkna hem investeringarna. Om du har en bra idé för nästa stora IOT-produkt behöver det däremot varken vara dyrt eller speciellt svårt att bygga en prototyp och testa om konceptet håller. Det bästa sättet är att utgå från färdiga moduler med mikrokontroller, sensorer och andra byggstenar.

Det finns flera olika moduler som alla utgör en bra start för ditt IOT-projekt. De mest kända märkena är Arduino och Raspberry Pi följt av alternativ som Spark.io, Intel Edison, pinocc.io och Beaglebone. Vi har använt Spark.io i denna skola eftersom den är enklast att komma igång med och samarbetar på ett bra sätt med mobilen. Spark har också en kostnadsfri molntjänst som gör det väldigt smidigt att testa olika funktioner, ladda upp program och få kontakt med modulen över nätet. En Spark-modul kostar omkring 200 kronor. 

1. Kom igång

Spark.io


1. Spark-modulen levereras på en liten experimentplatta – en så kallad breadboard – där man kan testa olika kopplingar utan att använda lödkolv eller andra verktyg. Modulen har en mikro-USB-­anslutning för strömförsörjning. Första steget är att koppla den till mobilladdaren eller en USB-port på datorn så att enheten vaknar till liv. När strömmen är ansluten börjar lysdioden mitt på kortet att blinka blått. 


2. För att du ska kunna ta kontroll över modulen måste den först anslutas till ett trådlöst nätverk. Enklast är att använda mobilappen Spark Core som finns för Android och Ios.


3. Första gången appen startas måste du registrera ett konto. Det kostar inget och allt som krävs är en fungerande mejladress och ett lösenord. 


4. Mobilen behöver vara inloggad på samma nätverk som modulen ska använda och modulen har bara stöd för wifi på 2,4 GHz-bandet, så om mobilen befinner sig på ett 5 GHz-nät måste du först byta. Öppna appen, mata in nätverksnyckeln och tryck därefter på 

Connect. Appen skickar nu nätverks­inställningarna till Spark-modulen. När allt är på plats blinkar lysdioden i regnbågens färger.


5. Appen frågar efter ett namn för modulen. Det spelar inte så stor roll vad man väljer – syftet är att kunna skilja olika moduler åt om man har flera. Modulen är nu ansluten direkt till internet och molntjänsten – utan att gå via mobilen. Det indikeras av att lysdioden antar en grönblå färg och tonar in och ut i ljusstyrka. Du kan alltså komma åt den via mobilappen eller en webbläsare från valfri internetuppkoppling.

2. Första testen
Blinka med lysdioden
Spark-modulen har 16 GPIO-pinnar och alla går att styra eller läsa av direkt från appen. På kortet finns en liten blå lysdiod som är kopplad parallellt med pinnen som heter D7. Den kan med fördel användas för att testa kommunikationen.


1. Tryck på D7 i appen och välj digitalWrite. Det konfigurerar D7-pinnen som en digital utgång som antingen levererar 0 (LOW) eller 3,3 volt (HIGH).datorn så att enheten vaknar till liv. När strömmen är ansluten börjar lysdioden mitt på kortet att blinka blått. 


2. Nu kan du trycka på D7 igen för att växla mellan dessa lägen – och lysdioden tänds respektive släcks.


3. Läs av status

Samla in data
Det är lika enkelt att använda GPIO-pinnarna för att läsa av statusen på exempelvis en tryckknapp eller en larmkontakt. 


1. För att använda en pinne som en ingång – tryck på exempelvis D0 och välj digitalRead. Texten LOW dyker upp intill D0 i appen vilket indikerar att modulen inte mäter upp någon spänning på den pinnen. Men det ska vi ändra på. Längst bort i samma rad som D0 och D7 finns en anslutning märkt 3V3. Den levererar en spänning på 3,3 volt som vi kan använda för att ändra status på D0. 


2. Koppla en liten sladd mellan 3V3 och D0 och tryck därefter på D0 i appen – texten växlar till HIGH. Vi kan alltså se i appen om något är inkopplat på de olika pinnarna på modulen. 


3. Funktionen blir snabbt användbar om man kopplar in någon form av brytare mellan D0 och V3V. Här har vi letat fram en vanlig brandvarnare med reläutgång. Brandvarnarens utgång är märkt NC vilket innebär att den normalt leder ström mellan de båda anslutningarna. Det gör att vi kan läsa av brandvarnarens status via appen. Är status HIGH så ser allt bra ut, medan om status skulle övergå till LOW är det dags att ta fram brandsläckaren.

4. Nästa steg

Egen programkod

För att lösa mer avancerade uppgifter än att styra och läsa signaler via appen kan man skriva egna program för Spark-modulen. Exempel på projekt kan vara att skicka ett push-meddelande till mobilen när brandlarmet går eller att blinka med en stor röd lampa när vädertjänsterna varnar för storm. Spark använder nästan exakt samma kod som Arduino, så det är enkelt att hitta guider och exempel.

För att ladda upp ett program – gå till spark.io/build i webbläsaren. Det öppnar en webbaserad utvecklingsmiljö där du kan skriva program och ladda upp dem direkt till modulen. Det behövs inga särskilda programmeringssladdar eller program i datorn – allt sker via molntjänsten. Logga in med samma konto som du använde för att registrera modulen i mobilappen.

För att testa ett av de färdiga exemplen – klicka på < > och välj Blink an LED. Nu visas koden till blinkprogrammet och det finns gott om kommentarer för den som vill läsa och förstå var de olika raderna gör.

Blixtsymbolen längst upp till vänster på sidan laddar upp koden till modulen. Det sker via molntjänsten, så man behöver inte befinna sig på samma plats eller vara uppkopplad via samma trådlösa nätverk. Den stora lysdioden på modulen blinkar lila när koden lagras i flashminnet. Därefter startar modulen om och kör programmet – i det här exemplet blinkar den lilla blå lysdioden med ett intervall på 1 sekund. På docs.spark.io/examples/ finns fler tips om saker man kan bygga med modulen och beskrivning av hur alla kommandon i programspråket fungerar. 

Alternativ: Arduino och Raspberry Pi

Två populära moduler för IOT-prototyper. Arduino har ett gigantiskt utbud av färdiga exempel som löser olika uppgifter – kod för att driva displayer, läsa av sensorer eller kommunicera på olika sätt. En annan fördel med Arduino är tillbehören i form av så kallade Shields. Det är kort som man staplar ovanpå mikrokontrollermodulen för att lägga till hårdvara utan lödning eller lösa sladdar. De flesta Arduinomoduler har till exempel inget nätverkskort, men det löser man enkelt genom att trycka fast ett »Ethernet Shield« eller »Wifi Shield«. En Arduino med nätverk kostar cirka 450 kr och har 32 kilobyte flashminne och 14 GPIO-pinnar. 


Raspberry Pi är en komplett dator på ett kretskort. Den har flera USB-anslutningar, HDMI-kontakt för skärm, ett nätverksuttag och 26 GPIO-pinnar. Raspberry Pi använder ett vanligt minneskort för att lagra operativsystem, vanligen Linux, och program. GPIO-pinnarna på Raspberry Pi har lite snävare tolerans än pinnarna på Arduino, så det kan behövas anpassningselektronik för att ansluta vissa typer av sensorer. USB-portarna gör att man enkelt kan koppla upp kortet via wifi eller använda en dongel för mobilt bredband. En stor fördel med att köra ett komplett Linuxsystem är att alla viktiga internetprotokoll och säkerhetsstandarder finns på plats från start – man slipper skicka data i klartext. Det är också möjligt att logga in på kortet med en SSH-terminal för att ladda upp nya program eller ändra inställningar på distans. Baksidan av myntet är hög strömförbrukning och att kortet fungerar sämre för projekt som kräver väldigt exakt tajming. En Raspberry Pi kostar cirka 350 kr inklusive ett minneskort på 4 gigabyte.

Läs mer på arduino.cc och raspberrypi.org

Läs gärna vårt reportage där vi förklarar vad sakernas internet, IoT och M2M egentligen är för något

GPIO – en värdefull funktion

Förkortningen står för General-purpose input/output och är en funktion som de flesta mobiler, surfplattor och datorer saknar, men som är värdefull när man experimenterar med egen hårdvara. GPIO är en elektrisk anslutning på mikrokontrollern som används för att koppla in sensorer, ställdon och andra tillbehör. Varje anslutning, eller »pinne«, kan ha olika funktioner beroende på mikrokontrollens specifikationer. Vissa hanterar bara digitala signaler – det vill säga av eller på – medan andra kan mäta analoga spänningar, styra variabla ställdon eller användas för snabb dataöverföring.