Uno R3 als Webserver mit Ethernet Shield

Ciao e benvenuto al nostro post sul blog di oggi.

 

Oggi vi presentiamo con i nostri Scudo Ethernet W5100 Prima. Lo scudo può essere facilmente collegato al nostro microcontrollore, compatibile con Arduino Uno R3, ed estende il microcontrollore con un'interfaccia Ethernet e un lettore di schede SD.

Lo sfondo era la richiesta di un conoscente che monitora un singolo sensore analogico per mezzo di un microcontrollore, compatibile con Arduino Uno R3. Ora vuole interrogarlo tramite un'interfaccia web. Tuttavia, non desidera utilizzare un ESP e una connessione tramite WLAN, ma Microcontrollore compatibile con Arduino UnoCollegare R3 alla sua rete tramite cavo LAN perché è troppo inaffidabile e produce troppe emissioni EM.

 

1. Configurazione del test

Per il nostro esperimento, oltre allo scudo Ethernet W5100, abbiamo bisogno di un Microcontrollore compatibile con Arduino Uno R3e qualsiasi sensore analogico. In questo esempio, userò un semplice Sensore di luminosità che può essere sostituito da qualsiasi sensore analogico.

Mettiamo con cura lo scudo Ethernet sul Microcontrollore compatibile con Arduino UnoR3. Colleghiamo il sensore di luminosità come segue:

 

Uno R3

Sensore di luminosità

5v

Mezzo

Gnd

-

A0

S (in vi

 

2. Programmazione

La programmazione del Microcontrollore compatibile con Arduino UnoGrazie alle librerie Arduino, R3 è quasi semplice come i moduli ESP.

Abbiamo solo bisogno delle biblioteche Spi.h e Ethernet.h, perché l'IDE può essere installato con esso.

Convenientemente, troveremo un esempio di lavoro sotto "File" -> "Esempi" -> "Ethernet" -> "WebServer" che abbiamo solo bisogno di regolare leggermente.

Dal momento che vogliamo usare DHCP se disponibile, sostituiamo la riga "Ethernet.begin(mac, ip);" con il seguente codice:

 

 

  Se (Ethernet.Iniziare(Mac) == 0) {     Seriale.println("Impossibile configurare Ethernet utilizzando DHCP");     provare a congifure utilizzando l'indirizzo IP anziché DHCP:     Ethernet.Iniziare(Mac, Ip);   Server.Iniziare();   Seriale.Stampare("server è a");   Seriale.println(Ethernet.localIP (informazioni in locale)());   }

Dal momento che abbiamo solo bisogno di restituire un valore nel "void loop()," possiamo sostituire il ciclo "for" con:

 

            Int sensorELettura = analogicOLettura(0);             Client.Stampare("ingresso analogico");             Client.Stampare("0");             Client.Stampare(" è ");             Client.Stampare(sensorELettura);             Client.println("<br />");

Il codice completo sarà simile al seguente:The complete code will look like this:

 

 

/*
 Web Server

 Un semplice server web che mostra il valore dei pin di input analogici.
 utilizzando uno scudo Arduino Wiznet Ethernet.

 Circuito:
 - Scudo Ethernet attaccato ai pin 10, 11, 12, 13
 Ingressi analogici collegati ai pin da A0 ad A5 (opzionale)

 creato 18 dic 2009
 da parte di David A. Mellis
 modificato 9 aprile 2012
 da parte di Tom Igoe
 modificato 02 settembre 2015
 da parte di Arturo Guadalupi

 */

#include <Spi.H>
#include <Ethernet.H>

Immettere di seguito un indirizzo MAC e un indirizzo IP per il controller.
L'indirizzo IP dipenderà dalla rete locale:
Byte Mac[] = {   0xDE (in modo 0xDE), 0xAD (ad esempio), 0xBE (in modo 0xBE), 0xEF (in questo stato del sistema), 0xFE (in modo 0xFE), 0xED (0xED)
};
Ipaddress Ip(192, 168, 168, 51);

Inizializzare la libreria server Ethernet
con l'indirizzo IP e la porta che si desidera utilizzare
(la porta 80 è l'impostazione predefinita per HTTP):
Server Ethernet Server(80);

Vuoto Installazione() {   Aprire le comunicazioni seriali e attendere l'apertura della porta:   Seriale.Iniziare(9600);      avviare la connessione Ethernet e il server:   Se (Ethernet.Iniziare(Mac) == 0) {     Seriale.println("Impossibile configurare Ethernet utilizzando DHCP");     provare a congifure utilizzando l'indirizzo IP anziché DHCP:     Ethernet.Iniziare(Mac, Ip);   Server.Iniziare();   Seriale.Stampare("server è a");   Seriale.println(Ethernet.localIP (informazioni in locale)());   }
}


Vuoto Ciclo() {   elenchi per i client in entrata   EthernetClient Client = Server.Disponibile();   Se (Client) {     Seriale.println("nuovo cliente");     una richiesta http termina con una riga vuota     Boolean currentLineIsVuoto = Vero;     Mentre (Client.Collegato()) {       Se (Client.Disponibile()) {         Char C = Client.Leggere();         Seriale.Scrivere(C);         se hai ottenuto alla fine della linea (ricevuto un nuovo numero di         carattere) e la riga è vuota, la richiesta http è terminata,         in modo da poter inviare una risposta         Se (C == 'n' && currentLineIsVuoto) {           inviare un'intestazione di risposta http standard           Client.println("HTTP/1.1 200 OK");           Client.println("Content-Type: text/html");           Client.println("Connessione: chiudi");  la connessione verrà chiusa dopo il completamento della risposta           Client.println("Aggiorna: 5");  aggiornare automaticamente la pagina ogni 5 sec           Client.println();           Client.println("<! HTML DOCTYPE>");           Client.println("<html>");           emettere il valore di ogni pin di ingresso analogico             Int sensorELettura = analogicOLettura(0);             Client.Stampare("ingresso analogico");             Client.Stampare("0");             Client.Stampare(" è ");             Client.Stampare(sensorELettura);             Client.println("<br />");           //}           Client.println("</html>");           Pausa;         }         Se (C == 'n') {           si sta iniziando una nuova linea           currentLineIsVuoto = Vero;         } Altro Se (C != 'A'r') {           hai ottenuto un personaggio sulla riga corrente           currentLineIsVuoto = False;         }       }     }     Concedere al browser web il tempo necessario per ricevere i dati     Ritardo(1);     Chiudere la connessione:     Client.Fermare();     Seriale.println("client disconnesso");   }
}

 

3. Il test 

Ora apriamo l'indirizzo IP nel nostro browser web e vediamo il valore del sensore. Il display viene aggiornato ogni 5 secondi.

 

 

Quindi è del tutto possibile collegare i sensori alla rete domestica senza ESP e senza Wlan.

E se non lo fai Microcontrollore compatibile con Arduino UnoR3 ha: vi presenteremo presto nel blog ulteriori moduli con cui è possibile integrare il microcontrollore con un cavo LAN nella rete.

Auguro a tutti un sacco di divertimento armeggiare, e dire addio fino alla prossima volta.

Il tuo Markus Neumann

 

Für arduinoProjekte für anfängerSensoren

1 Kommentar

Timo

Timo

Guten Abend,

wie kann ich die Werte mit einem zweiten Arduino auf dem Seriellen monitor auslesen. Also auch mit einem Ethernetshield. Finde leider kein brauchbares Beispiel im Netz

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert