Go Down

Topic: Communication RS232 TTL (Read 3 times) previous topic - next topic

rhum187

Bonjour à tous,

Je continue mon projet, et après de nombreux problèmes hard résolus grâce à vous (je pense notamment à Barbudor, Skywood, ...), je vais attaquer la partie programmation.

Je vous présente donc mon projet.

Je vais avoir un Arduino Nano embarqué dans mon robot et un Arduino Uno dans mon boitier de commande.

L'Arduino Uno présent dans mon boîtier de commande sera notamment relié à une manette permettant de piloter le robot, à l'Arduino Nano mais aussi au PC.

Les deux Arduinos sont reliés par fils et communiquent par protocole série RS232 : ArduinoNano>MAX232>FILs 25m>Max232>ArduinoUno.

Je vais donc avoir à gérer au niveau du Arduino Uno deux communication série (PC+Arduino Nano) et une communication I2C (Manette).

J'aimerais donc avoir quelques conseils, pistes sur lesquels m'appuyer pour commencer à coder. Est-ce que je peux trouver un moyen efficace de coder tout ce petit système ?

Merci d'avance.
Romain

barbudor

L'Arduino UNO n'a qu'une liaison série physique, et c'est celle qui est déjà reliée au PC.

Si tu l'utilises aussi pour communiquer avec la Nano, tout Serial.print() va aller au PC et à la Nano.
Et en réception ca sera la cacophonie.

Une solution est bien sur de prendre un SoftwareSerial.
Compte tenu que le Serial est déjà relié à l'interface USB, le SoftwareSerial serait probablement dédié à la communication avec la Nano.
Malheureusement -de mon point de vue- le SoftwareSerial présente de gros défauts du point de vue temps réel.
En gros j'aime pas, surtout si tu as une communication plutôt dense entre les 2 cartes.

A la place d'une UNO, pourquoi ne pas envisager :
- Une MEGA qui possède plus de liaisons série physiques ?
- Une Leonardo (ou compatible : VinciDuino, Olimex) sur laquelle la liaison USB est physiquement distincte de la liaison série.
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

rhum187

#2
Jul 01, 2012, 06:16 pm Last Edit: Jul 01, 2012, 06:35 pm by rhum187 Reason: 1
D'accord, c'est bien ce que j'avais cru voir dans quelques topics que j'ai pu lire à ce sujet.

Mais j'aurais souhaité plus de détails, notamment sur :

- le SerialSoftware
- la léonardo

Si tu n'as pas le temps, n'hésites pas à juste me donner quelques liens internet pour faire des débuts de recherches et je reviendrais vers toi si il y a des choses avec lesquelles j'ai du mal.

Merci BarbuDor

EDIT : J'ai déjà trouvé les informations que je cherchais sur la Léonardo et cette carte ne gère pas la communication I2C pour la manette...ou TWI c'est pareil... je sais pas je vais continuer de chercher... il n'y a que la méga qui peut faire l'affaire ?

barbudor


EDIT : J'ai déjà trouvé les informations que je cherchais sur la Léonardo et cette carte ne gère pas la communication I2C pour la manette...ou TWI c'est pareil... je sais pas je vais continuer de chercher... il n'y a que la méga qui peut faire l'affaire ?


La Léonardo a aussi une liaison I2C comma la UNO, donc qu'est-ce qui cloche de ton point de vue ?


SoftwareSerial est une bibliothèque qui permet d'utiliser n'importes quelles broches numérique comme une liaison série asynchrone (UART).
Mais comme toute la gestion des bits et des timings est faite en logiciel, cela est très contraignant du point de vue temps réel.
Ainsi si ton programme est occupé ailleurs, tu risque de perdre des caractères en réception, alors que sur le Serial normal, les caractères sont reçus sous interruption et mémorisés dans un buffer de 16 octets pour te laisser un peu de temps.
http://arduino.cc/en/Reference/SoftwareSerial
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

rhum187

Quote
La Léonardo a aussi une liaison I2C comma la UNO, donc qu'est-ce qui cloche de ton point de vue ?


En fait j'ai vu après mon post que la liaison I2C était aussi OK.

J'avais écrit ça parce que (c'est peut-être trivial mais souvent très parlant) j'ai trouvé sur la plupart des distributeurs Arduino que le Uno était plus chère que la Léonardo...

Alors qu'est-ce qui peut expliquer cette petite différence de prix ?

Go Up