21
Maristes Rubí Eduard Soler Chic Control ChipKIT per Internet. ChipKITU18-1 Control de la placa robòtica ChipKIT per Internet. 1 > Introducció. Objectius. Entre les diferents plaques robòtiques existents al mercat, presenta unes molt bones prestacions i aplicacions la ChipKIT Uno32 de l’empresa Digilent Inc. http://digilentinc.com . Estem doncs dins de la familia Arduino però amb condicions de funcionament molt millors. El processador pertany a l’empresa Microchip, http://www.microchip.com . L’aspecte que presenta la placa és el que s’ofereix a la imatge adjunta. El programari per a la visualització dels projectes és a: http://chipkit.net/started/install-chipkit-software/install-mpide-windows/ Per al desenvolupament d’aquesta unitat, anomenem ChipKIT–Ethernet Shield al dispositiu format per: Una placa ChipKIT Uno32 i una EthernetShield amb el CI W5100. L’objectiu final està en poder visualitzar per Internet els resultats del projecte gravat a la placa robòtica ChipKIT. Ho farem progressivament treballant tres formes de comunicació amb el ChipKIT-EthernetShield : 1 > Des d’un ordinador mitjançant el cable RJ45. És una connexió punt a punt. També s’anomena connexió ad-hoc ( Sense router ). ChipKIT Uno 32 EthernetShield W5100

Control de la placa robòtica ChipKIT per Internet. · Prepara la comunicació amb el ChipKIT-EthernetShild: a > Ad-hoc amb un PC o portàtil. b > En la xarxa local. c > Via Internet

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Control de la placa robòtica ChipKIT per Internet. · Prepara la comunicació amb el ChipKIT-EthernetShild: a > Ad-hoc amb un PC o portàtil. b > En la xarxa local. c > Via Internet

Maristes Rubí Eduard Soler Chic Control ChipKIT per Internet.

ChipKITU18-1

Control de la placa robòtica ChipKIT per Internet.

1 > Introducció. Objectius. Entre les diferents plaques robòtiques existents al mercat, presenta unes molt bones prestacions i aplicacions la ChipKIT Uno32 de l’empresa Digilent Inc. http://digilentinc.com . Estem doncs dins de la familia Arduino

però amb condicions de funcionament molt millors. El processador pertany a l’empresa Microchip, http://www.microchip.com . L’aspecte que presenta la placa és el que s’ofereix a la imatge adjunta. El programari per a la visualització dels projectes és a: http://chipkit.net/started/install-chipkit-software/install-mpide-windows/

Per al desenvolupament d’aquesta unitat, anomenem ChipKIT–Ethernet Shield al dispositiu format per: Una placa ChipKIT Uno32 i una EthernetShield amb el CI W5100.

L’objectiu final està en poder visualitzar per Internet els resultats del projecte gravat a la placa robòtica ChipKIT. Ho farem progressivament treballant tres formes de comunicació amb el ChipKIT-EthernetShield : 1 > Des d’un ordinador mitjançant el cable RJ45. És una connexió punt a punt. També s’anomena connexió ad-hoc ( Sense router ).

ChipKIT Uno 32 EthernetShield W5100

Page 2: Control de la placa robòtica ChipKIT per Internet. · Prepara la comunicació amb el ChipKIT-EthernetShild: a > Ad-hoc amb un PC o portàtil. b > En la xarxa local. c > Via Internet

Maristes Rubí Eduard Soler Chic Control ChipKIT per Internet.

ChipKITU18-2

2 > En una xarxa local ( A través d’un router ) . Cerquem la visualització des de qualsevol dispositiu de la intranet. 3 > Via Internet. Els resultats els veurem mitjançant qualsevol dispositiu ( mòbil, portàtil … ) i des de qualsevol punt.

------------------------------------------------------------------------- 2 > Formes de control de la comunicació. 1r projecte: lectura dels

ports analògics de la ChipKIT Uno32.

2.1 >> Comunicació amb el ChipKIT – EthernetShield des d’un portàtil mitjançant el cable RJ45.

L’objectiu està en assolir una xarxa ad-hoc entre el ChipKIT-EthernetShield i el portàtil. Acoblem la EthernetShield sobre la ChipKIT. Connectem la ChipKIT al portàtil mitjançant el cable USB –mini USB. Connectem la EthernetShield al portàtil mitjançant el cable RJ45. Obrim el MPIDE i carreguem l’exemple WebServer:

File; Examples; Ethernet; WebServer

Page 3: Control de la placa robòtica ChipKIT per Internet. · Prepara la comunicació amb el ChipKIT-EthernetShild: a > Ad-hoc amb un PC o portàtil. b > En la xarxa local. c > Via Internet

Maristes Rubí Eduard Soler Chic Control ChipKIT per Internet.

ChipKITU18-3

