Pages: 1 [2]   Go Down
Author Topic: Afficher la température sur un site et programmer l'envoi d'un sms et d'un email  (Read 2595 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ah merci, tu à un tutoriel pour apprendre à faire cela ? Ou une aide ? je te remercie d'avance smiley
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai fait ça rapidement au boulot, pour expliquer la gestion de timer et de flag de dépassement pour ne pas envoyer une alerte à tous les cycles, mais uniquement quant il ya dépassement du seuil.

Pour la gestion Eternet, tu trouveras de nombreux exemples et tutoriel expliquant comment se connecter à un socket serveur.

Code:
// Définir la constante 10 sec
#define TPS_ATTENTE 10000

// Définir le seuil de température à 25°
#define SEUIL_TEMP 25

// Définir la sortie qui déclenchera l'allumage d'une led
#define PIN_LED 13

// déclarer les variables de gestion de temps
long previousMillis = 0;
unsigned long currentMillis = 0;
float temperature;
bool seuil_depasse;


void setup()
{
  // Démarrage du timer
  currentMillis = millis();
  previousMillis = currentMillis;
 
  // Placer le flag de détection de dépassement de seuil à faux
  seuil_depasse = false;
 
  // Définir la PIN de sortie
  pinMode(PIN_LED, OUTPUT);
}

void loop()
{
  // Vérification de la temporisation
  currentMillis = millis();
  if(currentMillis - previousMillis > TPS_ATTENTE)
  {
    Serial.println("Releve de temperature");
    // Code pour récupérer la valeur de température et la stocker en degrés dans la variable : temperature
   
    if(seuil_depasse && temperature < SEUIL_TEMP)
    {
      // Etteindre la LED
      digitalWrite(PIN_LED, LOW);
     
      // Remettre le flag de seuil dépassé à faux
      seuil_depasse = false;
    }
    else if( !seuil_depasse && temperature >= SEUIL_TEMP)
    {
      // Allumer la LED
      digitalWrite(PIN_LED, HIGH);
     
      // mettre le flag de seuil dépassé à vrai
      seuil_depasse = true;
     
      // Mettre ici le code de connexion à un socket pour envoyer une trame d'alerte
      // Afin que le serveur recevant cette trame, s'occupe d'envoyer un mail ou un SMS
    }
  }
}
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ah merci beaucoup je vais étudier ton programme, et faire des recherches pour le "Ethernet", merci encore  tonyryu !
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai débuté le programme voila ce que sa donne, pour le moment il marche pas, si vous avez des idées, aides ou même avis je suis ouvert à tous !

Code:
// Importation del a bibliothèque de GSM
#include <GSM.h>

// Définir le code PIN de la carte SIM
#define PINNUMBER ""

GSM gsmAccess;
GSM_SMS sms;

int temp ;
#define TempMax 18

int MesureTemp()
{
int tempc=0;
for(int i = 0;i<10;i++)
{
samples[i] = ( Ref * analogRead(pinTemp) * 100.0) / 1024;
tempc = tempc + samples[i];
delay(200);
}
tempc = tempc/10 ;
return tempc ;
}


void setup(){
  temp = MesureTemp() ; // mesure de la temperature
if (temp > TempMax) // la temperature est superieure a 18°C
 
  Serial.begin(9600);
  Serial.println("SMS Messages Sender");
 
  boolean notConnected = true; // connection à l'état
   
   while(notConnected)
  {
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)
      notConnected = false;
    else
  }
   Serial.println("Not connected");
      delay(1000);
    }
  }

  Serial.println("GSM initialized");
}

void loop()
{

  Serial.print("Enter a mobile number: ");
  char remoteNumber[20];  // numéro de téléphone pour envoyez le sms
  readSerial(remoteNumber);
  Serial.println(remoteNumber);

  // Texte du sms
  Serial.print("Seuil dépassé, fermeture trape");
  char txtMsg[200];
  readSerial(txtMsg);
  Serial.println("SENDING");
  Serial.println();
  Serial.println("Message:");
  Serial.println(txtMsg);

  // send the message
  sms.beginSMS(remoteNumber);
  sms.print(txtMsg);
  sms.endSMS();
  Serial.println("\nCOMPLETE!\n");
}

/*
  Read input serial
 */
int readSerial(char result[])
{
  int i = 0;
  while(1)
  {
    while (Serial.available() > 0)
    {
      char inChar = Serial.read();
      if (inChar == '\n')
      {
        result[i] = '\0';
        Serial.flush();
        return 0;
      }
      if(inChar!='\r')
      {
        result[i] = inChar;
        i++;
      }
    }
  }
}




Logged

Offline Offline
Edison Member
*
Karma: 17
Posts: 1952
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

bonjour,
sans les erreurs, un peu dur.
mais déjà, y a un truc qui cloche, non?
Quote
int MesureTemp()
Quote
int readSerial(char result[])
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai trouver sa dans la partis Apprendre du site d'arduino.

Pour les erreurs les voicits, attention à la quantité haha !

