Arduino UNO Communication Serie vers SA828

Je teste un module VHF SA828 : 1.5W Full-featured Miniature Walkie Talkie Module SA828|NiceRF

et notamment les commandes séries à envoyer pour communiquer avec le module.

J'arrive bien à envoyer les commandes de la UNO vers le module mais je n'ai jamais le retour de la réponse du module vers Arduino.

Par exemple j'envoie la commande (voir Sketch ci joint) : AAFA3143.9875,143.9875,etc... qui programme les 16 fréquences. Cette commande fonctionne car toutes les fréquences sont bien reçues par le module SA828.
Normalement, je devrais recevoir la réponse suivante du module : “OK\r\n” ou "ERROR\r\n"

Je ne reçois rien!

Idem, si j'envoie AAFAA qui devrait me répondre : SA828_VER2.0 ou AAFA1 qui devrait me renvoyer les 16 fréquences enregistrées.

Pouvez-vous m'aider ?

Merci.

Ci dessous le sketch :

void setup() {
  Serial.begin(9600);
  //Serial.println("AAFAA");//Affiche le nom du module et la version du soft
  //Serial.println("AAFA2");//Remet le module en configuration d'origine
  //Serial.println("AAFA1");//Lit les paramètres du module (fréquencesTX, RX, etc...)
  //Set parameters to SA828 (AAFA3)
  Serial.println("AAFA3143.9875,143.9875,154.1500,154.1500,154.1500,154.1500,143.9875,143.9875,154.7500,154.7500,155.7500,155.7500,156.7500,156.7500,157.7500,157.7500,158.7500,158.7500,159.7500,159.7500,160.7500,160.7500,161.7500,161.7500,162.7500,162.7500,163.7500,163.7500,164.7500,164.7500,165.7500,165.7500,000,000,1");
  Serial.println("");
  Serial.println ("");
  delay (500);

}

void loop() {

  if (Serial.available() )
  {
        Serial.println(Serial.readString());
  }
}

Il y a un petit problème ici.
Tu utilises la liaison série à la fois pour dialoguer avec le module SA828 et pour dialoguer avec ton PC.

La carte UNO n'ayant qu'une seule UART, il faudrait utiliser softwareSerial afin de créer une liaison série secondaire pour le dialogue avec le module HF et conserver la liaison principale pour la programmation et le debug.

Bonjour fdufnews, bonjour à tous,

Merci pour ta réponse qui m'a permis d'y voir clair !

Ca fonctionne avec ce sketch utilisant SoftwareSerial.h

SoftwareSerial mySerial(10, 11); // RX, TX

void setup() {
  Serial.begin(9600);
  mySerial.begin(9600);
  mySerial.println("AAFAA");//Affiche le nom du module et la version du soft
  //mySerial.println("AAFA2");//Remet le module en configuration d'origine
  //mySerial.println("AAFA1");//Lit les paramètres du module (fréquencesTX, RX, etc...)
  //mySerial.write("AAFA1");
  //Set parameters to SA828 (AAFA3)
  mySerial.println("AAFA3143.9875,143.9875,154.1500,154.1500,154.1500,154.1500,143.9875,143.9875,154.7500,154.7500,155.7500,155.7500,156.7500,156.7500,157.7500,157.7500,158.7500,158.7500,159.7500,159.7500,160.7500,160.7500,161.7500,161.7500,162.7500,162.7500,163.7500,163.7500,164.7500,164.7500,165.7500,165.7500,000,000,1");
  Serial.println("AAFAA");
  Serial.println("");
  delay (500);

}

void loop() {

  if (mySerial.available() )
  {
    Serial.println(mySerial.readString());
  }
}

Merci encore pour l'aide!

Rebonjour,

Un petit soucis toutefois, lorsque je lance la commande AAFA1 la liste des 16 fréquences doit s'afficher.
Or, je n'en reçois que 7!

Une idée du pourquoi?

Ci dessous données reçues :

AAFA1

AA143.9875,143.9875,154.1500,154.1500,154.1500,154.1500,143.987

2 suggestions:

  • Augmenter le débit sur Serial en passant à 115200. Il n'y a aucune raison de travailler à faible débit sur cette ligne
  • retirer le delay(500) à la fin de setup() car il est possible que des caractères se perdent. A 9600 bauds tu reçois 1 caractère environ toutes les 10ms, donc en 500ms cela fait autour de 50 caractères dans le buffer de réception. Comme ensuite tu vides ledit buffer à 9600 bauds il est possible que tu perdes la communication. Ne pas oublier de SoftwareSerial est une UART logiciel qui fonctionne sous interruption et Serial fonctionne aussi sous interruption. Lorsque le buffer de réception de Serial est saturé il peut y avoir du ralentissement pour les autres tâches.

Bonjour,

J'ai augmenté le débit sur Serial à 115200.
J'ai laissé le débit à 9600 sur SoftwareSerial car le module SA828 ne fonctionne qu'avec ce débit.
J'ai enlevé le delay(500)
Et ça fonctionne!
Merci fdufnews.

De rien bonne continuation

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.