Aquest projecte serveix per poder veure per la pantalla de l’ordinador el valor assignat a cadascun dels ports analògics A0 a A5. En aquestes condicions, el ChipKIT-EthernetShield actua com a servidor web i el navegador actua com a client. Guardem l’exemple a les nostres carpetes i canviem, en la corresponent línia de codi, el 4t nombre, tenint en compte les IPs existents actualment a la xarxa pròpia. Posem 110 en el lloc esmentat:

Page 4: Control de la placa robòtica ChipKIT per Internet. · Prepara la comunicació amb el ChipKIT-EthernetShild: a > Ad-hoc amb un PC o portàtil. b > En la xarxa local. c > Via Internet

Maristes Rubí Eduard Soler Chic Control ChipKIT per Internet.

ChipKITU18-4

byte ip[] = { 192,168,1,110 }; Anem a : Panel de control; Redes e Internet; Centro de redes y recursos compartidos; Cambiar configuración del adaptador Sobre la icona Wi-Fi:

botó dret; desactivar. I apareixerà deshabilitado. En aquests moments no tenim Internet. Cada aparell té una IP diferent en funció de la xarxa on està. Per cada adaptador de xarxa hi ha una configuració de xarxa. La IP del portàtil per Ethernet, en la connexió ad-hoc amb el ChipKIT-EthernetShield, ve inicialment donada i és: 169.254.21.7. En la finestra Propiedades: Protocolo de Internetversión 4 ( TCP/IPv4 ) estava activada l’opció

Obtener una dirección IP automàticamente. La màscara de subxarxa del portàtil per Ethernet en la connexió ad-hoc amb l’EthernetShield és: 255.255.0.0. Això també s’ha configurat de forma automàtica.

Configuració EthernetShield

Configuració Ethernet del portàtil

IP 192.168.1.110 169.254.21.7

màscara 255.255.255.0 255.255.0.0

Operació màscara 192.168.1.xxx 169.254.xxx.xxx

Operació màscara: Des del portàtil, el que veig és 169.254.xxx.xxx per tant, no veiem l’EthernetShield amb la configuració actual. Volem fixar els dos paràmetres ( L’adreça IP i la màscara ) de la connexió del portàtil per Ethernet, per tal que tant l’EthernetShield com el portàtil estiguin dins la mateixa subxarxa. El primer 255 de la màscara indica que el 1r nombre de la IP ( 169 ) ha de ser el mateix. El segon 255 de la màscara indica que el 2n nombre de la IP ( 254 ) ha de ser el mateix. El dos ceros que hi ha a continuació en la màscara indiquen que els dos nombres restants de la IP ( 21 i 7 ) poden canviar.

Page 5: Control de la placa robòtica ChipKIT per Internet. · Prepara la comunicació amb el ChipKIT-EthernetShild: a > Ad-hoc amb un PC o portàtil. b > En la xarxa local. c > Via Internet

Maristes Rubí Eduard Soler Chic Control ChipKIT per Internet.

ChipKITU18-5

Hi ha dues opcions: a > Modifiquem la IP i la màscara de l’EthernetShield. b > Modifiquem la IP del portàtil. Aquest camí és millor donat que ja hem configurat l’EthernetShield per la xarxa local. Opció b Assignem nova IP al portàtil: 192.168.1.120 ( Per exemple 120 al 4t nombre ) . Per aconseguir-ho: Explorador de archivos; Este equipo; Equipo; Propiedades ; Panel de control; Redes e Internet ; Centro de redes y recursos compartidos; Cambiar la configuración del adaptador; botó Ethernet; Propiedades; cliquem a Protocolo de Internet versión 4 ( TCP/IPv4) , botó Propiedades;

Màscara de subxarxa: L’aparell tot sol escriu 255.255.255.0 Premem Aceptar.

Cliquem sobre la icona Ethernet i Activar

Page 6: Control de la placa robòtica ChipKIT per Internet. · Prepara la comunicació amb el ChipKIT-EthernetShild: a > Ad-hoc amb un PC o portàtil. b > En la xarxa local. c > Via Internet

Maristes Rubí Eduard Soler Chic Control ChipKIT per Internet.

ChipKITU18-6

El resultat d’aquest procés es pot resumir amb aquesta taula:

Configuració EthernetShield

Configuració Ethernet del portàtil

IP 192.168.1.110 192.168.1.120

màscara 255.255.255.0 255.255.255.0

Operació màscara 192.168.1.xxx 192.168.1.xxx Operació màscara: des del portàtil, el que veig és 192.168.1.xxx Provem amb el cercador de IPs ( Advanced IP Scanner ) a veure si apareixen tant la del portàtil com la de la EthernetShield. Quant al portàtil, apareix la IP de la xarxa habitual i la de la que acabem de muntar entre ell i la EthernetShield.

Obrim un navegador, escrivim 192.168.1.110 i apareix el resultat de la programació.

