Taula de continguts:

Introducció a Arduino i Ethernet: 8 passos
Introducció a Arduino i Ethernet: 8 passos

Vídeo: Introducció a Arduino i Ethernet: 8 passos

Vídeo: Introducció a Arduino i Ethernet: 8 passos
Vídeo: 🔵 Arduino Básico: Primeiros passos com Arduino - Parte 1/4 #arduino #arduinotutorial 2024, Juliol
Anonim
Introducció a Arduino i Ethernet
Introducció a Arduino i Ethernet

El vostre Arduino es pot comunicar fàcilment amb el món exterior mitjançant una connexió Ethernet per cable. Tanmateix, abans de començar, es donarà per fet que teniu un coneixement bàsic de les xarxes d’ordinadors, com ara el coneixement de com connectar equips a un concentrador / encaminador amb cables RJ45, què és una adreça IP i MAC, etc. A més, aquí teniu un bon resum ràpid sobre Ethernet.

Necessitareu un Arduino Uno o una placa compatible amb un blindatge Ethernet que utilitzi el controlador Ethernet W5100 IC (pràcticament tots) segons la imatge.

A més, haureu d’alimentar la placa mitjançant la presa de corrent continu externa; el W5100 IC utilitza més corrent del que pot subministrar l’alimentació USB. N’hi haurà prou amb un paquet d’endolls de 9V 1,5A / berruga de paret.

Pas 1:

Imatge
Imatge

Finalment, els escuts s’escalfen, així que tingueu cura de no tocar el W5100 després d’un ús prolongat. Per si no esteu segur, aquest és el W5100 IC.

Pas 2:

Un cop tingueu l’Arduino compatible amb Ethernet i tingueu l’alimentació externa connectada, és recomanable comprovar que funcioni. Obriu l'IDE d'Arduino i seleccioneu Fitxer> Exemples> Ethernet> Servidor web. Això carrega un simple esbós que mostrarà les dades recollides de les entrades analògiques en un navegador web. Tot i això, encara no el pengeu, necessita una lleugera modificació.

Heu d’especificar l’adreça IP de l’escut Ethernet, que es fa a l’esbós. Això és senzill, aneu a la línia:

Adreça IP ip (10, 1, 1, 77);

I modifiqueu-lo perquè coincideixi amb la vostra configuració. Per exemple, a casa nostra l’adreça IP de l’encaminador és 10.1.1.1, la impressora és 10.1.1.50 i tots els ordinadors estan per sota de … 50. Per tant, configuraré el meu IP d’escut a 10.1.1.77 canviant la línia a:

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

Tanmateix, si només teniu un escut, deixeu-ho. Pot haver-hi la molt, molt, estadísticament rara possibilitat de tenir una adreça MAC igual que el vostre maquinari existent, de manera que seria un altre moment per canviar-la.

Pas 3:

Imatge
Imatge

Tanmateix, si només teniu un escut, deixeu-ho. És possible que sigui molt, molt, estadísticament poc probable tenir una adreça MAC igual que el vostre maquinari existent, de manera que seria un altre moment per canviar-la.

Un cop hàgiu fet les modificacions, deseu i pengeu l'esbós. Ara obriu un navegador web i aneu a l'adreça IP que heu introduït a l'esbós, i se us presentarà alguna cosa similar a la imatge.

Que està passant?

L'Arduino ha estat programat per oferir una pàgina web senzilla amb els valors mesurats per les entrades analògiques. Podeu actualitzar el navegador per obtenir valors actualitzats. En aquest moment, tingueu en compte que els protectors Ethernet utilitzen pins digitals 10 ~ 13, de manera que no els podeu utilitzar per a res més. Alguns protectors Ethernet Arduino també poden tenir un sòcol per a targeta microSD, que també utilitza un altre pin digital, així que consulteu la documentació per saber quin.

Pas 4:

No obstant això, ara que podem veure que l'escut Ethernet funciona, podem passar a alguna cosa més útil. Disseccionem l’exemple anterior d’una manera senzilla i vegem com podem distribuir i mostrar dades més interessants a la xarxa. Com a referència, la biblioteca Ethernet Arduino gestiona totes les funcions relacionades amb Ethernet. Si examineu l'esbós anterior que acabem d'utilitzar, la secció que us interessarà és:

for (int analogChannel = 0; analogChannel <6; analogChannel ++) {int sensorReading = analogRead (analogChannel); client.print ("entrada analògica"); client.print (analogChannel); client.print ("és"); client.print (sensorReading); client.println (""); } client.println ("");

Esperem que aquesta secció de l’esbós sigui familiar: recordeu com hem utilitzat serial.print (); en el passat quan enviava dades a la caixa del monitor sèrie? Ara bé, podem fer el mateix, però tornar a enviar dades des del nostre escut Ethernet a un navegador web, és a dir, un tipus de pàgina web molt bàsic. la sortida en un format llegible: codi HTML. No sóc desenvolupador de llocs web (!), De manera que no aprofundiré massa en l'HTML.

