bonjour
je cherche à faire communiquer 2 Arduino (uno R3) avec Shield Ethernet (w5500) relier par un câble Ethernet.
une des deux Arduino pinguera des cameras puis enverra les informations à l'autre Arduino.
Le problème rencontrer est un problème de bibliothèque je pense si vous pouvez m'envoyer un duo de bibliothèque se mariant pour le projet ca m'intéresserai pour la suite de mon projet.
Je cherche actuellement depuis plusieurs jour avec les bibliothèques :
-Ethernet2
-ICMPPing
Salut
La librairie Ethernet comporte un exemple :
L'adresse IP est fixée dans le sketch mais on peut travailler aussi en DHCP comme ici :
Les adresses des différents interlocuteurs pourront ainsi être fixées sur la box, ce qui simplifie la gestion.
je vais regarder ceci merci
je n'ai pas cette librairie ou peut-on se la procurer ?
Ce fichier fait partie de la librairie Ethernet, que l'on peut installer à l'aide de gestionnaire de librairies de l'IDE ou ici.
j'ai compris c'est due au fait que j'utilise Ethernet2 donc moi ca s'appelle Ethernet2Udp.h
et j'ai une question je renvoie les info par le port par lequel je reçoit des informations ou je dois changer de port et si je peux faire les deux lequel serait mieux.
En général on utilise le même port.
d'accord
malgré les recherches mené durant toute cette journée je n'obtient pas de résultats
si quelqu'un d'autre que moi peut m'expliquer les exemples ou m'en faire un plus simple ou je me replongerais dedans ensuite je sais qu'il faut deux programmes pour communiquer entre eux la avec l'exemple udp il n'y avait pas de maitres je ne sais pas s'il fallait en mettre un moi j'ai tester sans demain je reteste et cette fois ci avec.
Dans l'exemple UDPSendReceiveString :
- lignes 71 + suivantes : l'exemple reçoit une requête. C'est donc un esclave (serveur)
- ligne 91 à 94 : l'exemple envoie une réponse à la requête
Je ne vois pas ce qui manque.
A noter : la librairie Ethernet2 est obsolète :
This library is no longer going to be used, since the official Arduino library has been updated and works great GitHub - arduino-libraries/Ethernet: Ethernet Library for Arduino
plutôt que de parler de maître et d'esclave, je préfère parler de client et de serveur, avec cette convention:
- le client est celui qui initie le dialogue (qui prononce la 1ère phrase)
- le serveur, lui, attend les requêtes de ses clients. Quand il reçoit une requête, il répond (ou pas) à son client, et se remet en attente de requête.
d'accord merci pour les precisions
le mieux serait de retourner en Ethernet?
Mais pour le ping dans le code j'utilise ICMPPing et ca fonctionne en partie.
Je peux ping les pc et camera mais je ne peux pas ping un Arduino avec un Arduino.
est ce que c'est normal sachant que bien sur j'avais donner une adresse au deux Arduino et mon câble fonctionne dans les deux sens?
Pour utiliser ICMPPing il faut utiliser Ethernet2 ensuite si vous avez une autre librairie à conseiller pour ping qui fonctionne avec Ethernet je suis preneur.
j'ai galérer à trouver une librairie pour ping.
oui je les ai vue est employer mais ca n'a quand même pas fonctionner.
j'ai trouvé une doc qui expliquait toutes les fonctions qu'on pouvait utiliser avec une explication.
Je les lie actuellement.
pour faire un point j'ai :
-un Shield Ethernet w5500 avec une carte Arduino uno R3
-les bibliothèque :
Ethernet2
ICMPPing adapter à la librairie Ethernet2
je peux évidemment les remplacer et recommencer
Je cherche a ping des cameras...
Et communiquer par Ethernet entre les cartes.
pour ping j'ai trouver il suffit d'utiliser icmpping et ethernet2 et pour mon projet je n'ai plus besoin de communiquer entre deux Arduino.
#include <SPI.h>
#include <SD.h>
#include <Ethernet2.h>
#include <ICMPPing.h>
File myFile;
// nom du fichier
String filename = "texte";
byte mac[] = {0xA8, 0x61, 0x0A, 0xAE, 0xAB, 0x68}; // max address for ethernet shield
byte ip[] = {192,168,1,140}; // ip address for ethernet shield
// variable du programme pour boucle for
byte b=0, i;
// nombre d'adresses
byte nb;
// variable pour lire le fichier
String buffer;
// declaration pour ping
SOCKET pingSocket = 0;
ICMPPing ping(pingSocket, (uint16_t)random(0, 255));
void setup()
{
// start Ethernet
Ethernet.begin(mac, ip);
Serial.begin(9600);
// declaration de serial pour les commentaires
while (!Serial) {}
Serial.print("Initializing SD card...");
// carte sd detescter
if (!SD.begin(4))
{
Serial.println("initialization failed!");
while (1);
}
Serial.println("initialization done.");
}
void loop()
{
//ouverture du fichier
myFile = SD.open(filename + ".txt");
if (myFile)
{
// preparation a la lecture
Serial.println("Read " + filename + ".txt line by line:");
// si on peut lire le fichier
if (myFile.available())
{
// recuperation du nom du site
buffer = myFile.readStringUntil(';');
String site = buffer;
// recupération de l'adresse mail
buffer = myFile.readStringUntil(';');
String mail = buffer;
// recuperation du nombre d'adresse
buffer = myFile.readStringUntil(';');
nb = buffer.toInt();
// création d'un tableau pour toutes les adresses
byte addr[nb] [4];
Serial.println("remplissage du tableau");
// cette boucle pour remplir les lignes du tableau
for(i=0;b<nb;i++)
{
// cette boucle permet de passer d'une ligne à l'autre
if(i==3)
{
String buffer = myFile.readStringUntil(';');
addr[b][3]= buffer.toInt();
i=0;
b++;
}
String buffer = myFile.readStringUntil('.');
addr[b][i]= buffer.toInt();
}
// variable d'erreur
byte erreur[nb];
// initialisation de toutes les erreurs à 0
for (b=0;b<nb;b++)
{
erreur[b]=0;
}
// declaration de la variable du status
byte antenne[nb];
// boucle infini de ping
while(1)
{
Serial.println("ping");
// ping des adresses ip
for(b=0;b<nb;b++)
{
ICMPEchoReply echoReply = ping(addr[b], 4);
antenne[b]=echoReply.status;
}
// cette boucle permet de passer d'une réponse à l'autre
for (b=0;b<nb;b++)
{
// le ping a reussit ou non
if (antenne[b]==0)
{
Serial.println("test reussi");
// etat de l'erreur
erreur[b]=0;
}
else
{
Serial.println("test raté");
// boucle permetant de savoir si l'envoie de mail a eu lieu
if(erreur[b]==0)
{
Serial.println("envoie mail");
erreur[b]=1;
}
else
{
Serial.println("n'envoie pas de mail");
}
}
}
// attente de 10 minutes
delay (10000);
}
}
// fermeture du fichier
myFile.close();
}
else
{
Serial.println("error opening " + filename + ".txt");
while(1){}
}
}
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.