Code:
Envoi_sms:6: error: 'GSM' does not name a type
Envoi_sms:7: error: 'GSM_SMS' does not name a type
Envoi_sms.cpp: In function 'int MesureTemp()':
Envoi_sms:17: error: 'samples' was not declared in this scope
Envoi_sms:17: error: 'Ref' was not declared in this scope
Envoi_sms:17: error: 'pinTemp' was not declared in this scope
Envoi_sms.cpp: In function 'void setup()':
Envoi_sms:37: error: 'gsmAccess' was not declared in this scope
Envoi_sms:37: error: 'GSM_READY' was not declared in this scope
Envoi_sms:40: error: expected primary-expression before '}' token
Envoi_sms:40: error: expected `;' before '}' token
Envoi_sms.cpp: At global scope:
Envoi_sms:44: error: expected declaration before '}' token
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Désolé du double Post :

J'ai essayer comme cela et toujours rien.. je désespère.. :

Code:
//Déclaration et initialisation des variables
  float mesure=0;        //Variable pour le stockage mesure retournée par le capteur
  float tension=0;       //Variable pour le stockage de la tension
  float temperature=0;   //Variable pour le stockage de la température
  float tempmax=18;       //Temperature max
  int portana0 = 0;      //Numéro du port analogique sur lequel la température est mesurée

//Traitements initialisation
  void setup()
  {
    analogReference(INTERNAL); //Permet de fixer la temperature de refernce à 1,1 volt
    Serial.begin(9600);        //initialisation de la liaison série à 9 600 bauds
  }

//Traitements itératifs
  void loop()
  {
    mesure = analogRead(portana0);  //Lecture de la valeur fournie par le capteur de température
    tension = mesure * 1.1 / 1024;  //Conversion en tension (en volt)
   
    temperature = tension * 100;    //Conversion en température (en degré Celsius)
   
    if (temp > TempMax) // la temperature est superieure a 18°C
   
      Serial.begin(9600);
  Serial.println("SMS Messages Sender");
   boolean notConnected = true; // connection à l'état
   
   while(notConnected)
  {
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)
      notConnected = false;
    else
  }
   Serial.println("Not connected");
      delay(1000);
    }
{
  Serial.println("GSM initialized");
}
void loop()
{

  Serial.print("Enter a mobile number: ");
  char remoteNumber[20];  // numéro de téléphone pour envoyez le sms
  readSerial(remoteNumber);
  Serial.println(remoteNumber);

  // Texte du sms
  Serial.print("Seuil dépassé, fermeture trape");
  char txtMsg[200];
  readSerial(txtMsg);
  Serial.println("SENDING");
  Serial.println();
  Serial.println("Message:");
  Serial.println(txtMsg);

  // envoi le sms
  sms.beginSMS(remoteNumber);
  sms.print(txtMsg);
  sms.endSMS();
  Serial.println("\nCOMPLETE!\n");
}


Avec celui la j'obtient les erreurs suivantes :

Code:
envoi_sms3.cpp: In function 'void loop()':
envoi_sms3:22: error: 'temp' was not declared in this scope
envoi_sms3:22: error: 'TempMax' was not declared in this scope
envoi_sms3:30: error: 'gsmAccess' was not declared in this scope
envoi_sms3:30: error: 'PINNUMBER' was not declared in this scope
envoi_sms3:30: error: 'GSM_READY' was not declared in this scope
envoi_sms3:33: error: expected primary-expression before '}' token
envoi_sms3:33: error: expected `;' before '}' token
envoi_sms3.cpp: At global scope:
envoi_sms3:37: error: expected unqualified-id before '{' token
envoi_sms3.cpp: In function 'void loop()':
envoi_sms3:40: error: redefinition of 'void loop()'
envoi_sms3:15: error: 'void loop()' previously defined here
envoi_sms3:45: error: 'readSerial' was not declared in this scope
envoi_sms3:58: error: 'sms' was not declared in this scope
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Up, voila mon gprs que je viens de recevoir :  http://www.evola.fr/product_info.php/shield-gprs-p-183
« Last Edit: April 12, 2013, 03:39:57 am by Maltar » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Up.
Logged

Bretagne
Offline Offline
Full Member
***
Karma: 2
Posts: 196
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
// Importation del a bibliothèque de GSM
#include <GSM.h>

Bonjour,
La librairie "GSM.h"   est destinée au shield GSM officiel d'arduino. Elle n'est pas compatible avec ton shield de Seeedstudio.
Donc pas étonnant que le code ne marche pas.
Il existe la librairie GoGprs pour le module GSM de ton shield :http://arduino103.blogspot.fr/2012/11/la-librairie-gogprs-pour-le-gsmgprs.html
convient au module Sim900 (ou conviendrait? certains signalent des bugs).
Sinon pour un envoi simple de SMS :http://www.seeedstudio.com/wiki/GPRS_Shield_V2.0
Code:
///SendTextMessage()
///this function is to send a sms message
void SendTextMessage()
{
  mySerial.print("AT+CMGF=1\r");    //Because we want to send the SMS in text mode
  delay(100);
  mySerial.println("AT + CMGS = \"+86186*****308\"");//send sms message, be careful need to add a country code before the cellphone number
  delay(100);
  mySerial.println("How are you ?");//the content of the message
  delay(100);
  mySerial.println((char)26);//the ASCII code of the ctrl+z is 26
  delay(100);
  mySerial.println();
}

Logged

...ils embarquèrent la logique, coupèrent les cordons, alors, libérés de leurs chaînes, une immensité s'ouvrait devant eux...

Pages: 1 [2]   Go Up
Jump to: