Anslut Arduino till wifi

Introduktion

För att kunna bygga en internetuppkopplad produkt måste vi först och främst ansluta den till ett nätverk. I det här kapitlet ska vi se närmare på hur det går till.

Obs! Wifi-modulen i detta kapitel har en firmware som koden är anpassad för. Om tillverkaren av wifi-modulen ändrar i firmwaren kan koden behöva uppdateras.

Nätverkshårdvara för arduino

Det finns två sätt att ansluta ett utvecklingskort till nätverk: trådbundet eller trådlöst. Trådbunden anslutning åstadkoms enklast genom att ansluta en nätverksshield med nätverksport till utvecklingskortet. Eftersom en trådbunden anslutning gör placeringen mindre flexibel kommer vi att använda en trådlös lösning i stället. 

html_image

Nätverksshield

För att ansluta vårt utvecklingskort till ett trådlöst nätverk använder vi en wifi-modul som bygger på chippet ESP8266. Modulen har stöd för att överföra data i upp till 150 Mb/s med Wireless N (på 2,4 GHz-bandet). Mer information om vad detta innebär finns i Hur funkar det?-seriens nätverksdel. 

Wifi-modulen passar inte direkt på kopplingsplattan. Vi ansluter den därför via en liten kopplingsadapter. Både wifi-modulen och kopplingsadaptern följer med i bokens tillhörande komponentkit. 

html_image

Wifi-modul

Konfigurera wifi-modul för Arduino

Arduinon vill kommunicera med wifi-modulen via seriellporten på GPIO-stift 0 och 1 (RX och TX). Det är samma port som vi har använt tidigare för att skicka data till Serial monitor på datorn. Det går inte att använda samma seriellport för båda ändamålen, vilket ställer till lite problem då vi vill kunna använda seriellporten för felsökning. 

Vi kan lösa portkonflikten med hjälp av ett bibliotek som heter SoftwareSerial. Det låter oss kommunicera med wifi-modulen på andra GPIO-stift än 0 och 1. Wifi-modulen är dock förinställd för att kommunicera med datahastigheten 115200 Bd och SoftwareSerial-lösningen fungerar enbart med 9600 Bd. Vi måste därför ändra en inställning i wifi-modulen, vilket vi gör på följande sätt. 

Vi börjar med att ladda upp Blink-sketchen till vår Arduino (för att kunna kommunicera direkt till wifi-modulen). Vi hade kunnat använda vilken sketch som helst, under förutsättning att sketchen inte använder Serial.

html_image

Blink.ino

Efter att vi har laddat upp Blink-sketchen ansluter vi wifi-modulen till vårt utvecklingskort enligt kopplingen nedan. Tänk på att nätaggregatet måste vara strömförsörjt (antingen med ett 9 V-batteri eller med en nätadapter). Nätaggregatet behövs eftersom wifi-modulen drivs på 3,3 V och utvecklingskortet kan inte ge tillräckligt med ström på den spänningen. De två motstånden på 10 resp. 22 kohm bildar en spänningsdelare som sänker spänningen från 5 V till 3,3 V. Detta för att skydda wifi-modulens ingång.

Varning! Driv inte wifi-modulen på 5 V.

html_image

Illustration gjord med komponenter från Fritzing (fritzing.org). CC BY-SA 3.0

Sedan öppnar vi Serial monitor och ställer in den med följande inställningar.

  • Datahastighet: 115200 Bd (hastigheten som wifi-modulen har ur förpackningen)
  • Radbrytningar: NL & CR (acceptera alla radbrytningar)

I indatarutan längst upp skriver vi AT för att kontrollera om vi kan kommunicera med wifi-modulen.

html_image

Om vi kan kommunicera med wifi-modulen svarar den "OK".

html_image

När vi har säkerställt att vi kan kommunicera med wifi-modulen skickar vi följande kommando. 

AT+UART_DEF=9600,8,1,0,0

Obs! Det är viktigt att det skrivs korrekt. 

Wifi-modulen bekräftar att den har tagit emot det. 

html_image

Vi avslutar med att starta om wifi-modulen med följande kommando.

AT+RST

När denna konfiguration är klar vill vi säkerställa att allt gick rätt. Det gör vi genom att ändra datahastigheten i Serial monitor till 9600 Bd och skriva AT-kommandot igen (för att se om vi får något svar). Om vi får ett svar fungerar allt som det ska. 

html_image

Anslut Arduino till wifi

När konfigurationen är klar kan vi börja använda wifi-modulen. Det gör vi genom att koppla in den på följande sätt till utvecklingskortet. Lägg märke till att kablarna för TX (sänd data) och RX (ta emot data) är omvända jämfört med föregående koppling. De två motstånden på 10 resp. 22 kohm bildar en spänningsdelare som sänker spänningen från 5 V till 3,3 V. Detta för att skydda wifi-modulens ingång.

html_image

Illustration gjord med komponenter från Fritzing (fritzing.org). CC BY-SA 3.0

Nu kan vår dator kommunicera med utvecklingskortet i 115200 Bd. Utvecklingskortet kan i sin tur kommunicera med wifi-modulen i 9600 Bd. Vi kommer att använda en anslutning vid namn Serial för kommunikation mellan datorn och utvecklingskortet samt en anslutning vid namn Serial1 för kommunikation mellan utvecklingskortet och wifi-modulen. 

För att ansluta till ett trådlöst nätverk måste vi först och främst installera och inkludera de nödvändiga biblioteken (SoftwareSerial och WiFiEsp). Vi måste också ange att det är GPIO-stift 6 och 7 som ska användas för kommunikation med wifi-modulen. 

Del 1/4 av WifiTest.ino

I följande kodsnutt anger vi namnet på vårt trådlösa nätverk (SSID) och lösenordet till det. Obs! Det går endast att ansluta till 2,4 GHz-nätverk (inte 5 GHz-nätverk).

Del 2/4 av WifiTest.ino

I setup-funktionen startar vi de seriella kommunikationerna, initialiserar wifi-modulen och försöker ansluta till det trådlösa nätverket. Om anslutningen lyckas anropas funktionen printWifiStatus.

Del 3/4 av WifiTest.ino

PrintWifiStatus skriver ut namnet på det trådlösa nätverket som Arduinon är ansluten till och vilken IP-adress som Arduinon har blivit tilldelad. Detta visas i Serial monitor.

Del 4/4 av WifiTest.ino

html_image

Tips! Har du problem med att initiera wifi-modulen? Bryt strömmen helt först i så fall (gäller både nätaggregat och USB).

Vi kan prova att kommunicera med Arduinon via nätverket med hjälp av programmet Ping, vilket finns inbyggt i både Windows och Mac OS. 

Vi öppnar Kommandotolken i Windows eller Terminalen i Mac OS och skriver ping följt av IP-adressen till Arduinon. Om vi får svar från Arduinon vet vi att allt fungerar som det ska.

html_image

Kör en webbserver på Arduino

En webbsida består i grund och botten av HTML-kod (Hyper Text Markup Langugage). Vi går inte igenom HTML i denna bok, men vi visar däremot hur en Arduino kan agera som webbserver för en HTML-sida. Du kan se hur HTML-koden ser ut bakom vilken webbsida som helst genom att högerklicka på webbsidan i Google Chrome och välja Visa sidkälla.

html_image

Så här visar Google Chrome webbsidan kjell.com.

html_image

Så här ser HTML-koden ut bakom webbsidan kjell.com.

Vi vill skapa en enkel webbsida som Arduinon ska skicka när någon går in på dess webbserver. Vi skriver följande HTML-kod.

<!DOCTYPE HTML>
<html>
  <head>
    <title>My Arduino</title>
  </head>
  <body>
    <h1>Hello World!</h1>
    <p>We’re online!</p>
  </body>
</html>

website.html

I sketchen kan vi utgå från koden vi skrev tidigare i detta kapitel. Före setup-funktionen måste vi skapa en ny webbserver på port 80 (standardporten för okrypterad webbtrafik). Vi startar sedan webbservern i setup-funktionen.

Del 1/2 av WifiWebserver.ino

Loop-funktionen var tidigare tom, men nu fyller vi den med kod. Först och främst ska Arduinon lyssna efter nya anslutningar (klienter som vill ladda ned webbsidan). När en klient upptäcks ska Arduinon skicka all anslutningsinformation till Serial monitor. Därefter ska den skicka webbsidan till klienten. Lägg märke till att vi har förändrat webbsidekoden något (vi avslutar varje HTML-kodrad med tecknen för radbrytning). När webbsidan väl har skickats väntar Arduinon några millisekunder och stänger sedan anslutningen.

Del 2/2 av WifiWebserver.ino

Efter att vi har laddat upp koden till Arduinon visas följande webbsida när vi går in på dess IP-adress med vår webbläsare. Observera att vi måste befinna oss på samma lokala nätverk som Arduinon är ansluten till.

html_image

Resultatet som visas i webbläsaren.

html_image

Resultatet som visas i Serial monitor.

Senast ändrad: 2018-04-06
IntroduktionNätverkshårdvara för arduinoKonfigurera wifi-modul för ArduinoAnslut Arduino till wifiKör en webbserver på Arduino
Bli medlem i dagGör som nästan 2 miljoner andra och ta del av erbjudanden samt förmåner när du handlar!

Som medlem får du:

  • Exklusiva medlemserbjudanden
  • Poäng på allt du handlar
  • 100 dagars öppet köp
  • Se dina köp på kjell.com
Som medlem hos Kjell & Company kan du köpa utvalda medlemsvaror till extra bra priser, samla poäng och få bonuscheckar, samt ta del av unika medlemserbjudanden. Du får även förtur till vår kundservice, utökat öppet köp och förlängd garanti på utvalda varumärken.Läs mer om medlemskapet
Alltid tryggt att handla hos Kjell
Fri frakt

Vi bjuder på standardfrakten när du handlar för mer än 300:-

Fri retur

Fria returer i alla våra butiker.

Snabba leveranser

1-2 arbetsdagar leveranstid

Hämta i butik

Reservera online, redo att hämtas ut efter 15 minuter

Medlem i

Medlem i trygg e-handel

Du betalar enkelt

Får din beställning levererad med

Du kan handla från både

Det verkar som att du använder en gammal webbläsare, det kan göra att allt inte fungerar eller ser ut som det borde.