Problème SIM900+UNO+DHT22+SOLAIRE

Bonjour,
J'ai installé ce cela :

Mes branchements sont exactement les mêmes que sur l'image ci-jointe.
Concernant les alimentations, ma carte SIM900 est alimentée en 5V / 2A ; ma carte UNO REV3 aucune, juste relié via USB sur mon PC. Cette dernière est bien reconnue sur le logiciel Arduino.
Je précise à toute fin utile que lorsque que je téléverse, aucun message d'erreur est signalée.
Dans l'attente d'une réponse,
Merci.
Laure

#include <ThingSpeak.h>
#include <SoftwareSerial.h>
#include <String.h>
 
SoftwareSerial mySerial(7, 8);
boolean pin2=LOW,pin3=LOW,pin4=LOW,pin5=LOW,pin6=LOW; 
float temp=1.0;


void setup()
{
  mySerial.begin(9600);               // the GPRS baud rate   
  Serial.begin(9600);    // the GPRS baud rate 
  
  delay(1000);
}
 
void loop()
{
      temp=analogRead(A0);
           delay(2);          
       Send2Pachube();
   
  if (mySerial.available())
    Serial.write(mySerial.read());
}
void Send2Pachube()
{
  mySerial.println("AT");
  delay(1000);

   mySerial.println("AT+CREG=1");
  delay(1000);

   mySerial.println("AT+CGATT=1");
  delay(1000);
    
  mySerial.println("AT+CIPSHUT");
  delay(1000);

  mySerial.println("AT+CIPSTATUS");
  delay(1000);

  mySerial.println("AT+CIPMUX=0");
  delay(2000);
 
  
  

  mySerial.println("AT+CSTT=\"orange\"");//start task and setting the APN,
  delay(1000);
 
  ShowSerialData();
 
  mySerial.println("AT+CIPSPRT=1");
  delay(4000);
 
  ShowSerialData();
  
  mySerial.println("AT+CIPSTART=TCP,api.thingspeak.com,80");//start up the connection    
  delay(20000);
 
  ShowSerialData();
 
  mySerial.println("AT+CIPSEND");//begin send data to remote server
  delay(4000);
  ShowSerialData();
  
  String str="GET https://api.thingspeak.com/update?api_key=FBBQN8R86KY4GNM0=1" + String(temp);
  mySerial.println(str);//begin send data to remote server
  delay(4000);
  ShowSerialData();

  mySerial.println((char)26);//sending
  delay(5000);//waitting for reply, important! the time is base on the condition of internet 
  mySerial.println();
 
  ShowSerialData();
 
  mySerial.println("AT+CIPSHUT");//close the connection
  delay(100);
  ShowSerialData();
} 
void ShowSerialData()
{
  while(mySerial.available()!=0)
    Serial.write(mySerial.read());
}

J'ai se message suivant :

GET https://api.thingspeak.com/update?api_key=FBBQN8R86KY4GNM0

ERROR

AT+CIPSEND

ERROR

Pouvez-vous m'aider ?
Merci.
Laure

:warning: La rédaction de votre message ne répond pas aux critères attendus. Il n'aura sans doute pas de réponse tant que vous n'aurez pas pris en compte et mis en application les recommandations listées dans "Les bonnes pratiques du Forum Francophone”


➜ balises de code
➜ images directement (en png ou jpg) dans le post
➜ lien sur le matériel
➜ clarification sur l'alimentation des cartes (qui est sans doute votre souci)

➜ balises de code ? Je suis désolé, je suis novice et je decouvre.


Mes branchements sont exactement les mêmes que sur l'image ci-jointe.
Concernant les alimentations, ma carte SIM900 est alimentée en 5V / 2A ; ma carte UNO REV3 aucune, juste relié via USB sur mon PC. Cette dernière est bien reconnue sur le logiciel Arduino.
Je précise à toute fin utile que lorsque que je téléverse, aucun message d'erreur est signalée.
Dans l'attente d'une réponse,
Merci.
Laure

Messages d'erreurs :

GET https://api.thingspeak.com/update?api_key=FBBQN8R86KY4GNM0
ERROR

AT+CIPSEND
ERROR

Code

#include <ThingSpeak.h>
#include <SoftwareSerial.h>
#include <String.h>
 
SoftwareSerial mySerial(7, 8);
boolean pin2=LOW,pin3=LOW,pin4=LOW,pin5=LOW,pin6=LOW; 
float temp=1.0;


void setup()
{
  mySerial.begin(9600);               // the GPRS baud rate   
  Serial.begin(9600);    // the GPRS baud rate 
  
  delay(1000);
}
 
void loop()
{
      temp=analogRead(A0);
           delay(2);          
       Send2Pachube();
   
  if (mySerial.available())
    Serial.write(mySerial.read());
}
void Send2Pachube()
{
  mySerial.println("AT");
  delay(1000);

   mySerial.println("AT+CREG=1");
  delay(1000);

   mySerial.println("AT+CGATT=1");
  delay(1000);
    
  mySerial.println("AT+CIPSHUT");
  delay(1000);

  mySerial.println("AT+CIPSTATUS");
  delay(1000);

  mySerial.println("AT+CIPMUX=0");
  delay(2000);
 
  
  

  mySerial.println("AT+CSTT=\"orange\"");//start task and setting the APN,
  delay(1000);
 
  ShowSerialData();
 
  mySerial.println("AT+CIPSPRT=1");
  delay(4000);
 
  ShowSerialData();
  
  mySerial.println("AT+CIPSTART=TCP,api.thingspeak.com,80");//start up the connection    
  delay(20000);
 
  ShowSerialData();
 
  mySerial.println("AT+CIPSEND");//begin send data to remote server
  delay(4000);
  ShowSerialData();
  
  String str="GET https://api.thingspeak.com/update?api_key=FBBQN8R86KY4GNM0=1" + String(temp);
  mySerial.println(str);//begin send data to remote server
  delay(4000);
  ShowSerialData();

  mySerial.println((char)26);//sending
  delay(5000);//waitting for reply, important! the time is base on the condition of internet 
  mySerial.println();
 
  ShowSerialData();
 
  mySerial.println("AT+CIPSHUT");//close the connection
  delay(100);
  ShowSerialData();
} 
void ShowSerialData()
{
  while(mySerial.available()!=0)
    Serial.write(mySerial.read());
}

ben elles ne sont toujours pas mises... avez vous lu la doc ?

J'ai retiré ce post.

#include <ThingSpeak.h>
#include <SoftwareSerial.h>
#include <String.h>
 
SoftwareSerial mySerial(7, 8);
boolean pin2=LOW,pin3=LOW,pin4=LOW,pin5=LOW,pin6=LOW; 
float temp=1.0;


void setup()
{
  mySerial.begin(9600);               // the GPRS baud rate   
  Serial.begin(9600);    // the GPRS baud rate 
  
  delay(1000);
}
 
void loop()
{
      temp=analogRead(A0);
           delay(2);          
       Send2Pachube();
   
  if (mySerial.available())
    Serial.write(mySerial.read());
}
void Send2Pachube()
{
  mySerial.println("AT");
  delay(1000);

   mySerial.println("AT+CREG=1");
  delay(1000);

   mySerial.println("AT+CGATT=1");
  delay(1000);
    
  mySerial.println("AT+CIPSHUT");
  delay(1000);

  mySerial.println("AT+CIPSTATUS");
  delay(1000);

  mySerial.println("AT+CIPMUX=0");
  delay(2000);
 
  
  

  mySerial.println("AT+CSTT=\"orange\"");//start task and setting the APN,
  delay(1000);
 
  ShowSerialData();
 
  mySerial.println("AT+CIPSPRT=1");
  delay(4000);
 
  ShowSerialData();
  
  mySerial.println("AT+CIPSTART=TCP,api.thingspeak.com,80");//start up the connection    
  delay(20000);
 
  ShowSerialData();
 
  mySerial.println("AT+CIPSEND");//begin send data to remote server
  delay(4000);
  ShowSerialData();
  
  String str="GET https://api.thingspeak.com/update?api_key=FBBQN8R86KY4GNM0=1" + String(temp);
  mySerial.println(str);//begin send data to remote server
  delay(4000);
  ShowSerialData();

  mySerial.println((char)26);//sending
  delay(5000);//waitting for reply, important! the time is base on the condition of internet 
  mySerial.println();
 
  ShowSerialData();
 
  mySerial.println("AT+CIPSHUT");//close the connection
  delay(100);
  ShowSerialData();
} 
void ShowSerialData()
{
  while(mySerial.available()!=0)
    Serial.write(mySerial.read());
}

C'est bizarre ta sortie sur le moniteur, n'est pas cohérente avec ton code après ton GET, tu devrais avoir la commande "AT+CIPSHUT" affiché non?
Du coup cela veut dire que tu n'a pas eu le résultat de la command AT précédente, mais je ne m'explique pas pourquoi tu aurais deux fois "ERROR".

D'ailleurs tu peux mettre la sortie du moniteur au complet, je suppose que tu fais d'autre commande AT avant

En tout cas, la documentation indique que si tu as ERROR, c'est que la communication n'a pu s'établir ou a été coupé.

les posts n'ont pas été corrigés. Merci de les éditer pour rajouter les balises de code

on ne sait pas comment est alimenté le montage.

"terwal" Voici les commandes AT

A FAIRE SVP

