Innholdsfortegnelse:

Komme i gang med Arduino og Ethernet: 8 trinn
Komme i gang med Arduino og Ethernet: 8 trinn

Video: Komme i gang med Arduino og Ethernet: 8 trinn

Video: Komme i gang med Arduino og Ethernet: 8 trinn
Video: Lesson 02 Arduino IDE Software | Robojax Arduino Step By Step Course 2024, Juli
Anonim
Komme i gang med Arduino og Ethernet
Komme i gang med Arduino og Ethernet

Arduino kan enkelt kommunisere med omverdenen via en kablet Ethernet -tilkobling. Imidlertid, før vi begynner, vil det antas at du har en grunnleggende forståelse av datanettverk, for eksempel kunnskap om hvordan du kobler datamaskiner til en hub/ruter med RJ45 -kabler, hva en IP- og MAC -adresse er, og så videre. Videre er her en god rask oversikt over Ethernet.

Du trenger et Arduino Uno eller kompatibelt kort med et Ethernet -skjerm som bruker W5100 Ethernet -kontrolleren IC (stort sett alle) i henhold til bildet.

Videre må du drive kortet via den eksterne DC -kontakten - W5100 IC bruker mer strøm enn USB -strømmen kan levere. En 9V 1.5A pluggpakke/veggvorte vil være tilstrekkelig.

Trinn 1:

Bilde
Bilde

Til slutt - skjoldene blir varme - så vær forsiktig så du ikke berører W5100 etter langvarig bruk. Hvis du ikke er sikker - dette er W5100 IC.

Steg 2:

Når du har din Ethernet-aktiverte Arduino, og har ekstern strøm tilkoblet-er det en god idé å sjekke at alt fungerer. Åpne Arduino IDE og velg Fil> Eksempler> Ethernet> Webserver. Dette laster inn en enkel skisse som viser data samlet fra de analoge inngangene i en nettleser. Men ikke last den opp ennå, den trenger en liten modifikasjon.

Du må spesifisere IP -adressen til Ethernet -skjoldet - som er gjort inne i skissen. Dette er enkelt, gå til linjen:

IPAddress ip (10, 1, 1, 77);

Og endre det for å matche ditt eget oppsett. For eksempel, i vårt hjem er ruteren IP -adresse 10.1.1.1, skriveren er 10.1.1.50 og alle PCer er under … 50. Så jeg vil sette skjold -IP -en min til 10.1.1.77 ved å endre linjen til:

byte mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

Men hvis du bare har ett skjold, bare la det være. Det kan være den veldig, veldig, statistisk sjeldne sjansen for å ha en MAC -adresse som er den samme som din eksisterende maskinvare, så det ville være en annen tid å endre den.

Trinn 3:

Bilde
Bilde

Men hvis du bare har ett skjold, bare la det være. Det kan være den veldig, veldig, statistisk sjeldne sjansen for å ha en MAC -adresse som er den samme som din eksisterende maskinvare, så det ville være en annen tid å endre den.

Når du har gjort endringene, lagrer og laster du opp skissen. Åpne nå en nettleser og naviger til IP -adressen du skrev inn i skissen, og du bør bli presentert for noe som ligner på bildet.

Hva skjer?

Arduino er programmert til å tilby en enkel webside med verdiene målt med de analoge inngangene. Du kan oppdatere nettleseren for å få oppdaterte verdier. På dette tidspunktet - vær oppmerksom på at Ethernet -skjoldene bruker digitale pinner 10 ~ 13, så du kan ikke bruke dem til noe annet. Noen Arduino Ethernet -skjold kan også ha et microSD -kortuttak, som også bruker en annen digital pin - så sjekk med dokumentasjonen for å finne ut hvilken.

Trinn 4:

Likevel, nå som vi kan se Ethernet -skjoldet fungerer, kan vi gå videre til noe mer nyttig. La oss dissekere det forrige eksemplet på en enkel måte, og se hvordan vi kan distribuere og vise mer interessante data over nettverket. Til referanse håndteres alle Ethernet-relaterte funksjoner av Ethernet Arduino-biblioteket. Hvis du undersøker den forrige skissen vi nettopp brukte, er delen som vil være av interesse:

for (int analogChannel = 0; analogChannel <6; analogChannel ++) {int sensorReading = analogRead (analogChannel); client.print ("analog inngang"); client.print (analogChannel); client.print ("er"); client.print (sensorReading); client.println (""); } client.println ("");

Forhåpentligvis bør denne delen av skissen være kjent - husk hvordan vi har brukt serial.print (); tidligere når du sendte data til den serielle skjermboksen? Nå kan vi gjøre det samme, men å sende data fra vårt Ethernet -skjerm tilbake til en nettleser - med andre ord en veldig grunnleggende type webside. Derimot er det noe du kanskje vil eller ikke vil lære for å formatere utdataene i et lesbart format - HTML -kode. Jeg er ikke en nettstedutvikler (!), Så jeg vil ikke fordype meg i HTML for mye.

