Je reposte suite à une supression de mon ancien sujet..
Je cherche à assembler plusieurs parties de programme pour n'en faire qu'un, à partir d'exemples de constructeurs provenant de mes modules.
Mes modules sont:
Une caméra thermique AMG8833 de chez ADAFRUIT
Un module GPS/GSM TEL0097 de DfRobot
Une carte arduino UNO
Le but final est d'être capable à partir de la caméra thermique, de détecter un seuil de température correspondant à une température critique (celle d'un feux), une fois ce seuil dépassé je voudrais initialiser mon module TEL0097 pour qu'il capte ses coordonnées GPS, et me les renvoient par SMS à mon numéro.
Aujourd'hui, j'ai pu modifier le programme de "PIXEL_Test" proposé par ADAFRUIT en exemple, qui n'est ni plus ni moins qu'une simple lecture en boucle des pixels de la caméra thermique, et les associe à une température.
Voici donc mon code actuel que je met cette fois entre balises...
#include <Wire.h>
#include <Adafruit_AMG88xx.h>
Adafruit_AMG88xx amg;
float pixels[AMG88xx_PIXEL_ARRAY_SIZE];
void setup() {
Serial.begin(9600);
Serial.println(F("AMG88xx pixels"));
bool status;
// réglage par défault
status = amg.begin();
if (!status) {
Serial.println("Could not find a valid AMG88xx sensor, check wiring!");
while (1);
}
Serial.println("-- Pixels Test --");
Serial.println();
delay(100); // démarrage de la caméra
}
void loop() {
// boucle infini : lecture simple des pixels
amg.readPixels(pixels);
Serial.print("[");
for(int i=1; i<=AMG88xx_PIXEL_ARRAY_SIZE; i++){
Serial.print(pixels[i-1]);
Serial.print(", ");
if( i%8 == 0 ) Serial.println();
//définition de SHOWTEMP qui va permettre de tenir compte des données de température affichées
#define SHOW_TEMP_TEXT
//Valeur maximale pour notre cas
#define TEMP 60
int colorTemp;
if(pixels[i] <= TEMP) colorTemp = pixels[i]; //si la température des pixels est inférieure à MAXTEMP (60°C), on continue à lire simplement
else
{
Serial.println("C'EST TRES CHAUD ATTENTION!"); //Sinon, renvoit une erreur
delay(1000);
}
}
Serial.println("]");
Serial.println();
// délai
delay(10);
}
// fin de boucle, on recommence
Voilà, cette partie est fonctionnelle, mais je voudrait maintenant au lieu d'afficher un message quand je dépasse mon seuil, être capable d'initialiser le GPS et d'envoyer les coordonnées par SMS, ou au pire des cas être capable d'envoyer un simple SMS au dépassement du seuil.
Je met ici les codes exemples pour :
Acquérir les données GPS :
#include <DFRobot_sim808.h>
DFRobot_SIM808 sim808(&Serial);
void setup() {
//mySerial.begin(9600);
Serial.begin(9600);
//******** Initialize sim808 module *************
while(!sim808.init()) {
delay(1000);
Serial.print("Sim808 init error\r\n");
}
//************* Turn on the GPS power************
if( sim808.attachGPS())
Serial.println("Open the GPS power success");
else
Serial.println("Open the GPS power failure");
}
void loop() {
//************** Get GPS data *******************
if (sim808.getGPS()) {
Serial.print(sim808.GPSdata.year);
Serial.print("/");
Serial.print(sim808.GPSdata.month);
Serial.print("/");
Serial.print(sim808.GPSdata.day);
Serial.print(" ");
Serial.print(sim808.GPSdata.hour);
Serial.print(":");
Serial.print(sim808.GPSdata.minute);
Serial.print(":");
Serial.print(sim808.GPSdata.second);
Serial.print(":");
Serial.println(sim808.GPSdata.centisecond);
Serial.print("latitude :");
Serial.println(sim808.GPSdata.lat);
Serial.print("longitude :");
Serial.println(sim808.GPSdata.lon);
Serial.print("speed_kph :");
Serial.println(sim808.GPSdata.speed_kph);
Serial.print("heading :");
Serial.println(sim808.GPSdata.heading);
Serial.println();
//************* Turn off the GPS power ************
sim808.detachGPS();
}
}
Envoyer un SMS :
#include <DFRobot_sim808.h>
#include <SoftwareSerial.h>
//Mobile phone number,need to change
#define PHONE_NUMBER "06*******"
//The content of messages sent
#define MESSAGE " Bonjour tout le monde ! "
//#define PIN_TX 10
//#define PIN_RX 11
//SoftwareSerial mySerial(PIN_TX,PIN_RX);
//DFRobot_SIM808 sim808(&mySerial);//Connect RX,TX,PWR,
DFRobot_SIM808 sim808(&Serial);
void setup() {
//mySerial.begin(9600);
Serial.begin(9600);
//******** Initialize sim808 module *************
while(!sim808.init()) {
delay(1000);
Serial.print("Sim808 init error\r\n");
}
Serial.println("Sim808 init success");
Serial.println("Start to send message ...");
//******** define phone number and text **********
sim808.sendSMS(PHONE_NUMBER,MESSAGE);
}
void loop() {
//nothing to do
}
Voilà je pense avoir tout dit...Merci de votre aide, elle me serait la bienvenue... ![]()