Concernant les alimentations, ma carte SIM900 est alimentée en 5V / 2A ; ma carte UNO REV3 aucune, juste relié via USB sur mon PC.

essayez un truc comme cela où on imprime tout ce qui arrive pendant qu'on attend

#include <SoftwareSerial.h>
SoftwareSerial gprsSerial(7, 8);

void envoyer(const char * commande, unsigned long duree) {
  unsigned long t0 = millis();
  Serial.print("--> ");
  if (*commande == 0x1A) Serial.println(F(" FIN DE COMMANDE"));
  else Serial.println(commande);

  gprsSerial.println(commande);
  while (millis() - t0 <= duree)
    if (gprsSerial.available() != 0)Serial.write(gprsSerial.read());
}

void test()
{
  String url = "GET https://api.thingspeak.com/update?api_key=FBBQN8R86KY4GNM0=1600";
  envoyer("AT",                                      1000ul);
  envoyer("AT+CREG=1",                               1000ul);
  envoyer("AT+CGATT=1",                              1000ul);
  envoyer("AT+CIPSHUT",                              1000ul);
  envoyer("AT+CIPSTATUS",                            1000ul);
  envoyer("AT+CIPMUX=0",                             2000ul);
  envoyer("AT+CSTT=\"orange\"",                      1000ul);  //start task and setting the APN,
  envoyer("AT+CIPSPRT=1",                            4000ul);
  envoyer("AT+CIPSTART=TCP,api.thingspeak.com,80",   20000ul); //start up the connection
  envoyer("AT+CIPSEND",                              4000ul);  //begin send data to remote server
  envoyer(url.c_str(),                               4000ul);  //begin send data to remote server
  envoyer("\x18",                                    5000ul);  //sending
  envoyer("AT+CIPSHUT",                               100ul);  //close the connection
}

void setup()
{
  Serial.begin(115200);    // console
  gprsSerial.begin(9600);  // the GPRS baud rate
  delay(1000);
  test();
}

void loop() {}

si je ne me suis pas trompé c'est à peu près ce que vous faisiez

ouvrez la console série à 115200 bauds et partagez (EN TEXTE DANS LES BALISES DE CODE, PAS AVEC UNE IMAGE SVP) ce que vous voyez dans la console.

--> AT
AT

OK
--> AT+CREG=1
AT+CREG=1

OK
--> AT+CGATT=1
AT+CGATT=1

OK
--> AT+CIPSHUT
AT+CIPSHUT

SHUT OK
--> AT+CIPSTATUS
AT+CIPSTATUS

OK

STATE: IP INITIAL
--> AT+CIPMUX=0
AT+CIPMUX=0

OK
--> AT+CSTT="orange"
AT+CSTT="orange"

OK
--> AT+CIPSPRT=1
AT+CIPSPRT=1

OK
--> AT+CIPSTART=TCP,api.thingspeak.com,80
AT+CIPSTART=TCP,api.thingspeak.com,80

ERROR
--> AT+CIPSEND
AT+CIPSEND

ERROR
--> GET https://api.thingspeak.com/update?api_key=FBBQN8R86KY4GNM0=1600
GET https://api.thingspeak.com/update?api_key=FBBQN8R86KY4GNM0=1600

ERROR
--> 

--> AT+CIPSHUT

donc le AT+CIPSTART ne fonctionne pas

essayez avec des guillemets pour le domaine et TCP

  envoyer("AT+CIPSTART=\"TCP\",\"api.thingspeak.com\",80",   20000ul); //start up the connection

ensuite si c'est une connexion HTTPS qui est attendue, pas sûr que ça va fonctionner , il faut peut être un AT+HTTPSSL=1, ou alors un AT+CIPSTART="SSL",... en ayant configuré le SSL... faut lire la doc du module

Cela ne fonctionne pas.
Une mauvaise librairie "thingspeak.h" peut-il engendrer ces soucis ? J'ai trouvé "thingspeak.h" sur Arduino. Ne sachant pas quoi prendre (il y en avait deux) j'ai installé les deux.
Si j'ai fait une erreur ? Ou puis-je trouver une bibliothèque compatible.
Merci pour votre aide.

votre code n'utilise absolument pas la bibliothèque thingspeak...

au fait l'URL n'est pas bonne non plus - ça devrait être un
GET /update?api_key=XXXXXXXXXXXXXXXX&field=valeur

Comme ça ?

  String str="GET/update?api_key=A1HACUAY0S8XYD59=1" + String(temp);
  mySerial.println(str);//begin send data to remote server
  delay(4000);
  ShowSerialData();u code ici

Toujours des erreurs. Toutefois, je remarque un chiffre au bout de :

GET /update?api_key=A1HACXxxxxxYD59=1485.00