Modules TFT et Ethernet en même temps sur un Ardiuno UNO ?

Bonjour,

J'avance sur mon projet domotique.
Avant de choisir des matériels j'avais expliqué mon projet en détail pour valider la faisabilité et le choix des composants (https://forum.arduino.cc/index.php?topic=671582.0)

J'ai pu tester les écrans tactiles TFT 2.8" (https://www.amazon.fr/gp/product/B0749N3S33/) basés sur des ILI9341 avec les librairies Adafruit_GFX.h, Adafruit_ILI9341.h et URTouch.h

Un peu déçu, ces écrans sont très lents il va falloir que je conçoive judicieusement l'interface utilisateur sinon l'utilisation sera très pénible.

Je dois maintenant tester les modules Ethernet à base de W5100 (https://www.amazon.fr/gp/product/B07CJYXLWW)

Il va sans dire que le module Ethernet doit fonctionner AVEC l'écran TFT tous deux branchés sur l'Arduino UNO. L'écran TFT et le module Ethernet utilisent le bus SPI qui est prévu pour utiliser plusieurs périphériques, j'avais vérifié ce point avant.

Première déconvenue : en épluchant les docs et les tutoriels avant de tenter de faire marcher le module Ethernet, je découvre qu'il est plein de défauts (The W5100 bug(s) – and how to fix it (them) – Arduino, ESP8266, ESP32 & Raspberry Pi stuff) C'est assez gonflant de découvrir ça après avoir acheté un produit qui m'a été recommandé.

En particulier, il faut :

  • soit faire fonctionner le module Ethernet seul sur le bus SPI
  • soit bricoler le module Ethernet en soudant un fil sur un composant CMS et en ajoutant un inverseur low voltage externe... c'est à dire le genre de truc que voulais absolument éviter (fiabilité du bricolage, risque d'endommager la carte, bidouille à refaire 'n' fois et en cas de remplacement/réparation)

Pas de soucis, je n'ai qu'à câbler l'afficheur TFT sur d'autres broches... après tout, la commande Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO); permet de choisir avec #define le numéro des broches

Là aussi, ça ne fonctionne pas... j'ai fini par trouver dans un forum en anglais que la librarie Adafruit doit utiliser les broches SPI de l'Arduino et aucune autre... La encore c'est pas clair, la doc et le code source laisse croire que la librairies est versatile et permet d'utiliser les broches que l'on veut.

Avant de résoudre ces problèmes de câblages, j'ai commencé à créer un programme, en partant de mon exemple qui fonctionne avec l'afficheur TFT et sa dalle tactile, et en ajoutant juste les librairies et le code de base nécessaire pour initialiser le module Ethernet... Voilà la troisième déconvenue : la mémoire de l'Arduino UNO est occupée à 80% - autrement dit, il ne reste pas grand chose pour mon programme...

Petite question : est-ce possible de m'en sortir :

  • réussir à faire fonctionner l'écran TFT sur d'autres broches
  • optimiser le code des librairies en supprimant ce que je ne vais pas utiliser pour libérer un peut de mémoire

Ou bien faut-il que j'abandonne les Arduino UNO pour n'utiliser que des Arduinos MEGA et acheter d'autres modules Ethernet ?

Je suis conscient qu'il faut bien préparer son projet en amont, se renseigner et faire des recherches avant de choisir un produit et de commencer à câbler. Et c'est ce que j'ai fait, on m'a conseillé des produits (Arduino UNO, les TFT, les modules Internet) que j'ai acheté en plusieurs exemplaires, et ces produits se révèlent pas assez puissants ou non conformes. Les défauts des modules Ethernet n'ont été indiqués ni dans les commentaires des sites marchants, ni dans les réponses que j'ai eue...
Bref un immense gâchis (5 Arduinos UNO, 4 écrans TFT, 5 modules Ethernet), beaucoup de temps perdus, et si je recommande du matériel je le recevrais en totalité que dans deux mois... pour peut être encore me retrouver avec des produits qui ne possèdent pas les caractéristiques requises...

Je commence a avoir de sérieux doutes sur l'écosystème Arduino...

