Problème entre la Freebox et l'arduino ethernet

Bonjour à tous !

J'ai un projet qui utilise un arduino uno pour contrôler des relais (3) selon la valeur fournie par un capteur. Je dois également avoir la possibilité de switcher les relais à distance, j'ai donc acheté le module ENC28J60 sur ebay à 3€, faute de budget...

http://www.ebay.fr/itm/262463644350?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

J'ai choisi (par pure fainéantise) d'utiliser l'application Blynk pour mon projet.

J'ai installé la librarie Blynk, et envoyé le sketch "Ethernet" à l'arduino, voici les résultats : En mode auto (DHCP) : Bloqué sur "Getting IP address" En mode IP fixe : "IP adress is : 0.0.0.0"

J'ai ensuite essayé d'envoyer l'exemple "ENC28J60", voici le résultat : http://www.cjoint.com/data/FHdbpCdOTxc_Capture-d%E2%80%99%C3%A9cran-9899-.png

Pour finir, j'ai désespérément installé la librarie EtherSia (qui ne s'occupe que de l'IPv6), a ma grande surprise la freebox détecte correctement l'arduino ! Mais du coup pas d'IPv4 et rien à voir avec Blynk... http://www.cjoint.com/data/FHdbsIVAqfc_Capture-d%E2%80%99%C3%A9cran-9895-.png http://www.cjoint.com/data/FHdbtsIMrjc_Capture-d%E2%80%99%C3%A9cran-9896-.png La je ne sais vraiment plus quoi faire, j'ai l'impression que je tourne en rond...

Si ça peut aider, je suis sous Windows 10, j'ai modifié l'adresse de ma freebox en 192.168.1.254 (au lieu de 192.168.0.254), la plage d'adresse va de .1.2 à .1.230, j'ai essayé 3 modules ethernet ENC28J60, même résultats.

Merci beaucoup de votre aide :)

Modifiez votre post et intégrez le tag image pour que l'on voit directement vos images - ou au moins mettez des liens clickables.

Pour blynk vous avez bien entendu remplacé les *************** de la chaîne de connexion avec votre token? (Juste pour être sûr...)

Votre freebox est elle bien configurée pour accepter tout nouveau client ethernet fixe? Si vous mettez un ordinateur inconnu au bout de ce même fil, il aura bien une adresse IP allouée par DHCP??

On aurait besoin d'un code de base, sans blynk, juste prenez un code d'exemple de base pour s'assurer que votre module est fonctionnel et enfin d'un dessin de comment vous branchez tout cela...

Modifiez votre post et intégrez le tag image pour que l’on voit directement vos images - ou au moins mettez des liens clickables.

→ Je vais de suite éditer ça…

Pour blynk vous avez bien entendu remplacé les *************** de la chaîne de connexion avec votre token? (Juste pour être sûr…)

→ Effectivement, j’ai remplacé le “code” généré par l’appli par des ***, déjà que je n’arrive pas à utiliser mon système, alors si d’autres peuvent le faire à distance… :slight_smile:

Votre freebox est elle bien configurée pour accepter tout nouveau client ethernet fixe? Si vous mettez un ordinateur inconnu au bout de ce même fil, il aura bien une adresse IP allouée par DHCP??

→ Pour les nvx clients en eth fixe, je n’en sais rien… J’ai essayé de modifier les propriétés “IPv4” de ma carte ethernet, en mettant une IP fixe se situant dans la plage d’IP de la fbx et n’étant pas déjà attribuée, mon ordi n’a pas réussi à se connecter à la freebox. J’ai du repasser en Obtention auto de l’IP pour retrouver internet (et le LAN). Bien sûr, tout cela avec le même câble (Cat.7 SFTP) et le même port de la freebox que pour l’arduino. J’ai également essayé avec un autre port de la freebox et même avec un port de mon switch, même résultats.

On aurait besoin d’un code de base, sans blynk, juste prenez un code d’exemple de base pour s’assurer que votre module est fonctionnel et enfin d’un dessin de comment vous branchez tout cela…

→ Pour le dessin, le voici : http://www.cjoint.com/data/FHhbgycW6ac_shema-arduino-eth.png
Et pour le “code de base”, je n’ai pas bien compris. J’ai essayé le code WebServer de la librarie Ethernet, toujours le même résultat,
à savoir “server is at 0.0.0.0”, message en provenance du serial.
Côté Freebox, aucune adresse IP ni aucune MAC sur le port où est connecté l’arduino (alors que celui-ci clignotte orange sur l’arduino et derrière la freebox, et sur la page d’admin de la freebox le port est marqué “Actif”, je n’y comprends plus rien…
Ci-dessous ce fameux code :

/**************************************************************
 * Blynk is a platform with iOS and Android apps to control
 * Arduino, Raspberry Pi and the likes over the Internet.
 * You can easily build graphic interfaces for all your
 * projects by simply dragging and dropping widgets.
 *
 *   Downloads, docs, tutorials: http://www.blynk.cc
 *   Blynk community:            http://community.blynk.cc
 *   Social networks:            http://www.fb.com/blynkapp
 *                               http://twitter.com/blynk_app
 *
 * Blynk library is licensed under MIT license
 * This example code is in public domain.
 *
 **************************************************************
 *
 * This example shows how to use Arduino Ethernet shield (W5100)
 * to connect your project to Blynk.
 * Feel free to apply it to any other example. It's simple!
 *
 * NOTE: Pins 10, 11, 12 and 13 are reserved for Ethernet module.
 *       DON'T use them in your sketch directly!
 *
 * WARNING: If you have an SD card, you may need to disable it
 *       by setting pin 4 to HIGH. Read more here:
 *       https://www.arduino.cc/en/Main/ArduinoEthernetShield
 *
 **************************************************************/

#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <SPI.h>
#include <Ethernet.h>
#include <BlynkSimpleEthernet.h>

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "02fb1121cb3a4977b68192924c643bad";

//IPAddress server_ip (10, 0, 0, 10); // Not used

// Mac address should be different for each device in your LAN
IPAddress arduino_ip (192,168,1,177);
IPAddress dns_ip     (192,168,1,254);
IPAddress gateway_ip (192,168,1,254);
IPAddress subnet_mask(255,255,255,0);

void setup()
{
  Serial.begin(9600); // See the connection status in Serial Monitor
  Blynk.begin(auth, "cloud.blynk.cc", 8443, arduino_ip, dns_ip, gateway_ip, subnet_mask, "3e:ad:93:36:7d:9d");
}


void loop()
{
  Blynk.run();
}

En tout cas, merci beaucoup pour ton intérêt dans ce projet, ton aide m’a déjà permis m’explorer certains points, comme par exemple la freebox qui peut être la source du problème…

Bonne journée,
Adrien.

Up ? Je n'ai toujours pas résolu le problème... :confused:

Prenez vraiment un Code de base ethernet tout simple genre un truc qui se connecte et affiche son adresse IP

Est-ce que votre carte ethernet a une Mac adresse ?

Pour le code de base, je ne sais pas vraiment lequel prendre, ni où chercher, après en avoir essayé une bonne dizaines dans les exemples...

Pour l'adresse MAC je n'en sais rien, lorsque je ne précise pas une MAC dans le sketch, la freebox marque le port Inactif. Lorsque je met une adresse MAC au hasard (mais avec une syntaxe correcte), la freebox marque le port en Actif et affiche l'adresse MAC que j'ai précisé dans le sketch, mais aucune adresse IP n'est attribuée dans les 2 cas...

Essayez ce code

https://github.com/jcw/ethercard/blob/master/examples/getStaticIP/getStaticIP.ino

bonjour, teste avec ethernet2 https://github.com/adafruit/Ethernet2

Essayez ce code

https://github.com/jcw/ethercard/blob/master/examples/getStaticIP/getStaticIP.ino

J-m-l -> (Après avoir téléchargé et ajouté la librarie), le sérial n'affiche qu'une seule ligne :

[getStaticIP]

Côté freebox, le port est marqué Actif, aucune adresse MAC n'est affichée et aucune adresse IP n'est attribuée.

bonjour, teste avec ethernet2 https://github.com/adafruit/Ethernet2

infobarquee -> Je n'ai pas réussi à installer la librairie, ni même à la trouver... Dans les instructions ils parlent uniquement de l'installation de l'IDE arduino, Et dans la recherche de librarie de l'IDE, "ethernet2" est introuvable... J'ai cependant une librarie que j'avais déjà installé, "ethernet.h" Cette dernière présente exactement les mêmes exemples, sauf 1 ligne, "include Ethernet.h" devient "Include Ethernet2.h"

dans donwload tu as le zip https://github.com/adafruit/Ethernet2/archive/master.zip

tu modifie le rep Ethernet2-master en Ethernet2_master et tu ouvres les exemples

infobarquee: bonjour, teste avec ethernet2 https://github.com/adafruit/Ethernet2

bonjour, je ne pense pas que ta carte soit compatible ni avec la lib Ethernet (w5100) ni avec Ethernet2 (w5200 ou 5500) il faut utiliser la lib ethercard non compatible avec le code Ethernet ou UIPEthernet qui semble compatible

bonjour, je ne pense pas que ta carte soit compatible ni avec la lib Ethernet (w5100) ni avec Ethernet2 (w5200 ou 5500) il faut utiliser la lib ethercard non compatible avec le code Ethernet ou UIPEthernet qui semble compatible

Salut ! Je viens d'essayer UIPEthernet, résultat par sérial : "Failed to configure Ethernet using DHCP " Côté Freebox, port actif, aucune mac et aucune IP

Pour EtherCard, sur le sérial :

[testDHCP] MAC: 74:69:69:2D:30:31

Rien de plus, côté Freebox : idem que pour UIPEth

Merci pour vos réponses les gars :)

Finette57: Côté Freebox, port actif, aucune mac et aucune IP

certains ont affirmé ici que leur arduino ne fonctionnait pas sur un port de la freebox mais fonctionnait sur un port de switch , peux tu faire tes essais derriere ton switch et avec le code des exemples de chaque lib il y a aussi un doute sur la tension d'alimentation du module 3.3v ou 5v voir ici ???

Bonjour,

Alors j’ai une Freebox et je n’est pas rencontrer de problème avec se module et la librairie UIPEthernet. Voilà mon code si sa peux aider.

#include <UIPEthernet.h>

byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x65, 0x6f };
byte ip[] = { 192,168,1, 21 };

// Constante LED RGB
const int LED_RGB_Rouge    = 8;   
const int LED_RGB_Vert     = 9;
const int LED_RGB_Bleu     = 10;

// Création de l'objet server de type EthernetServer disponible sur le port 80
EthernetServer server(80);
String readString = String(30);
String LEDON = "";
void setup()
{
  // Initialisation de la connexion Ethernet 
  Ethernet.begin(mac, ip);
  // Démarrage du serveur WEB server
  server.begin();
  // Initialisation de la liaison série
  Serial.begin(9600);
  Serial.println("Setup.");
}

void LED(int Rouge, int Vert, int Bleu){ 
  analogWrite(LED_RGB_Rouge, Rouge);
  analogWrite(LED_RGB_Vert, Vert);
  analogWrite(LED_RGB_Bleu, Bleu);
}

void loop()
{
   
  //Ecoute des requetes client (browser WEB)
  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
            if(readString.indexOf("L=Bleu") >=0) { LEDON = "Bleu" ;}
            else if(readString.indexOf("L=Rouge") >=0) { LEDON = "Rouge";}
            else if(readString.indexOf("L=Vert") >=0) { LEDON = "Vert" ;}
            // now output HTML data starting with standart header
            client.println("HTTP/1.1 200 OK");
            client.println("Content-Type: text/html");
            client.println();
            //send first heading
            client.println("<font color='red'><h1>HTTP test routines</font></h1>");
            client.println("
<hr />");//some space between lines
            //controlling led via checkbox
            client.println("<h1>LED control</h1>");
            client.println("<form method=get name=LED><input type=CHECKBOX name=L value=Rouge>Rouge
<input type=CHECKBOX name=L value=Vert>Vert
<input type=CHECKBOX name=L value=Bleu>Bleu
<input type=submit value=submit></form>");
            client.println("
");
            //printing LED status
            client.print("<font size='5'>LED status: ");
            client.println("<font color='green' size='5'>"+LEDON);
            client.println("</body></html>");
            //clearing string for next read
            readString="";
            //stopping client
            client.stop();
 
        }
      }
    }
  }
  
  if(LEDON=="Bleu") {LED(0,0,255);}
  else if (LEDON == "Rouge") {LED(255,0,0);}
  else if (LEDON == "Vert") {LED(0,255,0);}
}

Côté Freebox, port actif, aucune mac et aucune IP

certains ont affirmé ici que leur arduino ne fonctionnait pas sur un port de la freebox mais fonctionnait sur un port de switch , peux tu faire tes essais derriere ton switch et avec le code des exemples de chaque lib il y a aussi un doute sur la tension d'alimentation du module 3.3v ou 5v voir ici ???

Salut ! Etant donné que je commençait à remettre en cause la Freebox à cause de mon échec de config d'un PC win 7 en IP fixe, ton idée tombait à pic... En fait, le port 4 de la freebox est relié à un switch Netgear 8 ports, lequel est relié à un autre switch 8 ports identique... J'ai donc essayé de mettre l'arduino (et mon pc, tant qu'à faire !) sur un port du premier switch, et j'ai essayé les codes Ethernet, Ethernet2, EtherSia (succès), EtherCard, UIPeth et (évidemment) Blynk, avec exactement les mêmes résultats que sur un port de la freebox. Par contre, le PC win 7 fonctionne parfaitement en IP fixe après le switch, alors que ce dernier refuse catégoriquement de se connecter avec les mêmes paramètres (même IP fixe et adresse de la passerelle) sur la fbx directement... J'y comprends plus rien... C'est pourtant un vrai switch et non un routeur ! Donc le Netgear n'a pas d'adresse IP de config, et pas de plage de ports séparé, lorsqu'une machine se connecte dessus, elle trouve une IP dans la plage de ports de la Freebox directement...

Sinon, j'ai essayé avec un vrai routeur, qui a son propre réseau en 192.168.0.x (au lieu de 192.168.1.x pour la freebox), les résultats sont similaires... J'ai également testé l'arduino chez un pote qui à la livebox 2 (la blanche), les résultats sont identiques, à la différence qu'en demandant une IP fixe, le sérial n'affiche même plus "IP is 0.0.0.0", ça reste bloqué dans le vide...

Sur ce, je vais tester le code de Flamby, avec une petite lueur d'espoir...

EDIT : Echec avec le code de Flamby :( J'ai le même module, la même box, mais chez moi rien ne marche :( Je sais plus où chercher...

Finette57: Je sais plus où chercher...

peut être de ce coté : il y a aussi un doute sur la tension d'alimentation du module 3.3v ou 5v ??? dans le lien que tu as donné pour ton module malgré la sérigraphie 5v il est écrit

Product Description: Brand new and high quality. chip board ENC28J60-I/SO. the board 25MHZ crystal. the network interface board HR911105A. 3.3 V power supply pin.

et dans le lien que je t'ai donné

Comme vous pouvez le constater, le module fonctionne en 3.3V. J'ai donc branché le module sur la sortie 3.3V de la Mega 2560. Cependant, cette sortie ne permet de tirer seulement 50mA et mes recherches sur Google me laisse penser à une consommation du module située entre 100 et 200mA. Dans un montage en "production", il est donc indispensable de passer par une alimentation obtenue à partir du 5V (avec un lm1117 par exemple). Pour les tests, celle de la carte peut suffire mais j'ai remarqué que quelques fois les LED d'activité réseau s'éteignaient et qu'aucune communication n'était plus possible. Une coupure de l'alimentation de l'Arduino permet de résoudre le problème. Selon Google, il pourrait aussi s'agir un problème de surchauffe du enc28j60 ... A suivre donc ...

j'ai aussi une freebox et j'utilise des W5100 sans pb (ip fixe ou DHCP) ....

peut être de ce coté : il y a aussi un doute sur la tension d'alimentation du module 3.3v ou 5v ???

Salut ! Effectivement, c'est peut-être la source du problème... Si l'alim n'était pas suffisante, ça serait donc normal qu'aucun code ni aucune box parvienne à fonctionner avec ce module...

Du coup j'essaie de l'alimenter en 5v dès que je rentre chez moi, et je posterai les résultats avec tous les codes cités précédemments (Ethernet, Ethernet2, UIPEthernet, Blynk et EtherCard, sans oublié EtherSia qui je le rappelle, fonctionne parfaitement en 3.3v avec la fbx...)

EDIT : Merci pour le Karma que vous avez fait augmenter, mais ça sert à quoi au juste, du moins qu'est-ce que ça indique ? C'est mon premier post ici, je connais pas encore tout :)

Je viens de déplacer le fil de 5v vers 3.3v, et j'ai envoyé à l'arduino les codes Ethernet, Blynk et UIPEth avec uniquement des résultats négatifs. t je suis trop crevé pour essayer les autres, lesquels ne devraient évidemment pas fonctionner mieux...

Rectification : j'ai déplacé le fil VCC du 3.3 au 5v... Effectivement, j'étais vraiment fatigué...