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.
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
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 ?
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
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'ai lu la documentation que vous m'avez envoyée, mais je suis un peu perdu.
J'ai deux questions :
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 ?
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
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 ?
Bonjour,
that is the question !
seul le fabriquant peut le dire, il faut trouver la doc qui l'explique
espérons que si cela doit se faire avec le sdk du fabriquant, il ne s'agit pas d'une opération payante
Ensuite, à partir de mon Arduino, je crée 3 objets LeddarOne. Est-ce qu'ils seront automatiquements reliés à mes 3 Leddars ?
vous assignez physiquement une adresse à vos composants par exemple 1,2,3
ensuite quand vous instanciez vos objets dans votre code, vous les créez avec ces adresses; les messages envoyées sur ces instances partiront alors sur le bus à destination du bon composant et les autres ignoreront le message