Qu'en pensez vous ?

Mon besoin à la base est le suivant : faire des petites interface homme machine (écran + clavier ou écran tactiles) que je peux programmer, et qui seront reliées via des câbles Ethernet à une carte électronique qui fera office d'unité centrale.

Merci

A bientôt

pourquoi poster 2 fois ??? ?

Un peu déçu, ces écrans sont très lents

Oui, mais beaucoup plus rapides sur ESP8266.

  • soit faire fonctionner le module Ethernet seul sur le bus SPI

Pas tout à fait vrai. Un W5100 + carte SD fonctionnent très bien ensemble.
Il faut simplement initialiser le W5100 en premier : un-web-server-sur-ethernet

Pourquoi forcément de l'Ethernet et pas du WIFI ?

Ici un projet avec ESP8266 et TFT ILI9341 :
un-afficheur-tft-pour-domoticz

electroremy:
Première déconvenue : en épluchant les docs et les tutoriels avant de tenter de faire marcher le module Ethernet, je découvre qu'il est plein de défauts (The W5100 bug(s) – and how to fix it (them) – Arduino, ESP8266, ESP32 & Raspberry Pi stuff) C'est assez gonflant de découvrir ça après avoir acheté un produit qui m'a été recommandé.

Microquetas vous a dit

tout le matériel existe, pour toutes les machines (Arduino compris avec des adaptateurs à W5100 ou W5500 à pas cher),

Où avez vous vu une recommendation pour un module particulier? le W5500 est plus récent (et pas cher).

Et c'est ce que j'ai fait, on m'a conseillé des produits (Arduino UNO, les TFT, les modules Internet)

Moi j'ai lu @hbachetti qui disait

J'aurais plutôt opté pour ARDUINO NANO, plus compact, ou PRO MINI, moins consommateur.

Je suis conscient qu'il faut bien préparer son projet en amont, se renseigner et faire des recherches avant de choisir un produit et de commencer à câbler

En fait il ne faut pas hésiter à acheter différents produits et faire des vrais tests avant de commander en quantité pour le produit final...

Bonjour,

D'abord désolé pour le double post qui est une fausse manip, et on ne peut pas supprimer ses messages sur le forum :confused:

Le choix du filaire s'est imposé par rapport au WIFI pour plusieurs raisons ... la principale étant qu'il n'est pas possible d'avoir une couverture WIFI correcte partout avec des murs en pierre de 50 cm :grinning:

J'ai fait des tests avec un ESP8266... la fameuse carte "pretzel" (voir https://forum.arduino.cc/index.php?topic=676445.0)
Ca ne fonctionne vraiment bien que lorsque le niveau de WIFI est correct.
Et parfois la carte ne démarre pas du premier coup, il faut un reset pour qu'elle se connecte.

Le NANO est plus compact mais il a la même quantité de mémoire que le UNO.
J'aurais du être plus méfiant, 32ko ça a l'air beaucoup comparé aux µC type 8051 mais c'est faible pour les usages actuels...

Je n'ai pas tout acheté non plus, mais pour valider la faisabilité d'un réseau (et donc la gestion de collisions éventuelles) il faut faire des tests avec au moins 3 modules.
Le projet final comporte 8 interfaces.
J'ai acheté de quoi faire 4 interfaces + l'unité centrale à base d'Arduino MEGA. Dans mes achats il y a un Arduino UNO en rab, trop peur de griller la carte et de devoir attendre la livraison d'une nouvelle.

J'ai modifié un des modules Ethernet en ajoutant un transistor NPN et une résistance de 10K :

  • l'emetteur relié à GND
  • la base à la résistance de 10K, elle même reliée à la broche NSS
  • le collecteur relié à la fameuse broche SEN

Le module Ethernet ainsi modifié est relié aux broches SPI :
D13 CK
D12 MOSI
D11 MISO
D10 NSS

L'écran TFT et la dalle tactiles sont reliées de cette façon :

#define TFT_CLK 13
#define TFT_MISO 12
#define TFT_MOSI 11
#define TFT_CS 2 // On change juste cette broche pour piloter aussi le module Ethernet avec le bus SPI
#define TFT_DC 9
#define TFT_RST 8
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO);