Tanmateix, si voleu publicar pàgines web amb un format ben format amb el vostre Arduino, etc., aquí seria un bon començament. Per raons de simplicitat, les dues funcions següents seran les més útils:

client.print ("és");

Client.print (); ens permet enviar text o dades de nou a la pàgina web. Funciona de la mateixa manera que serial.print (), de manera que no hi ha res de nou. També podeu especificar el tipus de dades de la mateixa manera que amb serial.print (). Per descomptat, també podeu utilitzar-lo per enviar dades. L'altra línia útil és:

client.println ("");

que envia el codi HTML al navegador web indicant-li que comenci una nova línia. La part que realment provoca la devolució del carro / la nova línia és la

que és un codi HTML (o "etiqueta") per a una nova línia.

Per tant, si esteu creant visualitzacions de pàgines web més elaborades, només podeu inserir altres etiquetes HTML al client.print (); declaració. Si voleu obtenir més informació sobre les ordres HTML, aquí teniu un bon lloc de tutoria.

Finalment, tingueu en compte que l’esbós només enviarà les dades quan s’hagi sol·licitat, és a dir, quan hagi rebut una sol·licitud del navegador web.

Pas 5: accedir al vostre Arduino per Internet

Accedir al vostre Arduino per Internet
Accedir al vostre Arduino per Internet

Fins ara, tot bé. Però, i si voleu accedir al vostre Arduino des de fora de la xarxa local?

Necessitareu una adreça IP estàtica, és a dir, l’adreça IP que el vostre proveïdor de serveis d’Internet assigni a la vostra connexió ha de seguir sent la mateixa. Si no teniu una adreça IP estàtica, sempre que deixeu el mòdem / enrutador permanentment connectat a la vostra adreça IP, no hauria de canviar. Tanmateix, aquesta no és una solució òptima.

Si el vostre proveïdor d’Internet no us pot oferir cap adreça IP estàtica, encara podeu avançar amb el projecte mitjançant una organització que ofereixi un DNS dinàmic. Aquestes organitzacions us ofereixen el vostre propi nom d'amfitrió IP estàtic (per exemple, mojo.monkeynuts.com) en lloc d'un número, feu un seguiment de l'adreça IP que canvieu i enllaceu-la amb el nou nom d'amfitrió. Pel que puc recollir, el vostre mòdem ha de suportar (tenir un client integrat per a …) aquests serveis DDNS.

Com a exemple, dues empreses són No-IP i DynDNS.com. Tingueu en compte que no he utilitzat aquests dos, només s’ofereixen com a exemples. Ara, per trobar la vostra adreça IP … normalment, es pot trobar iniciant la sessió a la pàgina d’administració del vostre encaminador; sol ser 192.168.0.1, però pot ser diferent. Consulteu amb el vostre proveïdor o ISP si han subministrat el maquinari. Per a aquest exemple, si entro 10.1.1.1 en un navegador web i després d’haver introduït la contrasenya d’administració del mòdem, es mostrarà la següent pantalla segons la imatge.

Pas 6:

Imatge
Imatge

El que busqueu és la vostra adreça IP WAN, tal com podeu veure a la imatge superior. Per mantenir allunyats els bromistes, he oblidat algunes de les meves adreces.

El següent que cal fer és activar el reenviament de ports. Això indica al router on redirigir les sol·licituds entrants del món exterior. Quan el mòdem rep aquesta sol·licitud, volem enviar-la al número de port del nostre blindatge Ethernet. Utilitzant el:

Servidor EthernetServer (125);

La funció del nostre esbós ha definit el número de port a 125. La pantalla de configuració de cada mòdem tindrà un aspecte diferent, però a tall d’exemple en teniu un a la imatge.

Pas 7:

Imatge
Imatge

Així, es pot veure des de la línia número u de la imatge superior, els números de port entrants s’han definit a 125 i l’adreça IP de l’escut Ethernet s’ha definit a 10.1.1.77, igual que a l’esbós.

Després de desar la configuració, ja estem a punt. L’adreça externa del meu escut Ethernet serà la WAN: 125, de manera que per accedir a l’Arduino escriuré la meva adreça WAN amb: 125 al final del navegador del dispositiu web remot, que es posarà en contacte amb el solitari maquinari Ethernet de casa.

A més, és possible que hàgiu de modificar la configuració del tallafoc del mòdem per permetre que el port 125 estigui "obert" a les sol·licituds entrants. Consulteu la documentació del mòdem per obtenir més informació sobre com fer-ho. Ara, bàsicament des de qualsevol dispositiu connectat a Internet del món lliure, puc introduir la meva WAN i el número de port al camp URL i rebre els resultats. Per exemple, des d’un telèfon quan es connecta a Internet mitjançant dades mòbils LTE.