Page 7: Control de la placa robòtica ChipKIT per Internet. · Prepara la comunicació amb el ChipKIT-EthernetShild: a > Ad-hoc amb un PC o portàtil. b > En la xarxa local. c > Via Internet

Maristes Rubí Eduard Soler Chic Control ChipKIT per Internet.

ChipKITU18-7

Per veure quina IP té actualment el portàtil, s’ha de fer doble clic sobre l'adaptador de xarxa corresponent (en comptes de botó dret, propiedades) i clicar a detalles.

En tot moment parlem de la IPv4 que funciona des de 1974. La IPv4 està formada per 4 caselles de 8 bits cadascuna. La v5 pràcticament ni va existir.

Page 8: Control de la placa robòtica ChipKIT per Internet. · Prepara la comunicació amb el ChipKIT-EthernetShild: a > Ad-hoc amb un PC o portàtil. b > En la xarxa local. c > Via Internet

Maristes Rubí Eduard Soler Chic Control ChipKIT per Internet.

ChipKITU18-8

Des que parlem de l’internet de les coses ( Internet of things ) estem ja amb la IPv6. La IPv6 permet 6,67.1027 IPs per m2 de Terra. És una combinació de 128 bits.

---------------------------------------------------------- 2.2 >> Comunicació amb el ChipKIT - EthernetShield en una xarxa local.

Connectem amb el cable RJ45 el router i l’EthernetShield. No connectem el ChipKIT-EthernetShield al portàtil via USB- miniUSB. Situació actual:

Configuració Ethernet Shield

Configuració Ethernet del router

IP 192.168.1.110 169.168.1.1

màscara 255.255.255.0 255.255.255.0

Operació màscara 192.168.1.xxx 192.168.1.xxx Qualsevol dispositiu de la subxarxa pot accedir a la informació corresponent a la programació ( informació dels ports analògics ). Obro un navegador al portàtil i escric: 192.168.1.110 i apareix: Al mòbil, posem la Wi-Fi en on per així poder connectar-nos al ChipKIT-

EthernetShield via xarxa local. Obrim un navegador al mòbil. Escrivim 192.168.1.110 i apareix novament el resultat del projecte gravat a la ChipKIT.

---------------------------------------------------------- 2.3 >> Comunicació amb el ChipKIT-EthernetShield via Internet.

Page 9: Control de la placa robòtica ChipKIT per Internet. · Prepara la comunicació amb el ChipKIT-EthernetShild: a > Ad-hoc amb un PC o portàtil. b > En la xarxa local. c > Via Internet

Maristes Rubí Eduard Soler Chic Control ChipKIT per Internet.

ChipKITU18-9

Cal que el router permeti l’accés exterior d’algun dispositiu intern ( ChipKIT-EthernetShield ) i al servei al que volem accedir d’aquest dispositiu. Haurem d’activar el servei web doncs el ChipKIT-EthernetShield actua com servidor web ( la web on apareix la informació elemental sobre els ports analògics ). Connectem el ChipKIT-EthernetShield al router mitjançant el cable RJ45. Entrem a la configuració del router. Obrim un navegador i escrivim la IP del router:

192.168.1.1 Usuari >> admin Contrasenya >> 290 … Tota l’explicació va vinculada amb el router Comtrend ADSL router. Al menú de l’esquerra cliquem a Advanced Setup; NAT; cliquem el botó ADD Activem Customer Service i li posem un nom: EthernetShield A la columna Server IP Address escrivim 192.168.1.110 Indicació: El dispositiu ChipKIT-EthernetSield actua com servidor.

Tanquem la pàgina del router.

Ara ens falta saber quina és la nostra IP externa. El router pot treballar a la vegada en la xarxa interna ( LAN ) i en l’externa ( WAN ). La manera més senzilla de conèixer la nostra IP externa és entrant a la web cualesmiip.com

Page 10: Control de la placa robòtica ChipKIT per Internet. · Prepara la comunicació amb el ChipKIT-EthernetShild: a > Ad-hoc amb un PC o portàtil. b > En la xarxa local. c > Via Internet

Maristes Rubí Eduard Soler Chic Control ChipKIT per Internet.

ChipKITU18-10

----------------------------------------------------------

2.3.1 >>> Comprovació amb el mòbil.

En primer lloc desconnectem en el mòbil la Wi-Fi de la xarxa interna. Així entrarem al ChipKIT-EthernerShield a través de la connexió de dades del mòbil, en definitiva, Internet.

Obrim el navegador i escrivim 95.19.134.227

I apareix el resultat de la programació:

---------------------------------------------------------- 2.3.2 >>> Comprovació amb el portàtil.

El procés amb el portàtil – que pertany a la intranet de la vivenda -, no és tan senzill com amb el mòbil ja que dins de casa no pot treballar amb la xarxa externa a no ser que obtinguem la connexió a Internet a través del mòbil. El port 80 és el port estàndard de servidor web. Ara disposem de dos servidors web: a > El de configuració del router. b > El de la ChipKIT-EthernetShield.

