Part de démarrage Lilygo TTGO T-A7670G ESP32 (4G, GPRS et GPS)

Part de démarrage Lilygo TTGO T-A7670G ESP32 (4G, GPRS et GPS)

Commencez avec le module ESP32 et T-A7670G 4G / GPS / GPRS. Tout au long de ce guide, nous utiliserons la carte Lilygo TTGO T-A7670G ESP32 qui combine la puce ESP32, le module A7670G (ou A7670E, A7670SA), la fente de carte SIM, la carte microSD, le GPS, la batterie et le chargeur sur la même carte. Outre Wi-Fi et Bluetooth, vous pouvez communiquer avec cette carte ESP32 à l’aide de SMS. Vous pouvez également le connecter à Internet à l’aide de votre plan de données de carte SIM et obtenir l’emplacement GPS.

Début avec Lilygo TTGO T-A7670G ESP32 4G GPRS et GPS

Compatibilité

Vous devez sélectionner la bonne version de la carte pour votre région.

– A7670G = Global (nous recommandons cette version avec GPS)

– A7670E = Europe / Asie du Sud-Est / Amérique du Sud

– A7670SA = Amérique du Sud / Nouvelle-Zélande / Australie

– Vous pouvez acheter votre tableau Lilygo TTGO T-A7670G ici

Présentation du Lilygo TTGO T-A7670G ESP32 (avec GPS)

Le Lilygo TTGO T-A7670G est un tableau de développement ESP32 avec un module A7670G / A7670E / A7670SA. Cela ajoute LTE-FDD, GSM et GPRS à votre conseil d’administration. Cela signifie qu’avec ce tableau, vous pouvez envoyer des SMS et les connecter à Internet à l’aide d’un plan de données de carte SIM. Si vous achetez l’option avec GPS, vous pouvez obtenir l’emplacement et le temps. Vous pouvez trouver plus d’informations sur le référentiel GitHub Lilygo-T-A76XX officiel.

ESP32 Lilygo TTGO T-A7670G Présentation de la carte Dev

Outre le module A7670G, la carte est également livrée avec des fonctionnalités intéressantes comme un support de batterie pour une batterie 18650, un circuit de chargement de batterie où vous pouvez connecter des panneaux solaires pour recharger la batterie et un emplacement pour carte microSD qui peut être utile pour les projets d’exploitation de données de données ou pour enregistrer les paramètres de configuration.

Voici un résumé du Lilygo TTGO T-A7670G ESP32 (avec GPS) Caractéristiques du conseil d’administration:

  • Tension d’alimentation: 3,3 V CC ou 5V DC
  • Chip ESP32 (module Wrover-B) (processeur double cœur 240 MHz)
  • Mémoire de flash: 4 Mo
  • PSRAM: 8 Mo
  • Wi-Fi intégré
  • Bluetooth intégré
  • Convertisseur USB vers série: CP2104 ou CH9102 (conducteurs)
  • Module SIMCOM A7670G intégré
  • Esclot de carte Nano SIM intégré
  • Emplacement d’antenne SIM intégré
  • Disponible avec ou sans GPS
  • Circuit de charge de batterie Li-ion / Li-Po intégré:
    • Interface de charge d’énergie solaire pour un panneau solaire de 4,4-6V
    • Support de batterie 1x 18650 intégré
    • Connecteur de panneau solaire intégré 2P JST-Ph
  • Emplacement de carte micro-sd intégré
  • Interrupteur de batterie marche / arrêt
  • Boutons de réinitialisation et de démarrage
  • LED de statut

Voici un aperçu rapide du conseil d’administration:

ESP32 Lilygo TTGO T A7670G Dev Board Présentation des points forts

Pour utiliser les capacités de cette carte, vous devez avoir une carte Nano SIM avec un plan de données et un câble USB-C pour télécharger du code sur la carte. Le package est livré avec une antenne externe pour la connexion LTE.

ESP32 Lilygo TTGO T-A7670G Dev Board avec antenne LTE à bande complète 4G

Si vous achetez la carte Lilygo TTGO T-A7670G avec GPS, il sera également livré avec une antenne GPS que vous pouvez vous connecter à la carte comme suit:

ESP32 Lilygo TTGO T-A7670G Dev Board avec antenne connectée GPS

Vous pouvez également connecter une carte microSD:

ESP32 Lilygo TTGO T-A7670G Carte de développement MicroSD Carte Battery

Où acheter Lilygo TTGO T-A7670G ESP32?

Vérifiez le lien suivant:

Vous devez sélectionner la bonne version de la carte pour votre région.

ESP32 Lilygo TTGO T A7670G A7670E A7670SA Comparaison

Lilygo TTGO T-A7670G ESP32 Pinout

L’image suivante montre l’épinglage de la carte T-A7670G ESP32.

Le tableau suivant montre les connexions entre l’ESP32 et la puce T-A7670G:

T-A7670G ESP32
TX GPIO 26
Rx GPIO 27
POUVOIR GPIO 4

Pour communiquer avec la carte microSD, vous avez besoin d’un protocole de communication SPI. Ce sont les GPIO utilisés:

Carte microSD (carte TF) ESP32
Mosi GPIO 15
SCLK GPIO 14
CS GPIO 13
Miso GPIO 2

Aux commandes

Les commandes sont utilisées pour contrôler les modems, comme c’est le cas du T-7670G. Dans le cas de l’ESP32, vous envoyez les commandes AT via le protocole de communication série. Ensuite, le modem réagit également via la communication série.

Il existe quatre types de commandes AT: test; lire; ensemble; exécution. Vous pouvez trouver la liste complète des commandes AT pour le T-7670G au lien suivant:

En voici quelques commandes:

  • Vérifiez la communication avec le module: à
  • Vérifiez si la carte SIM est prête: AT + CPIN?
  • Vérifiez l’état d’enregistrement de l’appareil: AT + CGreg?

Bibliothèques

Comme nous l’avons expliqué précédemment, l’ESP32 communique avec la puce T-7670G en envoyant des commandes via une communication série. Vous n’avez pas besoin d’une bibliothèque, vous pouvez simplement établir une communication série avec le module et commencer à envoyer aux commandes.

Cependant, il pourrait être plus pratique d’utiliser une bibliothèque. Par exemple, la bibliothèque TinyGSM sait quelles commandes envoyer et comment gérer les réponses et l’enroule dans l’interface client standard Arduino.

IMPORTANT: Pour ce tutoriel, nous n’utiliserons pas la bibliothèque TinyGSM officielle de VshyManskyy. Nous utiliserons le Tinygsm-Fork par Lewisxhe. Si vous avez déjà installé la bibliothèque TinyGSM par VshyManskyy, vous devez le supprimer pour utiliser cette nouvelle fourche.

Installation de la bibliothèque Tinygsm-Fork

La bibliothèque Tinygsm-Fork by Lewisxhe n’est pas disponible pour installer via le gestionnaire de bibliothèque Arduino, vous devez donc copier les fichiers de la bibliothèque dans le dossier Arduino Installation Libraries. Alternativement, dans votre IDE Arduino, vous pouvez aller sur Sketch> Inclure la bibliothèque> Ajouter une bibliothèque .zip et sélectionner la bibliothèque qui peut être téléchargée ci-dessous.

Préparation du tableau Lilygo T-7670G ESP32

Cette carte ne prend en charge que les cartes Nano SIM. Vous avez besoin d’une carte SIM pour 4G et GPRS. Pour utiliser 4G et GPRS, vous avez besoin d’une carte SIM avec un plan de données. Cela peut être coûteux dans certains pays, donc cela peut être prohibitif en fonction de la quantité de plan de données dans votre pays.

Lorsque nous vivons (Portugal), nous pouvons obtenir une carte SIM avec un plan de données, des appels et des SMS (assez pour les projets ESP32) pour environ 10 $. Nous vous recommandons d’utiliser une carte SIM avec un plan prépayé ou mensuel afin que vous sachiez exactement combien vous dépensez. Il existe également des entreprises spécialisées dans les cartes SIM pour les projets IoT.

Nano Sim Card Vodafone

