progetti

Come utilizzare un Arduino come server Web

Tutorial Arduino - Programmare un web Server interattivo (Novembre 2018).

Anonim

Come utilizzare un Arduino come server Web


Utilizzando uno scudo Ethernet, è possibile utilizzare un Arduino come server Web.

Equipaggiando un Arduino con uno scudo Ethernet è possibile trasformarlo in un semplice server Web e accedendo a quel server con un browser in esecuzione su qualsiasi computer connesso alla stessa rete di Arduino, è possibile:

  • Controlla l'hardware dalla pagina web (usando i pulsanti Javascript).
  • Leggi lo stato di un interruttore (utilizzando HTML semplice).
  • Leggi il valore di un sensore (utilizzando HTML semplice).

Hardware richiesto

Per utilizzare un Arduino come server Web, è necessario quanto segue:

  • Arduino Mega2560 (o Arduino UNO)
  • Scudo Ethernet
  • Connessione LAN cablata con velocità di 10 / 100Mb
Lo scudo Ethernet collega Arduino a Internet. L'installazione è molto semplice: basta collegare i pin dell'intestazione dello schermo al tuo Arduino, quindi collegare un cavo Ethernet allo schermo. L'immagine sotto mostra questa configurazione:

Sperimentare

Per dimostrare come utilizzare Arduino come server Web, leggeremo lo stato di un interruttore.

Hardware richiesto

  • 1 cavo Ethernet x
  • 1 x router Wi-Fi
  • 1 x Arduino Mega2560
  • 1 x Ethernet Shield
  • 1 x tagliere
  • 3 x jumper wire
  • 1 x resistenza 10k
  • 2 x 9V Adattatore
  • 1 pulsante x

Schema di cablaggio

Collegare i componenti come mostrato sopra. Il pin 8 di Arduino è collegato al pulsante ed è configurato come INPUT. Quando viene premuto il pulsante, Arduino leggerà un valore LOW su questo pin. Arduino imposta lo stato dell'uscita su ON. Quando viene rilasciato, l'uscita verrà impostata su OFF. Lo stato dell'interruttore verrà inviato al server Web.

Configurazione Ethernet

Per controllare lo scudo Ethernet, utilizzare la libreria Ethernet.h.

Alla schermata deve essere assegnato un indirizzo MAC e IP utilizzando la funzione Ethernet.begin () . Per un particolare dispositivo, un indirizzo MAC è un identificatore univoco globale. Gli schermi Ethernet attuali sono forniti con un adesivo che indica l'indirizzo MAC. Per gli scudi più vecchi, uno a caso dovrebbe funzionare, ma non si dovrebbe usare lo stesso per molte schede. La validità degli indirizzi IP dipende dalla configurazione della propria rete. Se viene utilizzato DHCP, può assegnare dinamicamente un IP allo scudo.

INDIRIZZO IP

L'indirizzo IP (Internet Protocol address) è un'etichetta numerica assegnata a ciascun dispositivo che partecipa a una rete di computer che utilizza il protocollo Internet per le comunicazioni. La verifica dell'indirizzo IP avviene scrivendo la riga:

 byte ip () = {192, 168, 0, 112}; 

e cambiarlo per abbinare una propria configurazione. Ad esempio, per assegnare l'IP dello scudo Ethernet a 192.168.0.50, scrivi la riga:

 byte ip () = {192, 168, 0, 50}; 

INDIRIZZO MAC

L'indirizzo MAC (indirizzo di controllo dell'accesso ai media) è un identificativo univoco assegnato a ciascun dispositivo che partecipa a una rete fisica. Ogni pezzo di apparecchiatura di rete ha un numero di serie univoco per identificarsi su una rete e questo è normale programmato a fatica nel firmware dell'apparecchiatura. Tuttavia, con Arduino, possiamo definire noi stessi l'indirizzo MAC.

 byte mac () = {0x90, 0xA2, 0xDA, 0x0D, 0x85, 0xD9}; 

È possibile impostare la subnet e il gateway con l'aiuto dei seguenti comandi:

 byte subnet () = {255, 255, 255, 0}; // assegnazione della subnet mask 
 byte gateway () = {192, 168, 0, 1}; // assegnazione del gateway 

Quindi, per configurare Ethernet Shield, il blocco di codice è riportato sotto:

 / ******************** IMPOSTAZIONI ETHERNET ******************** / 
byte mac () = {0x90, 0xA2, 0xDA, 0x0D, 0x85, 0xD9}; // assegnando l'indirizzo mac
byte ip () = {192, 168, 0, 112}; // ip in lan
byte subnet () = {255, 255, 255, 0}; // assegnazione della subnet mask
byte gateway () = {192, 168, 0, 1}; // assegnazione del gateway predefinito

Di seguito una foto del sistema, che mostra come Arduino si connette al router Wi-Fi. Il cavo Ethernet collega la schermatura al router e al router, quindi si connette in modalità wireless al laptop.

Programma

Di seguito è riportato un programma che carica una semplice pagina Web.

Codice

 client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

client.println(""); //web page is made using HTML client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); client.println(""); client.println(""); client.println(" A Webserver Tutorial "); client.println(" Observing State Of Switch "); client.print(" Switch is: "); if (digitalRead(8)) { client.println(" ON "); } else { client.println(" OFF "); } client.println(""); client.println("");

Scarica il codice

Questo programma visualizzerà una pagina Web su un browser Web quando si accede all'indirizzo IP assegnato ad Arduino. La linea:

 client.println(""); 

Indica al browser di aggiornare la pagina. Quando si accede di nuovo alla pagina, Arduino leggerà nuovamente lo stato dell'interruttore e lo visualizzerà.

Ricorda, puoi sempre vedere la fonte della pagina web visualizzata. Premendo il pulsante, è possibile osservare lo stato di modifica dell'interruttore, come dimostrato nella demo video.

È anche possibile configurarlo per l'esecuzione senza il router. Per fare questo è necessario:

  1. Assegnare un indirizzo IP manuale all'Ethernet di Arduino dire 192.168.0.2 e Subnet mask 255.255.255.0 default Gateway vuoto.
  2. Utilizzare un cavo Ethernet incrociato per collegare i due (laptop e Arduino).
  3. Dovremmo quindi essere in grado di recuperare il tuo sito Arduino su //192.168.0.2 dal laptop.

Di seguito è riportato il codice che dovresti caricare in Arduino per collegarlo direttamente al PC senza il router:

Codice

 #include#include/******************** ETHERNET SETTINGS ********************/ byte mac() = { 0x90, 0xA2, 0xDA, 0x0D, 0x85, 0xD9 }; //physical mac address byte ip() = { 192, 168, 0, 112 }; // ip in lan byte subnet() = { 255, 255, 255, 0 }; //subnet mask byte gateway() = { 192, 168, 0, 1 }; // default gateway EthernetServer server(80); //server port void setup() { Ethernet.begin(mac, ip, gateway, subnet); // initialize Ethernet device server.begin(); // start to listen for clients pinMode(8, INPUT); // input pin for switch } void loop() { EthernetClient client = server.available(); // look for the client // send a standard http response header client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connnection: close"); client.println(); /* This portion is the webpage which will be sent to client web browser one can use html, javascript and another web markup language to make particular layout */ client.println(""); //web page is made using html client.println(""); client.println(""); client.println("Ethernet Tutorial"); client.println(""); /* The above line is used to refresh the page in every 1 second This will be sent to the browser as the following HTML code:content = 1 sec ie assign time for refresh */ client.println(""); client.println(""); client.println("

Un tutorial Webserver

"); client.println ("

Osservando lo stato del commutatore

"); client.print ("

Switch è: "); if (digitalRead (8)) {client.println ("

SOPRA

");} else {client.println ("

OFF

");} client.println (" "); client.println (" "); delay (1); // dando il tempo di ricevere i dati / * La seguente riga è importante perché fermerà il client e cercherà il nuova connessione nella prossima iterazione, ovvero client Ethernet Client = server.available (); * / client.stop ();}

Scarica il codice

video

Dare a questo progetto una prova per te! Ottieni il BOM.