Així, en aquesta etapa ara podeu mostrar dades en una pàgina web senzilla creada pel vostre Arduino i accedir-hi des de qualsevol lloc amb accés a Internet sense restriccions. Amb els vostres coneixements previs d’Arduino, ara podeu utilitzar dades de sensors o altres parts d’un esbós i mostrar-les per recuperar-les.

Pas 8: visualització de dades del sensor en una pàgina web

Visualització de dades del sensor en una pàgina web
Visualització de dades del sensor en una pàgina web

Com a exemple de visualització de dades del sensor en una pàgina web, fem servir un sensor de temperatura i humitat econòmic i popular: el DHT22. Haureu d’instal·lar la biblioteca Arduino DHT22 que es pot trobar en aquesta pàgina. Si és la primera vegada que utilitzeu el DHT22, experimenteu amb l’esbós d’exemple que s’inclou a la biblioteca per entendre com funciona.

Connecteu el DHT22 amb el pin de dades a Arduino D2, Vin al pin de 5 V i GND a … GND. Ara el nostre esbós: per mostrar la temperatura i la humitat en una pàgina web. Si no teniu cap HTML, podeu utilitzar serveis en línia com aquest per generar el codi, que després podeu modificar per utilitzar-lo a l’esbós. A l'exemple següent, les dades de temperatura i humitat del DHT22 es publiquen en una pàgina web senzilla:

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

// per al sensor DHT22

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

// Introduïu una adreça MAC i una adreça IP per al controlador a continuació.

// L'adreça IP dependrà de la vostra xarxa local: byte mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; Adreça IP ip (10, 1, 1, 77);

// Inicialitzeu la biblioteca del servidor Ethernet

// amb l'adreça IP i el port que voleu utilitzar // (el port 80 és per defecte per a HTTP): servidor EthernetServer (125); DHT dht (DHTPIN, DHTTYPE);

configuració nul·la ()

{dht.begin (); // Obriu les comunicacions en sèrie i espereu que s'obri el port: Serial.begin (9600); while (! Serial) {; // espera que es connecti el port sèrie. Necessari només per a Leonardo} // iniciar la connexió Ethernet i el servidor: Ethernet.begin (mac, ip); server.begin (); Serial.print ("el servidor està a"); Serial.println (Ethernet.localIP ()); }

bucle buit ()

{// escoltar clients entrants Client EthernetClient = servidor.available (); if (client) {Serial.println ("client nou"); // una sol·licitud http acaba amb una línia en blanc booleana currentLineIsBlank = true; while (client.connected ()) {if (client.available ()) {char c = client.read (); Serial.write (c); // si heu arribat al final de la línia (heu rebut una nova línia // caràcter) i la línia està en blanc, la sol·licitud http ha finalitzat, // de manera que podeu enviar una resposta si (c == 'n' && currentLineIsBlank) {// envieu una capçalera de resposta http estàndard client.println ("HTTP / 1.1 200 OK"); client.println ("Tipus de contingut: text / html"); client.println ("Connexió: tancar"); // la connexió es tancarà després de completar la resposta client.println ("Actualitzar: 30"); // actualitzeu la pàgina automàticament cada 30 segons client.println (); client.println ("");

client.println ("");

// obtenir dades del sensor DHT22

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

// des d’aquí podem introduir el nostre propi codi HTML per crear la pàgina web

client.print ( Office Weather

Temperatura d'oficina - );

client.print (t);

client.print ( graus Celsius

);

client.print ("

Humitat - );

client.print (h);

client.print ( percentatge

);

client.print ("

La pàgina s'actualitza cada 30 segons <

. );

trencar;

} if (c == 'n') {// comenceu una nova línia currentLineIsBlank = true; } else if (c! = 'r') {// heu obtingut un caràcter a la línia actual currentLineIsBlank = false; }}} // donar temps al navegador web per rebre el retard de les dades (1); // tancar la connexió: client.stop (); Serial.println ("client desconnectat"); }}

Es tracta d’una modificació de l’esbós d’exemple del servidor web de l’IDE que hem utilitzat anteriorment, amb algunes modificacions. En primer lloc, la pàgina web s’actualitzarà automàticament cada 30 segons: aquest paràmetre s’estableix a la línia:

client.println ("Actualitza: 30"); // actualitza la pàgina automàticament cada 30 segons

… i l'HTML personalitzat per a la nostra pàgina web comença a sota de la línia:

// des d’aquí podem introduir el nostre propi codi HTML per crear la pàgina web

A continuació, podeu inserir l’HTML requerit a les funcions client.print () per crear el disseny que necessiteu. Finalment, aquí teniu un exemple de captura de pantalla de l’esbós d’exemple a la feina.

Així que ja ho teniu, una altra manera útil de fer que el vostre Arduino interaccioni amb el món exterior. Aquesta publicació l’ofereix pmdway.com: tot per a fabricants i entusiastes de l’electrònica, amb lliurament gratuït a tot el món.

Recomanat: