Urgent!!! Aide Branchement Arduino Uno Avec Plusieurs Interfaces

Bonjour tout le monde,
Voila je me présente, Nadir et je suis ingénieur en informatique, et je suis nouveau sur le forum et aussi débutant en électronique.
Je veux me lancer dans la robotique car c’est mon rêve d’enfance :stuck_out_tongue:
Voila mon projet :

• Platine Arduino Uno
• Shield de reconnaissance vocale module EasyVR --> reliée avec arduino via TX/RX
• Afficheur 2 x 16 caractères "CLCD162-BLB" --> Montage I²C
• Télémètre ultrason MS-EZ0 --> Montage analogique
• Photorésistance 12 mm --> Montage analogique
• Capteur de température KTY10A --> Montage analogique
• Hexapode 18 servo piloté pas une SSC32, reliée avec arduino via TX/RX

Ma préoccupation est que la uno dispose d’une seul paire TX/RX or les deux carte SSC32 et reconnaissance vocale devront être montées en série, y a-t-il un moyen ou une technique pour faire fonctionner le montage ou je dois revoir la conception « cascade uno avec mega…etc.? si oui prière m’orienter

N.B : j'ai rien acheté pour le moment, si y a des propositions à faire je suis preneur, je compte aussi mettre une Ethernet shield et/ou Xbee, et plein d’autres modules donc la conception doit être extensible

Merci à vous :slight_smile:

Bonjour, je ne sais pas quel type de RX TX tu à besoin mais tu peut te pencher sur ton matériel avec comme RX / tx supplémentaire un "software serial" liaison serie asynchrone en gros.

http://arduino.cc/hu/Tutorial/SoftwareSerial

voila si ça peut t'aider, sinon je pense que tu a pas mal de matos pour un petit uno mais normalement tu devrai avoir suffisamment d'IO pour tout incorporer, et tu n'a besoin que d'un I2C donc ça va, si dans tes deux RX TX tu n'a que un seul synchrone ta tes chance :slight_smile: .

Skizo

Merci pour votre réactivité skizoh, si j’ai bien compris, je dois reconfigurer deux interfaces de série de logiciels pour recevoir les data ?
Autre question si vous permettez, mon branchement est-il bon ?

Merci XD

Bon pour ce schéma, je ne serais pas trop te dire j'ai pas regarder la Doc de tes composant et le dessin pique les yeux ^^ mais j'ai rien vue d’insensé, après pour les software serial, tu dispose déja d'un rx tx qui peu aussi servir au débug (Serial...) c'est ton rx tx, et si tu en a besoin d'une de plus qui n'est pas synchrone ( à vérifier dans tes doc) tu peut en obtenir jusqu’à deux ou 3 de plus je crois avec la méthode software serial.

tu devrai t'en sortir ^^ , par contre prend garde au empilement de shield ça peut mal tourner vérifie bien les pin utilisées et les disponibles avant d'empiler au pif, pas mal de shield ne sont pas compatible sois niveau occupation d'IO sois niveau physique ( ce retrouver avec un shield par dessus ton écran ça serais bof par exemple ^^)

Skizo !

bonjour,

l'arduino Mega à base d'atmega1280 possède 4 liaisons série UART, ça peut répondre à ton besoin.

Gromain

Merci pour vos réponses rapides les amis, j’ai pensé à exploiter l’Arduino Mega mais le problème est sur l’empilement des shields :~« ce n’est pas les mêmes pins, sauf pour quelques une », Je serais donc obligé d’utiliser des shields de prototypage
Corrigez-moi si je suis à coté de la plaque!
N.B : je vais voir la doc SSC-32 et EasyVR si c’est des synchrone ou asynchrone.

Merci :slight_smile:

Oui fait ça, vérifie un peu tout ça mais je pense que tu peut t'en sortir, après j’espère que ton programme sera pas trop énorme
parce que niveau mémoire programmable le uno est pas non plus immense :s

Skizo !

Re,
Pour la carte EasyVR, c’est le mode d’opération bridge Jumper 12 --> SW – Software serial mode « pins 12-13 » j’espère que je ne dis pas des bêtises :smiley:
Pour la SSC32 j’ai rien trouvé si elle est synchrone ou asynchrone :frowning:
Merci pour votre aide

bon bas c'est pas grave le principale c’était de savoir si un des deux pouvais fonctionner en software serial et c'est le cas donc c'est bon après pin 12 13 peut import quand tu crée ton software serial tu déclare les pin et tu peut prendre de la pin 2 a 13 il me semble quelque chose du genre, et si l'autre est aussi en software serial tu pourra aussi l'utiliser tu peut en faire plusieurs, sinon tu a toujours le serial d'origine.

Aller bon courage pour la suite et reviens nous voir une fois que tu aura avancé pour nous dire ce qu'il en est !

Skizo !

nadirovick:
Pour la SSC32 j’ai rien trouvé si elle est synchrone ou asynchrone :frowning:

Dans les specifications on peut lire :

Serial input = True RS-232 or TTL, 2400, 9600, 38.4k, 115.2k, N81

Les 3 derniers caractères "8N1" signifient 8 bits, No parity, 1 stop bit.
Cela est la caractéristiques d'une liaison asynchrone telle que celle disponible sur les broches 0/1 de L'Arduino ou sur n'importe qu'elle broche en utilisant la lib SoftSerial.

Donc, puis-je faire une interface serie avec la SSC 32 ? je veux garder les pin 0/1 libre

Tout a fait. SoftwareSerial.

Par contre j'ai un gros doute sur le fait qu'on puisse créer plusieurs SoftwareSerial simultanément.
Quelqu'un a essayé ?

En lisant un peu mieux, on peu en avoir plusieurs mais on ne peut en écouter qu'une seule à la fois.

barbudor:
En lisant un peu mieux, on peu en avoir plusieurs mais on ne peut en écouter qu'une seule à la fois.

vue qu'on est en monotâche ou est le souci? ^^
tu pense qu'il faudrait re déclaré softwareserial.. à chaque fois avant chaque lecture? Oo

perso j'utilise des software serial mais pas deux simultanément donc je pourrait pas répondre à ça :s

sinon pour la liaison SSC32 c'est RS232 ou TTL, ça s'adapte direct sur l'ARDUINO ça? j'ai un gros doute :s

Skizo !

Le soucis c'est que si tu as plusieurs SoftwareSerial et que sur chacune tu as un équipement distant qui parle de lui-même, tu perd tout ce que tu reçois.
Il faut utiliser la méthode .listen() pour déclarer qu'elle SoftwareSerial est écoutée à un moment donné.
Donc c'est plutot fait pour fonctionner dans un mode question-réponse :
Grossièrement ca donne:
A.listen();
A.print("question à A");
A.readUntil( ... );
B.listen();
B.print("question à A");
B.readUntil( ... );

Mais si B commence à parler alors que tu écoutes A, tu perd tout ce qui arrive.
Cela vient du fait qu'il ne gère qu'une seule interruption simultanément et que l'intégralité de la réception de chaque caractère s'effectue de toute façon dans la routine d'interruption bloquant ainsi toutes les autres interruptions durant la réception des 10 bits d'un caractère (start + 8 + stop);

ah je comprend mieux, il n'a pas de buffeur en réception qui permet de conserver ce qui est arrivé quand on écoutait pas, okok ouai du coup c'est un sacré problème ^^ moi je sais que mon software serial qui fonctionne seul (j'en ai qu'un quoi) doit avoir un buffeur c'est sur puisque je perd jamais de donné pourtant je fait beaucoup d'autre chose en même temps donc bon.. peut être qu'il ne peut en mettre qu'un seul a disposition.. bizarre tout de même !

Skizo !

Bonjour,

nadirovick:
Merci pour votre réactivité skizoh, si j’ai bien compris, je dois reconfigurer deux interfaces de série de logiciels pour recevoir les data ?
Autre question si vous permettez, mon branchement est-il bon ?

Pour ce qui est d'avoir plusieurs port série software avec l'ide >0023 et SoftwareSerial ou NewSoftSerial c'est tout as fait envisageable.
Si la constante budget n'est pas un point critique une carte arduino mega/mega2560 pourrait aussi être un bon compromis.

barbudor:
Par contre j'ai un gros doute sur le fait qu'on puisse créer plusieurs SoftwareSerial simultanément.
Quelqu'un a essayé ?

C'est tout à fait possible (en tout cas avec NewSoftSerial, donc normalement avec SoftwareSerial par extension depuis arduino 1.0).
Par contre plusieurs ports série sur un seul timer -> possible perte de données.
De plus les ports série software ne peuvent pas monter au dessus de 9600 bauds il me semble.