#define t_IRQ 7
#define t_MISO 6
#define t_MOSI 5
#define t_CS 4
#define t_SCK 3
URTouch ts(t_SCK, t_CS, t_MOSI, t_MISO, t_IRQ);

Après mise sous tension :

  • ça ne fume pas ;D
  • l'afficheur fonctionne (affichage + tactile)
  • le module Ethernet ne fait rien (normal, pas encore de code) mais les petites diodes s'allument

Électroniquement, à priori, pas de bourde donc.
Surtout, l'Arduino est bien capable de tout alimenter, pas besoin de 5V externe.

J'ai tenté de prendre un exemple d'utilisation du module Ethernet

Bien sûr, dans le setup() j'ai ajouté ces deux lignes de code :

digitalWrite(2,HIGH); // Pour désactiver le SPI de l'afficheur (la broche 2 est relié au CS de l'afficheur)
delay(750); // Nécessaire pour le module Ethernet qui a du mal à s'initialiser

Ca ne marche pas :

17:24:56.827 -> Initialize Ethernet with DHCP:
17:24:57.371 -> Failed to configure Ethernet using DHCP
17:24:57.405 -> Ethernet shield was not found. Sorry, can't run without hardware. :frowning:

Au moins ce retour sur la console série montre que l'Arduino n'est pas planté.

Dans la console d'adminstration de ma freebox, je ne vois pas le module Ethernet

Cependant, les différentes leds du module Ethernet clignotent...

J'ai eu l'idée de mesurer le +5V : seulement 4,30V, pas terrible... mais ça n'a pas empêché l'afficheur et la dalle tactile de fonctionner normalement.

Je débranche le rétroéclairage de l'afficheur, ça remonte à 4,70V
J'ai bien un niveau haut sur la broche 2 qui commande le CS du SPI de l'afficheur.

Mais le résultat est le même...

Des mesures me montrent que le transistor que j'ai ajouté a grillé (+4,70V des deux côtés de la résistance de 10K, et 3,3V sur le collecteur).
La broche SEN du module Ethernet est en permanence à 3.3V. Logiquement, cela :

  • ne devrait pas empêcher le module Ethernet de fonctionner
  • devrait empêcher l'écran de fonctionner
    Et... c'est exactement l'inverse ! :fearful:

Le module Ethernet ne fonctionne pas sans que je sache si cela a un rapport, en revanche je viens de téléverser à nouveau le programme juste pour mon afficheur et... il fonctionne parfaitement.

J'ai trouvé quelqu'un qui a réussi à faire à peu près la même chose que moi (Ethernet + TFT) avec un arduino UNO, malheureument il utilise un module Ethernet incompatible avec le miens https://www.instructables.com/id/Arduino-and-ENC28J60-Ethernet-Controller-320x480-T/

A bientôt

Pour en avoir le coeur net, je décide de refaire le test, en prenant un autre Arduino UNO et un autre module Ethernet non modifié.

Alors ca a “presque” marché une fois :

18:06:25.439 → Initialize Ethernet with DHCP:
18:07:26.086 → Failed to configure Ethernet using DHCP
18:07:27.072 → connecting to www.google.com
18:07:27.106 → connection failed
18:07:27.140 →
18:07:27.140 → disconnecting.
18:07:27.140 → Received 0 bytes in 0.0000, rate = 0.00 kbytes/second

Mais plus ensuite :

18:08:05.070 → Initialize Ethernet with DHCP:
18:08:05.648 → Failed to configure Ethernet using DHCP
18:08:05.682 → Ethernet shield was not found. Sorry, can’t run without hardware. :frowning:
18:08:52.185 → Initialize Ethernet with DHCP:
18:08:52.729 → Failed to configure Ethernet using DHCP
18:08:52.763 → Ethernet shield was not found. Sorry, can’t run without hardware. :frowning:
18:09:02.076 → Initialize Ethernet with DHCP:
18:09:02.654 → Failed to configure Ethernet using DHCP
18:09:02.688 → Ethernet shield was not found. Sorry, can’t run without hardware. :frowning:

Je remarque que la puce sur le module Ethernet chauffe pas mal mais sans être brulante (on est sous les 50°C)

Voilà le code

/*
  Web client

 This sketch connects to a website (http://www.google.com)
 using an Arduino Wiznet Ethernet shield.

 Circuit:
 * Ethernet shield attached to pins 10, 11, 12, 13

 created 18 Dec 2009
 by David A. Mellis
 modified 9 Apr 2012
 by Tom Igoe, based on work by Adrian McEwen

 */

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

// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

// if you don't want to use DNS (and reduce your sketch size)
// use the numeric IP instead of the name for the server:
//IPAddress server(74,125,232,128);  // numeric IP for Google (no DNS)
char server[] = "http://www.google.com";    // name address for Google (using DNS)

// Set the static IP address to use if the DHCP fails to assign
IPAddress ip(192, 168, 123, 177);
IPAddress myDns(192, 168, 123, 1);

// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;

// Variables to measure the speed
unsigned long beginMicros, endMicros;
unsigned long byteCount = 0;
bool printWebData = true;  // set to false for better speed measurement

void setup() {
  // You can use Ethernet.init(pin) to configure the CS pin
  Ethernet.init(10);  // Most Arduino shields
  //Ethernet.init(5);   // MKR ETH shield
  //Ethernet.init(0);   // Teensy 2.0
  //Ethernet.init(20);  // Teensy++ 2.0
  //Ethernet.init(15);  // ESP8266 with Adafruit Featherwing Ethernet
  //Ethernet.init(33);  // ESP32 with Adafruit Featherwing Ethernet
  digitalWrite(2,HIGH); // Pour désactiver le SPI de l'afficheur (la broche 2 est relié au CS de l'afficheur)
  delay(750); // Nécessaire pour le module Ethernet qui a du mal à s'initialiser
  
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

  // start the Ethernet connection:
  Serial.println("Initialize Ethernet with DHCP:");
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // Check for Ethernet hardware present
    if (Ethernet.hardwareStatus() == EthernetNoHardware) {
      Serial.println("Ethernet shield was not found.  Sorry, can't run without hardware. :(");
      while (true) {
        delay(1); // do nothing, no point running without Ethernet hardware
      }
    }
    if (Ethernet.linkStatus() == LinkOFF) {
      Serial.println("Ethernet cable is not connected.");
    }
    // try to congifure using IP address instead of DHCP:
    Ethernet.begin(mac, ip, myDns);
  } else {
    Serial.print("  DHCP assigned IP ");
    Serial.println(Ethernet.localIP());
  }
  // give the Ethernet shield a second to initialize:
  delay(1000);
  Serial.print("connecting to ");
  Serial.print(server);
  Serial.println("...");

  // if you get a connection, report back via serial:
  if (client.connect(server, 80)) {
    Serial.print("connected to ");
    Serial.println(client.remoteIP());
    // Make a HTTP request:
    client.println("GET /search?q=arduino HTTP/1.1");
    client.println("Host: www.google.com");
    client.println("Connection: close");
    client.println();
  } else {
    // if you didn't get a connection to the server:
    Serial.println("connection failed");
  }
  beginMicros = micros();
}

void loop() {
  // if there are incoming bytes available
  // from the server, read them and print them:
  int len = client.available();
  if (len > 0) {
    byte buffer[80];
    if (len > 80) len = 80;
    client.read(buffer, len);
    if (printWebData) {
      Serial.write(buffer, len); // show in the serial monitor (slows some boards)
    }
    byteCount = byteCount + len;
  }

  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    endMicros = micros();
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
    Serial.print("Received ");
    Serial.print(byteCount);
    Serial.print(" bytes in ");
    float seconds = (float)(endMicros - beginMicros) / 1000000.0;
    Serial.print(seconds, 4);
    float rate = (float)byteCount / seconds / 1000.0;
    Serial.print(", rate = ");
    Serial.print(rate);
    Serial.print(" kbytes/second");
    Serial.println();

    // do nothing forevermore:
    while (true) {
      delay(1);
    }
  }
}

