Problème de communication avec le module SIM7600G-H

J’utilise également une carte SIM7600G
maintenant je rencontre un problème étrange lors de l’envoi de la commande AT depuis mon Arduino Uno.

J’utilise la bibliothèque AltSoftSerial (pins 8 et 9) avec une alimentation externe 4V / 2A pour le module, et un diviseur de tension (2kΩ + 2kΩ) pour protéger la broche RX du SIM7600G.

Le problème :
Quand j’envoie AT, je reçois parfois un texte complètement déformé dans le moniteur série, du type :

bash

CopierModifier

x888<<88<<88<<
ث؟؟؟؟L*u

Ou parfois rien du tout.

J’ai essayé tous les baud rates standards : 9600, 19200, 38400, 57600, 115200 — sans succès.
Le moniteur série est bien configuré au bon débit avec "Les deux fins de ligne (Both NL & CR)".

Je pense à un problème de synchronisation du baud rate, ou bien une incompatibilité de niveau logique dans le sens SIM7600G → Arduino (RX)

par ex :
#include <AltSoftSerial.h>

AltSoftSerial gsm; // RX = pin 8, TX = pin 9 (for Arduino Uno/Nano)

void setup() {
Serial.begin(9600); // For Serial Monitor
gsm.begin(57600); // For GSM module (SIM800/SIM900 usually use 9600)

Serial.println("Envoi de AT au module GSM...");
delay(2000); // Wait for GSM to boot

gsm.println("AT"); // Send basic AT command
}

void loop() {
// Display response from GSM module
if (gsm.available()) {
char c = gsm.read();
Serial.write(c); // Show GSM response on Serial Monitor
}

// Optional: Forward PC input to GSM
if (Serial.available()) {
gsm.write(Serial.read());
}
}
ca donne :
Envoi de AT au module GSM...
????????

Salut,
la 1 ere chose que je vois et que tu initialises ton port serie GSM à 57600. Hormis les pins 0 et 1 qui sont des ports serie matériels, il faut éviter sur les autres pins de travailler a plus de 9600 bds.
as tu essayer de synchroniser les masses entre ton arduino et ton module SIM ?

as tu essayé de réunir les masses


@mayaduino
Merci de prendre quelques minutes pour lire "Les bonnes pratiques du forum francophone" et les appliquer.

En particulier, la mise en forme du code avec des balises en cliquant sur l'icône <code/>

:grimacing:
j'ai effectivement utilisé le mauvais terme.

Merci pour ta réponse !

Oui, j'avais déjà essayé avec 9600 bauds, et j'ai bien connecté les GND ensemble (GND Arduino vers GND SIM7600G). Malheureusement, je n'obtiens toujours pas de réponse correcte.

J'ai même utilisé un code de scan automatique pour tester toutes les vitesses de transmission (AT command test avec AltSoftSerial sur pins 8 et 9) :

#include <AltSoftSerial.h>

AltSoftSerial gsm; // RX = 8, TX = 9 sur Arduino Uno/Nano

String response = "";
long baudRates[] = {1200, 2400, 4800, 9600, 14400, 19200, 38400, 57600, 74880, 115200, 128000, 256000};

void setup() {
Serial.begin(9600);
delay(3000);

Serial.println(":magnifying_glass_tilted_left: Scan complet des baud rates pour le module GSM\n");

for (int i = 0; i < sizeof(baudRates) / sizeof(baudRates[0]); i++) {
long baud = baudRates[i];
gsm.begin(baud);
delay(1000);

Serial.print("Test à ");
Serial.print(baud);
Serial.print(" bauds... ");

// Vider les buffers
while (gsm.available()) gsm.read();
response = "";

gsm.println("AT");
delay(1000);

while (gsm.available()) {
  response += (char)gsm.read();
}

if (response.indexOf("OK") >= 0) {
  Serial.print("OK trouvé !");
} else if (response.length() > 0) {
  Serial.print("Réponse bizarre : ");
  Serial.print(response);
} else {
  Serial.print("Pas de réponse.");
}

Serial.println();
delay(1500);

}

Serial.println("\nScan terminé.");
}

void loop() {
// Rien ici
}

Et voici un extrait de ce que j'obtiens comme sortie :
Scan complet des baud rates pour le module GSM

Test à 1200 bauds... Réponse bizarre :
Test à 2400 bauds... Réponse bizarre : 2⸮⸮⸮62⸮22⸮⸮⸮2⸮2⸮⸮⸮2⸮⸮6⸮6⸮⸮⸮⸮⸮6⸮⸮⸮⸮⸮6⸮2⸮⸮⸮6⸮2⸮22⸮2⸮2
Test à 4800 bauds... Réponse bizarre : ⸮⸮⸮⸮⸮K⸮K[⸮[⸮⸮⸮K[⸮⸮Z⸮⸮⸮[[⸮⸮⸮[[⸮[⸮⸮K⸮⸮[⸮[⸮⸮⸮[⸮⸮⸮[Z⸮⸮⸮⸮K⸮⸮K⸮⸮KK[
Test à 9600 bauds... Réponse bizarre : ⸮⸮⸮⸮⸮⸮
Test à 14400 bauds... Réponse bizarre : ⸮xx⸮⸮xx
Test à 19200 bauds... Pas de réponse.
Test à 38400 bauds... Pas de réponse.

Il y a une piste que je n'ai pas encore explorée : envoyé des commandes AT sur le module sim depuis un module usb vers TTL en mesurant les tensions au niveau du RX et TX du module. c'est peut être là qu'est l'incompatibilité avec l'arduino.
si je ne trouve pas la solution avec mon module actuel, j'en achèterai un nouveau qui est compatible a 100%.

Un grand merci à vous pour votre aide précieuse ! :folded_hands:
et j'espère que vous trouverai la solution