Page 11: Control de la placa robòtica ChipKIT per Internet. · Prepara la comunicació amb el ChipKIT-EthernetShild: a > Ad-hoc amb un PC o portàtil. b > En la xarxa local. c > Via Internet

Maristes Rubí Eduard Soler Chic Control ChipKIT per Internet.

ChipKITU18-11

Els dos estan configurats per acceptar comunicacions pel port 80. Dins de la xarxa local, el router té una IP i la ChipKIT-EthernetShield una altre. Treballant des de fora, ho tenim configurat perquè no es pugui accedir a la web de configuració del router, per tant, s’accedeix a la ChipKIT-EthernetShield. Per aquest motiu, amb el mòbil, ha funcionat perfectament l’execució del projecte gravat a la ChipKIT. Amb el portàtil, com que pertany a la xarxa interna, en entrar des de l’exterior a la xarxa local, el router rep la petició d’accés al port 80 i disposa, a les seves taules, de dues entrades amb aquest port: La ChipKIT-EthernetShield i la seva pròpia pàgina de configuració. Per defecte, està definit que ha d’enviar el trànsit cap a la pàgina de configuració. Aquest és el motiu pel qual, en escriure en el navegador del

portàtil l’adreça 95.19.134.227 se’ns presenta per pantalla la pàgina del

router. Si volem doncs fer aparèixer per la pantalla del portàtil la informació corresponent al projecte gravat a la ChipKIT, o treballem dins una xarxa externa o ens connectem a Internet a través del mòbil, usant, en conseqüència, la xarxa de telefonia mòbil.

----------------------------------------------------------

Projecte 1

Elabora un projecte que permeti visualitzar l’estat dels ports analògics. Prepara la comunicació amb el ChipKIT-EthernetShild: a > Ad-hoc amb un PC o portàtil. b > En la xarxa local. c > Via Internet. /* Projecte que permet llegir l'estat dels ports analògics de la placa robòtica ChipKIT Uno32. La placa robòtica porta acoblada la EthernetShield W5100. El projecte es basa en l'exemple de l'MPIDE: File; Examples; Ethernet; WebServer. El projecte permet que el dispositiu ChipKIT-EthernetShield es connecti ad-hoc amb un PC, en una xarxa local o via Internet. */ #include <SPI.h> // Llibreria del connector SPI que permet connexió de la ChipKIT amb la EthernetShield. #include <Ethernet.h> // Llibreria d'informacions que permeten la comunicació amb el microcontrolador propi de la EthernetShield: WIZnet W5100.

Page 12: Control de la placa robòtica ChipKIT per Internet. · Prepara la comunicació amb el ChipKIT-EthernetShild: a > Ad-hoc amb un PC o portàtil. b > En la xarxa local. c > Via Internet

Maristes Rubí Eduard Soler Chic Control ChipKIT per Internet.

ChipKITU18-12

// Assignem al dispositiu una adreça MAC i una adreça IP. byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; byte ip[] = { 192,168,1,110 }; // Canviem, de l'adreça de l'exemple de l'MPIDE, el darrer nombre per 110 i ja tenim una IP assignada al ChipKIT-EthernetShield. // Inicialitzem el servidor pel port 80 que és el que usarem per a la comunicació. El port per defecte per HTTP és el 80. Server server(80); void setup() { Ethernet.begin(mac, ip); // Iniciem el servidor i la connexió Ethernet. server.begin(); } void loop() { Client client = server.available(); // Preparem el ChipKIT-EthernetShield per esperar peticions del clients: els navegadors web. if (client) { boolean currentLineIsBlank = true; // Configurem que les peticions HTTP han d'acabar amb una línia en blanc. while (client.connected()) { // Preguntem si el client es troba connectat. if (client.available()) { // Preguntem si el client es troba habilitat. char c = client.read(); if (c == '\n' && currentLineIsBlank) { // \n genera un salt de línia. && és el símbol de l'operador AND. // Si el client rep una línia en blanc vol dir que ha acabat la petició via HTTP i, per tant, el client pot presentar per pantalla del PC el resultat del port. client.println("HTTP/1.1 200 OK"); /* Fem que el servidor ( ChipKIT-EthernetShield) respongui usant el protocol HTTP versió 1.1. Codis d'estat HTTP: 2XX >> peticions correctes >> 200 OK és la resposta estàndard per peticions correctes */ client.println("Content-Type: text/html"); // Indiquem el tipus de format que transmetem: text/html. En una altra situació podem trobar: text/plain. client.println(); // Presentació per pantalla del PC de la informació dels ports analògics. for (int analogChannel = 0; analogChannel < 6; analogChannel++) { client.print("El port analogic "); client.print(analogChannel); client.print(" indica "); client.print(analogRead(analogChannel)); client.println("<br />"); } break; } if (c == '\n') { // \n >> genera un salt de línia. currentLineIsBlank = true; // Preparem una nova línia. } else if (c != '\r') { // \r >> retorn de carro. És igual a prémer Enter. Eines com el Bloc de notes necessiten \r\n currentLineIsBlank = false; // Hem obtingut un caràcter en la línia actual. }

