Pages: [1]   Go Down
Author Topic: Arduino Uno: communication via le port série, quel "protocole"?  (Read 1879 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour à tous,

Je suis nouveau dans le monde des board arduino et j'ai (déjà) des problèmes...  smiley-fat

Je suis sous Linux (Debian Wheezy) et j'utilise le programme Arduino 1.0.

Je voulais tester le port série, du coup, je charge l'exemple Serial et je l'upload. En utilisant le Serial Monitor, tout fonctionne parfaitement (je peux envoyer/recevoir du texte sans aucun problème de représentation). Par contre, si j'utilise mon adaptateur USB->RS232 (je connecte GND,RX et TX de mon câble à la board sur les pins 0/1) et je lance screen/minicom/kermit/cat sur mon périphérique (/dev/ttyUSB0), je reçois des caractères bizarre ( si dans mon code je fais Serial.println("a"), je reçois "0y= " correspondant aux codes hexa [0x4F, 0x79, 0x3D, 0x00] ).

Je me suis dit que peut-être les pins 0/1 ne fonctionnaient pas correctement vu qu'ils sont utilisés pour dialoguer avec le programme arduino a travers le câble USB.

Du coup, j'ai utilisé l'exemple SoftwareSerial sur les pins 7/8, j'ai à nouveau câblé gnd,rx,tx de mon RS232 sur les pins 7/8 de la board. Pourtant, je reçois toujours les mêmes caractères bizarres dans mes terminaux.

À noter qu'avec Serial.write("a") je reçois uniquement le caractère "O" (0x4F).

Je suis complètement perdu... mon adaptateur RS232->USB fonctionne pourtant bien vu que je l'utilise où je travaille pour du développement embarqué (avec Kermit).



Est-ce que quelqu'un a une idée? Y a-t-il une sorte "d'encapsulation" ou de protocole qui fait que le caractère "a" soit changé en "O" quand il est envoyé?

Ma board est une Uno R2, j'ai commandé une R3 pour voir si le problème persiste...


Merci d'avance car je sèche (sur un truc tout simple pourtant)...  smiley-cry

Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 224
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

ça ressemble à une mauvaise configuration du port série. As-tu vérifie le baudrate, le nombre de bits de données ou de stop, la parité ?

++
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci pour ta réponse.

Oui j'ai déjà essayé de changer plusieurs fois. J'ai cherché dans les sources de l'IDE pour voir quels sont les paramètres utilisés pour le port série, mais je n'ai pas trouvé. J'utilise normalement une configuration (8N1) avec 8 bits, pas de parité, 1 bit de stop, est-ce juste?

Pour le baudrate, j'en ai essayé plusieurs. D'ailleurs, j'ai aussi essayé de changer le baudrate du Serial Monitor pour voir si j'arrivais à recevoir ce fameux 0x4F (ce qui prouverait une erreur au niveau du baudrate) mais après 3-4 changements, le port série plante (une exception Java dans la console).

Merci d'avance.
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 224
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Il n'y a pas de configuration juste ou pas juste, tant que c'est la même côté Arduino et côté PC... Après, 8N1 est le plus courant. Si tu mets le baudrate à 9600 des deux côtés, ça donne quoi ?
Logged


Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 23
Posts: 2054
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Par contre, si j'utilise mon adaptateur USB->RS232 (je connecte GND,RX et TX de mon câble à la board sur les pins 0/1)

Tu parle d'un vrai adaptateur RS232 avec une Sub-D 9 ou 25 Popints ?

Pshhhhh fait l'Arduino qui crame doucement....  smiley-twist

Le RS232 est un signal à niveau -12V/+12V qui NE DOIT PAS être connecté directement à une Arduino qui n'accepte que du 0V/5V - Niveau TTL.

Rappel :
- Liaison série en sortie direct d'un micro-processeur : 0/5V : "1" logique = +5V, "0" logique = 0V
- RS232 : -12V/+12V : "1" logique = -12V, "0" logique = +12V

Il faut donc :
1) Inverser les signaux
2) Mettre à niveau

On utilise pour cela soit un circuit intégré dédié type MAX232 et toute la ribambelle dérivée
Ou bien un simple circuit à transistor comme sur l'ArduinoSerial, ancien modèle de carte Arduino équipée directement d'un port RS232 :
http://arduino.cc/en/Main/ArduinoBoardSerial
et le schéma
http://webzone.k3.mah.se/k3dacu/arduino/releases/serial_v1/arduino_serial_v1.png

Tu peux utiliser Kermit tout autant que le SerialMonitor en gardant la connexion USB.
Pas besoin d'un adaptateur USB/RS23, car la carte Arduino UNO intègre un adaptateur USB/TTL.
Logged

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 ?

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Quote
Je suis complètement perdu... mon adaptateur RS232->USB fonctionne pourtant bien vu que je l'utilise où je travaille pour du développement embarqué (avec Kermit).
Si c'est du vrai RS232 j'espère que tu t'ai pas trop acharné avec !

Le RS232 c'est du +12 / -12v, l'arduino c'est du 0v / 5v ...

Pour interfacer un port RS232 avec une carte arduino il faut un CI spécialisé comme le MAX232 par exemple, ou alors faire un petit montage à base de transistor :
http://www.sparkfun.com/datasheets/Prototyping/RS232-Shifter-v2.pdf

Bref débranche ton RS232 avant de tout cramer smiley-wink

Edit: Je me suis fait grilled en beauté par barbudor smiley-mr-green
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Full Member
***
Karma: 0
Posts: 224
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Aïe, je n'avais pas percuté sur l'adaptateur USB -> RS232 smiley-sweat

Comme ci-dessus, tu peux utiliser un MAX232. Ou alors ce genre d'adaptateur : http://www.sparkfun.com/products/718.

++
Logged


Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 23
Posts: 2054
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Mais as tu vraiment besoin de cela ?

Tu as déjà un adaptateur USB/TTL sur l'Arduino sous la forme soit d'un ATmegaU32 (Arduino Uno) soit d'un FTDI232.
Logged

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 ?

Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci beaucoup !!! Le problème doit venir de là ! Bon, j'ai vite essayé de faire le schéma avec des composants que j'ai trouvé par-ci par-là, mais n'étant pas électronicien, ça ne fonctionne absolument pas :-) Il faudra que j'aille acheter exactement les bons.

Sinon, merci aussi pour la précision concernant l'ATmegaU32, en effet, avec Kermit je me connecte et les caractères sont affichés correctement.

L'utilisation du port série n'avait pas de but en soit si ce n'est pouvoir avoir un retour (debug) concernant l’exécution du code pour mes prochains essais.

En tout cas merci beaucoup !
Logged

Pages: [1]   Go Up
Jump to: