PAE 2021 Contrôle de la qualité de l’air
Sommaire
15/03/2021 :
Lecture datasheet senseair s8 residence, recherche microcontrolleur utilisé -> esp32 application -> sensirion my ambiance, transmition bluetooth
Apparemment cartes PSOC,
DIagramme des exigences:
définir une valeur limite (voir différents paliers) connection bluetooth car on veut la qualité de l’air dans la pièce dans laquelle nous sommes
Le taux idéal à l'intérieur d'un logement est d'environ 1000 ppm.
Au-delà d'une concentration de 1400 ppm, le CO2 peut générer des maux de tête et une perte de concentration. Voici les seuils de pollution CO2 correspondant aux couleurs des jauges :
Blanc / Très bon : Jusqu'à 800 ppm
Jaune / Bon : 800-1200 ppm
Orange / Moyen : 1200-1400 ppm
Rouge / Mauvais : 1400-2000 ppm.
Utilisation carte ESP32
diagramme des exigeances
22/03/21 :
Liens: https://github.com/experimental-platform/example-co2
package arduino programmation ESP32 : https://dl.espressif.com/dl/package_esp32_index.json
https://learn.sparkfun.com/tutorials/bi-directional-logic-level-converter-hookup-guide/all
https://components101.com/microcontrollers/esp32-devkitc
penser à mettre au propre le cablage (senseair S8, ESP32 devkit, bi-directionnal logic level converter)
docu communication UART: https://www.circuitbasics.com/how-to-set-up-uart-communication-for-arduino/
Pas de convertisseur de puissance pour l’instant, on passe donc par une carte Arduino pour les premiers tests
travail avant la session de la semaine prochaine
- Documentation sur la connexion uart avec arduino
- Cablage avec un step up 3.3 to 5 v (sur ciruito.io si possible)
- Ecriture du code pour la transmission uart
- recherche sur la connexion bluetooth avec la carte.
Organisation du travail
Hardware
Software
Communication carte/capteur
relation maitre/esclave ainsi il faut donner les ordres au capteur via des trames de 7 octets.
Trame pour réaliser la lecture de la RAM du capteur : {0xfe, 0x44, 0x00, 0x08, 0x02, 0x9f, 0x25}
Ps : Il n'existe pas de documentation pour cette fonction sur internet.
Programme
Calcul du CRC
int ModRTU_CRC(byte sensor_data[], byte n1) {
int ij;
//Calc the raw_msg_data_byte CRC code
uint16_t crc = 0xFFFF;
String crc_string = "";
// for (int pos = 0; pos < raw_msg_data.length()/2; pos++) {
for (int pos = 0; pos < n1; pos++) {
crc ^= (uint16_t)sensor_data[pos]; // XOR byte into least sig. byte of crc
for (int ij = 8; ij != 0; ij--) { // Loop over each bit
if ((crc & 0x0001) != 0) { // If the LSB is set
crc >>= 1; // Shift right and XOR 0xA001
crc ^= 0xA001;
}
else { // Else LSB is not set
crc >>= 1; // Just shift right
}
}
}
Serial.print("\n"); // Note, this number has low and high bytes swapped, so use it accordingly (or swap bytes)
Serial.print(" CRC HEX VALUE = ");
Serial.println(crc, HEX);
crc_string = String(crc, HEX);
return crc;
}


