ESP32 + SIM800L connection impossible

Hello,

I try to start something very new for me, GSM with ESP32 with onboard SIM800L.

I used an example code, and had following return form debug :

AT
AT
�AT

OK
AT&W

OK
AT+CFUN=0

OK
AT+CFUN=1,1

OK
AT
�AT

OK
ATE0

OK
AT+CMEE=0

OK
AT+CLTS=1

OK
AT+CBATCHK=1

OK
AT+CPIN?

ERROR
AT+CPIN?

+CPIN: SIM PIN

OK
AT+CPIN?

+CPIN: SIM PIN

OK
AT+CPIN="1234"

OK
AT+CIPSHUT

ERROR
AT+SAPBR=3,1,"Contype","GPRS"

ERROR
AT+SAPBR=3,1,"APN","free"

ERROR
AT+CGDCONT=1,"IP","free"

ERROR
AT+CGACT=1,1

ERROR
AT+SAPBR=1,1

ERROR
AT+SAPBR=2,1

ERROR

can someone tell me if this seems to be programm error, or to mobile network connection problem like antenna problem?

thanks a lot in advance

code :

// Your GPRS credentials (leave empty, if not needed)
const char apn[] = "free"; // APN (example: internet.vodafone.pt) use https://wiki.apnchanger.org
const char gprsUser[] = ""; // GPRS User
const char gprsPass[] = ""; // GPRS Password

// SIM card PIN (leave empty, if not defined)
const char simPIN[] = "1234";

// Server details
// The server variable can be just a domain name or it can have a subdomain. It depends on the service you are using
const char server[] = "http://89.86.42.115"; // domain name: example.com, maker.ifttt.com, etc
const char resource[] = "/add_LifeStamp.php";         // resource path, for example: /post-data.php
const int  port = 80;                             // server port number

// Keep this API Key value to be compatible with the PHP code provided in the project page. 
// If you change the apiKeyValue value, the PHP file /post-data.php also needs to have the same key 
String apiKeyValue = "tPmAT5Ab3j7F9";

// TTGO T-Call pins
#define MODEM_RST            5
#define MODEM_PWKEY          4
#define MODEM_POWER_ON       23
#define MODEM_TX             27
#define MODEM_RX             26
#define I2C_SDA              21
#define I2C_SCL              22

// Set serial for debug console (to Serial Monitor, default speed 115200)
#define SerialMon Serial
// Set serial for AT commands (to SIM800 module)
#define SerialAT Serial1

// Configure TinyGSM library
#define TINY_GSM_MODEM_SIM800      // Modem is SIM800
#define TINY_GSM_RX_BUFFER   1024  // Set RX buffer to 1Kb

// Define the serial console for debug prints, if needed
#define DUMP_AT_COMMANDS

#include <Wire.h>
#include <TinyGsmClient.h>

#ifdef DUMP_AT_COMMANDS
#include <StreamDebugger.h>
StreamDebugger debugger(SerialAT, SerialMon);
TinyGsm modem(debugger);
#else
TinyGsm modem(SerialAT);
#endif

// I2C for SIM800 (to keep it running when powered from battery)
TwoWire I2CPower = TwoWire(0);

// TinyGSM Client for Internet connection
TinyGsmClient client(modem);

#define uS_TO_S_FACTOR 1000000UL   /* Conversion factor for micro seconds to seconds */
#define TIME_TO_SLEEP  3600        /* Time ESP32 will go to sleep (in seconds) 3600 seconds = 1 hour */

#define IP5306_ADDR          0x75
#define IP5306_REG_SYS_CTL0  0x00

bool setPowerBoostKeepOn(int en) {
    I2CPower.beginTransmission(IP5306_ADDR);
    I2CPower.write(IP5306_REG_SYS_CTL0);
    if (en) {
        I2CPower.write(0x37); // Set bit1: 1 enable 0 disable boost keep on
    }
    else {
        I2CPower.write(0x35); // 0x37 is default reg value
    }
    return I2CPower.endTransmission() == 0;
}

void setup() {
    // Set serial monitor debugging window baud rate to 115200
    SerialMon.begin(115200);

    // Start I2C communication
    I2CPower.begin(I2C_SDA, I2C_SCL, 400000);

    // Keep power when running from battery
    bool isOk = setPowerBoostKeepOn(1);
    SerialMon.println(String("IP5306 KeepOn ") + (isOk ? "OK" : "FAIL"));

    // Set modem reset, enable, power pins
    pinMode(MODEM_PWKEY, OUTPUT);
    pinMode(MODEM_RST, OUTPUT);
    pinMode(MODEM_POWER_ON, OUTPUT);
    digitalWrite(MODEM_PWKEY, LOW);
    digitalWrite(MODEM_RST, HIGH);
    digitalWrite(MODEM_POWER_ON, HIGH);

    // Set GSM module baud rate and UART pins
    SerialAT.begin(115200, SERIAL_8N1, MODEM_RX, MODEM_TX);
    delay(3000);

    // Restart SIM800 module, it takes quite some time
    // To skip it, call init() instead of restart()
    SerialMon.println("Initializing modem...");
    modem.restart();
    // use modem.init() if you don't need the complete restart

    // Unlock your SIM card with a PIN if needed
    if (strlen(simPIN) && modem.getSimStatus() != 3) {
        SerialMon.println("unlocking sim card...");
        modem.simUnlock(simPIN);
    }

    // Configure the wake up source as timer wake up  
    esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
}

