[RESOLU] Port Série et mauvais caractères...

Comme Kamill, merci à lui, a résolu le problème je résume ici la solution :
Lorsqu'un adaptateur, genre CP2102, est utilisé entre un port série Arduino et le port USB d'un micro ordinateur les signaux qui transitent sont de type TTL 5 volts.
Pour que l'échange fonctionne correctement, il ne faut pas que cet adaptateur soit équipé d'un circuit d'interface RS 232 du type MAX233 ou comme dans mon cas d'un SP3243EU, sinon les caractères reçus sont corrompus...
Attention si vous raccordez le port série de l'Arduino au niveau d'un VRAI PORT SERIE 9 / 25 broches d'un micro ordinateur ou d'un autre équipement, il faut impérativement utiliser des interfaces RS232, MAX233 par exemple, sinon l'Arduino risque de fumer...

Bonjour,

Question de débutant en transmission de données!

Je tente d'utiliser les ports séries supplémentaires sur un arduino Mega.

void setup() -> Serialx.begin(9600);

void loop() -> Serialx.print("A"); delay(1000);

Pour l'instant je me contente donc de l'envoi (à 9600 Bauds) sur tous les ports d'un caractère "A" (41 h) chaque seconde.

Lorsque je regarde à l'oscilloscope c'est bien un "A"...

Quand j'utilise le moniteur série ou Réalterm c'est un "_" (5F h) ou" _" (00 h 5F h) qui est reçu...

Un simple tiret bas si j'utilise un adaptateur Silicon Labs CP2102EK et un espace (nul) plus le tiret bas si j'utilise un adaptateur Brainboxes US-235, mais jamais le A...

Avec Réalterm et les mêmes réglages en utilisant le port usb du Mega c'est bien le A que je reçois, donc rien à voir avec Réalterm que j'ai testé avec tous les réglages possibles.

J'ai testé les adaptateurs avec Réalterm, un en émission, l'autre en réception, et là ça fonctionne, la chaîne émise est bien affichée sur le récepteur dans les deux sens.

Et avec un autre Mega mêmes résultats...

Une idée?

Par avance merci.

hello
la vitesse de reception sur le moniteur est bien la meme que celle de la platine arduino?

(reglage en bas à droite dans la fenetre du moniteur)

C'est possible de déclarer "Serialx.begin" au lieu de "Serial.begin" ? ? ?

Merci pour vos réponses,

@dfgh oui la vitesse est la même des deux cotés, 9600 Bauds.

@lesept j'ai mis x dans cet exemple, mais dans le croquis c'est le n° du port de 1 à 3.

Serial2.begin(9600); Serial2.print("A"); par exemple.

Apparemment ce sont les adaptateurs série qui posent problèmes, car à l'oscilloscope sur les broches de l'Arduino ou avec le port intégré à la carte Mega, ça fonctionne, j'ai bien un "A" qui sort.

Amicalement,
J-F

Bonsoir JFF76

JFF76:
Quand j'utilise le moniteur série ou Réalterm c'est un "_" (5F h) ou" _" (00 h 5F h) qui est reçu...

Qu'en est-il, dans Réalterm du réglage du nombre de bits, de la parité et du nombre de STOP bit?
Le défaut de l'Arduino est 8 bits, pas de parité et 1 stop bit (n81).

Cordialement
jpbbricole

Bonsoir JFF76

JFF76:
Quand j'utilise le moniteur série ou Réalterm c'est un "_" (5F h) ou" _" (00 h 5F h) qui est reçu...

Petit coomplément et après comparaison des bits emis 1000001 pour le A et ceux reçus, 0000000 et 1011111 je pencherai plus pour un problème de vitesse, le récepteur étant trop rapide puisque dans le temps d'un caractère émis il peut en décoder à peu près 2.

Cordialement
jpbbricole

Merci jpbbricole pour tes messages,

C'est effectivement les réglages que j'ai fait au niveau de Réalterm, 9600 8N1None, soit 8 bits de données, 1 stop, pas de parité, Pas de contrôle de flux matériel...

Je vais explorer les pistes que tu m'indiques.

Je fait ces tests pour implémenter à terme le déversement de données issue d'une mémoire 24LC512 vers un fichier capture . txt à l'aide de RéallTerm... mais pour l'instant c'est pas le top, j'avais déjà expérimenté en utilisant le port USB d'une UNO et ça marchait bien.

C'est l'utilisation d'un adaptateur série qui pose problème.

Merci encore pour votre aide.

Amicalement,
Jean-François

L'adaptateur CP2102EK que j'utilise comporte un circuit SP3243EU d'adaptation de la tension :

Mais d'après vous ne serait ce pas, malgré ce circuit un problème d'adaptation de tension ?

Le fait que j'utilise d'un coté l'usb du PC et de l'autre le port série de l'arduino avec entre les deux ce circuit
les signaux restent en TTL 5V ? ? ?

Amicalement,
J-F

JFF76:
L'adaptateur CP2102EK que j'utilise comporte un circuit SP3243EU d'adaptation de la tension :

https://www.silabs.com/documents/public/user-guides/CP2102-EK.pdf

Mais d'après vous ne serait ce pas, malgré ce circuit un problème d'adaptation de tension ?

Amicalement,
J-F

réponse de Normand

pt'et que oui , pt'et que non :smiley:

tu a exposé plus haut (bas ? ;D )
que tu avais déterminé à l'oscillo , le rendu "motif" comme OK

  • déterminé exactement comment ? (quelle manip ? quel ... oscillo) ?

  • quid des niveaux de tension du signal ?

Bonjour,

J'utilise un adaptateur usb CP2102 tout simple et je n'ai pas de problème avec les ports séries 1,2,3 d'une arduino mega.
Puisque tu disposes d'un ocsillo, il faudrait regarder le niveau du signal TXx quand ton adaptateur est connecté dessus.

Bonjour

Un petit outil, pas chère, pour investiguer ce genre de problème, un analyseur logique 8 canaux pour moins de 10€ et qui décode la majorité des protocoles nécessaires, qui peut être assisté d'un petit oscollo pour ~20€, idéal pour bidouiller sur les Arduino.

Bonne bricole et bonne journée
Cordialement
jpbbricole

Les GNDs sont-ils bien reliés ??

C’est un truc comme cela que vous comptez utiliser?

Tu as bien relié la sortie TXx sur les pins niveau cmos et non sur le connecteur RS232?

Un grand merci à tous pour votre aide,

Artouste je suis Normand d'où le 76 dans mon profil :slight_smile:
Voici en images les explications.
Une capture de l'oscilloscope de ce qui entre au niveau du CP2102

Une photo du CP2102, oui J-M-L c'est exactement ça et ça viens de chez RS.


et enfin ce que sort RealTerm avec une capture des réglages.

Realterm2.JPG

En résumé : 01000001 Le "A" qui entre dans l'adaptateur
01011111 et qui sort dans RealTerm ...

Merci kamill et jpbbricole pour vos liens et conseils, je vais acheter le genre d'adaptateur qu'utilise Kamill.

Amicalement,
J-F

Realterm2.JPG

Tu peux enlever les cavaliers et te brancher sur la pin rx du côté du cp2102, sans oublier le gnd.

Kamill je vieillis et ce n'est vraiment pas beau...

il suffisait de faire simplement ce que tu indiques, ça fonctionne parfaitement.

le pire c'est que je n'ai pas pensé à le faire... c'est la première fois que j'utilisais cet adaptateur.

C'est le SP3243EU qui doit perturber le montage et dans mon montage il n'est pas utile.

Je ne suis pas fier de moi :frowning: c'est bien la peine d'avoir un oscillo, un adaptateur qui permet les essais, et de ne pas réfléchir plus...

UN GRAND MERCI !

Amicalement,
Jean-François

JFF76:
Kamill je vieillis et ce n’est vraiment pas beau…
Artouste … d’où le 76 dans mon profil :slight_smile:

76 ans , ce n’est pas si vieux !
Courage!

Merci bidouilleelec pour tes encouragements. :slight_smile:

J'ai 57 ans bientôt 58 dans 2 mois...

et c'est déjà un vrai naufrage pour mes neurones, franchement ça me fait peur...

j'ai pas mal de troubles de mémoires.

Enfin un adaptateur du genre Brainboxes US-235 à 60 euros (juste utile en cas de "vrais" signaux RS232 à plus de 10 volts) ne fonctionne pas pour la même cause... donc achetez des trucs à moins d'un euros que Kamill a indiqué.

Amicalement,
J-F

Content d'avoir pu t'aider

Merci Kamill.