Tenho um projeto com ESP32 para ler o valor de um sensor de som e enviar uma mensagem via wifi caso a condição seja satisfeita. A lógica como um todo funciona, mas o sensor fica com a leitura fixada em 0.
#include "HardwareSerial.h"
#include "DFRobotDFPlayerMini.h"
#include <WiFi.h>
#include <HTTPClient.h>
#include <UrlEncode.h>
//
const byte RXD2 = 16; // Connects to module's RX
const byte TXD2 = 17; // Connects to module's TX
const char* ssid = "WiFI_name";
const char* password = "00000000";
String phoneNumber = "+550012345678";
String apiKey = "00000000";
HardwareSerial dfSD(1); // Use UART channel 1
DFRobotDFPlayerMini player;
int analog = 13; // O pino 13 contem o sensor de som
//int valor_A0 = 0; // Cria uma variável do tipo inteiro(int) chamada valor_A0 e atribui-lhe o valor 0
int n = 0;
void setup()
{
Serial.begin(9600);
WiFi.begin(ssid, password);
Serial.println("Connecting");
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to WiFi network with IP Address: ");
Serial.println(WiFi.localIP());
pinMode(analog, INPUT); // Define o pino 13 como saída
dfSD.begin(9600, SERIAL_8N1, RXD2, TXD2); // 16,17
delay(5000);
if (player.begin(dfSD))
{
Serial.println("OK");
// Set volume to maximum (0 to 30).
player.volume(20); //30 is very loud
}
else
{
Serial.println("Connecting to DFPlayer Mini failed!");
}
}
void loop()
{
int valor_A0 = analogRead(analog);// A variavel valor_A0 recebe a leitura digital do pino 13 onde o sensor esta
Serial.print("\nSaida A0: "); // Imprime no serial monitor "\nSaida A0: "
Serial.print(valor_A0); // Imprime no serial monitor o valor que a variável valor_A0 recebeu
if (valor_A0 < 900) {
Serial.println("Playing #1");
player.play(1);
Serial.println("play start");
delay(3000);
Serial.println("played");
delay(1000);
n = n+1;
Serial.println(n);
}
if (n == 3) {
sendMessage("Muito barulho!!");
n = 0;
}
}
//função para enviar mensagem
void sendMessage(String message){
// Data to send with HTTP POST
String url = "https://api.callmebot.com/whatsapp.php?phone=" + phoneNumber + "&text=" + urlEncode(message) + "&apikey=" + apiKey;
HTTPClient http;
http.begin(url);
// Specify content-type header
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
// Send HTTP POST request
int httpResponseCode = http.POST(url);
if (httpResponseCode == 200){
Serial.print("Message sent successfully");
}
else{
Serial.println("Error sending the message");
Serial.print("HTTP response code: ");
Serial.println(httpResponseCode);
}
// Free resources
http.end();
}
O detalhe é que removendo as funções referentes a comunicação wifi, o sensor funciona normalmente
#include "HardwareSerial.h"
#include "DFRobotDFPlayerMini.h"
//
const byte RXD2 = 16; // Connects to module's RX
const byte TXD2 = 17; // Connects to module's TX
HardwareSerial dfSD(1); // Use UART channel 1
DFRobotDFPlayerMini player;
int analog = 13; // O pino 13 contem o sensor de som
int valor_A0 = 0; // Cria uma variável do tipo inteiro(int) chamada valor_A0 e atribui-lhe o valor 0
void setup()
{
Serial.begin(19200);
pinMode(analog, INPUT); // Define o pino 13 como saída
dfSD.begin(9600, SERIAL_8N1, RXD2, TXD2); // 16,17
delay(5000);
if (player.begin(dfSD))
{
Serial.println("OK");
// Set volume to maximum (0 to 30).
player.volume(20); //30 is very loud
}
else
{
Serial.println("Connecting to DFPlayer Mini failed!");
}
}
void loop()
{
valor_A0 = analogRead(analog);// A variavel valor_A0 recebe a leitura digital do pino 13 onde o sensor esta
Serial.print("\nSaida A0: "); // Imprime no serial monitor "\nSaida A0: "
Serial.print(valor_A0); // Imprime no serial monitor o valor que a variável valor_A0 recebeu
if (valor_A0 < 900) {
Serial.println("Playing #1");
player.play(1);
Serial.println("play start");
delay(100000);
Serial.println("played");
delay(1000);
}
}
Alguém consegue ver o problema?