Page 13: Control de la placa robòtica ChipKIT per Internet. · Prepara la comunicació amb el ChipKIT-EthernetShild: a > Ad-hoc amb un PC o portàtil. b > En la xarxa local. c > Via Internet

Maristes Rubí Eduard Soler Chic Control ChipKIT per Internet.

ChipKITU18-13

} } delay(1); // Donem un temps per la recepció de la nova dada per part del navegador web. client.stop(); // Tanquem la connexió. No cal indicar que es torna al bucle while ja que estem dins del void loop. } }

---------------------------------------------------------- 3 > 2n projecte: Comunicació amb el ChipKIT – EthernetShield

per a la presentació d’un text.

Projecte 2

Prepara un projecte que permeti visualitzar diverses frases amb grandàries de text diferents. Prepara la comunicació amb el ChipKIT-EthernetShild: a > Ad-hoc amb un PC o portàtil. b > En la xarxa local. c > Via Internet. /* Projecte que permet oferir textos de diferents formats mitjançant les etiquetes h1, h2 i h3 del llenguatge HTML. La placa robòtica ChipKIT Uno32 porta acoblada la EthernetShield W5100.El projecte es basa en l'exemple de l'MPIDE: File; Examples; Ethernet; WebServer i en el llenguatge HTML. El projecte permet que el dispositiu ChipKIT-EthernetShield es connecti ad-hoc amb un PC, en una xarxa local o via Internet. */ #include <SPI.h> // Llibreria del connector SPI que permet connexió de la ChipKIT amb la EthernetShield. #include <Ethernet.h> // Llibreria d'informacions que permeten la comunicació amb el microcontrolador propi de la EthernetShield: WIZnet W5100. byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // Assignem al dispositiu una adreça MAC. byte ip[] = { 192,168,1,110 }; /* Assignem al dispositiu una adreça IP. Canviem, de l'adreça de l'exemple de l'MPIDE, el darrer nombre per 110 i ja tenim una IP assignada al ChipKIT-EthernetShield.*/ Server server(80); // Inicialitzem el servidor pel port 80 que és el que usarem per a la comunicació. El port per defecte per HTTP és el 80. void setup() { Ethernet.begin(mac, ip); // Iniciem el servidor i la connexió Ethernet. server.begin(); } void loop() {

Page 14: Control de la placa robòtica ChipKIT per Internet. · Prepara la comunicació amb el ChipKIT-EthernetShild: a > Ad-hoc amb un PC o portàtil. b > En la xarxa local. c > Via Internet

Maristes Rubí Eduard Soler Chic Control ChipKIT per Internet.

ChipKITU18-14

Client client = server.available(); // Preparem el ChipKIT-EthernetShield per esperar peticions del clients: els navegadors web. if (client) { boolean currentLineIsBlank = true; // Configurem que les peticions HTTP han d'acabar amb una línia en blanc. while (client.connected()) { // Preguntem si el client es troba connectat. if (client.available()) { // Preguntem si el client es troba habilitat. char c = client.read(); if (c == '\n' && currentLineIsBlank) { /* \n genera un salt de línia. && és el símbol de l'operador AND. Si el client rep una línia en blanc vol dir que ha acabat la petició via HTTP i, per tant, el client pot presentar per pantalla del PC el resultat del port.*/ client.println("HTTP/1.1 200 OK"); /* Fem que el servidor ( ChipKIT-EthernetShield) respongui usant el protocol HTTP versió 1.1. Codis d'estat HTTP: 2XX >> peticions correctes >> 200 OK és la resposta estandard per peticions correctes */ client.println("Content-Type: text/html"); // Indiquem el tipus de format que transmitim: text/html. En una altra situació podem trobar: text/plain. client.println("Connexió tancada"); client.println("Refresh: 5"); // Fem un refresc cada 5 milisegons client.println(); client.println("<!DOCTYPE HTML>"); // DOCTYPE és un declaració de l'estàndar usat en construir un document HTML. client.println("<html lang='es'>"); client.println("<head>"); client.println("<meta charset='UTF-8'>"); // El charset determina com es veuran certs caràcters. Opcions: UTF-8, ISO-8859-1. Tendeix a ser estàndar l'UTF-8. client.println("<title>"); client.println("Recerca ChipKIT - Internet"); client.println("</title>"); client.println("<body>"); client.println("<div class='page-wrap'>"); /* div >> contenidor genèric. Atributs >> class, style, title. Class assigna un conjunt de noms de classe a un element. page-wrap >> Te relació amb alineació del text, amplada, marges...*/ client.println("<header class='header'>"); // Header >> encapsalat d'una secció. client.println("<h1>"); // h1 és l'etiqueta d'HTML que dóna la màxima grandària de lletra; h6 dóna la menor. client.println("Benvingut al dispositiu ChipKIT-EthernetShield "); client.println("</h1>"); client.println(); client.println("<h2>"); client.println("Permanentment construint"); client.println("</h2>"); client.println(); client.println("<h3>"); client.println("Molt aviat: control d'un LED !!"); client.println("</h3>"); client.println("<br />"); // Amb <br> es talla una línia però no el paràgraf client.println("</body>"); client.println("</html>"); break; } if (c == '\n') { // \n >> genera un salt de línia. currentLineIsBlank = true; // Preparem una nova línia. }

