parent
e7e375ec74
commit
d8801898d6
145
src/main.cpp
145
src/main.cpp
|
@ -20,6 +20,8 @@
|
||||||
bool sem_compteur; // sémaphore pour le compteur
|
bool sem_compteur; // sémaphore pour le compteur
|
||||||
int16_t count = 0; // variable de compteur
|
int16_t count = 0; // variable de compteur
|
||||||
int vRotReel; // vitesse réelle mesurée du moteur
|
int vRotReel; // vitesse réelle mesurée du moteur
|
||||||
|
unsigned long compteur_minuteur = 0; // minuteur pour le déclenchement du compteur
|
||||||
|
int refresh_compte_tour = 500; // durée entre deux mesures du compte-tour en ms
|
||||||
|
|
||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
/*NUMÉRO DE SÉRIE DE L'APPAREIL*/
|
/*NUMÉRO DE SÉRIE DE L'APPAREIL*/
|
||||||
|
@ -30,6 +32,7 @@ int numero_capteur = 0001;
|
||||||
/* DÉFINITIONS DE LA RTC */
|
/* DÉFINITIONS DE LA RTC */
|
||||||
///////////////////////////
|
///////////////////////////
|
||||||
RTC_DS3231 rtc; //déclaration de la rtc
|
RTC_DS3231 rtc; //déclaration de la rtc
|
||||||
|
DateTime now{rtc.now()};
|
||||||
|
|
||||||
///////////////////////////
|
///////////////////////////
|
||||||
/* DÉFINITIONS DE LA LED */
|
/* DÉFINITIONS DE LA LED */
|
||||||
|
@ -41,7 +44,7 @@ RTC_DS3231 rtc; //déclaration de la rtc
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
unsigned long freq_ecriture = 60000; // durée entre deux écritures sur la carte SD en micro secondes
|
unsigned long freq_ecriture = 60000; // durée entre deux écritures sur la carte SD en micro secondes
|
||||||
char horodatage[12]; //création du tableau pour contenir l'horodatage
|
char horodatage[12]; //création du tableau pour contenir l'horodatage
|
||||||
char fileName[5]; //tableau pour le nom de fichier
|
char fichier[] = "/"; //tableau pour le nom de fichier
|
||||||
|
|
||||||
//////////////////////////////////
|
//////////////////////////////////
|
||||||
/* DÉFINITIONS DU DRIVER MOTEUR */
|
/* DÉFINITIONS DU DRIVER MOTEUR */
|
||||||
|
@ -60,7 +63,6 @@ ESP32PWM pwm; // Activation du pwm
|
||||||
int bouton_wifi = 2; // pin du bouton wifi
|
int bouton_wifi = 2; // pin du bouton wifi
|
||||||
bool sem_wifi; //sémaphore du minuteur du bouton wifi
|
bool sem_wifi; //sémaphore du minuteur du bouton wifi
|
||||||
unsigned long wifi_minuteur = 0; // minuteur pour l'appui long sur le bouton wifi
|
unsigned long wifi_minuteur = 0; // minuteur pour l'appui long sur le bouton wifi
|
||||||
unsigned long compteur_minuteur = 0; // minuteur pour l'appui long sur le bouton wifi
|
|
||||||
bool etat_bouton_wifi;
|
bool etat_bouton_wifi;
|
||||||
int tempo_bouton_wifi = 5000; //temps d'appui en millisecondes pour arrêter le capteur et passer en mode wifi
|
int tempo_bouton_wifi = 5000; //temps d'appui en millisecondes pour arrêter le capteur et passer en mode wifi
|
||||||
|
|
||||||
|
@ -89,6 +91,38 @@ void errorCode(int codeNumber) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/////////////////////////
|
||||||
|
/* FONCTIONS DU MOTEUR */
|
||||||
|
/////////////////////////
|
||||||
|
|
||||||
|
void start_moteur() {
|
||||||
|
ESP32PWM::allocateTimer(2);
|
||||||
|
delay(500);
|
||||||
|
moteur.setPeriodHertz(50);
|
||||||
|
moteur.attach(moteurPin, minUs, maxUs);
|
||||||
|
delay(15);
|
||||||
|
moteur.write(0); // envoi du 0 à l'ESC pour initialisation
|
||||||
|
delay(1500); // délai permettant au variateur de détecter le zero
|
||||||
|
moteur.write(pos); // vitesse initiale
|
||||||
|
}
|
||||||
|
|
||||||
|
void gaz_moteur() {
|
||||||
|
if (vRotVis > vRotReel) {
|
||||||
|
pos ++;
|
||||||
|
}
|
||||||
|
if (vRotReel > vRotVis) {
|
||||||
|
pos --;
|
||||||
|
}
|
||||||
|
moteur.write(pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
void stop_moteur() {
|
||||||
|
moteur.write(0);
|
||||||
|
delay(1000);
|
||||||
|
moteur.detach();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////
|
///////////////////////////
|
||||||
/* FONCTIONS DU COMPTEUR */
|
/* FONCTIONS DU COMPTEUR */
|
||||||
|
@ -131,47 +165,16 @@ void stop_compteur() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void compte_tour() {
|
void compte_tour() {
|
||||||
if ( sem_compteur == false ) {
|
int offset = (compteur_minuteur - millis());
|
||||||
compteur_minuteur = millis();
|
|
||||||
sem_compteur = true;
|
if (offset >= refresh_compte_tour ){
|
||||||
}
|
vRotReel = (pcnt_get_counter_value(PCNT_TEST_UNIT, &count)/offset * 60000); //vitesse en tours par min
|
||||||
if ( sem_compteur == true && compteur_minuteur - millis() >= freq_ecriture ){
|
gaz_moteur(); // ajustement des gaz en fonction de la vitesse mesurée
|
||||||
vRotReel = pcnt_get_counter_value(PCNT_TEST_UNIT, &count) * 60; //vitesse en tours par min
|
Serial.println("vRotReel = ");
|
||||||
pcnt_counter_clear(PCNT_TEST_UNIT);
|
Serial.println(vRotReel);
|
||||||
compteur_minuteur = millis();
|
|
||||||
sem_compteur = false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/////////////////////////
|
|
||||||
/* FONCTIONS DU MOTEUR */
|
|
||||||
/////////////////////////
|
|
||||||
|
|
||||||
void start_moteur() {
|
|
||||||
ESP32PWM::allocateTimer(0);
|
|
||||||
moteur.setPeriodHertz(50);
|
|
||||||
moteur.attach(moteurPin, minUs, maxUs);
|
|
||||||
delay(15);
|
|
||||||
moteur.write(0); // envoi du 0 à l'ESC pour initialisation
|
|
||||||
delay(1500); // délai permettant au variateur de détecter le zero
|
|
||||||
moteur.write(pos); // vitesse initiale
|
|
||||||
}
|
|
||||||
|
|
||||||
void gaz_moteur() {
|
|
||||||
if (vRotVis > vRotReel) {
|
|
||||||
pos ++;
|
|
||||||
}
|
|
||||||
if (vRotReel > vRotVis) {
|
|
||||||
pos --;
|
|
||||||
}
|
|
||||||
moteur.write(pos);
|
|
||||||
}
|
|
||||||
|
|
||||||
void stop_moteur() {
|
|
||||||
moteur.write(0);
|
|
||||||
delay(1000);
|
|
||||||
moteur.detach();
|
|
||||||
}
|
|
||||||
|
|
||||||
/////////////////////////
|
/////////////////////////
|
||||||
/// FONCTIONS SD CARD ///
|
/// FONCTIONS SD CARD ///
|
||||||
|
@ -277,7 +280,6 @@ void testFileIO(fs::FS &fs, const char * path){
|
||||||
file.close();
|
file.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void sd_init() {
|
void sd_init() {
|
||||||
if(!SD.begin()){
|
if(!SD.begin()){
|
||||||
Serial.println("Card Mount Failed");
|
Serial.println("Card Mount Failed");
|
||||||
|
@ -291,35 +293,31 @@ void sd_init() {
|
||||||
errorCode(3);
|
errorCode(3);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Serial.println("balise 01");
|
|
||||||
DateTime now = rtc.now();
|
//DateTime now{rtc.now()};//DateTime
|
||||||
fileName[0] = '/';
|
now = rtc.now();
|
||||||
fileName[1] = (now.month(),DEC);
|
char date_format[] = "MM-DD-hh-mm";
|
||||||
fileName[2] = (now.day(),DEC);
|
char *date = now.toString(date_format);
|
||||||
fileName[3] = (now.hour(),DEC);
|
strcat(fichier,date);
|
||||||
fileName[4] = (now.minute(),DEC);
|
char entete[] = "# fichier de data \n";
|
||||||
char entete[64] = "fichier de data";
|
writeFile(SD, fichier, entete);
|
||||||
writeFile(SD, fileName, entete);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void scribe_sd (){
|
void scribe_sd (){
|
||||||
DateTime now = rtc.now();
|
if ( sem_compteur == false ) {
|
||||||
|
compteur_minuteur = millis();
|
||||||
|
sem_compteur = true;
|
||||||
|
}
|
||||||
|
if ( sem_compteur == true && compteur_minuteur - millis() >= freq_ecriture ){
|
||||||
|
char timestamp[] = "YY-MM-DD-hh:mm:ss";
|
||||||
|
char *horodatage = now.toString(timestamp);
|
||||||
char buffer[64];
|
char buffer[64];
|
||||||
snprintf(buffer, sizeof buffer, "%d", vRotReel);
|
snprintf(buffer, sizeof buffer, "%d", vRotReel);
|
||||||
horodatage[0] = now.year();
|
appendFile(SD, fichier, horodatage);
|
||||||
horodatage[1] = '-';
|
appendFile(SD, fichier, " " );
|
||||||
horodatage[2] = now.month();
|
appendFile(SD, fichier, buffer);
|
||||||
horodatage[3] = '-';
|
appendFile(SD, fichier, "\n" );
|
||||||
horodatage[4] = now.day();
|
}
|
||||||
horodatage[5] = '-';
|
|
||||||
horodatage[6] = now.hour();
|
|
||||||
horodatage[7] = ':';
|
|
||||||
horodatage[8] = now.minute();
|
|
||||||
horodatage[9] = ':';
|
|
||||||
horodatage[10] = now.second();
|
|
||||||
horodatage[11] = ' ';
|
|
||||||
appendFile(SD, fileName, horodatage);
|
|
||||||
appendFile(SD, fileName, buffer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -335,14 +333,14 @@ void rtc_init() {
|
||||||
// ESP.restart();
|
// ESP.restart();
|
||||||
//while (1);
|
//while (1);
|
||||||
}
|
}
|
||||||
if (rtc.lostPower()) {
|
/* if (rtc.lostPower()) {
|
||||||
Serial.println("Veuillez régler l'heure et vérifier la pile du module RTC!"); // ligne de debug à commenter en prod
|
Serial.println("Veuillez régler l'heure et vérifier la pile du module RTC!"); // ligne de debug à commenter en prod
|
||||||
errorCode(2);
|
errorCode(2);
|
||||||
}
|
}*/
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DateTime now = rtc.now(); //
|
//DateTime now = rtc.now(); //
|
||||||
Serial.println("mise à l'heure de l'esp, à partir de la rtc");
|
Serial.println("rtc OK");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -447,23 +445,22 @@ void vigie_Wifi () {
|
||||||
void setup() {
|
void setup() {
|
||||||
Serial.begin(9600); // serial just for feedback
|
Serial.begin(9600); // serial just for feedback
|
||||||
delay(3000);
|
delay(3000);
|
||||||
|
pinMode(LED,OUTPUT); // LED bouton wifi et erreurs
|
||||||
|
pinMode(bouton_wifi, INPUT); // bouton wifi
|
||||||
Serial.println("balise 0");
|
Serial.println("balise 0");
|
||||||
rtc_init(); // RTC
|
rtc_init(); // RTC
|
||||||
sd_init (); // initialisation de la carte SD
|
sd_init (); // initialisation de la carte SD
|
||||||
pinMode(bouton_wifi, INPUT); // bouton wifi
|
|
||||||
sem_wifi = false; // initialisation du sémaphore
|
sem_wifi = false; // initialisation du sémaphore
|
||||||
pinMode(LED,OUTPUT); // LED bouton wifi et erreurs
|
|
||||||
start_moteur(); // moteur
|
|
||||||
|
|
||||||
/* compteur de pulsations */
|
/* compteur de pulsations */
|
||||||
sem_compteur = false; // initialisation du sémaphore
|
sem_compteur = false; // initialisation du sémaphore
|
||||||
//pinMode(pulsePin,INPUT_PULLUP);
|
//pinMode(pulsePin,INPUT_PULLUP);
|
||||||
start_compteur();
|
start_compteur();
|
||||||
|
start_moteur(); // moteur
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop (){
|
void loop (){
|
||||||
vigie_Wifi();
|
vigie_Wifi();
|
||||||
compte_tour();
|
compte_tour();
|
||||||
gaz_moteur();
|
|
||||||
scribe_sd();
|
scribe_sd();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue