Code du jour avec GPS et capteur de température

De Wiki de Mémoire Vive
Révision datée du 5 avril 2024 à 10:31 par 192.168.2.1 (discussion)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
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++;
}