Bonjour à vous,
Je m'inscris et expose mes difficultés après avoir passé un moment à parcourir ce forum sans trouver de solution à mon problème.
Je vais essayer de faire au plus clair et au plus concis.
Je suis un électronicien en herbes, j'apprends en essayant, mais là je bloque.
Je dispose d'une carte Arduino Uno. Je souhaite me servir de cette carte pour commander un appareil et donc envoyer des informations via la liaison série.
J'écris mon code à l'aide de l'environnement de développement arduino.exe, jusque là aucun soucis.
Je test mon programma via l'interface "Serial monitor" aucun soucis non plus.
Je décide par la suite de faire communiquer directement (pour essayer) l'Arduino avec l'appareil, rien ne se passe.
Je décide de revenir en arrière dans ma démarche en ajoutant l'étape "communication série Arduino/PC" pour visualiser le message envoyé par liaison série.
J'utilise une petit application de type "hyperterminal windows" pour tester ma liaison série.
Là commence mon problème..
Lorsque je programme et test la carte, j'utilise la connexion USB définie comme "port série 3" sur mon PC.
La carte est alors uniquement branchée via le port USB au PC.
Lorsque j'essaye ma communication "en condition" pour délivrer mon message série j'utilise un connecteur DB9 directement connecté à l'arduino.
(Broches Rx,Tx et GND, reliées).
Il est défini comme "port série 1". Ma carte est alors reliée via ce DB9 au PC et la carte est alimentée par une alimentation 12V standard, le câble USB est débranché.
Et là je me rend compte que :
Lorsque la carte est reliée par USB, elle me délivre le message attendu.
Lorsque la carte est reliée via le connecteur DB9, elle délivre un message erroné.
Mon hyperterminal pour lire l'information est configuré exactement de la même façon, je lui change juste le port de lecture (1 ou 3).
Dans un cas la carte est reliée par USB, dans l'autre par DB9 + ALIM 12V.
D'après ce que j'ai cru comprendre, cette liaison série est censée être identique, pourquoi le message reçu est-il différent ?
(J'ai déjà testé d'inverser le câblage de mon connecteur DB9 (Rx/Tx), dans un cas je reçois des informations erronées, dans l'autre cas je ne reçois rien.)
Je n'ai peu être pas délivré assez d'information, mais est-ce que quelqu'un aurait une idée pour m'aider ?
Voici le code programmé sur la carte (un peu simplifié pour l'occasion mais le principe y est) :
void setup ()
{
Serial.begin(9600);}
void loop()
{
Serial.print("{STX}0T025.0F000.0R1000000000000000FE{ETX}");
delay(1000);}
Voici le résultat lu par USB :
{STX}0T025.0F000.0R1000000000000000FE{ETX} (le message attendu)
codage en hexadécimal :
7B 53 54 58 7D 30 54 30 32 35 2E 30 46 30 30 30 2E 30 52 31 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 46 45
Je ne peux pas copier le code lu via la connexion DB9 (caractères spéciaux)
Codage en hexadécimal :
42 56 D5 AA 9F 57 9 9B 95 A3 9F 73 9F 9F A3 9F 5B 9D 9F 9F 9F 9F 9F 9F 9F 9F 9F 9F 9F 9F 9F 9F 9F 73 75 09 75 57 4F 05 00
On reconnait le format des données (reproduction des 15 "9F" images des 15 "0" que je désire transmettre), mais il semblerait que le format ne soit pas correct, je ne sais pas pourquoi....
En vous remerciant par avance pour vos conseils.
Cordialement.