Go Down

Topic: brancher shield GPRS/GSM (Read 2527 times) previous topic - next topic

infobarquee

ne va pas aimer le gsm avec du ~
AUCUNE AIDE PAR MP

Mkdizzy

Bonjour, voilà je me suis procurer un secteur en 5V ; 1A et mon shield fonctionne toujours.
Je vous remercie tout les deux de votre aide. :)

Maintenant j'aurais besoin d'aide pour la partit programmation.
Et oui je suis vraiment nul partout :smiley-confuse:

Alors déjà j'aimerais savoir si je peux savoir si mon dht11 et détecter et le shield par ma nano ?
Je trifouille un peu partout sur le net pour trouver des code et les adapter à mes besoins mais bon même comme sa j'ai du mal. Parce que avec mon code il ne ce  passe rien du tout juste des LEDS qui s'allument.

Voici mon code :
Code: [Select]

#include <SoftwareSerial.h>
#include<LiquidCrystal.h>
#include <DHT.h>

LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
SoftwareSerial mySerial(9, 10);

#define DHTPIN 4     // what pin we're connected to
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);


float temp_read, Temp_alert_val, Temp_shut_val;
int sms_count = 0, Fire_Set;


void setup()
{
  mySerial.begin(9600);
  Serial.begin(9600);
  lcd.begin(16, 2);
  dht.begin();
  delay(500);
}

void loop()
{
  CheckFire();
  CheckShutDown();
}

void CheckFire()
{
  int hum = dht.readHumidity();
  int temp = dht.readTemperature();

  lcd.setCursor(0, 0);
  lcd.print("T: ");
  lcd.print(temp);
  lcd.print("\337C");
  lcd.print(" - H: ");
  lcd.print(hum);
  lcd.print("%");
  delay(200);
  Temp_alert_val = CheckTemp();
  if (Temp_alert_val > 25)
  {
    SetAlert(); // Function to send SMS Alerts
  }
}

float CheckTemp()
{
  // temp_read = analogRead(sensor); // reads the sensor output
  //  temp_read = temp_read * 5; // converts the sensor reading to temperature
  // temp_read = temp_read / 10; // adds the decimal point
  //return temp_read; // returns temperature value in degree celsius
  int temp = dht.readTemperature();
  temp_read = (temp);
}

void SetAlert()
{
  while (sms_count < 3) //Number of SMS Alerts to be sent
  {
    SendTextMessage(); // Function to send AT Commands to GSM module
  }
  Fire_Set = 1;
  lcd.setCursor(0, 1);
  lcd.print("Température élévé ALERTE");
}

void CheckShutDown()
{
  if (Fire_Set == 1)
  {

    Temp_shut_val = CheckTemp();
    if (Temp_shut_val < 22)
    {
      lcd.setCursor(0, 1);
      lcd.print("La température est à nouveau normal");
      sms_count = 0;
      Fire_Set = 0;
    }
  }
}

void SendTextMessage()
{
  int hum = dht.readHumidity();
  int temp = dht.readTemperature();


  lcd.setCursor(0, 0);
  lcd.print("T: ");
  lcd.print(temp);
  lcd.print("\337C");
  lcd.print(" - H: ");
  lcd.print(hum);
  lcd.print("%");
  delay(200);
  mySerial.println("AT+CMGF=1");    //To send SMS in Text Mode
  delay(2000);
  mySerial.println("AT+CMGS=\"+33***\"\r"); // change to the phone number you using
  delay(2000);
  mySerial.println("Alert !! Temperature:");
  mySerial.print(temp);
  mySerial.print("\337C and Humidity:");
  mySerial.print(hum);
  mySerial.print(" %. Temp is above set threshold!");//the content of the message
  delay(200);
  mySerial.println((char)26);//the stopping character
  delay(5000);
  mySerial.println("AT+CMGS=\"+33***\"\r"); // change to the phone number you using
  delay(2000);
  mySerial.println("Alert !! Temp is above set threshold!");//the content of the message
  delay(200);
  mySerial.println((char)26);//the message stopping character
  delay(5000);
  sms_count++;
}

Mkdizzy

Svp j'ai vraiment besoin d'aide j'ai jusqu'a demain pour finir mon projet

infobarquee

Svp j'ai vraiment besoin d'aide j'ai jusqu'a demain pour finir mon projet
dur de passer des exams en faisant le taf au dernier moment :)

tu vois pas une erreur dans ces 2 lignes?
Code: [Select]
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
SoftwareSerial mySerial(9, 10);


dans les exemples de la lib dht, tu as tout ce qu'il faut
pourquoi ne pas prendre les exemples et après quelques minutes de compréhension, faire un mixe?

Code: [Select]
// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain

#include "DHT.h"

#define DHTPIN 2     // what pin we're connected to

// Uncomment whatever type you're using!
#define DHTTYPE DHT11   // DHT 11
//#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// Connect pin 1 (on the left) of the sensor to +5V
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  Serial.println("DHTxx test!");
 
  dht.begin();
}

void loop() {
  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  // check if returns are valid, if they are NaN (not a number) then something went wrong!
  if (isnan(t) || isnan(h)) {
    Serial.println("Failed to read from DHT");
  } else {
    Serial.print("Humidity: ");
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperature: ");
    Serial.print(t);
    Serial.println(" *C");
  }
}
AUCUNE AIDE PAR MP

Mkdizzy

dur de passer des exams en faisant le taf au dernier moment :)

ahah et non même pas des exams juste un stage ou ils m'ont donner ceci comme projet :D

tu vois pas une erreur dans ces 2 lignes?
Code: [Select]
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
SoftwareSerial mySerial(9, 10);



LiquidCrystal na rien à faire là non ? je ne l'utilise pas il me semble


et oui je vais essayer de faire un mixte merci

Mkdizzy

LiquidCrystal na rien à faire là non ? je ne l'utilise pas il me semble



enfin non j'ai rien dis ^^

Mkdizzy

Code: [Select]

#include <SoftwareSerial.h>
#include<LiquidCrystal.h>
#include <DHT.h>

SoftwareSerial mySerial(9, 10);

#define DHTPIN 4     // what pin we're connected to
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);


float temp_read, Temp_alert_val, Temp_shut_val;
int sms_count = 0, Fire_Set;


void setup()
{
  mySerial.begin(9600);
  Serial.begin(9600);
  dht.begin();
  delay(500);
}

void loop()


{
  CheckFire();
  CheckShutDown();
}
 
void CheckFire()
{
  int hum = dht.readHumidity();
  int temp = dht.readTemperature();

 
  Temp_alert_val = CheckTemp();
  if (Temp_alert_val > 25)
  {
    SetAlert(); // Function to send SMS Alerts
  }
}

float CheckTemp()
{
  // temp_read = analogRead(sensor); // reads the sensor output
  //  temp_read = temp_read * 5; // converts the sensor reading to temperature
  // temp_read = temp_read / 10; // adds the decimal point
  //return temp_read; // returns temperature value in degree celsius
  int temp = dht.readTemperature();
  temp_read = (temp);
}

void SetAlert()
{
  while (sms_count < 3) //Number of SMS Alerts to be sent
  {
    SendTextMessage(); // Function to send AT Commands to GSM module
  }
  Fire_Set = 1;
 
}

void CheckShutDown()
{
  if (Fire_Set == 1)
  {

    Temp_shut_val = CheckTemp();
    if (Temp_shut_val < 22)
    {
   
      sms_count = 0;
      Fire_Set = 0;
    }
  }
}

void SendTextMessage()
{
  int hum = dht.readHumidity();
  int temp = dht.readTemperature();


 
  mySerial.println("AT+CMGF=1");    //To send SMS in Text Mode
  delay(2000);
  mySerial.println("AT+CMGS=\"+33000000000\"\r"); // change to the phone number you using
  delay(2000);
  mySerial.println("Alerte !! Temperature:");
  mySerial.print(temp);
  mySerial.print("\337C and Humidity:");
  mySerial.print(hum);
  mySerial.print(" %. Temp is above set threshold!");//the content of the message
  delay(200);
  mySerial.println((char)26);//the stopping character
  delay(5000);
  mySerial.println("AT+CMGS=\"+33000000000\"\r"); // change to the phone number you using
  delay(2000);
  mySerial.println("Alert !! Temp is above set threshold!");//the content of the message
  delay(200);
  mySerial.println((char)26);//the message stopping character
  delay(5000);
  sms_count++;
}



