För ett tag sedan visade jag dig hur du ställer in ett internetkontrollsystem för din Arduino – men det var tvungen att vara ansluten till en dator via USB för att upprätthålla internetanslutningen. Om du dock har en Ethernet-sköld är det inte nödvändigt. Idag ska vi titta på att ställa in en Arduino som en grundläggande webbserver så att vi kan vara värd för vår egen enhetskontrollwebbplats.
För ett tag sedan visade jag dig hur du ställer in ett internetkontrollsystem för din Arduino – men det var tvungen att vara ansluten till en dator via USB för att upprätthålla internetanslutningen. Om du dock har en Ethernet-sköld är det inte nödvändigt. Idag ska vi titta på att ställa in en Arduino som en grundläggande webbserver så att vi kan vara värd för vår egen enhetskontrollwebbplats.
Du kommer behöva:
En Arduino- eller Arduino-klon som beskrivs här Ethernet Shield (~$35) – se till att du får en version som matchar din Arduino eftersom de inte alla är kompatibla Reservportar på din router eller switch, och Ethernet-kabel. WebServerexemplet som finns i Arduino applikation
Installation
Ethernet-skölden använder stift 10 till 13 för att kontrollera nätverksanslutningen, så lämna dem utanför ditt projekt; stift 4 används också för SD-kortet, men det kommer vi inte att använda idag.
Först till kvarn – öppna upp Fil->Exempel->Ethernet->Webbserver som finns i Arduino IDE. Hitta raderna som hänvisar till MAC och IP-adress.
MAC-adressen för min hittades på kartongen – din kan vara på själva skölden. Justera den första raden med värden – du måste lämna den föregående 0x lite dock. Tekniskt sett spelar det egentligen ingen roll vad du lägger här så länge du inte har några motstridiga värden på ditt subnät – men trots detta var detta den adress som tilldelats av tillverkaren, så vi borde nog hålla oss till det. Vet bara att om du får fel så kommer det fortfarande att fungera.
Nästa upp är IP-adressen. Vi vill ha en specifik fast adress så att vi kan ställa in portvidarebefordran korrekt – skölden kan få en adress från DHCP, men det är bara användbart om det bara ska användas som en klient, inte en server. Fyll i en IP-adress som är oanvänd och minnesvärd i ditt lokala nätverk, din routers IP och 255.255.255.0 (undernätet). Om inget av detta är meningsfullt för dig, läs vår free och en noggrann guide till hemnätverk.
Port Forwarding
Redigera raden som säger EthernetServer server (nummer)och ändra numret till 8081. Detta kommer att ställa in vår server för att lyssna på port 8081 om din ISP blockerar webbtrafik på den traditionella porten 80.
Ladda upp demon nu och testa den från en lokal maskin. Du måste naturligtvis också koppla in Ethernet-kabeln. Behåll USB ansluten också, eftersom vi behöver den för ström – du kan ersätta den med en 9V strömkälla senare, men vi testar fortfarande.
Noob-tips: om du får det här felet betyder det att du av misstag har satt en stort O istället för a i MAC-adressområdet. Det finns inget O i hex-värden! Om du verkligen är ny kan det vara värt att kolla in vår Arduino-guide för nybörjare!
För att komma åt Arduino, skriv in adressen och portnumret direkt från en webbläsare.
Du borde se något sådant – hittills så bra. Tyvärr är detta endast tillgängligt på lokalt nätverk just nu, så gå in på din routers portkonfigurationssida för att ställa in en omdirigering från port 8081 till samma port på din Arduinos IP (Se: Vad är port forwarding?)
Testa detta från en mobil 3G-internetenhet med Wifi inaktiverat; kom ihåg att använda din offentlig IP-adress, inte din lokala nätverksadress. Din router borde kunna berätta detta, eller bara fråga Google “vad är min ip”.
Förstå resultatet
Sidan som serveras i demon läser värden från de analoga stiften – men eftersom det inte finns något anslutet där, kommer du att få nonsens. Prova att ansluta en ljussensor (fotomotstånd) till porten A0 och +5v, med en 10k motstånd också på A0 och gnd (det här är en spänningsdelare, eftersom de analoga stiften bara kan läsa spänning och inte motstånd) bara för att bekräfta att servern faktiskt läser värden. Lägg märke till att när ljusintensiteten ändras ändras faktiskt också värdena på de andra stiften – detta beror på att de alla är oanslutna.
Bli interaktiv
Att läsa dessa värderingar är väl och bra, men att ta steget till kontrollerande en Arduino härifrån är ett stort steg, och det ligger utanför ramen för denna handledning idag. Istället för att återuppfinna hjulet, kommer jag att peka dig mot Arduino-forumanvändaren hari som skrev ett grundläggande API för att interagera med digitala stift. Använd den här koden (jag har modifierat den för att fungera med det senaste Ethernet-biblioteket), anslut den långa ledningen på en lysdiod (anod) till stift 8 och den korta ledningen till stift 7 (med ett lämpligt motstånd). Du kan sedan använda formulärets webbadresser http://ip:port/digitalWrite/8/1 för att slå på lysdioden och http://ip:port/digitalWrite/8/0 att stänga av den och läsa analoga värden med analogRead/0.
Detta exempel från bildr kommer också att lära dig hur du styr en sekvens av lysdioder genom att läsa GET-förfrågan.
Du kanske också skulle vilja kolla in det här exemplet som matar ut ett formulär på sidan för att styra en blinkm RGB LED, även om du enkelt kan anpassa den för en RGB-remsa som det dynamiska omgivande ljusprojektet vi byggde för ett tag sedan.
Jag hade kul att bygga dessa, så jag hoppas att du också gjorde det. Om du har skapat ett bibliotek som gör det enkelt att visa sidor och kontroller, vänligen kontakta dig i kommentarerna.
Om författaren
James Bruce (720 publicerade artiklar)
James har en BSc i artificiell intelligens och är CompTIA A+ och Network+ certifierad. När han inte är upptagen som Hardware Review Editor, gillar han LEGO, VR och brädspel. Innan han började på MakeUseOf var han ljustekniker, engelskalärare och datacenteringenjör.
Mer från James Bruce
Prenumerera på vårt nyhetsbrev
Gå med i vårt nyhetsbrev för tekniska tips, recensioner, free e-böcker och exklusiva erbjudanden!
Klicka här för att prenumerera