Page 15: Control de la placa robòtica ChipKIT per Internet. · Prepara la comunicació amb el ChipKIT-EthernetShild: a > Ad-hoc amb un PC o portàtil. b > En la xarxa local. c > Via Internet

Maristes Rubí Eduard Soler Chic Control ChipKIT per Internet.

ChipKITU18-15

else if (c != '\r') { // \r >> retorn de carro. És igual a prémer Enter. Eines com el Bloc de notes necessiten \r\n currentLineIsBlank = false; // Hem obtingut un caràcter en la línia actual. } } } delay(1); // Donem temps al client ( navegador web ) per rebre dades. client.stop(); // Tanquem la connexió. No cal indicar que es torna al bucle while ja que estem dins del void loop. } }

----------------------------------------------------------

4 > 3r projecte: Comunicació amb el ChipKIT – EthernetShield

per al control d’un LED.

Projecte 18003

Prepara un projecte que permeti controlar un LED mitjançant dos botons Prepara la comunicació amb el ChipKIT-EthernetShild: a > Ad-hoc amb un PC o portàtil. b > En la xarxa local. c > Via Internet. /* Projecte que permet encendre / apagar un LED connectat al pin 4 de la placa robòtica ChipKIT Uno32. La placa robòtica porta acoblada la EthernetShield W5100. El projecte es basa en el tutorial d'accés per internet de www.jopapa.me El projecte permet que el dispositiu ChipKIT-EthernetShield es connecti ad-hoc amb un PC, en una xarxa local o via Internet. */ #include <SPI.h> // Llibreria del connector SPI que permet connexió de la ChipKIT amb la EthernetShield. #include <Ethernet.h> // Llibreria d'informacions que permeten la comunicació amb el microcontrolador propi de la EthernetShield: WIZnet W5100. byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // Assignem al dispositiu una adreça MAC. byte ip[] = { 192, 168, 1, 110 }; // Assignem al dispositiu una adreça IP. Server server(80); /* Inicialitzem el servidor pel port 80 que és el que usarem per a la comunicació. El port per defecte per HTTP és el 80.*/ int Pin4=4; String readString; String estat=String(11); // Mostrem en la pantalla web l'estat del pin 4. void setup() { pinMode(Pin4, OUTPUT); //Posem com sortida el pin 4 pin per al control del LED. Ethernet.begin(mac, ip); // Iniciem el servidor i la connexió Ethernet. server.begin(); estat="Desactivat"; } void loop(){

Page 16: Control de la placa robòtica ChipKIT per Internet. · Prepara la comunicació amb el ChipKIT-EthernetShild: a > Ad-hoc amb un PC o portàtil. b > En la xarxa local. c > Via Internet

Maristes Rubí Eduard Soler Chic Control ChipKIT per Internet.

ChipKITU18-16

Client client = server.available(); // Preparem el ChipKIT-EthernetShield per esperar peticions del clients: els navegadors web. if (client) { while (client.connected()) { // Preguntem si el client es troba connectat. if (client.available()) { // Preguntem si el client es troba habilitat. char c = client.read(); if (readString.length() < 100) { /* readString és una estructura de dades. És una variable predefinida a les llibreries, no declarada pel programador. length és un mètode. També es pot dir que length és un camp de l'estructura readString. */ readString += c; } //Guardem els caràcters en la variable tipus cadena. if (c == '\n') { // \n genera un salt de línia. Per tant, en el cas que es rebi un salt de línia ... // ********** control del pin 4 de la ChipKIT ********** if(readString.indexOf("?ledences") >0) { /* Quan es prem el botó de la web corresponent a encendre el LED, enviem una cadena de text amb l'etiqueta que hem triat. Si la cadena de text que arriba coincideix amb ledences llavors s'executa l'ordre digitalWrite. */ digitalWrite(Pin4, HIGH); // Posem el pin 4 en estat alt >> activem el LED ( O llum, motor, relé ... ) estat="Activat"; } if(readString.indexOf("?ledapagat") >0) { /* Quan es prem el botó de la web corresponent a apagar el LED, enviem una cadena de text amb l'etiqueta que hem triat. Si la cadena de text que arriba coincideix amb ledapagat llavors s'executa l'ordre digitalWrite. */ digitalWrite(Pin4, LOW); // Posem el pin 4 en estat baix >> desactivem el LED ( O llum, motor, relé ... ) estat="Desactivat"; } // ********** Creem la pàgina web ********** client.println("HTTP/1.1 200 OK"); /* Fem que el servidor ( ChipKIT-EthernetShield) respongui usant el protocol HTTP versió 1.1. Codis d'estat HTTP: 2XX >> peticions correctes >> 200 OK és la resposta estandard per peticions correctes */ client.println("Content-Type: text/html"); // Indiquem el tipus de format que transmitim: text/html. En una altra situació podem trobar: text/plain. client.println(); client.println("<HTML>"); client.println("<HEAD>"); client.println("<TITLE>Control amb ChipKIT-EthernetShield</TITLE>"); client.println("</HEAD>"); client.println("<BODY>"); client.println("<center>"); client.println("<H1>ChipKIT-EthernetShield: Control LED</H1>"); client.println("<hr />"); client.println("<br />"); client.println("<form method=get>"); /* Les dades d'un formulari s'envien mitjançant un mètode que pot ser GET o POST. GET els envia usant la URL i POST ho fa mitjançat l'entrada estàndard STDIO.*/

Page 17: Control de la placa robòtica ChipKIT per Internet. · Prepara la comunicació amb el ChipKIT-EthernetShild: a > Ad-hoc amb un PC o portàtil. b > En la xarxa local. c > Via Internet

Maristes Rubí Eduard Soler Chic Control ChipKIT per Internet.

ChipKITU18-17

client.println("<input type=submit style=width:200px;height:75px;font-size:32px;font-weight:bold; name=ledences value=ON>"); client.println("<input type=submit style=width:200px;height:75px;font-size:32px;font-weight:bold; name=ledapagat value=OFF>"); client.println("</form>"); client.print("<br><br>"); client.print("<font size='6'>Estat: "); client.print(estat); client.println("</BODY>"); client.println("</HTML>"); delay(1); client.stop(); // Acabem l'actuació del client. readString=""; // Buidem la cadena preparant-la per la propera lectura. } } } } }

---------------------------------------------------------- 5 > 4t projecte: Comunicació amb el ChipKIT – EthernetShield per al control d’un motor trifàsic.

Projecte 18004

Prepara un projecte que permeti controlar un motor trifàsic mitjançant tres botons. Prepara la comunicació amb el ChipKIT-EthernetShild: a > Ad-hoc amb un PC o portàtil. b > En la xarxa local. c > Via Internet. /* Projecte que permet controlar una maqueta giratòria acoblada a un motor trifàsic de 1/4 CV. El control dels pins 4 i 8 de la ChipKIT Uno32 s'aplica sobre un optoacoblador TLP 521-4 que, connectat a un variador de freqüència J7 d'Omron, fa que el motor giri cap a la dreta, cap a l'esquerra o estigui aturat. En el projecte es crea una web amb 3 botons per aconseguir-ho. La placa robòtica porta acoblada la EthernetShield W5100. El projecte es basa en el de control d'un LED. El projecte permet que el dispositiu ChipKIT-EthernetShield es connecti ad-hoc amb un PC, en una xarxa local o via Internet. */ #include <SPI.h> // Llibreria del connector SPI que permet connexió de la ChipKIT amb la EthernetShield. #include <Ethernet.h> // Llibreria d'informacions que permeten la comunicació amb el microcontrolador propi de la EthernetShield: WIZnet W5100. byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // Assignem al dispositiu una adreça MAC. byte ip[] = { 192, 168, 1, 110 }; // Assignem al dispositiu una adreça IP. Server server(80); // Inicialitzem el servidor pel port 80 que és el que usarem per a la comunicació. El port per defecte per HTTP és el 80. int Pin8=8; int Pin4=4; String readString; String estat=String(18); // Declarem la variable estat i reservem per ella 18 caràcters.

Page 18: Control de la placa robòtica ChipKIT per Internet. · Prepara la comunicació amb el ChipKIT-EthernetShild: a > Ad-hoc amb un PC o portàtil. b > En la xarxa local. c > Via Internet

Maristes Rubí Eduard Soler Chic Control ChipKIT per Internet.

ChipKITU18-18

void setup() { pinMode(Pin8, OUTPUT); // Posem com sortida el pin 8 digitalWrite(Pin8, LOW); // Posem en estat baix el pin 8 pinMode(Pin4, OUTPUT); // Posem com sortida el pin 4 digitalWrite(Pin4, LOW); // Posem en estat baix el pin 4 Ethernet.begin(mac, ip); // Iniciem el servidor i la connexió Ethernet. server.begin(); estat="Maqueta aturada"; } void loop(){ Client client = server.available(); // Preparem el ChipKIT-EthernetShield per esperar peticions del clients: els navegadors web. if (client) { while (client.connected()) { // Preguntem si el client es troba connectat. if (client.available()) { // Preguntem si el client es troba habilitat. char c = client.read(); if (readString.length() < 100) { /* readString és una estructura de dades. És una variable predefinida a les llibreries, no declarada pel programador. length és un mètode */ readString += c; } //Guardem els caràcters en la variable tipus cadena. if (c == '\n') { // \n genera un salt de línia. Per tant, en el cas que es rebi un salt de línia ... // ********** control dels pins 4 i 8 de la ChipKIT ********** if(readString.indexOf("?giraesquerra") >0) { // Consultem si està preparat per ser activat. digitalWrite(Pin8, LOW); // Posem el pin 8 en estat baix >> desactivem el gir del motor cap a la dreta. digitalWrite(Pin4, HIGH); // Posem el pin 4 en estat alt >> activem el gir del motor cap a l’esquerra. estat="Girant cap a l'esquerra"; // Mostrem en la pantalla web l'estat de la maqueta. } if(readString.indexOf("?aturada") >0) { // Consultem si està preparat per ser activat. digitalWrite(Pin8, LOW); // Posem el pin 8 en estat baix >> desactivem el gir del motor cap a la dreta. digitalWrite(Pin4, LOW); // Posem el pin 4 en estat baix >> desactivem el gir del motor cap a l’esquerra. estat="Maqueta aturada"; // Mostrem en la pantalla web l'estat de la maqueta. } if(readString.indexOf("?giradreta") >0) { // Consultem si està preparat per ser activat. digitalWrite(Pin8, HIGH); // Posem el pin 8 en estat alt >> activem el gir del motor cap a la dreta. digitalWrite(Pin4, LOW); // Posem el pin 4 en estat baix >> desactivem el gir del motor cap a l’esquerra. estat="Girant cap a la dreta"; // Mostrem en la pantalla web l'estat de la maqueta. } // ********** Creem la pàgina web ********** client.println("HTTP/1.1 200 OK"); /* Fem que el servidor ( ChipKIT-EthernetShield) respongui usant el protocol HTTP versió 1.1. Codis d'estat HTTP: 2XX >> peticions correctes >> 200 OK és la resposta estàndard per peticions correctes */

Page 19: Control de la placa robòtica ChipKIT per Internet. · Prepara la comunicació amb el ChipKIT-EthernetShild: a > Ad-hoc amb un PC o portàtil. b > En la xarxa local. c > Via Internet

Maristes Rubí Eduard Soler Chic Control ChipKIT per Internet.

ChipKITU18-19

client.println("Content-Type: text/html"); // Indiquem el tipus de format que transmetem: text/html. En una altra situació podem trobar: text/plain. client.println(); client.println("<HTML>"); client.println("<HEAD>"); client.println("<TITLE>Control amb ChipKIT-EthernetShield</TITLE>"); client.println("</HEAD>"); client.println("<BODY>"); client.println("<center>"); client.println("<H1>ChipKIT-EthernetShield: Control variador de velocitat</H1>"); client.println("<hr />"); client.println("<br />"); client.println("<form method=get>"); /* Les dades d'un formulari s'envien mitjançant un mètode que pot ser GET o POST. GET els envia usant la URL i POST ho fa mitjançat l'entrada estàndard STDIO.*/ client.println("<input type=submit style=width:200px;height:75px;font-size:32px;font-weight:bold; name=giraesquerra value=GiraEsquerra>"); client.println("<input type=submit style=width:200px;height:75px;font-size:32px;font-weight:bold; name=aturada value=Aturada>"); client.println("<input type=submit style=width:200px;height:75px;font-size:32px;font-weight:bold; name=giradreta value=GiraDreta>"); client.println("</form>"); client.print("<br><br>"); client.print("<font size='6'>Estat: "); client.print(estat); client.println("</BODY>"); client.println("</HTML>"); delay(1); client.stop(); // Acabem l'actuació del client. readString=""; // Buidem la cadena preparant-la per la propera lectura. } } } } }

µµµµµµµµµµµµµµµµµµµµµµµµµµµµµµ

Page 20: Control de la placa robòtica ChipKIT per Internet. · Prepara la comunicació amb el ChipKIT-EthernetShild: a > Ad-hoc amb un PC o portàtil. b > En la xarxa local. c > Via Internet

Maristes Rubí Eduard Soler Chic Control ChipKIT per Internet.

ChipKITU18-20

Page 21: Control de la placa robòtica ChipKIT per Internet. · Prepara la comunicació amb el ChipKIT-EthernetShild: a > Ad-hoc amb un PC o portàtil. b > En la xarxa local. c > Via Internet

Maristes Rubí Eduard Soler Chic Control ChipKIT per Internet.

ChipKITU18-21