Serveur Arduino avec le module SIM800L Résolu

Bonjour tout le monde, je suis nouveau dans l'utilisation de la carte Arduino.
Je veux à partir d'une page web allumer ou éteindre une LED seulement voila l'exemple de serveur GSM de la documentation officiel que j'ai copié coller ne fonctionne pas chez moi.
J'ai essayer un client web avec les commandes AT qui marche très bien.
J'utilise le module SIM800L et un Arduino Uno.
Aidez moi SVP !

Bonjour

l'exemple de serveur GSM de la documentation officiel que j'ai copié coller

On ne sait pas de quoi vous parlez...

  • Lisez comment utiliser le forum
  • postez toutes les infos pertinentes sur votre montage (connexions, alimentations, composants exacts, ...)
  • postez le code ou le lien vers le code
  • expliquez ce que ça veut dire "ne fonctionne pas", ce que vous avez testé, ce que vous constatez etc...

OK je reprends.

Je veux piloter ma carte Arduino Uno via internet.
Pour ce la je dispose d’un module GSM SIM800L et d’une carte SIM de Orange.

J’ai utiliser ce code pour envoyer des données sur un serveur distant qui marche bien.

#include <ArduinoJson.h>
#include <Http.h>

#define BODY_FORMAT "{\"temperatureAir\": %d, \"humiditeSol\": %d, \"humiditeAir\": %d, \"phSol\": %d, \"niveauEau\": %d}"

unsigned long lastRunTime = 0;
unsigned long waitForRunTime = 0;

unsigned int RX_PIN = 10;
unsigned int TX_PIN = 11;
unsigned int RST_PIN = 12;
HTTP http(9600, RX_PIN, TX_PIN, RST_PIN);

// the setup routine runs once when you press reset:
void setup() {
  Serial.begin(9600);
  while(!Serial);
  Serial.println("Starting!");
}

// the loop routine runs over and over again forever:
void loop() {
  envoi();
}

// functions
void print(const __FlashStringHelper *message, int code = -1){
  if (code != -1){
    Serial.print(message);
    Serial.println(code);
  }
  else {
    Serial.println(message);
  }
}


void envoi(){
  
  char response[32];
  char body[90];
  Result result;
  int temperatureAir = 45;
  int humiditeSol = 23;
  int humiditeAir = 23;
  int phSol = 6;
  int niveauEau = 23;

  print(F("Cofigure bearer: "), http.configureBearer("internet"));
  result = http.connect();
  print(F("HTTP connect: "), result);

  sprintf(body, BODY_FORMAT, temperatureAir, humiditeSol, humiditeAir, phSol, niveauEau);
  result = http.post("https://test-heroku-zip.herokuapp.com/api/mesure", body, response);
  print(F("HTTP POST: "), result);
  
  print(F("HTTP disconnect: "), http.disconnect());
  delay(10000);
}

le montage est le suivant:

Je veux maintenant à partir d’une page web dire à ma carte de faire quelque chose comme allumer une LED.

pour ce là j’utilise le code suivant:

#include <GSM.h>

// PIN Number
#define PINNUMBER ""

// APN data
#define GPRS_APN       "internet" // replace your GPRS APN
#define GPRS_LOGIN     ""    // replace with your GPRS login
#define GPRS_PASSWORD  "" // replace with your GPRS password


// initialize the library instance
GPRS gprs;
GSM gsmAccess;     // include a 'true' parameter for debug enabled
GSMServer server(80); // port 80 (http default)

// timeout
const unsigned long __TIMEOUT__ = 10 * 1000;

void setup() {
  // initialize serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
  Serial.println("Starting ...");

  // connection state
  boolean notConnected = true;

  // Start GSM shield
  // If your SIM has PIN, pass it as a parameter of begin() in quotes
  while (notConnected) {    
    if ((gsmAccess.begin(PINNUMBER) == GSM_READY)){
      Serial.println("gsmAccess OK");
        if((gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) == GPRS_READY)){
          notConnected = false;
        }
    } else {
      Serial.println("Not connected");
      delay(1000);
    }
  }

  Serial.println("Connected to GPRS network");

  // start server
  server.begin();

  //Get IP.
  IPAddress LocalIP = gprs.getIPAddress();
  Serial.println("Server IP address=");
  Serial.println(LocalIP);
}

void loop() {
}

Le montage est le même que précédemment sauf qu’en lieu et place des PIN 10 et 11 de Arduino, j’utilise les PIN 0 (RX) et 1 (TX).

Dans le moniteur série je n’ai que ce message:

Starting …

Merci de bien vouloir m’aider.

Bonjour

1°) Quelle est la librairie GSM utilisée ? (lien)
A-t-elle et conçue pour un module SIM800L ou pour une carte GSM spécifique ?

en lieu et place des PIN 10 et 11 de Arduino, j’utilise les PIN 0 (RX) et 1 (TX).

2°) Les pins Rx et Tx sont elles totalement disponibles pour le module SIM800L ou occupées par un autre composant sur la carte Arduino ?

Bonjour

Si j’ai bien compris ils utilisent une bibliothèques qui s’appele GSM

#include <GSM.h>

lien Arduino - GSM

Pour le matériel requid ils ont noté;

  • Arduino ou Genuino Board
  • Arduino + Bouclier GSM / GPRS Telefonica (le module utilisé)
  • Carte SIM activée pour les données

Mes PIN RX et TX sont seulement branchés sur le module SIM800L.

Cette librairie n'est donc pas conçue pour une carte à module SIM800L

Mes PIN RX et TX sont seulement branchés sur le module SIM800L.

Pas d'accord !
Les pattes Rx et Tx du microcontroleur sont reliées au composant de la carte Arduino assurant l'interface USB, c'est par ce chemin que l'info communique avec le Terminal.
Elles ne sont donc pas totalement disponibles pour faire le lien avec un module SIM800L

Donc comment puis-je transformer ma carte Arduino en serveur web avec mon module SIM800L ?

Déjà pour faire fonctionner le module SIM800L avec la carte ARDuino
Il faut ulitiser une librairie 'qui va bien'. Il y en a plusieurs ( je ne connais que TinyGSM et GSMsim)

Ensuite pour ce qui est d'un serveur HTTP la dessus, j'ai un gros doute sur la faisabilité..

OK merci je v’ais essayer de regarder ces librairies.
En attendant s’il y a une solution je vous écoute.

Les cartes SIM GSM traditionnelles des opereateurs ne permettent généralement pas les communications IP entrantes... éventuellement par SMS ou intermédiation avec un site web consulté par l’arduino qui relaierait les demandes de l’utilisateur

Bonjour et merci pour vos réponses,
Je vais essayer de me renseigner au près de mon opérateur de téléphonie (Orange Sénégal).

Bonjour tout le monde,?
en fait il est impossible de transformer Arduino en serveur avec le module SIM800L sans une adresse IP public fixe et un APN privé (à payer au prés de votre opérateur).
Merci pour tout.

oui - pas surpris par la réponse....