Men hvis du ønsker å servere pent formaterte nettsider med Arduino og så videre, ville det være en god start. For enkelhets skyld vil følgende to funksjoner være de mest nyttige:

client.print ("er");

Client.print (); lar oss sende tekst eller data tilbake til nettsiden. Det fungerer på samme måte som serial.print (), så ikke noe nytt der. Du kan også angi datatypen på samme måte som med serial.print (). Naturligvis kan du også bruke den til å sende data tilbake også. Den andre nyttige linjen er:

client.println ("");

som sender HTML -koden tilbake til nettleseren og ber den starte en ny linje. Den delen som faktisk forårsaker vognretur/ny linje er

som er en HTML -kode (eller "tag") for en ny linje.

Så hvis du lager mer detaljerte visninger av nettsider, kan du bare sette inn andre HTML -koder i client.print (); uttalelse. Hvis du vil lære mer om HTML -kommandoer, er det et godt opplæringssted.

Til slutt - vær oppmerksom på at skissen bare sender dataene når de har blitt forespurt, det vil si når den har mottatt en forespørsel fra nettleseren.

Trinn 5: Få tilgang til Arduino over Internett

Få tilgang til Arduino over Internett
Få tilgang til Arduino over Internett

Så langt så bra. Men hva om du vil ha tilgang til Arduino fra det lokale nettverket?

Du trenger en statisk IP -adresse - det vil si at IP -adressen internettleverandøren tildeler tilkoblingen din, må være den samme. Hvis du ikke har en statisk IP -adresse, så lenge du forlater modemet/ruteren din, bør det ikke endres permanent. Det er imidlertid ikke en optimal løsning.

Hvis Internett -leverandøren din ikke kan tilby deg en statisk IP i det hele tatt, kan du fortsatt gå videre med prosjektet ved å bruke en organisasjon som tilbyr en dynamisk DNS. Disse organisasjonene tilbyr deg ditt eget statiske IP -vertsnavn (f.eks. Mojo.monkeynuts.com) i stedet for et tall, hold styr på den endrede IP -adressen din og koble den til det nye vertsnavnet. Etter det jeg kan samle, må modemet ditt støtte (ha en innebygd klient for …) disse DDNS-tjenestene.

Som et eksempel er to selskaper No-IP og DynDNS.com. Vær oppmerksom på at jeg ikke har brukt de to, de tilbys bare som eksempler. Nå, for å finne din IP -adresse … vanligvis finner du dette ved å logge deg på ruteren din administrasjonsside - det er vanligvis 192.168.0.1, men kan være annerledes. Ta kontakt med leverandøren eller Internett -leverandøren om de har levert maskinvaren. For dette eksempelet, hvis jeg skriver inn 10.1.1.1 i en nettleser, og etter å ha angitt passordet for modemadministrasjon, vises følgende skjermbilde i henhold til bildet.

Trinn 6:

Bilde
Bilde

Det du leter etter er din WAN IP -adresse, som du kan se på bildet ovenfor. For å holde prankstikkene unna har jeg svart på noen av adressen min.

Den neste tingen å gjøre er å slå på portvideresending. Dette forteller ruteren hvor du skal omdirigere innkommende forespørsler fra omverdenen. Når modemet mottar en slik forespørsel, ønsker vi å sende forespørselen til portnummeret til vårt Ethernet -skjerm. Bruker:

EthernetServer -server (125);

funksjonen i skissen vår har satt portnummeret til 125. Hvert modems konfigurasjonsskjerm vil se annerledes ut, men som et eksempel er her en i bildet.

Trinn 7:

Bilde
Bilde

Så du kan se fra linje nummer én på bildet ovenfor, at innkommende portnumre er satt til 125, og IP -adressen til Ethernet -skjoldet er satt til 10.1.1.77 - det samme som i skissen.

Etter at vi har lagret innstillingene, er vi klare. Den eksterne adressen til ethernet -skjoldet mitt vil være WAN: 125, så for å få tilgang til Arduino vil jeg skrive inn min WAN -adresse med: 125 på slutten i nettleseren på den eksterne webenheten, som vil kontakte den ensomme Ethernet -maskinvaren hjemme.

Videre må du kanskje endre modemets brannmurinnstillinger, slik at port 125 kan være "åpen" for innkommende forespørsler. Se modemdokumentasjonen for mer informasjon om hvordan du gjør dette. Nå fra i hovedsak hvilken som helst Internett -tilkoblet enhet i den frie verden, kan jeg skrive inn mitt WAN og portnummer i URL -feltet og motta resultatene. For eksempel fra en telefon når den er koblet til Internett via LTE -mobildata.