Je ne vois pas pourquoi tu fais cette modification de la carte Ethernet.
J'estime avoir suffisamment travaillé avec pour affirmer que c'est inutile.

Un forum en anglais suggère qu'il faut modifier w5100.h

Un anglophone a remarqué que son module w5100 ne marche qu'avec l'ancienne version de la librairie.

En effet, dans le répertoire qui contient la librairie Ethernet.h, se trouve le fichier w5100.h

Voici ce qu'il contient :

// Safe for all chips
#define SPI_ETHERNET_SETTINGS SPISettings(14000000, MSBFIRST, SPI_MODE0)

// Safe for W5200 and W5500, but too fast for W5100
// Uncomment this if you know you'll never need W5100 support.
//  Higher SPI clock only results in faster transfer to hosts on a LAN
//  or with very low packet latency.  With ordinary internet latency,
//  the TCP window size & packet loss determine your overall speed.
//  #define SPI_ETHERNET_SETTINGS SPISettings(30000000, MSBFIRST, SPI_MODE0)

C'est bon à savoir, mais pas évident !

Cette fois ci je pense avoir trouvé une partie de la solution

Je commente la première ligne et décommente la dernière...

Bien sûr j'ai vérifié dans le résultat détaillé de la compilation que c'est bien la librairie que j'ai modifié qui a été utilisée.

J'ai testé le câble réseau que j'utilise, il fonctionne parfaitement, en gigabit avec un ordi portable.

J'ai testé avec un crossover adaptateur, aucun effet non plus sur les résultats.

Ca ne fonctionne toujours pas, seul les deux premiers essais ont été moins mauvais :

19:17:12.073 -> Initialize Ethernet with DHCP:
19:18:12.713 -> Failed to configure Ethernet using DHCP
19:18:13.733 -> connecting to http://www.google.com...
19:18:15.091 -> connection failed
19:18:15.125 ->
19:18:15.125 -> disconnecting.
19:18:15.125 -> Received 0 bytes in 0.0000, rate = 0.00 kbytes/second
19:18:28.585 -> Initialize Ethernet with DHCP:
19:19:29.223 -> Failed to configure Ethernet using DHCP
19:19:30.243 -> connecting to http://www.google.com...
19:19:31.739 -> connection failed
19:19:31.739 ->
19:19:31.773 -> disconnecting.
19:19:31.773 -> Received 0 bytes in 0.0000, rate = 0.00 kbytes/second
19:20:15.491 -> Initialize Ethernet with DHCP:
19:20:16.035 -> Failed to configure Ethernet using DHCP
19:20:16.069 -> Ethernet shield was not found. Sorry, can't run without hardware. :frowning:
19:20:31.264 -> Initialize Ethernet with DHCP:
19:20:31.808 -> Failed to configure Ethernet using DHCP
19:20:31.876 -> Ethernet shield was not found. Sorry, can't run without hardware. :frowning:
19:20:48.329 -> Initialize Ethernet with DHCP:
19:20:48.907 -> Failed to configure Ethernet using DHCP
19:20:48.941 -> Ethernet shield was not found. Sorry, can't run without hardware. :frowning:

J'ai même essayé avec 10000000 au lieu de 30000000, sans amélioration.

A chaque essai, dans la console d'administration de la freebox, le port Ethernet concerné est toujours "inactif".

Les diodes du module clignotent pourtant régulièrement... Au moins j'ai un jeu de lumière :smiley:

Les internautes anglophones parlent d'un problème de résistance (500 Ohms au lieu de 50 Ohms) mais il ne concernerait pas le module que je possède. Je me demande si le problème ne viendrait pas de là... Comment mesurer ces résistances avec un ohmmètre sans rien griller ?

hbachetti:
Je ne vois pas pourquoi tu fais cette modification de la carte Ethernet.
J'estime avoir suffisamment travaillé avec pour affirmer que c'est inutile.

Les forums anglais expliquent que cette modif est nécessaire :

1iere partie "SPI bug" - la carte que je possède (funduino rouge) est exactement la même que sur les photos

