Go Down

Topic: RS485, MODBUS, Leddar (Read 1 time) previous topic - next topic

sachasai

Bonjour,

Je suis en train de réaliser un projet, pour lequel j'ai besoin de mesurer des distances précises. Je dispose de 3 capteurs Leddar One, qui utilisent le protocole RS485. J'ai une arduino Mega 2560 ainsi que 3 arduino uno. J'aimerais utiliser MODBUS pour faire communiquer mes 3 arduino uno, les esclaves, chacune ayant un capteur, avec mon arduino mega, le maître, afin qu'elle puisse lire les valeurs des capteurs.
Je débute complètement dans la manipulation d'arduino et je suis totalement perdu. Je dispose d'une bibliothèque Leddar dans laquelle une méthode me permet de stocker les valeurs lues par les capteurs dans un tableau, mais aussi des bibliothèques modbus master / simpleSlave , avec lesquelles je pourrais apparement aussi lire les valeurs des capteurs.
Je n'arrive pas à trouver de tutoriel clair sur comment procéder. Quelle bibliothèque dois-je utiliser ? Comment brancher mes arduinos les unes aux autres ?
Si quelqu'un connaît un site bien fait expliquant la procédure, je lui en serait très reconnaissant.


J-M-L

A quoi servent les UNOs? avec du RS-485 vous pouvez avoir un bus avec vos capteurs tous connectés à un seul arduino maître (le maître doit lire et écrire dans chaque esclave) et comme vos LeddarOne implémentent (si j'en crois la spec) le protocole Modbus, il suffit d'utiliser ce protocole pour leur parler

Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

sachasai

Bonjour, en fait je ne les ai pas encore reçus, et je n'arrive pas à savoir si je peux brancher 3 LeddarOne sur une seule UNO.

J-M-L

Vous avez sans doute commandé des LED-MOD1-3-XX 

le XX  c'était 10 ou 20 ? (10 = 3.3 V UART et 20 = RS-485)

(cf la doc)
Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

sachasai


J-M-L

OK donc il faudra juste "fabriquer" le bus qui relie les modules




et un module adaptateur RS485 depuis votre arduino maître qui le connectera au bus
Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

sachasai

Pensez-vous qu'il serait possible d'utiliser directement la communication série arduino pour envoyer les données du capteur récupérées sur ma UNO à travers le RS485 Shield à ma MEGA ? Est-ce qu'il serait plus avantageux d'utiliser MODBUS ?

J-M-L

on utilise généralement le RS485 quand il y a besoin de communication numériques sur de longues distances et/ou en environnement électrique bruité

c'est votre cas?
Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

sachasai

Non, ce n'est pas mon cas, mais n'y connaissant rien, je pensais y être obligé sachant que le capteur utilise ce protocole.

J-M-L

#9
May 29, 2017, 05:45 pm Last Edit: May 29, 2017, 05:45 pm by J-M-L
celui que vous avez commandé, oui - donc vous ne pouvez plus utiliser la communication série vers vos Leddar One - vous êtes obligé de passer par une interface RS485 entre un Leddar One et un arduino.

Vous pouvez soit avoir les 3 Leddar One sur le bus, connecté à un seul Arduino ou alors avoir 3 arduino UNO chacun parlant à son Leddar One (sur un bus ayant qu'un seul composant Leddar One) et ensuite mettre en place un protocole de communication entre les 3 arduinos UNO et un Arduino Maître. Le port série ne se prête pas à une configuration en étoile ou bus mais votre Mega possède 4 lignes séries matérielle donc peut gérer les 3 UNOs et il vous restera Serial pour afficher des choses sur votre PC.

Mais bon, si vous n'avez pas de calcul particuliers à faire sur les UNOs, à mon avis vaut mieux partir sur une configuration 1 bus, 3 Leddar One et la MEGA
Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

sachasai

Ok, merci beaucoup !
Donc pour être sûr, je devrais acheter 3 MAX485, que je connecterai chacun au bus décrit par le document que vous m'avez fourni, et je pourrai ensuite utiliser directement la bibliothèque Leddar pour récupérer les mesures ?
Aussi, à quoi correspond le module dans le bas du schéma ? Au Shield RS485 que je branche sur la MEGA ?
Mais dans cette configuration, pourrais-je savoir de quel capteur vient quelle mesure ?

J-M-L

#11
May 29, 2017, 06:08 pm Last Edit: May 29, 2017, 06:13 pm by J-M-L
Non 1 seul module est suffisant puisque vos Leddar One vont se greffer directement sur le bus

Mega <--> adaptateur RS485 <--> [bus] =========================================[fin de bus]
                                        ||               ||               ||
                                        ||               ||               ||
                                        ||               ||               ||
                                      Module           Module           Module


faudra lire cette doc par exemple ainsi que les explications de Nick sur ce sujet et sa librairie
Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

sachasai

Bonjour,

J'ai lu la documentation que vous m'avez envoyée, mais je suis un peu perdu.
J'ai deux questions :
1) Sachant que le RS-485 shield dont je dispose a une pin A et une pin B, dois-je connecter les 3 capteurs sur le même A et le même B ?
2)Dans ce cas, Comment savoir quel capteur a mesuré la donnée reçue sur la carte, et comment s'assurer qu'ils n'envoient pas des données en même temps sans les brancher sur une carte ?


J-M-L

oui - cf le dessin en #5 les A sont ensemble, les B sont ensemble et il faut des résistances pour faire le bus

ensuite tous les esclaves écoutent sur le bus et le protocole commence par l'adresse de l'esclave auquel le maître veut parler. Celui qui a le bon N° écoute fait ce qu'il faut, les autres ignorent la communication

Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

sachasai

#14
May 31, 2017, 09:41 am Last Edit: May 31, 2017, 10:33 am by sachasai
Bonjour,
Mais comment je peux donner un numéro à mes capteurs ? Il y a juste ce point qui me laisse dans l'incompréhension.

EDIT :
La classe LeddarOne de la bibliothèque Leddar possède un attribut SlaveAddress, que l'on peut choisir grâce au constructeur.
Dans ce cas, imaginons que j'ai réalisé mon bus.
Déjà, quelle bibliothèque vais-je devoir utiliser pour la communication ?
Ensuite, à partir de mon Arduino, je crée 3 objets LeddarOne. Est-ce qu'ils seront automatiquements reliés à mes 3 Leddars ?

Go Up