Skip to content

Commit

Permalink
Merge branch 'develop-Technicien-Configurer-le-SA' of https://forge.i…
Browse files Browse the repository at this point in the history
  • Loading branch information
Altaks committed Jan 17, 2024
2 parents 021df0f + 9c0d599 commit 1ee2e7a
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 133 deletions.
2 changes: 1 addition & 1 deletion sa-software/software/platformio.ini
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ board = esp32-s2-saola-1
framework = arduino
monitor_speed = 9600
lib_deps =
seeed-studio/Grove SGP30_Gas_Sensor @ ^1.0.0
makuna/RTC@^2.4.2
thingpulse/ESP8266 and ESP32 OLED driver for SSD1306 displays@^4.4.0
beegee-tokyo/DHT sensor library for ESPx@^1.19
me-no-dev/AsyncTCP @ ^1.1.1
me-no-dev/ESP Async WebServer @ ^1.2.3
adafruit/Adafruit NeoPixel@^1.12.0
adafruit/Adafruit SGP30 Sensor@^2.0.2
139 changes: 19 additions & 120 deletions sa-software/software/src/Capteurs/qualAir.cpp
Original file line number Diff line number Diff line change
@@ -1,131 +1,30 @@
//
// Created by altaks on 06/12/23.
//

#include "qualAir.h"

bool status = false;

/**
* Fonction permettant de convertir 4 valeurs de 8 bits chacune en une valeur sur 32 bits
* @param value l'adresse des 32 bits
* @param array le tableau de 4 valeurs de 8 bits à convertir
*/
void array_to_u32(u32 *value, u8* array)
{
(*value) = (*value) | (u32) array[0] << 24;
(*value) = (*value) | (u32) array[1] << 16;
(*value) = (*value) | (u32) array[2] << 8;
(*value) = (*value) | (u32) array[3];
}

/**
* Fonction permettant de convertir les valeurs contenues dans 32 bits en 4 valeurs de 8 bits chacune.
* @param value l'adresse des 32 bits à convertir
* @param array le tableau de 4 valeurs de 8 bits
*/
void u32_to_array(u32 value, u8* array)
{
// Si le tableau n'est pas alloué, ne rien faire
if(!array)
return;
#include "Arduino.h"
#include <EEPROM.h>

// Sinon, récupérer les valeurs en calculant avec des décalages de bits
array[0]=value>>24;
array[1]=value>>16;
array[2]=value>>8;
array[3]=value;
}
#include <Wire.h>
#include "Adafruit_SGP30.h"

/**
* Fonction permettant de stocker la valeur de la baseline dans l'EEPROM
*/
void store_baseline(void)
{
static u32 i=0;
u32 j=0;
u32 iaq_baseline=0;
u8 value_array[4]={0};
i++;
if(i==3600)
{
i=0;
if(sgp_get_iaq_baseline(&iaq_baseline) == STATUS_OK)
{
// On convertit la valeur de la baseline en 4 valeurs de 8 bits chacune
u32_to_array(iaq_baseline,value_array);
Adafruit_SGP30 sgp;

// On écrit les 4 valeurs de 8 bits dans l'EEPROM
for(j=0;j<4;j++){
EEPROM.write(j,value_array[j]);
}
EEPROM.write(j,BASELINE_IS_STORED_FLAG);
}
}
void initQualAir() {
while (!Serial) { delay(10); } // Wait for serial console to open!

// On attend 1 seconde
delay(LOOP_TIME_INTERVAL_MS);
}
Serial.println("SGP30 test");

/**
* Fonction permettant d'écrire la baseline dans l'EEPROM
*/
void set_baseline(void)
{
u32 i=0;
u8 baseline[5]={0};
u32 baseline_value=0;
for(i=0;i<5;i++)
{
baseline[i]= EEPROM.read(i);
}
if(baseline[4] != BASELINE_IS_STORED_FLAG)
{
return;
}
// Convertir les 4 valeurs de 8 bits en une valeur de 32 bits
array_to_u32(&baseline_value,baseline);
sgp_set_iaq_baseline(baseline_value);
if (! sgp.begin()){
Serial.println("Sensor not found :(");
while (1);
}
Serial.print("Found SGP30 serial #");
}

void initQualAir()
{
// Initialisation du capteur de qualité de l'air
s16 err;
u16 scaled_ethanol_signal, scaled_h2_signal;

/*
* Vérification du statut du capteur
*/
if (sgp_probe() == STATUS_OK) {
/*
* Lecture des signaux avec des appels bloquants
*/
err = sgp_measure_signals_blocking_read(&scaled_ethanol_signal,
&scaled_h2_signal);

// Ecrire la baseline dans l'EEPROM
set_baseline();

status = true;
}
}

int getCO2()
{
if (!status){return -1;}

s16 err=0;
u16 tvoc_ppb, co2_eq_ppm;
err = sgp_measure_iaq_blocking_read(&tvoc_ppb, &co2_eq_ppm); // Appel de la fonction de lecture des valeurs de qualité de l'air
store_baseline();

// S'il n'y a pas d'erreur, changer la variable globale et afficher les valeurs de qualité de l'air dans la console
if (err == STATUS_OK) {
return (co2_eq_ppm);
} else {
// Si erreur, afficher un message d'erreur et mettre la variable globale à -1 (valeur d'erreur)
Serial.println("error reading IAQ values\n");
return -1;
}
int getCO2() {
if (! sgp.IAQmeasure()) {
Serial.println("Measurement failed");
return -1;
} else
return sgp.eCO2;
}
5 changes: 0 additions & 5 deletions sa-software/software/src/Capteurs/qualAir.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,7 @@
#define SOFTWARE_QUALAIR_H

// Inclusion des librairies principales
#include <Arduino.h>
#include <EEPROM.h>

// Inclusion des librairies du module
#include "sensirion_common.h"
#include "sgp30.h"

// Inclusion des librairies du projet
#include "typeDef.h"
Expand Down
2 changes: 1 addition & 1 deletion sa-software/software/src/LED/led.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ bool initTaskLED() {
xTaskCreate( //création de la tâche
taskLED,
"Gestion des LEDs",
10000,
5000,
NULL,
1,
&ledTaskHandle
Expand Down
13 changes: 7 additions & 6 deletions sa-software/software/src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,25 +28,26 @@ void setup() {
while(!Serial);

delay(1000);

Serial.println("1");
// Initilaisation système de fichier
initSystemeFichier();


Serial.println("2");
//LED
initLED();
bool truc = initTaskLED();
Serial.println("2.5");
//bool truc = initTaskLED();

delay(100);

Serial.println("3");
// Récupère les informations du point d'accès
String nomAP = recupererValeur("/infoap.txt","nom_ap");
String motDePasseAP = recupererValeur("/infoap.txt","mot_de_passe");

Serial.println("4");
// Initialisation reseau en mode STATION et POINT D'ACCES
initReseauStationEtPointAcces();
creerPointAcces(nomAP,motDePasseAP);

Serial.println("5");
//Initialise le serveur web et le serveur DNS
setupServeurWeb();
setupServeurDNS();
Expand Down

0 comments on commit 1ee2e7a

Please sign in to comment.