Code du jour avec GPS et capteur de température
Aller à la navigation
Aller à la recherche
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++;
}