J'ai modifié une des cartes que je possède et pas les autres, et ma modif est réversible avec trois coup de fer à souder.

Le fait que l'afficheur fonctionne quand même aurait tendance à te donner raison et donner tort aux anglais...

D'ailleurs ils expliquent bien, avec le problème des résistances, ou encore le problème du reset, que les cartes n'ont pas les mêmes défauts en fonction de leur date de fabrication.

Là le problème est autre... que ce soit la version modifiée ou originale, je n'arrive pas à faire fonctionner le code exemple, même en adaptant la vitesse du SPI comme indiqué dans mon post précédent.

J'ai, pas toujours, l'erreur inquiétante "Ethernet shield was not found. Sorry, can't run without hardware" qui arrive tout de suite.

Et de temps en temps l'affichage dans le moniteur reste bloqué environ une minute sur "Initialize Ethernet with DHCP" et ensuite il affiche :
19:33:55.605 -> Failed to configure Ethernet using DHCP
19:33:56.592 -> connecting to http://www.google.com...
19:33:56.626 -> connection failed
19:33:56.660 ->
19:33:56.660 -> disconnecting.
19:33:56.660 -> Received 0 bytes in 0.0000, rate = 0.00 kbytes/second

Ma freebox ne voit jamais la carte.
Problème matériel, logiciel ou les deux ?

Je vais déballer les autres modules et les tester. Ce serait vraiment pas de chance s'il était tous défectueux.

Pour les modules Arduino, je n'ai pas acheté des clones chinois mais les originaux.
Je me demande si pour les écrans ou les modules Ethernet je n'aurais pas du acheter des modules plus chers mais de meilleure qualité... mais est-ce que ça existe ? Et surtout où les acheter pour ne pas se retrouver avec une contrefaçon ?

J'ai, pas toujours, l'erreur inquiétante "Ethernet shield was not found. Sorry, can't run without hardware" qui arrive tout de suite.

Problème de connexion SPI. Pas la peine de chercher plus loin.
Prends les problèmes un par un.
Teste la carte Ethernet seule avec l'exemple WebServer.

tant que vous avez

19:18:12.713 -> Failed to configure Ethernet using DHCP

rien ne fonctionnera non plus (peut découler du souci de connexion SPI)

Les derniers tests ont été fait deux fois (module Ethernet seul et module Ethernet avec écran TFT)

Alors j'ai testé les 4 modules que je possède seuls (sans l'écran TFT, juste avec l'arduino UNO)

(j'ai du perdre le 5ième dans mon fourbi...)

On arrive toujours à ce résultat au mieux :

19:48:02.130 -> Initialize Ethernet with DHCP:
19:49:02.783 -> Failed to configure Ethernet using DHCP
19:49:03.769 -> connecting to http://www.google.com...
19:49:05.606 -> connection failed
19:49:05.606 ->
19:49:05.640 -> disconnecting.

Toujours pas visible par la freebox "port Ethernet inactif"

Comme suggéré, j'ai testé l'example WebServeur :

20:06:42.668 -> Ethernet WebServer Example
20:06:43.246 -> server is at 192.80.1.177
20:07:22.844 -> Ethernet WebServer Example
20:07:23.422 -> server is at 128.80.123.0
20:10:25.488 -> Ethernet WebServer Example
20:10:26.031 -> server is at 192.80.123.177
20:10:35.751 -> Ethernet WebServer Example
20:10:36.328 -> Ethernet shield was not found. Sorry, can't run without hardware. :frowning:
20:10:41.121 -> Ethernet WebServer Example
20:10:41.699 -> Ethernet shield was not found. Sorry, can't run without hardware. :frowning:
20:10:44.520 -> Ethernet WebServer Example
20:10:45.064 -> server is at 128.80.123.99

Les adresses du serveur sont bizarres, j'ai indiqué IPAddress ip(192, 168, 123, 177)

Le module n'est toujours pas visible par ma freebox

Chose intéressante : le module ne m'affiche pas l'erreur "Ethernet cable is not connected" si je débranche le câble réseau du module...

J'ai débranché le câble réseau du module, appuyé sur le bouton Reset de l'Arduino, et voici ce qu'il m'a affiché dans le moniteur série :

20:14:26.694 -> Ethernet WebServer Example
20:14:27.237 -> server is at 128.80.123.0

C'est franchement bizarre !

J'ai utilisé un petit microscope vidéo usb pour lire les références des résistances sur la carte

Je vois, à proximité du connecteur Ethernet, 4 résistances portant le marquage "68C"
Je pense qu'il s'agit en fait de "680", la partie droite du "0" ayant été bouffé ou mal inscrite lors de la fabrication

Ce sont donc des résistances de 68 Ohms (au lieu des 50 Ohms requis) mais ça ne devrait pas poser de problèmes (même avec des valeurs de 100 Ohms ça fonctionne dixit les anglais)

Je me demande aussi quelle longueur max doivent avoir les fils reliant les broches SPI au module Ethernet ?
J'utilise les fameux câbles nappe avec broches qui mesurent 200 mm de long.
Néanmoins, même en baissant beaucoup la vitesse du SPI (passée de 14000000 à 1000000) je n'ai pas d'amélioration.

Ces fils n'ont posé aucun problème avec l'afficheur TFT, mais il est très lent.

c'est qui la gamme d'adresse de votre réseau chez vous ?

10.0.xxxx ou 192.168.xxx

Bonjour,

Chez moi c’est 192.168.123.xxx

Le DNS est 192.168.123.254

Raison pour la quelle j’ai renseigné IPAddress ip(192, 168, 123, 177);

Les adresses de serveur que donne l’Arduino sont étranges… n’aurait-il pas du prendre 192.168.123.177 ?

A bientôt

J'ai essayé en mettant la vitesse du SPI bas (100000)

Avec l'exemple WebServeur : voilà ce que ça donne (j'ai appuyé sur le bouton reset plusieurs fois pour avoir ces différents affichages dans le moniteur) :

20:29:35.030 -> Ethernet WebServer Example
20:29:35.609 -> server is at 128.80.123.0
20:29:48.120 -> Ethernet WebServer Example
20:29:48.664 -> server is at 128.80.123.0
20:29:51.758 -> Ethernet WebServer Example
20:29:52.302 -> server is at 192.80.123.99
20:29:55.269 -> Ethernet WebServer Example
20:29:55.847 -> Ethernet shield was not found. Sorry, can't run without hardware. :frowning:
20:29:59.620 -> Ethernet WebServer Example
20:30:00.198 -> server is at 128.80.123.0

Avec l'exemple WebClient :

20:31:55.697 -> Initialize Ethernet with DHCP:
20:31:56.241 -> Failed to configure Ethernet using DHCP
20:31:56.309 -> Ethernet shield was not found. Sorry, can't run without hardware. :frowning:
20:32:04.808 -> Initialize Ethernet with DHCP:
20:32:05.384 -> Failed to configure Ethernet using DHCP
20:32:05.418 -> Ethernet shield was not found. Sorry, can't run without hardware. :frowning:
20:32:09.633 -> Initialize Ethernet with DHCP:
20:33:12.109 -> Failed to configure Ethernet using DHCP
20:33:13.129 -> connecting to http://www.google.com...
20:33:14.999 -> connection failed
20:33:14.999 ->
20:33:14.999 -> disconnecting.
20:33:15.033 -> Received 0 bytes in 0.0000, rate = 0.00 kbytes/second

Le module n'est toujours pas visible par la freebox (Port Ethernet inactif)

J'ai essayé de mesurer la valeur des résistances à l’Ohmmètre sur un module, je n'y arrive pas, il doit y avoir une sortie de vernis isolant dessus

Bonjour

Sur un module Ethernet hors tension et complètement débranché, j'ai mesuré à l'ohmmètre la résistance entre les bornes du connecteur Ethernet (hormis celles du POE)

