Internet : allumer une led

1) Matériel :
- Une carte Arduino, dans notre cas une Leonardo,
- Un « shield » Ethernet,
- Une Box Internet,
- Une Led et une résistance,
- Un câble USB (pour le chargement des programmes dans la carte Arduino),
- Un câble réseau pour la connexion du « shield »,
- Éventuellement une alimentation externe pour alimenter la carte Arduino (7 à 12V), qui alimentera elle-même la carte Ethernet.
2) Assemblage du « shield » :
Juste clipsez le « shield » sur la carte Arduino, la LED sera connectée, patte longue (positive) sur la borne « Digital 2 » (via une résistance de 300 Ω à 2KΩ) et la patte négative sur la Masse « GND ».
3) Ecriture d’un premier programme :
a) Préparation de la connexion internet :
Il faut assigner à notre « shield » internet arduino une adresse IP fixe. Pour cela il convient de déterminer une adresse M.A.C. (Media Access Control) destinée à identifier physiquement la carte. N’importe quel groupe de 6 octets inscrit en hexadécimal peut être utilisé à condition de ne pas correspondre à un dispositif physique de votre réseau local. Par soucis d’homogénéité avec mon réseau j’ai choisi l’adresse MAC 00:AD:BE:EF:FE:50 et l’adresse IP 192:168:0:50
Il faut ensuite indiquer à votre routeur ces informations. Comme j’utilise la FreeBox, Révolution, il suffit de se connecter à l’interface et de sélectionner la ligne routeur

Puis d’assigner une adresse ipFixe dans la section « bauds permanents » :

Pour pouvoir accéder sur internet, il faut ouvrir un port :

b) Ecriture du programme :
Le programme est disponible ici
c) Lancement :
Téléversez, la fenêtre de debug devra s’afficher comme si dessous : (pour l’activer Ctrl+Maj+M) :

Si vous n’obtenez pas l’adresse IP appuyez sur le bouton Reset du Shield (voire de la carte Arduino).
Pour activer la LED, saisissez dans un navigateur l’adresse IP soit locale : http://192.168.0.50/ Soit Internet : <Adresse_IP_De_Votre_Box>:<Le_port_Choisi>. La Led clignotera tant que la page du navigateur sera active et la fenêtre de debug affichera :

Annexe :
/* WebServer_Led_V0_2
Basé sur l’exemple WebServer
utilisant un Ethernet shield.
Circuit:
* Ethernet shield rattaché via le port SPI à une Arduinon LEONARDO
* Une LED branchée sur les broches DIGITAL 2 (+) et la Masse (-) GND
created 18 Dec 2009
by David A. Mellis
modified 22 Mars 2013
by AndroLogiciels
*/
#include <SPI.h>
#include <Ethernet.h>
// Déclaration des adresses MAC et IP
byte mac[] = {
0x00, 0xAD, 0xBE, 0xEF, 0xFE, 0x50 };
IPAddress ip(192,168,0,50);
// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);
// — constantes des broches —
const int LED=2;
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
Serial.print(« server is at « );
Serial.println(Ethernet.localIP());
pinMode(LED, OUTPUT); //met la broche en sortie
}
void loop() {
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
Serial.println(« new client »);
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// if you’ve gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply
if (c == ‘\n’ && currentLineIsBlank) {
// 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();
client.println(« <!DOCTYPE HTML> »);
client.println(« <html> »);
// add a meta refresh tag, so the browser pulls again every 5 seconds:
client.println(« <meta http-equiv=\ »refresh\ » content=\ »5\ »> »);
digitalWrite(LED,HIGH); // met la broche au niveau haut (5V) – allume la LED
client.println(« </html> »);
break;
}
if (c == ‘\n’) {
// you’re starting a new line
currentLineIsBlank = true;
}
else if (c != ‘\r’) {
// you’ve gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(2000);
// close the connection:
client.stop();
Serial.println(« client disonnected »);
digitalWrite(LED,LOW); // met la broche au niveau bas (0V) – éteint la LED
}
}
J’aime ça :
J’aime chargement…
Votre commentaire