Commandes AT sous Seeeduino GPRS

Bien le bonjour à tous !
Ça fait plusieurs mois que je lis des sujets sur ce forum et qui sont très utiles pour mes projets.
Tout d'abord félicitations à tous ce monde qui a réussisà faire des projets extraordinaires, un grand merci à ceux qui sont là pour nous aider à nous améliorer et à résoudre nos petits problèmes de codage et bien sûr bon courage pour les autres qui réalisent d'autres innovations tout aussi surprenantes les unes que les autres ! ;D

Bon, passent aux choses sérieuses !

A la base je travaille avec un Arduino Uno + Shield GSM + Shiel RTC et le projet marche très bien.
Mais pour des raisons d'essais je suis passé sur un toute autre matériel : Seeeduino GPRS SIM800H avec RTC intégré.

C'est là où j'ai rencontré plusieurs petits obstacles..

J'ai trouvé un site où ils disent qu'il faudrait utilisé les "commandes AT" pour aller chercher la date et l'heure exacte dans le RTC.
Après plusieurs semaines de recherche j'ai trouvé les PDF avec les différentes lignes de commandes AT pour aller chercher le RTC et des différentes exemples pour d'autres utilisations.
(Tout porte à croire que j'ai trouvé la solution à mon problème :slight_smile: mais malheureusement non :cry: ..)

Donc mon problème est l'utilisation des commandes AT.. Je n'arrive même pas à faire fonctionner l'exemple le plus basique où on envoie simplement "AT" et on devrait recevoir "normalement" la réponse "OK". J'ai fait plusieurs d'autres exemples sans succès..

Quelqu'un aurait-il un exemple qui fonctionne, que je puise me baser dessus ? Ou me donner un lien où il explique clairement comment s'y prendre ?

PS : Il se peut que vous m’enverrait un lien que j'ai surement déjà visité mais n'hésitez pas le poster quand même. Merci d'avoir lu ce post :slight_smile:

Cordialement !

bonjour,
sans plus de détails, ca va être difficile de répondre.
vérifie déjà les pins du softserial s'il faut pas les modifier quelque part dans la lib.

clignotement de la led?

Bonjour,
Je suis désolé du manque de détails..
Au début j'avais créée un post bien détails mais il était trop long, de peur de perturbé plus qu'autres choses..

Alors oui j'ai une LED dans le programme mais elle ne clignote pas. J'ai un bouton poussoir et une seule LED.
Une première impulsion du bouton poussoir fait allumer la LED et la seconde impulsion la fait éteindre. (C'est un peu le même principe qu'un télérupteur) Juste qu'au moment où j’éteins la LED j'envoie un SMS avec la date et l'heure du RTC. (date/heure réel)

J'ai mit la lib "Seeeduino_GPRS" que j'ai pris sur se lien :

Pour les pins je fait bien attention car dans la description de chaque exemple j'ai ça :
pin 8 // tx pin
pin 7 // rx pin
pin 9 // power key pin
pin 12 // power status pin

Juste qu'au moment où j'éteins la LED j'envoie un SMS avec la date et l'heure du RTC.

si tu éteins la carte et envoie un sms, ca fonctionnera pas.
ta led doit être allumée et clignoter toutes les 3s environ, signifiant qu'elle est connectée au réseau.
si clignotement rapide, pas connecté au réseau gsm.

infobarquee:
si tu éteins la carte et envoie un sms, ca fonctionnera pas.
ta led doit être allumée et clignoter toutes les 3s environ, signifiant qu'elle est connectée au réseau.
si clignotement rapide, pas connecté au réseau gsm.

Autant pour moi on s'est mal compris. Je parlais pas de la LED de la carte, car ma carte reste tout le temps allumé et la LED clignote correctement. C'est une LED que j'ai mise dans mon circuit avec un bouton poussoir.

Le circuit est très simple :

5V <-----> Bouton poussoir <-----> Entrée 2 INPUT
0V <-----> LED <----> Résistance 330 ohm <------> Sortie 4 OUTPUT

Bon je vais essayé d'expliqué un peu plus en détails ^^"
Je m'excuse par avance de mes fautes d'orthographe et du risque de me répété ^^"
Merci pour votre compréhension.

Donc je vais commencer par vous expliquer mon histoire et finir par mon problème ! :slight_smile:

Il se trouve que je suis tombé sur un projet un peu plus délicat que mes précédents projets que j'ai déjà réalisé...
Le projet en lui-même et très simple, donc je n'ai pas besoin de vous poster mon sketch car mon problème se trouve ailleurs, je pense... :sweat_smile:

C'est un projet que j'ai très bien réussi avec un Arduino Uno Shield GSM Shiel RTC !
Le but du projet est tout simplement d'appuyer sur un bouton poussoir et d'allumer une LED rouge, cette LED rouge indiquera à la personne qu'elle est en "intervention". Une deuxième impulsion, sur le même bouton poussoir, éteindra la LED et enverrait un SMS.
Le SMS contient certaines informations telle que la durée d'une intervention et la date heure de début et la fin d'une intervention quelconque.

Exemple : "Debut : 15/06/2015 a 12:10:56 ; Fin : 15/06/2015 a 12:43:21 ; Duree : 0:32:25"

Je suis passé sur un toute autre matériel : Seeeduino GPRS SIM800H avec RTC intégré.

C'est là où j'ai rencontré plusieurs petits obstacles et que j'ai dû changer une grosse partie de mon sketch.
Mais malgré tout cela j'ai réussi à envoyer un SMS avec ma durée de l'intervention ... mais le hic est que l'heure et la date ne sont pas correctes et ils ne changent pas... Il m'affiche "6/2/2106 a 6:28:16" et je n'arrive pas à trouver à quoi se correspond ni d'où son sort...

Info : D’habitude quand on à un RTC qui n'affiche pas la date/heure exacte il nous affiche 165/165/2165 a 165:165:85 .. (ceci est normal quand on met pas la pile dans le RTC par exemple)

J'ai trouvé un site où ils disent qu'il faudrait utilisé les "commandes AT" pour aller chercher les l'heure exacte dans le RTC.
Après plusieurs semaines de recherche j'ai trouver les PDF avec les différentes lignes de commandes AT pour aller chercher le RTC et des différentes exemples pour d'autres utilisations.
(Tout porte à croire que j'ai trouver la solutions à mon problème :slight_smile: mais malheureusement non :cry: ..)

Donc mon réel problème est l'utilisation des commandes AT.. Je n'arrive même pas a faire fonctionner l'exemple le plus basique où on envoi simplement "AT" et on devrai recevoir "normalement" la réponse "OK". J'ai fait plusieurs d'autre exemples sans succès..

Quelqu'un aurai t-il un exemple opérationnelle, que je puise me baser dessus ? Ou me donner un lien où ils explique clairement comment s'y prendre ?

quelle commande envoie tu pour la date?

A la base j'envoi :

DateTime now = RTC.now();
// On sauvegarde le temps precedent
DEPART_TEMPS=now;
Serial.print("Debut : ");
Serial.print(now.day(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.year(), DEC);
Serial.print(" a ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();

Mais il ne marche pas sous Seeeduino GPRS SIM800H
Donc j'ai changer en :

TEMPS_DEPART=now();
...

float JOUR = (DEPART_TEMPS.day());
float MOIS = (DEPART_TEMPS.month());
float ANNEE = (DEPART_TEMPS.year());
float HEURE = (DEPART_TEMPS.hour());
float MINUTE = (DEPART_TEMPS.minute());
float SECONDE = (DEPART_TEMPS.second());

Serial.println(Duree_heure);
Serial.println(Duree_minut);
Serial.println(Duree_seconde);
Serial.println(JOUR);
Serial.println(MOIS);
Serial.println(ANNEE);
Serial.println(HEURE);
Serial.println(MINUTE);
Serial.println(SECONDE);

Mon but est justement d'aller chercher cette date dans le RTC avec les commandes AT..

as tu essayé la command AT+CCLK?

Oui justement ^^
J'ai essayé la commande AT+CCLK? et même AT+CCLK= (en mettant bien la date et heure comm c'est indiqué dans le PDF SIM800)
Le problème se trouve justement dans les commande AT que je n'arrive pas a utilisé.. Voyez vous, je n'arrive même pas a utilisé la commande simple de "AT" car je ne reçois pas la réponse "OK" du Seeeduino..

mets le code que tu envoie avec la commande AT

Bon voila le code "beta" qui est loin d'être au point car il sera modifier par la suite en rajoutant des composants dans mon circuit

// Appel aux fonctions de la librairie
// Date et heure fonctions à l'aide d'un DS1307 RTC connectés via I2C et lib fil
#include <Wire.h>
#include <RTClib.h>
#include <Time.h> 
#include <stdio.h>
#include <gprs.h>
#include <SoftwareSerial.h>
#include <DS1307.h>
#include <sim800.h>

GPRS gprs;

// Initialisation et désignation des entrées/sorties
const int PIN_BOUTON_DEPART = 2;
int ANCIEN_ETAT_BOUTON_DEPART;
int ETAT_BOUTON_DEPART;
int LED_PIN = 4;

int ETAT_COMPTEUR=0;

// Sauvegarde du temps de depart
DateTime DEPART_TEMPS;

// Numéro du déstinataire :
char remoteNumber[20]= "06XXXXXXXX" ;

// Text du message :
char MESSAGE[200]; 

// Désignation des différent Temps/Compteur
unsigned long DUREE;
unsigned long TEMPS_DEPART;
unsigned long TEMPS_FIN;

long heure;
long minut;
long seconde;



// Initialisation du programme
void setup(){
  // Initialisation du port Serial
  Serial.begin(19200);
  // Debut du RTC (le petit shield de la horloge) RTC : Real Time Clock
  Wire.begin();
  DateTime dt(__DATE__,__TIME__);
  
  
  // Initialisation bouton depart en entrée
  pinMode(PIN_BOUTON_DEPART, INPUT);
  // Initialisation de la Led en sortie
  pinMode(4, OUTPUT);
  
  Serial.println("Bienvenue dans le programme Arduino GSM !");
  Serial.println("");
  Serial.println("Initialisation du GSM.. ");
  
  Serial.println("GSM initialise !"); 
  
  Serial.print("Numero du destinataire : ");
  Serial.println(remoteNumber);
  delay (2000);
  Serial.println("");
  Serial.println("En attente de commande :");
  Serial.println("");
  
  LED_PIN = LOW;
  
}


void loop(){
  digitalWrite (PIN_BOUTON_DEPART , LOW);
  ETAT_BOUTON_DEPART = digitalRead (PIN_BOUTON_DEPART);
  delay (100);

  if (ETAT_BOUTON_DEPART != ANCIEN_ETAT_BOUTON_DEPART){ // S'il y a un changement de l'état du bouton poussoir
    if (!ETAT_BOUTON_DEPART){
      Serial.println("La Led ON ou OFF");
      LED_PIN = !LED_PIN; // Inversion de la valeur de la variable
      digitalWrite (4 , LED_PIN); // Mise à 0 ou à 1 de la sortie 4
      
      if (LED_PIN == HIGH){
        initialiseCompteur();
        Serial.println("Led ON");
      }
      if (LED_PIN == LOW){
        Serial.println("Led OFF");
        finCompteur();
        envoiSMS();
      }
    }
  }
  ANCIEN_ETAT_BOUTON_DEPART = ETAT_BOUTON_DEPART; // On enregistre le dernier état du bouton poussoir 
}
  
...

La suite sera dans le prochain post .. (trop long)

Ah j'ai pas vu que j'ai pu le mettre mon .ino dans le post ^^"

Beta_test_Seeeduino_GPRS_SIM800.ino (7.03 KB)

bonjour
qu'est ce que ça donne en testant les commandes AT avec avec un simple redirecteur de port com ?

#include <SoftwareSerial.h>
//
SoftwareSerial BTSerial(7, 8); // RX | TX
// RX arduino <--- TX cible
// TX arduino ---> RX cible


void setup()

{
  Serial.begin(9600); // vitesse serial monitor

  BTSerial.begin(9600);  // vitesse software serial NB ne pas depasser 57600
}

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

Rien.. aucun changement.. Est t'il possible que j'utilise les mauvaises manipes ? La commande AT est bien le "AT+CLPORT?" ou je me trompe ?

Eternity:
Rien.. aucun changement.. Est t'il possible que j'utilise les mauvaises manipes ? La commande AT est bien le "AT+CLPORT?" ou je me trompe ?

déjà avec une simple commande AT tu devrais recuperer un OK
tu utilise quoi comme terminateur de ligne ?

Oui, normalement je devrais récupérer un OK mais justement j'ai n'est rien qui s'affiche..
Je n'est pas compris votre questions au sujet des terminateur de ligne.. vous voulez dire après la commande AT ?

Eternity:
Oui, normalement je devrais récupérer un OK mais justement j'ai n'est rien qui s'affiche..
Je n'est pas compris votre questions au sujet des terminateur de ligne.. vous voulez dire après la commande AT ?

oui
normalement ton module attend un CR
tu es sur que ton module est configuré en 9600 et pas à une autre vitesse ?

Non j'ai vérifié plus d'une fois la vitesse. J'ai même changé la vitesse en 19200 au cas où mais toujours pareil. Les CR ce sont bien les terminaisons \r ou encore \n ?

Je me demande que le problème ne vient pas de la lib qui confond la SIM800 avec la SIM900... Mais pourtant j'ai vérifié tout à l'air en ordre...

J'utilise la lib :
https://github.com/Seeed-Studio/Seeeduino_GPRS

Stttoooppp pas de lib ou autre. Ecoute ce que dit Artouste. Un truc marche pas, on essaye de voir de d'où ça en partant de la base.

Pas de OK à AT => problème de liaison, donc ça sert à rien de s'acharner avec des lib SIM900 ou des AT+CCLK.

Donc reprend le code poster par Artouste juste avant. Les CR et LN sont rajoutés en utilisant le menu déroulant en bas du moniteur série (Nouvelle ligne, Retour Chariot ...). Tape AT en haut, envoi. recommence en testant les différents mode pour CR et LN. Si tu n'as pas de OK en retour alors il y a un problème de liaison physique : soit mauvaise config de pin, soit il y a une manip sur le shield à faire pour relier physiquement les entrée série du SIM800 aux pins de l'Arduino