La mesure semble montrer que toutes les broches du connecteur Ethernet sont en court-circuit (je m'attendais plutôt à trouver des valeurs correspondant aux résistances de 68 Ohms)

Cette mesure est peut être normale et lié aux composants présents sur la carte.

A bientôt

Bonsoir,

Si je dois recommander des modules Ethernet, que pensez vous du "Shield Ethernet SunFounder W5100" ?

Ou du ARDUINO ETHERNET SHIELD 2 officiel ? Plus cher mais avec un chip W5500 et la garantie de ne pas être ennuyé...

C'est un shield :

  • pas de câblage, connections courtes
  • fixation assurée (hé oui les modules Ethernet que j'ai acheté n'ont pas de trous de fixation !)
  • la plupart des broches d'E/S sont libres, pas de soucis pour connecter l'écran tactile et quelques autres produits si nécessaire, par rapport au câblage "volant" je vais juste perdre la broche d'E/S utilisée pour désactiver le lecteur de carte SD.

A bientôt

Bonsoir

La mesure semble montrer que toutes les broches du connecteur Ethernet sont en court-circuit (je m'attendais plutôt à trouver des valeurs correspondant aux résistances de 68 Ohms)

les embases Ethernet présentes sur les cartes contiennent le connecteur et un ensemble de transformateurs, il n'est pas surprennant de trouver des connections en quasi court-circuit

Voici par exemple l'intérieur d'une embase Ethernet répandue dans le monde Arduino : HR911105 de la société Hanrun

al1fch:
Bonsoirles embases Ethernet présentes sur les cartes contiennent le connecteur et un ensemble de transformateurs, il n'est pas surprennant de trouver des connections en quasi court-circuit

Voici par exemple l'intérieur d'une embase Ethernet répandue dans le monde Arduino : HR911105 de la société Hanrun

Oui, d'ailleurs je me souviens avoir démonté de vieux routeurs dans lequels ces transformateurs étaient visibles sur le circuit intégré

Cela me fait penser, c'est pour cette raison qu'on ne peut pas utiliser des connecteurs Ethernet qui contiennent ces transformateurs comme connecteurs pour autre chose...

Merci pour le schéma, c'est vrai quand on regarde le schéma de la carte on ne pense pas que le connecteur contient lui aussi des composants.

A bientôt

Bonsoir

J'ai fait quelques mesures de consommation de courant, avec une alimentation comprise entre 7 et 12V

Deux surprises :

  • le courant consommé est indépendant de la tension, donc pour avoir un bon rendement et éviter à l'alim de l'arduino de chauffer il vaut mieux une tension pas trop élevée;
  • le courant consommé est assez important, bien plus que ce que j'ai pu trouver :

UNO + TFT + TFT Led + Ethernet => 520 mA (4,68W)
UNO + TFT + Ethernet => 230 mA (2,07W)
UNO + TFT + TFT Led => 340 mA (3,06W)
UNO => 50 mA (0,45W)

Les puissances indiquées entre parenthèses sont sous 9V
C'est 2,5 fois plus à ce que je m'attendais.

Les puissances sont à comparer à mon Raspberry Pi 3B+, dont j'ai mesuré la consommation de seulement 1,86W dans les conditions suivantes :

  • shield Hifi Berry dac
  • distribution Linux Rune Audio
  • en lecture d'une radio en streaming
    Certes le Raspberry Pi n'avait pas d'afficheur... Et Rune Audio est configuré avec une interface uniquement de type serveur web, je n'ai pas activité l'affichage vidéo, Linux a du complètement désactiver les circuits vidéos.

Si j'ajoute à mon raspberry pi l'afficheur TFT SPI, il consommera moins que l'Arduino avec une puissance de calcul bien supérieure et un coût du même ordre de grandeur qu'un Arduino avec un shield Ethernet

Ca donne à réfléchir...

Avec les Raspberry Pi il y a tout de même des contraintes supplémentaires :

  • il faut lui fournir une alimentation 5V (ou même 5.1V) stable, donc pas possible de la véhiculer dans un long câble, il faut une alimentation (ou un bon convertisseur DC/DC) à proximité de chaque Raspberry Pi,
  • c'est un petit ordinateur, le temps de démarrage n'est pas négligeable, et surtout il faut l'arrêter proprement, il est difficilement envisageable de les allumer et de les éteindre souvent

A bientôt