Avant de brancher votre carte sur l’ordinateur, vous devez suivre les étapes suivantes:

1) Insérez une carte Nano SIM;

ESP32 Lilygo TTGO T-A7670G Board avec carte SIM insérée

2) Connectez l’antenne LTE à bande complète à la connexion;

ESP32 Lilygo TTGO T-A7670G Dev Board Connected LTE Band Antenne

3) Afin de programmer votre carte, vous devez l’alimenter en utilisant le câble USB Type-C;

ESP32 Lilygo TTGO T-A7670G Câble USB Type C connecté

4) Enfin, si vous ne voyez pas le port COM apparaître sur votre ordinateur, vous devez installer le pilote de pont USB CH9102: Windows ou Mac OS.

Détails APN

Pour connecter votre carte SIM à Internet, vous devez disposer des détails APN de votre plan de téléphone. Vous avez besoin du nom de domaine, du nom d’utilisateur et du mot de passe.

Dans mon cas, j’utilise Vodafone Portugal. Si vous recherchez les paramètres GPRS APN suivis du nom du fournisseur de plan téléphonique, (dans mon cas, c’est: «GPRS APN Vodafone Portugal»), vous pouvez généralement trouver dans un forum ou dans leur site Web toutes les informations dont vous avez besoin.

Il peut être un peu difficile de trouver les détails si vous n’utilisez pas un fournisseur bien connu. Vous devrez donc les contacter directement.

Programmation du Lilygo TTGO T-A7670G ESP32

Ce premier croquis que vous exécuterez sur votre carte est bon pour vérifier toutes les connexions. Il démarrera le modem, se connectera au réseau APN et fera une demande HTTPS reçoit sur un site Web.

  1. Copiez le code suivant sur votre IDE Arduino:
/*
  Rui Santos & Sara Santos - Raspberryme.com
  Complete project details at https://Raspberryme.com/lilygo-ttgo-t-a7670g-a7670e-a7670sa-esp32/
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files.  
  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*/
// set SIM card pin, if any
#define SIM_PIN ""

// It depends on the operator whether you need to set up an APN or not. 
// With some operators if you do not set up an APN, the connection will be rejected when registering for the network.
#define NETWORK_APN "REPLACE_WITH_YOUR_NETWORK_APN"

// If the status code 715 is returned, you might need to update your SIMCOM firmware please see here: https://github.com/Xinyuan-LilyGO/LilyGO-T-A76XX/issues/117
// How to update the firmware: https://github.com/Xinyuan-LilyGO/LilyGO-T-A76XX/blob/main/docs/update_fw.md
// Some websites block the ESP32 connection, so it might return an error.
// The githubusercontent.com URL defined below has been tested and it returns the proper HTTPS GET request
const char *request_url[] = {
  "https://gist.githubusercontent.com/RuiSantosdotme/7db8537cef1c84277c268c76a58d07ff/raw/d3fe4cd6eff1ed43e6dbd1883ab7eba8414e2406/gistfile1.txt"
};

#define TINY_GSM_RX_BUFFER 1024 // Set RX buffer to 1Kb

#define LILYGO_T_A7670

#if defined(LILYGO_T_A7670)
  #define MODEM_BAUDRATE                      (115200)
  #define MODEM_DTR_PIN                       (25)
  #define MODEM_TX_PIN                        (26)
  #define MODEM_RX_PIN                        (27)
  // The modem boot pin needs to follow the startup sequence.
  #define BOARD_PWRKEY_PIN                    (4)
  #define BOARD_ADC_PIN                       (35)
  // The modem power switch must be set to HIGH for the modem to supply power.
  #define BOARD_POWERON_PIN                   (12)
  #define MODEM_RING_PIN                      (33)
  #define MODEM_RESET_PIN                     (5)
  #define BOARD_MISO_PIN                      (2)
  #define BOARD_MOSI_PIN                      (15)
  #define BOARD_SCK_PIN                       (14)
  #define BOARD_SD_CS_PIN                     (13)
  #define BOARD_BAT_ADC_PIN                   (35)
  #define MODEM_RESET_LEVEL                   HIGH
  #define SerialAT                            Serial1
  #define MODEM_GPS_ENABLE_GPIO               (-1)
  #define MODEM_GPS_ENABLE_LEVEL              (-1)
  #ifndef TINY_GSM_MODEM_A7670
    #define TINY_GSM_MODEM_A7670
  #endif
