Page 1 of 1

Need for help to check code for ESP32 with anemometer in Arduino IDE

Posted: Sat Apr 02, 2022 3:43 pm
by Teddy123
Hi everyone. Now I am trying to connect my anemometer to ESP32 microcontroller board and the coding is done in Arduino IDE software. However, I cannot get the output properly. With the same coding, there is no problem with the output when I connect my anemometer to Arduino Uno board. Can anyone help me figure out why this happen?


CODING IN ARDUINO IDE:
/*****************************************************************
* Project: Wind Sensor Test Code in m/s (meter per second)
* Name : MYBOTIC www.mybotic.com.my
* Date : 8 April 2021
*****************************************************************/

#define READ_TIME 1000 //ms
#define WIND_SENSOR_PIN 2 //wind sensor pin
#define WIND_SPEED_20_PULSE_SECOND 1.75 //in m/s this value depend on the sensor type
#define ONE_ROTATION_SENSOR 20.0

volatile unsigned long Rotations; //Cup rotation counter used in interrupt routine

float WindSpeed; //Speed meter per second

unsigned long gulStart_Read_Timer = 0;

void setup(){
Serial.begin(9600);
pinMode(WIND_SENSOR_PIN,INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(WIND_SENSOR_PIN),isr_rotation, CHANGE); //Set up the interrupt

Serial.println("Rotations\tm/s");
sei(); //Enables interrupts
gulStart_Read_Timer - millis();
}

void loop()
{
if((millis() - gulStart_Read_Timer) >= READ_TIME)
{
cli(); //Disable interrupts

//convert rotation to wind speed in m/s
WindSpeed = WIND_SPEED_20_PULSE_SECOND/ONE_ROTATION_SENSOR*(float)Rotations;
Serial.print(Rotations); Serial.print("\t\t");
Serial.println(WindSpeed);

sei(); //Enables interrupts

Rotations = 0; //Set Rotations count to 0 ready for calculations
gulStart_Read_Timer = millis();
}
}

// This is the function that the interrupt calls to increment the rotation count
void isr_rotation()
{
Rotations++;
}

Re: Need for help to check code for ESP32 with anemometer in Arduino IDE

Posted: Mon Apr 18, 2022 3:24 am
by username
You didn't specify what module you where using.
Try a different GPIO pin. Maybe your board has a pull down on that pin.

ESP32 SoC has 5 boot strapping pins. They are:

GPIO0 (HIGH during BOOT)
GPIO2 (LOW during BOOT)
GPIO5 (HIGH during BOOT)
GPIO12 (LOW during BOOT)
GPIO15 (HIGH during BOOT)