LCD i2c problème

Bonjour,

Pour mon projet de régulation de chaufferie que est maintenant terminé, je dois installer une écran Joy-it SBC-LCD20x4 SBC.

Lorsque je fais le montage directement sur l'arduino, aucun soucis.

Cependant, quand je le branche sur la ligne que j'ai mis en place, ça ne marche plus... mon Arduino plante.

Ma ligne est en câble U72 1x4x0.5 (0.5mm2) monobrin. Elle fait approximativement 10m de long. J'ai une résistance de 1.9 ohm. La ligne croise perpendiculairement des câbles d'alimentations en 230v sur une distance de 5cm.

Après avoir testé brin par brin, je me suis rendu compte que c'est le SDA et SCL sur pin A4 et A5 qui font bugger l'Arduino.

Je ne comprends pas d'où provient le bug...

Merci d'avance pour votre aide !

Bonsoir,
Je crois que l'I2C est prevu pour fonctionner sur une courte distance moins d'un ou 2 mètres il me semble, donc 10m....

quelques infos ici

Un article à lire et un point à noter dans cet article

La distance maximale maître-esclave pour un bus I2C est d'environ un mètre et dépend de plusieurs facteurs comme la capacité électrique du bus ou le débit de transmission. Cette distance peut être sensiblement augmentée en passant par des interfaces spécifiques (un i2c-bus extender amplifie le courant débité par les broches SDA et SCL, ce qui augmente la portée du signal).

En pratique, même si c’est faisable en travaillant le câble, les pullup etc, I2C n’est pas du tout le choix conçu pour les longues distances. Les émetteurs-récepteurs CAN ou RS485 utilisés avec un UART offrent une solution robuste avec une bonne protection contre les défaillances, la résistance aux décharges électrostatiques, la vitesse, la distance, etc.,

I2C n'est pas du tout le choix conçu pour les longues distances.

+1

I2C= I.I.C = Inter Integrated Circuit
Ce bus a été conçu par Philips pour relier entre eux plusieurs circuits intégrés sur une même carte (téléviseur par exemple....)

Sur 10m les signaux SCL et SDA sont trop fortement dégradés pour que la communication soit viable.

Bonjour,

Merci beaucoup pour vos articles et le temps passé à me répondre.

En effet, je ne vais pas aller chercher plus loin. La longueur de la ligne en est la cause.

Le I2C n'est donc pas la solution. Cependant sans i2c ça devrait fonctionner. Du moins je l'espère.

:slight_smile:

Alors je me suis renseigné sur le protocole rs485 et le modbus, éléments qui m'étaient inconnus jusqu'à ce jour.

Malheureusement je n'ai pas les connaissances pour comprendre son fonctionnement.

Je préfère donc tenter de me raccorder sans le module I2C.
Sauf si il existe un emmeteur/récepteur rs485 a plugger sur le fil. Ce que je n'ai pas trouvé...

Si vous avez des infos je suis preneur!

:slight_smile:

Ce que vous voulez faire c'est déporter l'affichage si j'ai bien compris et le mettre à 10m de l'Arduino.

Pouvez vous inverser et mettre les 10m de fils de l'autre côté ? Qu'est-ce que l'arduino commande ?

Oui j'y ai déjà pensé. Cependant ça devient compliquer de passer tout les câbles de commande de pompe et sondes jusqu'à l'endroit désiré.

Sinon j'ai pensé à ce type de module:

https://sandboxelectronics.com/?product=active-i2c-long-cable-extender-p82b715-module

Vous en pensez quoi ?
Cela m'a l'air relativement simple à mettre en place.

OK

Je n'ai jamais joué avec mais il existe sinon des écrans "LCD TFT UART" --> ils ne se pilotent pas en I2C mais par le port série. Pour transporter le signal sur une longue distance on peut utiliser alors un "UART TTL to RS485 Two-way Converter"

Port Série Arduino <--> UART to RS485 <====== (RS485) ======> RS485 to UART <----> Port Série écran

la partie bleue c'est votre long fil et vous mettez un convertisseur en sortie de l'arduino et en entrée de l'écran.

En I2C des buffers existent pour travailler sur plusieurs mètres. (= rallonge I2C !)
N.B : Je ne fait qe signaler leur existence et n'en ai jamais mis en oeuvre.

Un article de Texas Instruments sur le sujet : https://www.ti.com/lit/an/scpa054/scpa054.pdf

Sinon tu peux aussi le déporter en passant par un nrf24l01 et un 2ème uno, mini ou micro qui gérera l'affichage

nrf24l01

Et par la suite tu pourras y ajouter d'autres projets

Merci pour vos réponses. Pour l'instant je me penche sur les booster de signal BOB-14589.

Je vous tiens informé.

Le NRF24i01 me convient partiellement en raison des 2 Arduino et du peu de place à dispo.

Solution a envisager après coup.

si vous êtes en environnent "industriel" (pompes, moteurs, courant forts, murs épais, humidité) la partie radio n'est pas forcément la plus robuste mais à envisager.

Côté place un Arduino Micro ou Nano c'est pas bien gros, vous auriez juste à brancher les 4 fils pour le LCD et la communication. On trouve même des "RF-Nano" maintenant qui embarquent la partie radio

donc vous avez dans un module de 48mm*19mm et quelques mm de hauteur à la fois l'arduino et la radio... comparé à la taille de votre LCD ce n'est pas grand chose

Cette solution me semble adéquat à mon problème. Je testerai en second si les booster ne font pas le travail.

Merci