#endif

// YOU MUST USE THE TinyGSM-fork LIBRARY BY lewisxhe - https://github.com/lewisxhe/TinyGSM-fork
// If you already have the vshymanskyy/TinyGSM library installed, you must remove it and use the TinyGSM-fork version by lewisxhe mentioned above
#include 

// See all AT commands, if wanted
//#define DUMP_AT_COMMANDS
#ifdef DUMP_AT_COMMANDS  // if enabled it requires the streamDebugger lib
  #include 
  StreamDebugger debugger(SerialAT, Serial);
  TinyGsm modem(debugger);
#else
  TinyGsm modem(SerialAT);
#endif

void HTTPSGetRequest() {
  for (int i = 0; i < sizeof(request_url) / sizeof(request_url[0]); ++i) {
    int retry = 3;
    while (retry--) {
      Serial.print("Request URL : ");
      Serial.println(request_url[i]);

      // Set GET URT
      if (!modem.https_set_url(request_url[i])) {
        Serial.print("Failed to request : "); Serial.println(request_url[i]);
        // Debug
        // modem.sendAT("+CSSLCFG=\"enableSNI\",0,1");
        // modem.waitResponse();
        delay(3000);
        continue;
      }

      // Send GET request
      int httpCode = 0;
      httpCode = modem.https_get();
      if (httpCode != 200) {
        Serial.print("HTTP get failed ! error code = ");
        Serial.println(httpCode);
        delay(3000);
        continue;
      }

      // Get HTTPS header information
      String header = modem.https_header();
      Serial.print("HTTP Header : ");
      Serial.println(header);
      delay(1000);

      // Get HTTPS response
      String body = modem.https_body();
      Serial.print("HTTP body : ");
      Serial.println(body);
      delay(3000);
      break;
    }
    Serial.println("-------------------------------------");
  }
}

void setup() {
  Serial.begin(115200);
  Serial.println("Init...");
  SerialAT.begin(115200, SERIAL_8N1, MODEM_RX_PIN, MODEM_TX_PIN);

  pinMode(BOARD_POWERON_PIN, OUTPUT);
  digitalWrite(BOARD_POWERON_PIN, HIGH);

  // Set modem reset pin, reset modem
  pinMode(MODEM_RESET_PIN, OUTPUT);
  digitalWrite(MODEM_RESET_PIN, !MODEM_RESET_LEVEL); delay(100);
  digitalWrite(MODEM_RESET_PIN, MODEM_RESET_LEVEL); delay(2600);
  digitalWrite(MODEM_RESET_PIN, !MODEM_RESET_LEVEL);

  pinMode(BOARD_PWRKEY_PIN, OUTPUT);
  digitalWrite(BOARD_PWRKEY_PIN, LOW);
  delay(100);
  digitalWrite(BOARD_PWRKEY_PIN, HIGH);
  delay(100);
  digitalWrite(BOARD_PWRKEY_PIN, LOW);

  // Check if the modem is online
  Serial.println("Start modem...");

  int retry = 0;
  while (!modem.testAT(1000)) {
    Serial.print(".");
    if (retry++ > 10) {
      digitalWrite(BOARD_PWRKEY_PIN, LOW);
      delay(100);
      digitalWrite(BOARD_PWRKEY_PIN, HIGH);
      delay(1000);
      digitalWrite(BOARD_PWRKEY_PIN, LOW);
      retry = 0;
    }
  }
  Serial.println();

  // Check if SIM card is online
  SimStatus sim = SIM_ERROR;
  while (sim != SIM_READY) {
    sim = modem.getSimStatus();
    switch (sim) {
      case SIM_READY:
        Serial.println("SIM card online");
        break;
      case SIM_LOCKED:
        Serial.println("The SIM card is locked. Please unlock the SIM card first.");
        modem.simUnlock(SIM_PIN);
        break;
      default:
        break;
    }
    delay(1000);
  }

  if (!modem.setNetworkMode(MODEM_NETWORK_AUTO)) {
    Serial.println("Set network mode failed!");
  }
  String mode = modem.getNetworkModes();
  Serial.print("Current network mode : ");
  Serial.println(mode);

#ifdef NETWORK_APN
  Serial.printf("Set network apn : %s\n", NETWORK_APN);
  modem.sendAT(GF("+CGDCONT=1,\"IP\",\""), NETWORK_APN, "\"");
  if (modem.waitResponse() != 1) {
    Serial.println("Set network apn error !");
  }
#endif

  // Check network registration status and network signal status
  int16_t sq ;
  Serial.print("Wait for the modem to register with the network.");
  RegStatus status = REG_NO_RESULT;
  while (status == REG_NO_RESULT || status == REG_SEARCHING || status == REG_UNREGISTERED) {
    status = modem.getRegistrationStatus();
    switch (status) {
      case REG_UNREGISTERED:
      case REG_SEARCHING:
        sq = modem.getSignalQuality();
        Serial.printf("[%lu] Signal Quality:%d\n", millis() / 1000, sq);
        delay(1000);
        break;
      case REG_DENIED:
        Serial.println("Network registration was rejected, please check if the APN is correct");
        return ;
      case REG_OK_HOME:
        Serial.println("Online registration successful");
        break;
      case REG_OK_ROAMING:
        Serial.println("Network registration successful, currently in roaming mode");
        break;
      default:
        Serial.printf("Registration Status:%d\n", status);
        delay(1000);
        break;
    }
  }
  Serial.println();

  Serial.printf("Registration Status:%d\n", status);
  delay(1000);

  String ueInfo;
  if (modem.getSystemInformation(ueInfo)) {
    Serial.print("Inquiring UE system information:");
    Serial.println(ueInfo);
  }

  if (!modem.setNetworkActive()) {
    Serial.println("Enable network failed!");
  }
  delay(5000);

  String ipAddress = modem.getLocalIP();
  Serial.print("Network IP:"); Serial.println(ipAddress);

  // Initialize HTTPS
  modem.https_begin();

  HTTPSGetRequest();
}

void loop() {
  // Debug AT
  if (SerialAT.available()) {
    Serial.write(SerialAT.read());
  }
  if (Serial.available()) {
    SerialAT.write(Serial.read());
  }
  delay(1);
}

#ifndef TINY_GSM_FORK_LIBRARY
  #error "The correct library was NOT found. You must install TinyGSM-fork by lewisxhe - https://github.com/lewisxhe/TinyGSM-fork - No correct definition detected, Please copy all the [lib directories](https://github.com/Xinyuan-LilyGO/LilyGO-T-A76XX/tree/main/lib) to the arduino libraries directory , See README"
#endif

Afficher le code brut

  1. Insérez votre goupille de carte SIM, si vous l’avez. Dans mon cas, j’ai désactivé la broche.
#define SIM_PIN ""
  1. Insérez les détails de votre réseau APN sur la ligne suivante:
#define NETWORK_APN "t"

Par exemple, dans mon cas:

#define NETWORK_APN "net2.vodafone.pt"
  1. Allez dans Tools> Board et sélectionnez le module Dev ESP32.
  1. Enfin, téléchargez le code sur votre carte.
Bouton Arduino 2.0 Télécharger

Ouvrez le moniteur en série à un taux en bauds de 115200. Appuyez sur le bouton intégré pour redémarrer la carte. Attendez un peu de temps jusqu’à ce que la carte se connecte au réseau (dans mon cas, cela peut prendre 1 à 2 minutes).

Vous devriez obtenir quelque chose de similaire dans le moniteur série Arduino IDE.

ESP32 Lilygo TTGO T-A7670G A7670E A7670SA Dev Board https Get Demande Démonstration

Comment fonctionne le code

Jetons un coup d’œil rapide aux parties pertinentes du code.

Tout d’abord, insérez la broche de la carte SIM, les détails APN et l’URL de demande souhaitée (nous utilisons simplement un exemple d’URL de GitHub que nous avons créé pour tester la connexion):

