Bonjour,
j'ai un soucis de compréhension avec le port série (RX et TX).
Je ne suis pas éléctronicien.
SI je fais un simple "Hello world" qui s'affiche en 9600 sur le port série et que je demande de visualiser grâce au "serial monitor" l'outil de dev. no problemo.
Mais je voudrais recevoir ce message sur mon PC par l'intermédaire d'un vrai port série. 9 broches (je veux piloter un équipement RS232).
Donc je branche l'arduino avec celui de mon port série:
GND-GND
RX-TX
TX-RX
Je lance portmon, je lance hyperteminal (avec les meme parametres 9600 8 N 1 ) et j'obtiens pas du tout la chaine "Hello World". GGRR
Je continue mes investigation et je m'aperçois qu'entre la masse de l'Arduino et celle de mon PC, il y 5 Volt d'écart.. Donc y'a un schmurtz dans mon raisonnement.
J'ai pas tout compris. Est on obligé d'utiliser un Max232 ?
J'avais cru comprendre que c'était uniquement pour les Pin digital TTL ?
tu as une différence entre les niveaux (voltage) de sortie/entrée du périphérique UART (ce que tu appelais RX/TX) de l'atmega 168 utilisé sur l'arduino (niveau TTL) et les niveaux RS232 utilisé sur ton ordinateur.
Il me semble qu'il y'a aussi une inversion au passage
Si tu veux tout savoir wikipedia
sur le RS232 :
Valid signals are plus or minus 3 to 15 volts. The range near zero volts is not a valid RS-232 level; logic one is defined as a negative voltage,
sur le TTL
TTL 0V to 0.8V 2V to VCC VCC is 4.75V to 5.25V
Merci Nicolas et désolé pour mes approximations mais j'essaye d'apprendre !
Vu mon niveau, je vais opter pour un montage tout prêt avec le MAX232.
Je pensais à : EZtronics – Your Phidgets and Atlas Scientific dealer based in Europe
Comme ça je commanderais le module DCF en même temps.
Mais quand je lis les specs, il est indiqué que cette carte fonctionne avec l'UART (RX et TX) de l'arduino. Hors si j'ai bien compris la doc : http://www.arduino.cc/en/Tutorial/ArduinoSoftwareRS232 il est possible d'utiliser n'importe quel entrée/sortie numérique avec un bout de code supplémentaire.
J'ai donc 2 interrogations avant d'acheter.
Sachant que la vitesse dont j'ai besoin est de 2400 (vitesse utilisé par ma carte K8056 que je veux contrôler) et que seul l'UART permet d'atteindre cette vitesse toujours d'après la même doc. je serais cuit pour rajouter un module Xbee par la suite qui utilise également l'UART.
J'ai une analyse qui vaut ce quelle vaut mais je vais tenter.
Mes 2 cartes (arduino+k8056) dialogue en réalité 5V et utilise le même transistor BC547 pour causer RS232. Mais courant inversé dommage !. Mon Pc doit également comprendre le 5V (sur son port série) car il enregistre les signaux de l'arduino même si ce ne sont pas ceux que j'attendais. Après des tests, ces signaux n'ont rien d'aléatoire.
Donc si ça se trouve le RS232 de mon PC dispose lui aussi d'un systeme qui abaisse le courant à 5V. avant traitement.
J'ai besoin d'envoyer que 16 chaines d'octets différents pour controler ma k8056. Je vais mofifier le "Software Serial Interface" standard afin qu'il positionne les bits de contrôle "à l'envers" et j'enverrai les binaires inversés (00000001 -> 1111110) .
Peut etre un peu farfelu mais si ca marche, j'ai besoin d'aucun matos supplémentaire et l'UART de mon arduino reste libre.
Je doute que ton pc comprenne le TTL sur son port série...
la def du RS232 : vue sur Tavernier-c.com
Au point de vue niveau, cette norme est très simple : tout signal de niveau compris entre +3 et +25 volts est considéré comme étant au niveau logique A alors que tout signal compris entre -3 et -25 volts est considéré comme étant au niveau logique B. A et B sont quelconques et peuvent être 0 ou 1 selon que l'on travaille en logique positive ou négative.
Donc de l'arduino qui sort du 0 ou +5Volt il comprendra 1 qd +5 Volt et je sais pas quoi qd 0 Volts (car se situe entre -3 et +3). Ca ca etre ta carte RS232 qui va faire 'son' interprétation.
J'ai fait les tests en attendant mon max232. J'arrive à générer une 50aine de code ASCII sur l'interface RS232 de mon PC de façon non aléatoire.
Evidement, impossible de trouver une logique à première vue. (suite ou autre)
Ça limite beaucoup l'utilisation . J'ai pas encore essayer sur un autre PC mais je serais curieux de savoir si j'obtiens la même interprétation de la RS232.
Merci pour tes explications Nicolas, je peux continuer mon projet ..