void loop() {
    SerialMon.print("Connecting to APN: ");
    SerialMon.println(apn);
    if (!modem.gprsConnect(apn, gprsUser, gprsPass)) {
        SerialMon.println(" fail");
    }

Bonsoir

Tu est ici sur un forum en langue française !! :wink:

Connetion impossible à un réseau ?

Quelles est la référence exacte de la carte ESP32 utilisée ? (lien vers un site marchand)

Un réseau 2G Orange est-il disponible dans la zone ? (dans le cas d'une SIM Freemobile ça passe par Orange en 2G)

Que donne la commande AT+CREG? permettant de vérifier l'enregistrement de la carte SIM sur le réseau Orange ?

Bonjour,

Merci de la remarque sur orange, je ne savais pas. Mais ca ne marche toujours pas. J'utilise la carte suivante :

Module sans fil TTGO t-call V1.4 ESP32, carte SIM, Module SIM800L et antenne GSM/GPRS pour arduino

a plus

https://fr.aliexpress.com/item/4000068024300.html?gatewayAdapt=glo2fra&spm=a2g0o.order_list.0.0.21ef5e5bTHRqIP

Bonjour

OK , donc version 1.4 de la carte TTGO TCALL, dont la page chez LILYGO/TTGO est ici:
http://www.lilygo.cn/prod_view.aspx?TypeId=50033&Id=1127&FId=t3:50033:3

Carte encore peu utilisée conrarirement aux modules SIM800L que l'on associe soi-même à divers microcontrolleurs (après avoir bien souvent désactivé le code Pin) . (Il me semble qu'@Artouste utilise cette carte)

D"après le schéma il semble y avoir deux dels dont l'une , comme sur les modules SIM800L courants, clignote lentement dès que le réseau a été 'accroché'. Comment se comportent les dels associées au SIM800L

Lilygo/TTGO propose sur son dépot plusiseurs exemples de code :
https://github.com/Xinyuan-LilyGO/LilyGo-T-Call-SIM800/tree/master/examples

L'exemple Arduino_AT_Debug devrait permettre d'envoyer 'à la main' les séquences de commandes AT de son choix, incluant AT+CREG? très instructive
(Cet exemple sert pour plusieurs versions de la carte TCALL, il faut en tête du programme sélactionner la bonne version.....)

Merci,

tout d'abord un question, car la est peut être le piège :
c'est quoi la particularité pour l'alimentation ?
il faut brancher une batterie sur le câble fourni avec ?

Le tuto que j'essaie de suivre en parle pas

Armin

Hello,

et que faut il faire pour pouvoir envoyer une commande AT manuellement sur l'ESP32?

Bonsoir

c'est quoi la particularité pour l'alimentation ?

Un composant d'alimentation piloté par I2C
Le code montré dans le message initial comporte des lignes avec I2cPower.begin() , I2CPower.write()...... qui servent à piloter un composant d'alimlentation spécifique utilisé sur ces cartes TTGO. ces ligne ne figurent pas dans les tutoriels habituels autour des SIM800L

il faut brancher une batterie sur le câble fourni avec ?

ça ne peut pas faire de mal mais n'est peut être pas indispensable

et que faut il faire pour pouvoir envoyer une commande AT manuellement sur l'ESP32?

L'exemple Arduino_AT_Debug proposé par TTGO permet d'envoyer au SIM800L les commandes AT que l'on veut en les tapant dans le terminal de l'IDE Arduino , les réponses du SIM800L à ces commandes arrivent sur le même terminal

Merci de toutes ces reponses !!!!

Tu n'aurait pas par hazard le lien vers ce programm ?

et il faut ajouter dedans les commandes pour le I2C power?

c'est pour ca que ce programme ne marche pas :


void setup()
{
    pinMode(SIM800L_POWER, OUTPUT);
    digitalWrite(SIM800L_POWER, HIGH);

    Serial.begin(115200);
    Serial.println("ESP32+SIM800L AT CMD Test");
    delay(10000);

    Serial2.begin(9600, SERIAL_8N1, SIM800L_TX, SIM800L_RX);
}


void loop() {
    while (Serial2.available()) {
        Serial.print(char(Serial2.read()));
    }
    while (Serial.available()) {
        Serial2.print(char(Serial.read()));
    }

}
type or paste code here

je n'ai aucune carte TTGO TCALL
Je la découvre avec cet échange.
je n'ai pas étudié son schéma et le détail de son circuit d'alimentation.

je me borne à évoquer des particularités et signaler l'existence de divers programmes de tests et ai donné au message #5 l'endroit où l'on peut les télécharger , as-tu été voir ?

S'il est fourni par TTGO pour ses diverses versions des cartes TCALL on peut espérer qu'il fonctionne même s'il n'y a pas le lignes I2CPower (il y a peut être plusieurs façons pour piloter les circuits d'alimentation de cette carte)

Tout d'abord merci pour tes réponses. En utilisant un programme d'un autre tuto ça c'est mise a marcher.
Je vais essayer de trouver ou était le piégé, et dès que je trouverais, je vais l’écrire, histoire de fermer le sujet en beauté.
Mais déjà un truc : la 2G de free existe maintenant, plus besoin de mettre orange !!

Les accords en vigueur entre Free et Orange pour la 2G sont censés prendre fin en décembre 2022

Freemobile commence a activer sa 2G dans quelques rares zones

En région parisienne mes Sim Freemobile 2€ se connectent encore automatiquement sur le réseau Orange comme le prouve le chiffre 5 dans la reponse a AT+CREG (5 pour roaming)

en 2023 ? incertitude totale a ce jour

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