Så på dette stadiet kan du nå vise data på en enkel webside opprettet av din Arduino og få tilgang til dem hvor som helst med ubegrenset internettilgang. Med din tidligere Arduino -kunnskap kan du nå bruke data fra sensorer eller andre deler av en skisse og vise dem for henting.

Trinn 8: Vise sensordata på en webside

Vise sensordata på en webside
Vise sensordata på en webside

Som et eksempel på visning av sensordata på en webside, la oss bruke en billig og populær temperatur- og fuktighetssensor - DHT22. Du må installere DHT22 Arduino -biblioteket som du finner på denne siden. Hvis dette er første gang du bruker DHT22, kan du eksperimentere med eksempelskissen som følger med biblioteket, slik at du forstår hvordan det fungerer.

Koble DHT22 med datapinnen til Arduino D2, Vin til 5V -pinnen og GND til … GND. Nå for vår skisse - for å vise temperatur og fuktighet på en webside. Hvis du ikke bruker HTML, kan du bruke onlinetjenester som dette til å generere koden, som du deretter kan endre for å bruke i skissen. I eksemplet nedenfor vises temperatur- og fuktighetsdataene fra DHT22 på en enkel webside:

#include "SPI.h" #include "Ethernet.h"

// for DHT22 sensor

#inkludere "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT22

// Skriv inn en MAC -adresse og IP -adresse for kontrolleren nedenfor.

// IP -adressen vil være avhengig av ditt lokale nettverk: byte mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; IPAddress ip (10, 1, 1, 77);

// Initialiser Ethernet -serverbiblioteket

// med IP -adressen og porten du vil bruke // (port 80 er standard for HTTP): EthernetServer -server (125); DHT dht (DHTPIN, DHTTYPE);

ugyldig oppsett ()

{dht.begin (); // Åpne seriell kommunikasjon og vent på at porten åpnes: Serial.begin (9600); mens (! Seriell) {; // vent på at seriell port kobles til. Bare nødvendig for Leonardo} // start Ethernet -tilkoblingen og serveren: Ethernet.begin (mac, ip); server.begin (); Serial.print ("serveren er på"); Serial.println (Ethernet.localIP ()); }

hulrom ()

{// lytte etter innkommende klienter EthernetClient -klient = server.available (); if (klient) {Serial.println ("ny klient"); // en http -forespørsel slutter med en tom linje boolsk currentLineIsBlank = true; mens (client.connected ()) {if (client.available ()) {char c = client.read (); Serial.write (c); // hvis du har kommet til slutten av linjen (mottatt en ny linje // tegn) og linjen er tom, er http -forespørselen avsluttet, // slik at du kan sende et svar hvis (c == 'n' && currentLineIsBlank) {// send en standard http -svaroverskrift client.println ("HTTP/1.1 200 OK"); client.println ("Innholdstype: tekst/html"); client.println ("Tilkobling: lukk"); // tilkoblingen blir stengt etter at responsen client.println ("Refresh: 30") er fullført; // oppdater siden automatisk hvert 30. sekund client.println (); client.println ("");

client.println ("");

// få data fra DHT22 -sensor

float h = dht.readHumidity (); float t = dht.readTemperature (); Serial.println (t); Serial.println (h);

// herfra kan vi skrive inn vår egen HTML -kode for å lage websiden

client.print ( Office Weather

Kontortemperatur - );

client.print (t);

client.print ( grader Celsius

);

client.print ("

Luftfuktighet - );

client.print (h);

client.print ( prosent

);

client.print ("

Siden oppdateres hvert 30. sekund <

. );

gå i stykker;

} hvis (c == 'n') {// du starter en ny linje currentLineIsBlank = true; } annet hvis (c! = 'r') {// du har fått et tegn på gjeldende linje currentLineIsBlank = false; }}}} // gi nettleseren tid til å motta dataforsinkelsen (1); // Lukk tilkoblingen: client.stop (); Serial.println ("klient frakoblet"); }}

Det er en modifikasjon av IDEs eksempel på skisse av webservereksempler som vi brukte tidligere - med noen få modifikasjoner. Først vil nettsiden automatisk oppdatere hvert 30. sekund - denne parameteren er satt på linjen:

client.println ("Oppdater: 30"); // oppdater siden automatisk hvert 30. sekund

… og den tilpassede HTML -en for nettsiden vår starter under linjen:

// herfra kan vi skrive inn vår egen HTML -kode for å lage websiden

Du kan deretter ganske enkelt sette inn nødvendig HTML inne i client.print () -funksjonene for å lage oppsettet du trenger. Til slutt - her er et eksempel på et skjermbilde av eksempelskissen på jobben.

Så der har du det, en annen nyttig måte å få Arduino til å samhandle med omverdenen. Dette innlegget blir brakt til deg av pmdway.com - alt for produsenter og elektronikkentusiaster, med gratis levering over hele verden.

Anbefalt: