Transmettre automatiquement une chaine de caractères

Les cartes Arduino, les platines

Transmettre automatiquement une chaine de caractères

Message non lude pascal74 » Lun 7 Avr 2014 14:33

Bonjour,

Avant de décrire mon problème, voici le code (très simpliste) utilisé :

Code: Tout sélectionner
// Arduino is powered by the engine. When the engine is started, the status of the motor (sentence NMEA0183)
// is transmitted in a frame
void setup() {               
  Serial.begin(9600); // initializes the speed of the serial port commnication
}

// the loop routine runs over and over again forever:
void loop(){
Serial.println("$ERRPM,E,1,1,0,A*40"); // Sending Engine is ON
delay(1000); // wait for a second
}



Voici ce qu'est sensé faire le programme
Lorsque la carte Arduino est alimentée (sous tension) la chaine "$ERRPM,E,1,1,0,A*40" doit être automatiquement transmise toutes les secondes sur le port serie (TX).

Mon problème est le suivant :
Lorsque je test mon projet, la carte Arduino est raccordée à mon PC à l'aide du cordon USB (qui sert aussi d'alimentation). Dans ce cas là et uniquement dans ce cas, le programme fonctionne correctement le moniteur de l'ide Arduino montre bien la transmission de la chaine sur le port série (la led TX clignote chaque seconde).
Par contre, lorsque je test mon projet en alimentant la carte Arduino à l'aide d'une pile 9V sur le Vin (le cable USB n'est pas utilisé) rien ne sort sur le port série (la LED TX ne clignote pas !).

But du projet :
Raccorder la carte arduino à un multiplexeur qui va relayer une information. A titre d'information lorsque j'utilise hyperterminal pour lire ce qui arrive sur le multiplexeur rien n'apparait. Ce qui me confirme qu'en mode autonome (sans cordon usb) rien n'est transmit :(

Je ne vois pas où est mon erreur ou comment corriger pour que cela fonctionne correctement !
Merci par avance pour votre aide
pascal74
 
Messages: 6
Inscription: Lun 7 Avr 2014 14:04

Re: Transmettre automatiquement une chaine de caractères

Message non lude phil » Lun 7 Avr 2014 16:21

Avec une pile, c'est normal car la liaison série n'est pas "montée"

A titre d'information lorsque j'utilise hyperterminal pour lire ce qui arrive sur le multiplexeur rien n'apparait. Ce qui me confirme qu'en mode autonome (sans cordon usb) rien n'est transmit

Que veut tu dire par multiplexeur. Est ce que tu as un modèle, un schéma de câblage.
Si ton multiplexeur fait du RS232 par exemple, il faut savoir que les pin 0,1 (TX/RX) de l'atmega ne font pas de série au niveau RS232 mais en TTL, il y a donc de l'adaptation à faire avec un MAX232 par exemple
all your shields are belong to us...
Avatar de l’utilisateur
phil
 
Messages: 192
Inscription: Mer 7 Sep 2011 11:19

Re: Transmettre automatiquement une chaine de caractères

Message non lude pascal74 » Lun 7 Avr 2014 16:41

c'est normal car la liaison série n'est pas "montée"

Y a t il une syntaxe et une instruction pour le faire de manière logiciel ?

Voici l'info que j'ai concernant le multiplexer :
Inputs: 4 x NMEA 0183/RS-422, galvanically isolated
Input resistance: > 800 Ohm

Voici à quoi ressemble le multiplexeur : Image

Et voici un schema de mon montage
Image

je n'ai en réalité pas besoin de connectique RS232 je veux juste envoyer sur le canal de sortie TX une chaine NMEA083 (déja toute prête) afin que le multiplexeur puisse la réceptionner.
pascal74
 
Messages: 6
Inscription: Lun 7 Avr 2014 14:04

Re: Transmettre automatiquement une chaine de caractères

Message non lude phil » Mar 8 Avr 2014 10:40

pascal74 a écrit:je n'ai en réalité pas besoin de connectique RS232 je veux juste envoyer sur le canal de sortie TX une chaine NMEA083 (déja toute prête) afin que le multiplexeur puisse la réceptionner.


RS232 ce n'est pas que de la connectique, c'est des niveaux de signal, un protocole...
Quoi qu'il en soit, l'Arduino et plus particulièrement l'ATMEGA328 fonctionne en niveau TTL. Il faut donc trouver une solution pour convertir le TTL en RS422 par rapport au protocole et par rapport au niveau de signal.
J'ai cherché rapidement, ça a pas l'air trivial...
all your shields are belong to us...
Avatar de l’utilisateur
phil
 
Messages: 192
Inscription: Mer 7 Sep 2011 11:19

Re: Transmettre automatiquement une chaine de caractères

Message non lude pascal74 » Mar 8 Avr 2014 10:53

Je pense qu'un ajouter un shield convertisseur TTL - RS232 par lequel je ferais passer la trame NMEA
pascal74
 
Messages: 6
Inscription: Lun 7 Avr 2014 14:04

Re: Transmettre automatiquement une chaine de caractères

Message non lude pascal74 » Mar 15 Avr 2014 13:34

Voilà J'ai fait l'acquisition d'un shield convertisseur TTL <> RS232. J'ai procédé au montage mais cela ne résoud pas le problème initial.

Image
(Faire un clic droit et ouvrir la photo dans un autre onglet pour voir le convertisseur TTL <> RS232)
RS232 parce que le protocole utilisé répond à ce protocole de communication.

Je résume :
A la mise sous tension de la carte Arduino Uno R3, toute les secondes, la carte doit envoyer une trame nmea0183 sur le canal de sortie (TX) de la carte.
Le port USB n'étant pas monté (lorsque mon boitier est en place rien n'est connecté sur le port usb de la carte, Le boitier est uniquement relié (RX,TX,Gnd) au multiplexeur sur les prises NMEA+ 3a et NMEA- 3b)
la trame n'est jamais transmise ! Le TX de la carte Arduino reste éteint (la led n'est pas HS). :cry:

Pour éclairer ma lanterne de néophyte, qui peut me dire quelle est la condition à respecter pour que cette LED TX s'allume ?! :?
pascal74
 
Messages: 6
Inscription: Lun 7 Avr 2014 14:04

Re: Transmettre automatiquement une chaine de caractères

Message non lude pascal74 » Ven 18 Avr 2014 20:38

Je viens de refaire un test en alimentant la carte uniquement avec la prise DCin.

Là encore et malgrés le convertisseur ttl <> rs232 la sortie TX reste malheureusement muette :cry:

Personne ne peu doc me dire comment transmettre une donnée sans que l'usb soit necessairement utilisee :?:

Merci
pascal74
 
Messages: 6
Inscription: Lun 7 Avr 2014 14:04

Re: Transmettre automatiquement une chaine de caractères

Message non lude tomsoft » Lun 19 Mai 2014 10:31

Pourquoi n'utilise pas SoftwareSerial ?

http://arduino.cc/en/Reference/SoftwareSerial

tu peut configurer tout autre port en entrée/sortie et utiliser SoftwareSerial.write

exemple:

SoftwareSerial ss(8,9); // Rx=8, TX=9

dans ton init:

ss.begin(9600);

dans ta loop

ss.writeln("hello world");
tomsoft
 
Messages: 8
Inscription: Lun 19 Mai 2014 10:05

Re: Transmettre automatiquement une chaine de caractères

Message non lude pascal74 » Lun 19 Mai 2014 10:37

Je ne connaissais ps :oops:

Merci pour cette info et aide que je vais tester au plus vite
pascal74
 
Messages: 6
Inscription: Lun 7 Avr 2014 14:04


Retourner vers Arduino

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité