Arduino Forum

International => Français => Topic started by: Burgou on Apr 03, 2019, 08:48 am

Title: Utilisation de "SoftwareSerial"
Post by: Burgou on Apr 03, 2019, 08:48 am
Bonjour,
Il y a quelque chose qui m'échappe dans le fonctionnement de la bibliothèque "SoftwareSerial".
Sur un Arduino UNO je n'arrive pas à utiliser une voie série définie sur les Pins 2 et 3.
J'ai mis au point le programme avec le moniteur série (en USB pin 0 et 1).
Je veux maintenant utiliser l'équipement définitif qui fonctionne en RS232.
Le flux est faible, c'est un caractère de commande à chaque transaction.
J'ai ajouté le circuit (MICROBOT RS232) pour convertir les signaux: il est sur les pin 2 et 3 de l'UNO.
Rien n'est tranféré sur ces pins.
Mais si je relie le fil RX du circuit RS232 sur la pin 0 (celle du moniteur serie), la çà transmet...mais sur RS232 !
Je ne comprends pas !
Voici un exemple (portion de mon code):
Code: [Select]

#include <SoftwareSerial.h>
#define RX 2                                  // affectation des broches
#define TX 3
SoftwareSerial RS232(RX, TX);                 // création de l'objet RS232
void setup()
 {  
 Serial.begin(9600);
 RS232.begin(9600);          // initialisation de la liaison série RS232

                   // on attend que le port soit ouvert.
 while (!Serial) {
   ;
 }
/*
Connexions UNO vers MICROBOT RS232
UNO(RX) pin 2 vers MICROBOT pin (TX)
UNO(TX) pin 3 vers MICROBOT pin (RX)
*/

Serial.println("ARDUINO CINESCAN actif ! en attente de commande...");  

"cela s'imprime bien sur le moniteur serie"
}

void loop()
{
 RS232.println("ARDUINO RS232 OK");  

" ici pas d'impression sur la ligne RS232"

 delay(1000);

}
Title: Re: Utilisation de "SoftwareSerial"
Post by: kamill on Apr 03, 2019, 09:36 am
Bonjour,

Tu es sur que tu as bien connecté RX et TX au niveau de l'adaptateur rs232.
Essaies ton adaptateur sur les pins sur le serial hard.
Essaies de croiser rx et tx.

Tu utilises mal les balises de code. C'est:
[code]
// programme ici
[/code]
Title: Re: Utilisation de "SoftwareSerial"
Post by: fdufnews on Apr 03, 2019, 10:30 am
Code: [Select]
/*
Connexions UNO vers MICROBOT RS232
UNO(RX) pin 2 vers MICROBOT pin (TX)
UNO(TX) pin 3 vers MICROBOT pin (RX)
 */
A la lecture de la doc de l'adaptateur MICROROBOT, je pense que c'est le contraire

RX    Asynchronous serial data receive
TX    Asynchronous serial data transmit


Donc:
Title: Re: Utilisation de "SoftwareSerial"
Post by: Burgou on Apr 03, 2019, 01:08 pm
j'ai essayé de croiser les fils mais le résultat est le même...
Title: Re: Utilisation de "SoftwareSerial"
Post by: fdufnews on Apr 03, 2019, 03:55 pm
La librairie softwareSerial fonctionne depuis longtemps. Elle est fiable.

Essaie de faire tourner le programme ci-dessous en rebouclant 2 et 3 sur l'arduino.
Normalement tout ce que tu tappes dans la console devrait revenir dans la console à travers softwareSerial.
Code: [Select]
SoftwareSerial mySerial(2,3); // RX, TX

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(57600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  Serial.println("Goodnight moon!");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(4800);
  mySerial.println("Hello, world?");
}

void loop() { // run over and over
  if (mySerial.available()) {
    Serial.write(mySerial.read());
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());
  }
}

