Problème de communication entre shield SIM7600G-H et Arduino UNO

Bonjour,

Dans le cadre d'un projet d'étude, je souhaiterais suivre l'évolution de la température, de l'humidité et de la masse d'un bloc de glace au sein d'une "maisonnette" installé sur une place publique.

L'objectif est de pouvoir consulter l'évolution de ces paramètres à tout moment. L'idée serait donc de mesurer ces paramètres avec des capteurs adaptés (sonde I2C SEN0546 et capteur de force CZL204) et d'envoyer les données mesurées sur un site internet, ou une plateforme IoT du type thingspeak.

Pour ce faire, je me suis procuré le shield SIM7600G-H CAT4 4G (LTE) de DFROBOT https://www.dfrobot.com/product-1834.html qui devrait pouvoir me permettre de répondre à ma problématique.

Seulement, je n'arrive pas à faire communiquer ces 2 éléments. J'ai suivi le tutoriel donné par le fabricant (disponible à cette adresse https://wiki.dfrobot.com/SIM7600G_H_LTE_Shield_V1.0_SKU_TEL0124#target_14 ) mais je ne suis pas bien sûr de comprendre la jonction entre les ports RX-D8 et TX-D7. J'ai essayé plusieurs configurations possibles (RX et TX sur l'arduino vers D8 et D7 sur le shield, et inversement notamment) mais à chaque fois j'obtiens le même résultat.

Je téléverse le code suivant vers ma carte Arduino :

Code
#include <SoftwareSerial.h>
SoftwareSerial myserial(7, 8); // Define virtual serial port, Rx: 7, Tx: 8
void setup()
{
  myserial.begin(115200); // Initialize virtual serial port
  Serial.begin(115200); // Initialize Arduino default serial port
}

void loop()
{
  while (1) {
    while (myserial.available()) {
      Serial.write(myserial.read()); // If Serial receives data, output through mySerial
    }
    while (Serial.available()) {
      myserial.write(Serial.read()); // If mySerial receives data, output through Serial
    }
  }
}

Puis il ne se passe rien : j'ai beau envoyé des commandes AT dans le moniteur série, je n'ai aucun retour (j'ai pris soin de paramétrer le moniteur à 115200 bauds).

Mon premier réflexe avec ce type de shield a été de l'insérer sur la carte Arduino, en pensant que cela fonctionnait simplement comme ça. Mais en faisant cela, ma carte Arduino ne communique plus avec l'IDE, et je ne peux donc pas téléverser le script, et encore moins envoyer des commandes AT.

Du coup je viens vous demander de l'aide, en espérant que quelqu'un saura identifier mon problème et me guider dans la résolution de celui-ci.

Voici une photo d'un des montages que j'ai essayé, en connectant la carte Arduino et le shield en USB sur mon ordinateur :

Branchement

En vous remerciant pour la considération accordée à ma demande.

il manque au moins la connexion de GND entre les 2 cartes

si vous faites

il faut que la pin 7 soit connectée au port Tx du module et la pin 8 au port Rx et que les 2 GND soient connectés

il faut aussi s'assurer de la compatibilité des tension entre les 2 cartes pour la communication série (il semble être tous les 2 en 5V donc cette partie là est OK)

êtes vous sûr que votre module est à 115200 bauds ? c'est beaucoup pour Software Serial et je ne sais d'ailleurs pas si cette bibliothèque est portée sur le UNO R4 WiFi (je n'ai pas cet arduino, si on veut du wifi la majorité des participants ici prennent directement un ESP32)

il me semble me souvenir que le UNO R4 WiFi a 2 ports séries matériels, donc au lieu de Software Serial vous pourriez utiliser le second port peut être.

1 Like

Après lecture de la partie USB Serial & UART de doc, vous pouvez utiliser les pins 0 et 1 de votre UNO R4 avec Serial1

la pin 0 de l'arduino va à la pin Tx du module
la pin 1 de l'arduino va à la pin Rx du module
la pin GND de l'arduino va à la pin GND du module
le module a une alimentation suffisante (pas venant de l'arduino)
l'arduino est branché sur USB

testez avec ce code

#define module4G Serial1

void setup() {
  Serial.begin(115200);    // Initialize Arduino default serial port
  module4G .begin(115200); // Initialize port for the SIM7600G
}

void loop() {
  if (module4G.available()) Serial.write(module4G.read()); 
  if (Serial.available()) module4G.write(Serial.read()); 
}

l'usage d'un port série matériel est beaucoup plus robuste que l'émulation logicielle du port série.

1 Like

Merci pour vos retours, la solution que vous me proposez fonctionne bien.

Avec ce code et ces branchements, j'arrive à envoyer des commandes AT à ma carte Arduino, et j'ai pu envoyer mes données sur un channel thingspeak !

Pour répondre à votre premier poste, non je n'avais aucune certitude si le module était bien à 115200 bauds, mais j'essayais seulement de respecter les instructions données sur le wiki de DFROBOT. Je suis novice avec l'univers Arduino et j'avoue que mes connaissances sur l'utilisation de ce genre de module sont très faibles ^^

En tout cas vous m'aurez permis de me débloquer et de poursuivre mon travail. Merci beaucoup :pray:

super - bonne continuation et bons bricolages

1 Like

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