[Shield Ethernet] Communication entre 2 arduino

Bonjour,

Je suis sur un projet de manipulation a distance. Je m’intéresse donc au Shield Ethernet pour réaliser ca sur un réseau local.
Ce réseau est de classe B du coup j’ai déjà configurer un peu mes deux shields Ethernet et mes arduinos.
La connexion s’effectue bien mais je ne sais pas comment je peux envoyer une requete depuis le client vers le serveur.

J’ai pris un exemple tout simple.

Je souhaite pour le moment afin de comprendre, allumer une led connectée a l’arduino servant de serveur depuis un bouton poussoir connecté sur le Client.

Voici le code que je possède sur mon client :

#include <Ethernet.h>
#include <SPI.h>


byte mac[] = { 0x90, 0xA2, 0xDA, 0x0F, 0x1D, 0x44 };
byte ip[] = { 172, 16, 5, 174 };
byte server[] = { 172, 16, 5, 173 };

EthernetClient client;

void setup()
{
  Ethernet.begin(mac, ip);
  Serial.begin(9600);

  delay(1000);

  Serial.println("connecting...");

  if (client.connect(server, 23)) {
    Serial.println("connected");
  } else {
    Serial.println("connection failed");
  }
}

void loop()
{
  
 
}

Et le code coté arduino serveur :

#include <SPI.h>
#include <Ethernet.h>

// network configuration.  gateway and subnet are optional.

 // the media access control (ethernet hardware) address for the shield:
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0xBF, 0xC5 };  
//the IP address for the shield:
byte ip[] = { 172, 16, 5, 173 };    
// the router's gateway address:
byte gateway[] = { 172, 16, 0, 253 };
// the subnet:
byte subnet[] = { 255, 255, 0, 0 };

// telnet defaults to port 23
EthernetServer server = EthernetServer(23);

void setup()
{
  // initialize the ethernet device
  Ethernet.begin(mac, ip, gateway, subnet);

  // start listening for clients
  server.begin();
}

void loop()
{
  // if an incoming client connects, there will be bytes available to read:
  EthernetClient client = server.available();
  if (client == true) {
    // read bytes from the incoming client and write them back
    // to any clients connected to the server:
    server.write(client.read());
  }
}

Je me suis fortement inspiré de la doc anglaise trouvé sur le site d’arduino pour mettre ca en place et je m’en suis sorti. Mon problème est donc maintenant de faire une commande distante pour une led entre ces deux arduinos.

J’ai vu ces fonctions qui me paraissent plutôt pas mal mais je n’arrive pas a les faire fonctionner mais je vais essayer de décrire ce que j’ai compris sur la doc anglais sur le site arduino.

server.write(val) Pour envoyer une valeur a tous les clients connectés.
server.print(data) Pour envoyer des données en ASCII. Plus pour des données types textes nombres ?

client.write(val) Celle a laquelle je me suis fortement intéressé pour allumer ma led sans succès.
client.print(data) De même que pour le server mais côté client.

Le test avec le client.write n’as pas fonctionné. En effet avec l’outil moniteur arduino mon serveur ne me retourner pas la valeur envoyée. Pourtant la connexion été effectuée.

En réfléchissant un peu, ne devrais-je pas utiliser un client.print(data, 2) pour envoyer un HIGH en binaire pour ma LED ?

Je tiens à préciser, comme énoncé dans les règles que ceci est un projet de bac. Je connait les bases du C notamment la syntaxe ect… J’ai déjà réaliser quelques petits projets. De plus j’aimerais quand même a avoir a réfléchir a la mise en place sur mon projet c’est pour cela que je demande un exemple sur une led et un BP.

Je sais utiliser certaines librairies ‘basiques’ telles que celles des LCD, l’EEPROM ect… Je sais utiliser certains shields sauf l’ethernet. Je me suis toujours débrouillé avec la doc anglais mais je vous avoue que sur le shield et la syntaxe pour l’ethernet je seche… Voilà je pense avoir posé mes bases merci d’avance pour vos réponses !

bonjour, tu peux t'inspirer de l'exemple dans l'ide du mode server en envoyant une "requete" style http://172.16.5.173/?led1on ou /?led1off

Ah oui ! J'avait pas vu cet exemple. Je vais regarder un peu et essayer de mettre ça en place pour voir si ça marche ! Merci de ta réponse !

Bonjours,
J’ai pour projet de faire communiquer deux Arduino avec des Shield Ethernet,
coté serveur tout va bien voici mon code:
#include <SPI.h>
#include <Ethernet.h>
byte mac={
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
byte ip = {
192,168,5, 89};
byte gateway = {
192,168,5,55};

EthernetServer serveur(1337);
void setup() {
Ethernet.begin(mac,ip,gateway);
serveur.begin();
pinMode(9, OUTPUT);
digitalWrite(9,LOW);
}

void loop() {
EthernetClient client = serveur.available();
if(client && client.connected()){
if(client.available()>0){
switch(client.read()){
case ‘A’:
digitalWrite(9, HIGH);
delay(1000);
digitalWrite(9, LOW);

    break;
   
  case 'a':
  digitalWrite(9, LOW);
  break;
}

}
}

}

mon problème est que je débute et j’ai aucune idée de comment programmer un deuxième arduino pour qu’il envoie une requête avec un ‘A’ ou un ‘a’
Merci d’avance pour votre aide.