J'en suis à la j arrive a rien de plus pff..

infobarquee

Quote
J'en suis à la j arrive a rien de plus pff..
très explicite comme réponse.
qu'est ce qui ne fonctionne pas?

si tu ne donne pas plus de renseignements une fois de plus, comment veux tu qu'on aide?

tu ne peux pas prendre l'exemple dht, le faire fonctionner, récupérer les temp et hum dans un premier temps?

a partir du moment où ca fonctionne, le reste c'est rien du tout.
AUCUNE AIDE PAR MP

Mkdizzy

très explicite comme réponse.

qu'est ce qui ne fonctionne pas?
-il ce passe rien quand je televerse le programme juste des LEDS qui s'allume.

si tu ne donne pas plus de renseignements une fois de plus, comment veux tu qu'on aide?

tu ne peux pas prendre l'exemple dht, le faire fonctionner, récupérer les temp et hum dans un premier temps?
-alors j'ai essayer de le faire fonctionner mais lorsque je vais dans le moniteur ca défile infiniment vers la droite.

a partir du moment où ca fonctionne, le reste c'est rien du tout.
- j'ai ce code qui fonctionne pour les mesures :

Code: [Select]
#include <dht11.h> // charger la librairie

dht11 DHT11; // Créer le capteur

#define DHT11PIN 4 // Définir la pin utilisée

void setup()
{
  // Initialiser la liaison série
  Serial.begin(115200);
}

void loop()
{
  Serial.print(" --- Nouvelle lecture --- ");

  int chk = DHT11.read(DHT11PIN); // Lecture du capteur

  Serial.print("Etat du capteur: ");

  switch (chk) // Est-ce que le capteur fonctionne?
  {
    case DHTLIB_OK:
                Serial.println("OK");
                break;
    case DHTLIB_ERROR_CHECKSUM:
                Serial.println("Checksum erreur");
                break;
    case DHTLIB_ERROR_TIMEOUT:
                Serial.println("Time out erreur");
                break;
    default:
                Serial.println("Erreur inconnue");
                break;
  }

  Serial.print("Humidite (%): "); // Humidité
  Serial.println((float)DHT11.humidity, 2);

  Serial.print("Temperature (°C): "); // Température
  Serial.println((float)DHT11.temperature, 2);

  delay(5000); // Pause avant prochaine lecture

}



infobarquee

tu n'y mets vraiment pas du tiens en répondant comme ca.
aucun copier/coller de la console, photo du montage, etc....

donc en partant de ton code dht qui fonctionne, c'est simple.
dans le loop, il suffit de créer une condition

si temp > 25 ===> envoi sms
pas besoin de se prendre la tête pendant 3 ans pour faire une condition, non?

Code: [Select]
float temp =  (float)DHT11.temperature, 2;

if (temp > 25){
envoisms()
};
....
fin du loop
void envoisms(){
//code pour sms
return;
}
AUCUNE AIDE PAR MP

Mkdizzy

tu n'y mets vraiment pas du tiens en répondant comme ca.
aucun copier/coller de la console, photo du montage, etc....

-Pour le copier/coller bah ca va être difficile il y à rien d'écrit mais dans le moniteur cela défile quand même à l'infini vers la droite alors qu'il n'y à rien d'ecrit. pour le montage c'est toujours le même sauf que c'est plus de l'aternatif comme alimentation ( )

donc en partant de ton code dht qui fonctionne, c'est simple.
dans le loop, il suffit de créer une condition

si temp > 25 ===> envoi sms
pas besoin de se prendre la tête pendant 3 ans pour faire une condition, non?

-c'est vrai; j'ai essayer d'envoyer un sms avec le code donner avec le gsm, sauf que je ne reçois rien, je me demande si j'ai bien tout brancher  :smiley-roll-blue:

Code: [Select]
#include <SoftwareSerial.h>

SoftwareSerial mySerial(9, 10);

