Fleauw, une douche plus responsable
Ci-dessous, voici le code flashé dans nos modules à base de microcontrôleur ESP32C6
// librairies communication peripheriques
#include
#include
// librairies ecran led
#include
#include
//librairies bluetooth
#include
#include
#include
//definition de la taille de l'ecran
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
// initialisation de l'ecran
#define OLED_RESET -1 // Reset pin
#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// initialisation du service bluetooth
#define SERVICE_UUID "4fafc201-1fb5-459e-8fcc-c5c9c331914b"
#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8"
class MyCallbacks: public BLECharacteristicCallbacks {
void onWrite(BLECharacteristic *pCharacteristic) {
String value = pCharacteristic->getValue();
if (value.length() > 0) {
Serial.print("Data received from Client: ");
for (int i = 0; i < value.length(); i++)
Serial.print(value[i]);
Serial.println();
}
}
};
void setup() {
Serial.begin(9600);
if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;);
}
//constantes
int coef_dir=151.33;
int ord_origine=-1.58;
// creation du service BLE
BLEDevice::init("XIAO_ESP32C5_Server");
// initialisation du serveur BLE
BLEServer *pServer = BLEDevice::createServer();
// creation d'un service desservi par BLE, pour communiquer des donnees
BLEService *pService = pServer->createService(SERVICE_UUID);
// autoriser la lecture/ecriture par BLE
BLECharacteristic *pCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID,
BLECharacteristic::PROPERTY_READ |
BLECharacteristic::PROPERTY_WRITE
);
pCharacteristic->setCallbacks(new MyCallbacks()); // Set write callback function
pCharacteristic->setValue(0); // Set initial value
// demarrer le service BLE
pService->start();
// commencer a communiquer par BLE
BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
pAdvertising->addServiceUUID(SERVICE_UUID);
pAdvertising->setScanResponse(true);
pAdvertising->setMinPreferred(0x06);
BLEDevice::startAdvertising();
// ecran de demarrage
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(BLACK,WHITE);
display.setCursor(0, 0);
display.println(" ");
display.println(" FLEAUW ");
display.println(" ");
display.println(" ");
display.display();
delay(5000);
display.clearDisplay();
//mesure de la tension et transformation en débit par régression linéaire
while (0!=1){
srand(time(NULL));
int min=20;
int max= 40;
int readvalue=analogRead(D0);
int flow=ord_origine+(((3.3*readvalue)/4095)*16)*coef_dir;
// Affichage du débit en temps réel
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println("Debit d'eau:");
display.println("");
display.print(flow);
display.println(" l/min");
display.println("");
display.println("");
display.display();
//communication du dernier debit en BLE
BLEDevice::stopAdvertising();
pCharacteristic->setValue(flow);
BLEDevice::startAdvertising();
delay(1000);
display.clearDisplay();
}
}
void loop() {
}