Si le programme ci-dessus fonctionne:
Si l'interface fonctionne correctement, tu devrais avoir le même comportement qu'avec le rebouclage sur 2 et 3.
Title: Re: Utilisation de "SoftwareSerial"
Post by: Burgou on Apr 03, 2019, 06:54 pm
Merci pour la réponse, mais toujours rien sur la ligne !...
Pour avoir le message "Goodnight moon!" j'ai du modifier la vitesse: çà ne fonctionne qu'à 9600 Bauds.
Ensuite le retour des caractères ne se fait pas malgré le bouclage.
J'ai regardé avec un oscillo sur les pins: c'est l'électroencéphalogramme plat !
Je me demande si ma carte UNO n'a pas un problème. Je vais en commander une autre, sans doute une MEGA car je crois qu'elle à plusieurs ports série de base.
Title: Re: Utilisation de "SoftwareSerial"
Post by: bidouilleelec on Apr 03, 2019, 07:47 pm
L'adaptateur est-il alimenté et les masses reliées?
Title: Re: Utilisation de "SoftwareSerial"
Post by: Burgou on Apr 03, 2019, 08:39 pm
Oui il est alimenté. Il a fonctionné (transmis quelques bits) mais pas avec SoftwareSerial...
Title: Re: Utilisation de "SoftwareSerial"
Post by: kamill on Apr 03, 2019, 08:52 pm
Bonjour,

Je viens de m'apercevoir que le programme proposé par fdufnews au post #4 (http://forum.arduino.cc/index.php?topic=607722.msg4122956#msg4122956) ne fonctionne pas.

Après de plus amples investigation, je constate que le rebouclage d'une liaison SoftwareSerial ne fonctionne pas alors que le rebouclage d'une liaison hardware fonctionne.
Est ce que quelqu'un a une explication?
Title: Re: Utilisation de "SoftwareSerial"
Post by: fdufnews on Apr 03, 2019, 09:07 pm
Ah !!! Je n'avais pas envisagé ça.
Title: Re: Utilisation de "SoftwareSerial"
Post by: kamill on Apr 03, 2019, 09:09 pm
Moi non plus et ça me surprend que ça ne fonctionne pas.
Title: Re: Utilisation de "SoftwareSerial"
Post by: fdufnews on Apr 03, 2019, 09:44 pm
J'ai trouvé ça (https://forum.arduino.cc/index.php?topic=214848.0) mais c'est un peu vieux. J'ignore s'il y a eu des évolutions depuis.
Title: Re: Utilisation de "SoftwareSerial"
Post by: kamill on Apr 04, 2019, 11:06 am
Décidément il y a des choses bizarres avec SoftwareSerial.

En faisant des comparaisons entre softwareserial et serial hard, je me suis aperçu que softwareserial ne fonctionne pas en réception sur une mega (ce que semble confirmer le lien posté par fdufnews).
Bon d'accord ça ne présente pas trop d'intérêt, mais c'est quand même étrange.
Title: Re: Utilisation de "SoftwareSerial"
Post by: fdufnews on Apr 04, 2019, 01:18 pm
Attention, sur mega softwareSerial ne fonctionne pas sur toutes les IO voir là (https://www.arduino.cc/en/Reference/SoftwareSerial)
Title: Re: Utilisation de "SoftwareSerial"
Post by: kamill on Apr 04, 2019, 04:18 pm
Bien vu. Je n'avais pas fait attention à ça.
Title: Re: Utilisation de "SoftwareSerial"
Post by: bidouilleelec on Apr 04, 2019, 05:10 pm
Bpnjour,

Peut-être (posts #4 et #8 à #13):

https://stackoverflow.com/questions/40539119/softwareserial-example-not-working-as-expected (https://stackoverflow.com/questions/40539119/softwareserial-example-not-working-as-expected)

Cordialement,
bidouilleelec
Title: Re: Utilisation de "SoftwareSerial"
Post by: Burgou on Apr 04, 2019, 07:13 pm
Bonjour à tous,
J'ai enfin trouvé le défaut.
Tout d'abord la librairie SoftwareSerial n'est pas en cause.
J'ai repris tout à zéro et fait des mesures sur chaque pin.
Il s'agissait d'un problème d'alimentation. Au repos le circuit RS232 est bien alimenté en 5V, mais en transmission la tension tombait en dessous de 4v. (et fluctuait tout le temps)
Je me suis branché alors sur mon alim de labo et bingo, çà marche bien.
Il me reste a voir si c'est l'alim de l'UNO qui est déficiente ou si c'est l'équipement distant qui consomme trop.
Merci de votre aide.