Code du jour avec GPS et capteur de température
Utilisé pour tester une installation avec IDE Arduino et un ESP32, sur lequel sont connectés un GPS et un capteur de température.
#include <TinyGPS.h>
#include <HardwareSerial.h>
#include "DHT.h"
#include <Adafruit_Sensor.h>
const int RXPin = 16; // Broche RX de l'ESP32 connectée au TX du module GPS
const int TXPin = 17; // Broche TX de l'ESP32 connectée au RX du module GPS
const int BAUDrate = 9600; // Vitesse de bauds du module GPS
#define LED_PIN 2 // Définir le numéro de broche pour la LED
#define DHTPIN22 4
DHT dht22(DHTPIN22, DHT22); //if using DHT22 must set DHT22
// Création d'une instance de l'objet TinyGPS
TinyGPS gps;
HardwareSerial gpsSerial(2); // UART2 sur l'ESP32
void setup() {
//initialize DHT
dht22.begin();
pinMode(LED_PIN, OUTPUT); // Configurer la broche de la LED en mode sortie
Serial.begin(19200); // Initialisation de la communication série pour le moniteur série
// Message au démarrage
Serial.println("Programme de lecture GPS démarré.");
gpsSerial.begin(BAUDrate, SERIAL_8N1, RXPin, TXPin); // Initialisation de la communication série pour le module GPS
}
void loop() {
// put your main code here, to run repeatedly:
//DHT sensor read data
float humidity22 = dht22.readHumidity();
float temperature22 = dht22.readTemperature();
static int loopCounter = 0; // Déclaration d'une variable compteur de boucle
//Serial.print("Boucle numéro : ");
//Serial.println(loopCounter);
Serial.print(".");
//delay(1000); // Attendre 1 seconde
if (gps.encode(gpsSerial.read())) {
// Si des données valides sont disponibles, récupérez la position
float latitude, longitude;
gps.f_get_position(&latitude, &longitude);
delay(10000); // Attendre 10 seconde
// Vérifiez si la position est valide
//if (latitude != TinyGPS::GPS_INVALID_F_ANGLE && longitude != TinyGPS::GPS_INVALID_F_ANGLE) {
// Lire les données de localisation
Serial.println();
Serial.print("Latitude : ");
Serial.println(latitude, 6);
Serial.print("Longitude : ");
Serial.println(longitude, 6);
Serial.print("https://www.google.com/maps?q=");
Serial.print(latitude, 6);
Serial.print(",");
Serial.println(longitude, 6);
// Récupérer le nombre de satellites
Serial.print("Nombre de satellites : ");
Serial.println(gps.satellites());
// Récupérer l'altitude
Serial.print("Altitude : ");
Serial.println(gps.f_altitude());
// Récupérer la vitesse
Serial.print("Vitesse : ");
Serial.println(gps.f_speed_kmph());
// Récupérer la direction
Serial.print("Direction : ");
Serial.println(gps.f_course());
//print result to serial
Serial.print("Humidity 22 = ");
Serial.print(humidity22, 2);
Serial.println(" %");
Serial.print("Temperature 22 = ");
Serial.print(temperature22, 2);
Serial.println(" °C");
digitalWrite(LED_PIN, HIGH); // Allumer la LED
delay(100); // Attendre 1 seconde
digitalWrite(LED_PIN, LOW); // Éteindre la LED
//} else {
// Serial.println("Position GPS non valide.");
//}
} else {
// Aucune donnée GPS disponible
//Serial.println("Aucune donnée GPS disponible.");
}
loopCounter++;
}