Bonjour,
J'utilise une arduino Duemilanove et un sheild ethernet.
J'utilise un petit programme qui permet d'allumer ou d'éteindre une led raccordée a un port de l'arduino et ceci depuis un programme en PHP.
ces 2 programmes sont inspirés de ce que l'on peût trouver sur le net.
Le tout fonctionne trés bien en web local avec un serveur Apache installé sur un des PC de mon ethernet.
Par contre lorsque je fais l'essai avec le programme PHP installé chez un hebergeur(LWS), en mettant l'adresse IP de ma box(SFR), l'arduino ne reçoit rien.
Code arduino :
#include <SPI.h> // gestion bus SPI
#include <Ethernet.h> // gestion ethernet
#include<EthernetUdp.h> // gestion UDP
byte mac[] = {0x90, 0xA2, 0xDA, 0x00, 0xEA, 0xF9}; // adresse Mac du module ethernet
IPAddress arduinoIP (192, 168, 1, 110); // adresse IP du module ethernet
unsigned int arduinoPort = 8888; // port écouté par arduino
char packetBuffer[UDP_TX_PACKET_MAX_SIZE];
EthernetUDP Udp;
String dataRX="";
int pin2 = 2;
void setup()
{
Serial.begin(9600);
Ethernet.begin(mac,arduinoIP); // connexion au reseau local
Udp.begin(arduinoPort); // écoute du port redirigé par le routeur
pinMode(pin2,OUTPUT); // Configure la pin 8 en sortie
} // setup
void loop()
{
Udp.beginPacket(arduinoIP,arduinoPort);
int packetSize = Udp.parsePacket();
if(packetSize)
{
Serial.print("TAILLE PACKET : ");
Serial.println(packetSize);
memset(packetBuffer, 0, UDP_TX_PACKET_MAX_SIZE);
Udp.read(packetBuffer,UDP_TX_PACKET_MAX_SIZE);
//Udp.endPacket();
dataRX=packetBuffer;
if(dataRX=="marche")
{
digitalWrite(pin2, HIGH);
}
else
{
digitalWrite(pin2, LOW);
}
}
else
{
delay(500);
Serial.println("Pas de connexion");
}
}
code PHP :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<?php
if(isset($_POST['chauffe']))
{
if($_POST['chauffe']=="MANUEL ON")
{
$message="marche";
}
else
{
$message="arret";
}
$host="192.168.1.110"; // Adresse ip de la carte arduino
$port="8888"; // Port défini dans le code arduino
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_sendto($socket, $message , strlen($message), 0, $host, $port);
socket_close($socket);
}
Else
{
echo" ";
}
header("Location:menu.php");
?>
</body>
</html>
J'ai fais le routage du port 8888 sur l'adresse ip de l'arduino ds ma box et j'ai configuré cette adresse en DMZ.
Malgré mes recherches, je ne vois pas comment résoudre ce Pb, si vous avez une idée