// set SIM card pin, if any
#define SIM_PIN ""

#define NETWORK_APN ""

const char *request_url[] = {
  "https://gist.githubusercontent.com/RuiSantosdotme/7db8537cef1c84277c268c76a58d07ff/raw/d3fe4cd6eff1ed43e6dbd1883ab7eba8414e2406/gistfile1.txt"
};

Ensuite, vous devez définir le module que vous utilisez. La bibliothèque est compatible avec de nombreux modules différents. Pour utiliser le T-A7670, incluez la ligne suivante (affectation PIN pour d’autres modules T-A76XX):

#define LILYGO_T_A7670

Incluez la bibliothèque Tinygsm-Fork par Lewisxhe:

#include 

Pinout A-7670G

Les lignes suivantes définissent le taux de bauds du module et la broche:

#define MODEM_BAUDRATE                      (115200)
#define MODEM_DTR_PIN                       (25)
#define MODEM_TX_PIN                        (26)
#define MODEM_RX_PIN                        (27)
// The modem boot pin needs to follow the startup sequence.
#define BOARD_PWRKEY_PIN                    (4)
#define BOARD_ADC_PIN                       (35)
// The modem power switch must be set to HIGH for the modem to supply power.
#define BOARD_POWERON_PIN                   (12)
#define MODEM_RING_PIN                      (33)
#define MODEM_RESET_PIN                     (5)
#define BOARD_MISO_PIN                      (2)
#define BOARD_MOSI_PIN                      (15)
#define BOARD_SCK_PIN                       (14)
#define BOARD_SD_CS_PIN                     (13)
#define BOARD_BAT_ADC_PIN                   (35)
#define MODEM_RESET_LEVEL                   HIGH
#define SerialAT                            Serial1
#define MODEM_GPS_ENABLE_GPIO               (-1)
#define MODEM_GPS_ENABLE_LEVEL              (-1)

Communication en série

Démarrez la communication série avec le moniteur série pour le débogage et le modem à envoyer aux commandes:

Serial.begin(115200);
Serial.println("Init...");
SerialAT.begin(115200, SERIAL_8N1, MODEM_RX_PIN, MODEM_TX_PIN);

Alimenter le modem

Dans la configuration (), vous devez toujours inclure la procédure suivante pour allumer et démarrer le modem:

pinMode(BOARD_POWERON_PIN, OUTPUT);
digitalWrite(BOARD_POWERON_PIN, HIGH);

// Set modem reset pin, reset modem
pinMode(MODEM_RESET_PIN, OUTPUT);
digitalWrite(MODEM_RESET_PIN, !MODEM_RESET_LEVEL); delay(100);
digitalWrite(MODEM_RESET_PIN, MODEM_RESET_LEVEL); delay(2600);
digitalWrite(MODEM_RESET_PIN, !MODEM_RESET_LEVEL);

pinMode(BOARD_PWRKEY_PIN, OUTPUT);
digitalWrite(BOARD_PWRKEY_PIN, LOW);
delay(100);
digitalWrite(BOARD_PWRKEY_PIN, HIGH);
delay(100);
digitalWrite(BOARD_PWRKEY_PIN, LOW);

// Check if the modem is online
Serial.println("Start modem...");

Attendez que le module T-A7670 commence à répondre aux commandes, donc cela signifie qu’il fonctionne correctement.

int retry = 0;
while (!modem.testAT(1000)) {
  Serial.print(".");
  if (retry++ > 10) {
    digitalWrite(BOARD_PWRKEY_PIN, LOW);
    delay(100);
    digitalWrite(BOARD_PWRKEY_PIN, HIGH);
    delay(1000);
    digitalWrite(BOARD_PWRKEY_PIN, LOW);
    retry = 0;
  }
}
Serial.println();

Après, vérifiez si la carte SIM est correctement insérée et déverrouillez-la avec le sim_pin si nécessaire.

// Check if SIM card is online
SimStatus sim = SIM_ERROR;
while (sim != SIM_READY) {
  sim = modem.getSimStatus();
  switch (sim) {
    case SIM_READY:
      Serial.println("SIM card online");
      break;
    case SIM_LOCKED:
      Serial.println("The SIM card is locked. Please unlock the SIM card first.");
      modem.simUnlock(SIM_PIN);
      break;
    default:
      break;
  }
  delay(1000);
}

Définir le mode réseau

Définissez le mode réseau et APN pour établir une connexion Internet:

  if (!modem.setNetworkMode(MODEM_NETWORK_AUTO)) {
    Serial.println("Set network mode failed!");
  }
  String mode = modem.getNetworkModes();
  Serial.print("Current network mode : ");
  Serial.println(mode);

#ifdef NETWORK_APN
  Serial.printf("Set network apn : %s\n", NETWORK_APN);
  modem.sendAT(GF("+CGDCONT=1,\"IP\",\""), NETWORK_APN, "\"");
  if (modem.waitResponse() != 1) {
    Serial.println("Set network apn error !");
  }
#endif

Ensuite, exécutez une boucle qui vérifie la qualité du signal et s’arrête lorsque la carte a établi une connexion Internet réussie.

// Check network registration status and network signal status
int16_t sq ;
Serial.print("Wait for the modem to register with the network.");
RegStatus status = REG_NO_RESULT;
while (status == REG_NO_RESULT || status == REG_SEARCHING || status == REG_UNREGISTERED) {
  status = modem.getRegistrationStatus();
  switch (status) {
    case REG_UNREGISTERED:
    case REG_SEARCHING:
      sq = modem.getSignalQuality();
      Serial.printf("[%lu] Signal Quality:%d\n", millis() / 1000, sq);
      delay(1000);
      break;
    case REG_DENIED:
      Serial.println("Network registration was rejected, please check if the APN is correct");
      return ;
    case REG_OK_HOME:
      Serial.println("Online registration successful");
      break;
    case REG_OK_ROAMING:
      Serial.println("Network registration successful, currently in roaming mode");
      break;
    default:
      Serial.printf("Registration Status:%d\n", status);
      delay(1000);
      break;
  }
}
Serial.println();

Serial.printf("Registration Status:%d\n", status);
delay(1000);

Obtenir des informations de modem

Vous pouvez exécuter ces commandes pour imprimer les informations du modem dans le moniteur série.

String ueInfo;
if (modem.getSystemInformation(ueInfo)) {
  Serial.print("Inquiring UE system information:");
  Serial.println(ueInfo);
}

if (!modem.setNetworkActive()) {
  Serial.println("Enable network failed!");
}
delay(5000);

String ipAddress = modem.getLocalIP();
Serial.print("Network IP:"); Serial.println(ipAddress);

Https reçoit une demande

Afin de faire une demande HTTPS GET à la variable Request_url définie au début de l’esquisse, vous devez démarrer un client HTTPS:

modem.https_begin();

Enfin, appelez le httpsGetRequest () pour faire la demande HTTPS GET. Cette fonction imprimera le code HTTP, l’en-tête HTTP et le corps HTTP de la demande:

HTTPSGetRequest();

HttpsGetRequest ()

Cette fonction reçoit une ou plusieurs URL, puis il fait 3 tentatives pour obtenir une réponse HTTPS valide d’un site Web. Il imprime certaines informations de débogage dans le moniteur série telles que le code HTTP, l’en-tête HTTP et le corps HTTP de la réponse.

void HTTPSGetRequest() {
  for (int i = 0; i < sizeof(request_url) / sizeof(request_url[0]); ++i) {
    int retry = 3;
    while (retry--) {
      Serial.print("Request URL : ");
      Serial.println(request_url[i]);

      // Set GET URT
      if (!modem.https_set_url(request_url[i])) {
        Serial.print("Failed to request : "); Serial.println(request_url[i]);
        // Debug
        // modem.sendAT("+CSSLCFG=\"enableSNI\",0,1");
        // modem.waitResponse();
        delay(3000);
        continue;
      }

      // Send GET request
      int httpCode = 0;
      httpCode = modem.https_get();
      if (httpCode != 200) {
        Serial.print("HTTP get failed ! error code = ");
        Serial.println(httpCode);
        delay(3000);
        continue;
      }

      // Get HTTPS header information
      String header = modem.https_header();
      Serial.print("HTTP Header : ");
      Serial.println(header);
      delay(1000);

      // Get HTTPS response
      String body = modem.https_body();
      Serial.print("HTTP body : ");
      Serial.println(body);
      delay(3000);
      break;
    }
    Serial.println("-------------------------------------");
  }
}

Conseils de dépannage

1. Le code ne compile pas

Important: pour ce tutoriel, nous n’utilisons pas la bibliothèque TinyGSM officielle de VshyManskyy. Nous utilisons le tinygsm-foule par Lewisxhe. Si vous avez déjà installé la bibliothèque TinyGSM par VshyManskyy, vous devez le supprimer.

Installation de la bibliothèque Tinygsm-Fork

La bibliothèque Tinygsm-Fork by Lewisxhe n’est pas disponible pour installer via le gestionnaire de bibliothèque Arduino, vous devez donc copier les fichiers de la bibliothèque dans le dossier Arduino Installation Libraries. Alternativement, dans votre IDE Arduino, vous pouvez aller sur Sketch> Inclure la bibliothèque> Ajouter une bibliothèque .zip et sélectionner la bibliothèque qui peut être téléchargée ci-dessous.

2. HTTPS GET DEMAND RETOUR Code d’état 715

Si vous faites une demande HTTPS reçoit un site Web et qu’il renvoie le code d’état 715, vous devrez peut-être mettre à jour votre firmware Simcom. Vous pouvez en savoir plus sur ce problème ici.

Veuillez noter que certains sites Web bloquent la connexion ESP32, afin qu’il puisse renvoyer une erreur HTTP. L’URL GitHubuserContent.com définie dans ce projet a été testée et il renvoie la demande de GET HTTPS appropriée.

3. Impossible de télécharger du code, car le port com n’apparaît pas

Afin de programmer votre carte, vous devez l’alimenter en utilisant le câble USB Type-C, si vous utilisez l’autre port USB, il ne vous permettra pas de programmer l’ESP32.

Vous devez également installer dans votre ordinateur le pilote de pont USB CH9102: Windows ou Mac OS.

ESP32 Lilygo TTGO T-A7670G Câble USB Type C connecté

Emballage

Dans ce tutoriel, vous avez appris à commencer avec la carte Lilygo TTGO T-A7670G ESP32, Pinout et ses principales fonctionnalités. Ce didacticiel peut également être appliqué si vous utilisez un ESP32 «régulier» connecté à un module SIM7670G externe. Ce module prend en charge la 4G qui peut être très utile pour les projets IoT et domotique. Vous avez également appris à connecter le conseil d’administration à Internet et à faire une demande HTTPS

La carte Lilygo TTGO T-A7670G ESP32 est également livrée avec un emplacement de carte microSD qui peut être utile pour les projets de données de données ou pour enregistrer les paramètres de configuration. De plus, il est livré avec un support de batterie et un circuit de chargement de batterie à utiliser avec des panneaux solaires. Ainsi, il convient à l’utiliser dans des endroits éloignés. Cependant, je n’ai pas encore expérimenté le circuit de batterie. Pour plus d’exemples, vous pouvez explorer la page officielle de Github Lilygo T-A76XX.

Avez-vous un de ces conseils? Qu’en penses-tu? Faites-nous savoir dans les commentaires ci-dessous.

Vous pouvez également aimer les guides suivants:

En savoir plus sur l’ESP32 avec nos ressources:

Merci d’avoir lu.

Cette vidéo vous emmène dans l’histoire de Raspberry Pi :

YouTube video

  • LILYGO T-Deck Plus ESP32-S3 LORA-89 SX1262 Ulbox GPS Clavier noir Écran 2,8" TTGO Carte de développement Antenne externe Sangle ABS Shell
  • LILYGO T-Deck Plus ESP32-S3 LORA-89 SX1262 Ulbox GPS Clavier noir Écran 2,8 pouces TTGO Carte de développement Antenne externe Sangle Coque ABS