Bonjour,
Je suis en Terminale STI2D SIN, et bien évidemment je travail sur mon projet pour le BAC. Le principe est simple :
Commander en mode manuel ou automatique des lampes et un son qui passera d'une pièce à une autre en fonction de l'habitant.
Le mode automatique est dépendant de capteurs de présence installés dans les pièces 1 et 2. De cette manière, lorsque l'on change de pièce, la lumière et de la musique nous suivent.
Seulement il y a aussi un autre mode. Le mode manuel consiste en un site web permettant de contrôler à distance la lumière et les hauts-parleurs.
Ma partie dans ce projet à été presque terminée. En effet, je dois m'occuper de tout ce qui a un rapport avec la gestion web du projet. À l'aide d'une carne Arduino Ethernet, j'ai simplement connecté ma carte au réseau du lycée pour pouvoir avoir ce résultat :
J'ai utilisé des LEDs pour simuler les lampes et les Hauts-Parleurs. Seulement voilà, lorsque j'envoie une demande à l'arduino, la LED s'allume puis s'éteind automatiquement après. Ce n'est malheureusement pas ce que j'attendais... Il faudrait que la LED reste allumée tant qu'elle n'a pas reçus de nouvelle commande. mais justement, c'est là où je suis bloqué, je n'arrive pas à trouver la solution à mon problème.
En espérant que quelqu'un puisse me guider vers la bonne voie, je vous laisse mon programme ainsi que quelques informations qui pourraient vous êtres utiles.
Je travail avec :
• Une carte Adruino Ethernet.
• J'utilise le Shield ThinkerKit.
• Le réseau de mon lycée est un réseau Proxy.
Mon programme :
#include <SPI.h>
#include <Ethernet.h>
#include <EthernetClient.h>
#include <EthernetServer.h>
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0E, 0xD3, 0xFB }; //Adresse MAC
byte ip[] = { 172, 17, 0, 42 }; // Adresse IP
EthernetServer server(80); //Port du serveur
int ledPin1 = 3; // LED pin
int ledPin2 = 5; // LED pin
int ledPin3 = 6; // LED pin
int ledPin4 = 9; // LED pin
String readString = String(30); //string for fetching data from address
boolean LEDON1 = false; //Pin status flag
boolean LEDON2 = false; //Pin status flag
boolean LEDON3 = false; //Pin status flag
boolean LEDON4 = false; //Pin status flag
void setup(){
//start Ethernet
Ethernet.begin(mac, ip);
//Configurer les 3 Pins de sorties
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);;
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, HIGH);
//Activer la liaison de données Serie
Serial.begin(9600); }
void loop(){
//Créer la connection Client
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
//read char by char HTTP request
if (readString.length() < 30) {
//store characters to string
readString += c; }
//output chars to serial port
Serial.print(c);
//if HTTP request has ended
if (c == '\n') {
//lets check if LED should be lighted
//Controle Prise 1
if(readString.indexOf("L1=1")>0) {
//Pin mise a ON
digitalWrite(ledPin1, HIGH); // Mettre la Pin a ON
LEDON1 = true;
}else if(readString.indexOf("L1=1")<0){
//Pin mise a OFF
digitalWrite(ledPin1, LOW); // Mettre la Pin a OFF
LEDON1 = false; }
//Controle Prise 2
if(readString.indexOf("L2=1")>0) {
//Pin mise a ON
digitalWrite(ledPin2, HIGH); // Mettre la Pin a ON
LEDON2 = true;
}else if(readString.indexOf("L2=1")<0){
//Pin mise a OFF
digitalWrite(ledPin2, LOW); // Mettre la Pin a OFF
LEDON2 = false; }
//Controle Prise 3
if(readString.indexOf("L3=1")>0) {
//Pin mise a ON
digitalWrite(ledPin3, HIGH); // Mettre la Pin a ON
LEDON3 = true;
}else if(readString.indexOf("L3=1")<0){
//Pin mise a OFF
digitalWrite(ledPin3, LOW); // Mettre la Pin a OFF
LEDON3 = false; }
//Controle Prise 4
if(readString.indexOf("L4=1")>0) {
//Pin mise a ON
digitalWrite(ledPin4, HIGH); // Mettre la Pin a ON
LEDON4 = true;
}else if(readString.indexOf("L4=1")<0){
//Pin mise a OFF
digitalWrite(ledPin4, LOW); // Mettre la Pin a OFF
LEDON4 = false; }
// now output HTML data starting with standart header
client.println("HTTP/1.0 200 OK");
client.println("Content-Type: text/html");
client.println();
//Controle Relais par checkbox
client.println("<html><body>");
client.println("<font color=red><h1 align=center>-Lycee de la Communication - TERMINALE STI2D
<center>MAISON CUBELOFT</center></h1></font>");
client.println("<i><h1 align=center> Domotique : Gestion son et lumière </h1></i>");
client.println("<table border=3 align=center>");
client.println("<form method=get name=Prise>");
client.println("<tr>");
client.println("<td>");
client.println("<input type=CHECKBOX name=L1 value=1><b>Lumiere 1</b>");
client.println("</td>");
client.println("<td>");
client.println("<input type=CHECKBOX name=L2 value=1><b>Lumiere 2</b>");
client.println("</td>");
client.println("<td>");
client.println("<input type=CHECKBOX name=L3 value=1><b>HP 3</b>");
client.println("</td>");
client.println("<td>");
client.println("<input type=CHECKBOX name=L4 value=1><b>HP 2</b>");
client.println("</td>");
client.println("</tr>");
client.println("<tr>");
client.println("<td colspan=4>");
client.println("<p align=center><input type=submit value=Envoyer></p>");
client.println("</td>");
client.println("</tr>");
client.println("</form>");
client.println("</table>");
client.println("<p align=center>");
//Afficher statut prise 1
client.println("Lumiere 1 : ");
if (LEDON1)
client.println("<font color=green>ON</font>
");
else
client.println("<font color=red>OFF</font>
");
//Afficher statut prise 2
client.println("Lumiere 2 : ");
if (LEDON2)
client.println("<font color=green>ON</font>
");
else
client.println("<font color=red>OFF</font>
");
//Afficher statut prise 3
client.print("HP 1 : ");
if (LEDON3)
client.println("<font color=green>ON</font>
");
else
client.println("<font color=red>OFF</font>
");
//Afficher statut prise 4
client.println("HP 2 : ");
if (LEDON4)
client.println("<font color=green>ON</font>
");
else
client.println("<font color=red>OFF</font>
");
client.println("</p>");
client.println("</body></html>");
//Effacer la chaine pour lecture suivante
readString="";
}
//Arreter le client
client.stop();
}}}}}
Merci d'avance !
Cordialement