Bonjour,
Bien sur que c'est possible.
La norme RS485 définit (rapidement) un principe de transport sur 2 paires torsadées.
A partir du moment que tes signaux séries sont des signaux TTL, je ne vois pas où est le problème.
@+
En complément a ce qu'a dit Icare j'ajoute que lors de création de la norme RS485 ils n'ont pas fait les même erreur que lors de la RS232.
La RS 232 mélange le protocole de transmission : débit, bits de start, de stop, parité, etc et le moyen physique : signaux entre +/- 12 V etc.
La RS 485 ne défini que le moyen physique : signaux différentiels 5V, le protocole de transmission est celui du RS232 .
Normalement, un "hello world" devrait fonctionner.
Oui. Tu peux mettre tes récepteurs en parallèle sur la ligne RS485. Tu peux aussi définir un protocole d'adressage pour savoir quel récepteur doit traiter le message.
S'il n'y a qu'un maitre sur la ligne qui parle à plusieurs esclaves pas de problème.
Par contre, si plusieurs cartes doivent parler sur la ligne il faudra gérer le RE/DE
plusieurs vont communiquer ensemble, ils vont juste envoyé des chaines de caractère
au pire des cas je peu faire une sorte de "clic" avec un compteur, à chaque clic, un envois ses données, puis le suivant, etc...
Comme le suggère fdufnews, le maître envoie les ordres et attends les réponses, les accusés de réception, etc. Toutes les communications devront passer par le maître. C'est la méthode la plus commode et l'assurance que la ligne est toujours disponible.
Cela suppose aussi d'interroger chacun des esclaves à tour de rôle pour savoir si un message doit être lu.
Personnellement, je n'ai jamais testé le multi-maîtres.
Salut,
il faut que tu définisses ton protocole (ou que tu utilises un protocole existant) :
un seul module peut émettre à la fois
un maître invite les autres modules, les esclaves donc, à émettre à leur tour
quand un module émet (le maître, ou un esclave à l'invitation du maître), il met la ligne DE/RE de son max485 à 1. Les autres modules sont en réception avec leur ligne DE/RE à 0.
Le fonctionnement peut être :
aléatoire comme conseillé ici, cad. le maître appel chaque esclave par son nom (lire son numéro ou son adresse)
ou séquentiel comme tu penses : le maître invite le premier esclave et les autres répondent à la suite, avec le risque toutefois que si un esclave ne répond pas, tout s'arrête
Tu peux raccorder une trentaine d'arduinos sur 2 fils. Un émet et tous entendent (sauf éventuellement celui qui émet)
Tu peux compléter ton bus avec des lignes d'alimentation et une ligne d'interruption (ligne qui permet à tout esclave de demander au maître une autorisation d'émettre
Tout est affaire de protocole.
N'importe quelle carte peut prendre la main sur le bus même s'il n'y a pas de maitre pour arbitrer. Il faut juste mettre en place un protocole régissant la prise du bus. C'est le cas dans les systèmes collaboratifs où il n'y a pas de maître mais où chacun dispense des données au profit de tous.
Avec un maître c'est simple, il peut envoyer des messages à tous (broadcast) ou alors il questionne et l'intéressé répond. Il suffit juste que chaque abonné est un identifiant unique.
Sans maître, il faut définir des règles fixant comment un abonné peut prendre le contrôle du bus. Test de la ligne avant de parler (ligne au repos depuis un certain temps), auto-contrôle des données envoyées (pour vérifier s'il n'y a pas de carambolage sur le bus), temps d'attente aléatoire avant de refaire une tentative pour limiter les risques de tentatives avortées.
ps : je viens de testé bêtement l'idée du rx tx , Serial et le max485, ça ne fonctionne pas, je suis sur que c'est un problème de code, mais avez vous un exemple ?
Gruniek:
ps : je viens de testé bêtement l'idée du rx tx , Serial et le max485, ça ne fonctionne pas, je suis sur que c'est un problème de code, mais avez vous un exemple ?
Yep!
Je ne comprends pas bien la question.
A partir du moment où le câblage est bon, tu utilises les commandes Serial comme de coutume.
Avec si peu d'explication, aucun schéma, aucun code, on ne peut pas savoir ce qui ne fonctionne pas...
Tu peux utiliser une fonction de ce genre pour l'envoie :
Je ne dispose pas de circuits max485 mais des équivalents comme dans le schéma joint. Effectivement, j'appuie aussi les dires de trimarco232. Il faut gérer le sens de communication avec la DE/Re à 1 pendant la transmission de l'esclave au maitre.
J'ai dans mon cas résolu certains problèmes après avoir implémenté cette fonctionnalité! Du genre , TROP COOL ENFIN CA MARCHE... Je rencontre d'autres problèmes... voici un autre sujet que j'ai initié
j'ai en projet de réaliser un systeme domotique basé sur du rs485 et j'aimerai savoir ou en sont les differents membres qui ont communiqués ici (schema de leur installation, principe de fonctionnement, ptotocole utilisé, état d'avancement).