char str1[]={'A','T','+','C','S','C','S','=','"','G','S','M','"'};
char str2[]={'A','T','+','C','M','G','S','=','"','1','5','9','7','2','1','6','9','1','8','9','"'};
int i;
char inByte = 0;
//unsigned char receive_ACK[6];
char hex1[]={0x1A};
void setup()
{
  // start serial port at 9600 bps and wait for port to open:
  Serial.begin(9600);
  //while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
 // }
delay(8000);
Serial.println();
for(i=10;i>0;i--)
{delay(500);
Serial.println("AT");}
 
delay(1000);
Serial.println("AT");
delay(1000);
for(i=0;i<13;i++)
Serial.print(str1[i]);
Serial.println();
delay(1000);
Serial.println("AT+CMGF=1");
delay(1000);
for(i=0;i<21;i++)
Serial.print(str2[i]);//AT+CMGS="+33680211267"
Serial.println();
delay(1000);
Serial.print("HELLO Sir,Thank you very much fit my test!");
delay(1000);
Serial.print(hex1);
delay(1000);
 
}
 
void loop()
{ /*
  Serial.println("AT");   delay(500);       
 if (Serial.available() > 0) {
    // get incoming byte:
    inByte = Serial.read();
    Serial.println(inByte);
 }
 */
}



infobarquee

pour le dht, tu peux me dire pourquoi le + qui devrait être connectée au + est sur rst d'après la photo?
et la résistance est mise entre le + et - au lieu de + et data de la pin 4
si ca défile sans rien inscrire, c'est qu'aucune donnée n'arrive du dht simplement.



donc comme déjà indiqué, fais fonctionner juste le dht avant de continuer.

pour ton code gsm, c'est vraiment se prendre le chou vu comment il est écrit
de plus tu écris
Code: [Select]
SoftwareSerial mySerial(9, 10);
et les pins utilisées sont 2 et 3

tu fais un serial print donc vers la console au lieu de faire un mySerial.print
AUCUNE AIDE PAR MP

Aegnor1975

Salut,
Pour ton DHT11, essaye un peu le code ci-dessous, c'est un code que j'ai adapté pour mes besoins, mais ça pourrait te mettre sur la piste :

Code: [Select]

#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN 13 // pin DHT11
#define DHTTYPE DHT11
DHT_Unified dht(DHTPIN, DHTTYPE);

void setup(){
  dht.begin();
  sensor_t sensor;
  dht.temperature().getSensor(&sensor);
  dht.humidity().getSensor(&sensor);
}

void loop(){

 sensors_event_t event;
    dht.humidity().getEvent(&event);
 if (isnan(event.relative_humidity))
 {
 lcd.print("Error");
 }
 else
 {
 lcd.print(event.relative_humidity);
 }
 
  if((event.relative_humidity) < 40){
    digitalWrite(blue1, LOW);
    digitalWrite(red1, HIGH);
    digitalWrite(green1, LOW);
    }
  if((event.relative_humidity) >= 40 && (event.relative_humidity) < 60){
    digitalWrite(blue1, LOW);
    digitalWrite(red1, LOW);
    digitalWrite(green1, HIGH);
    }
  if((event.relative_humidity) >= 60){
    digitalWrite(blue1, HIGH);
    digitalWrite(red1, LOW);
    digitalWrite(green1, LOW);
    }
    lcd.setCursor(10, 3);
    lcd.print((char)045);
}
{
     // Affiche la temp?rature
 //delay(delayMS);
    lcd.setCursor(0, 2);
    lcd.write(2);
    lcd.setCursor(2, 2);
 sensors_event_t event;
 dht.temperature().getEvent(&event);
 if (isnan(event.temperature))
 {
 lcd.print("Error");
 }
 else
 {
 lcd.print(event.temperature);
 }
}


Bon, ici, je suis sur du LCD pas sur la console.

Suis les conseils d'infobarquee, avant de vouloir envoyer ton SMS,... commence par faire fonctionner chaque composant indépendamment les uns des autres, et quand tout fonctionne, compile les différents programmes en un seul, si tu veux faire tout d'un coup alors que tu débutes en électronique et en programmation, tu vas t'arracher les cheveux...

Cordialement,
Aegnor

Go Up