Bonjour,
Le titre de mon sujet peut faire peurmais ça n'a rien de compliqué
J'ai un serveur Arduino qui communique avec des clients Arduino en TCP/IP grâce aux shield Ethernet
Tout cela fonctionne très bien, les clients ont un écran tactile TFT et se comportent comme des "terminaux" vis à vis du serveur.
les client possèdent quelques broches I/O libres, et j'ai prévu dans mon serveur la possibilité de les lire et de les écrire.
Cela permet de "câbler" des capteurs sur les clients, de cette façon le serveur à accès à des capteurs déportés à proximité de chaque client.
Le but final de ce système est de créer un réseau domotique :
- le serveur est la "centrale"
- les clients sont des "interfaces homme machine" ; il y a un client dans chaque pièce de la maison
Avoir des capteurs sur les clients permet, par exemple, au serveur de mesurer la température dans chaque pièce.
Pour le moment, je ne fait que des opérations "directes" de lecture analogique des broches.
J'ai commencé à utiliser des capteurs I2C.
C'est mieux et cela permet de faire plus de choses.
Et justement, les broches I2C sont celles qui sont "libres" sur mes clients.
D'ou mon idée de permettre à mon serveur de lire des capteurs I2C branchés sur les clients.
Là, c'est un petit plus compliqué...
... en effet, chaque capteur I2C utilise I2C d'une façon différente, et en pratique, il faut, en plus d'inclure "wire.h", inclure une bibliothèque spécifique au capteur.
Je n'ai pas envie de faire comme ça.
Je souhaite que mes clients restent "des terminaux universels" et qu'ils soient capables de communiquer de façon universelle avec tout périphérique I2C, le code spécifique au périphérique I2C étant géré par le serveur.
En effet, j'ai réussit à avoir, pour la gestion de l'écran TFT, cet aspect "terminal universel", concrètement cela veut dire que pour modifier l'application domotique, je n'ai juste qu'à modifier le code du serveur, je n'ai pas besoin de modifier le code des clients.
Pour résumer, on peut dire que mes clients sont en quelque sorte des écrans TFT tactiles avec interface Ethernet.
C'est ce principe et cette philosophie qui fait tout l'intérêt de mon système et je souhaite le mettre en oeuvre pour la lecture de capteurs I2C.
Cela vous semble-t-il possible ?
Mon idée est d'ajouter dans mon protocole d'échange client/serveur des "instructions I2C" maison, exactement comme mes "instructions" d'affichages et de lecture de la dalle tactile
Par exemple, le serveur dit au client dans sa réponse
"demande au périphérique I2C avec l'adresse ZZ de faire XX"
ensuite le client le fait
puis enfin le client refait une requête au serveur avec dans sa requête les données envoyées par le capteur.
D'ailleurs rien ne m'empêche de mettre autre chose que des capteurs I2C, tout périphérique I2C pourrait être piloté.
Cela répond à une autre problématique : la limite la distance des connections entre les capteurs I2C et le serveur.
A bientôt
Partager