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.
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.
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é...
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.
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