Olá, estou fazendo um prejeto na qual tenho que receber os valores dos sensores de temperatura e umidade do solo para o aplicativo mobile feito no Kodular, porém estou tendo problemas ao receber os dados. Tentei alguns códigos que encontrei, no entando nenhum sucesso, quem conseguir ajudar agradeço <3
Código Arduino:
#include <SoftwareSerial.h>
#include "dht.h"
#define rele 12
const int pinSensorA = A0;
int leituraSensor = 0;
const int pinoDHT11 = A5;
dht DHT;
SoftwareSerial BTSerial(2, 3); // Define os pinos para comunicação Bluetooth (TX, RX)
void setup() {
pinMode(pinSensorA, INPUT);
pinMode(rele, OUTPUT);
Serial.begin(9600); // Inicia a comunicação serial com o PC
BTSerial.begin(9600); // Inicia a comunicação serial com o módulo Bluetooth
delay(1000); // Aguarde 1 segundo
}
void loop() {
// Leitura do sensor de umidade do solo
leituraSensor = analogRead(pinSensorA);
// Leitura dos dados do sensor de temperatura e umidade
DHT.read11(pinoDHT11);
float temperatura = DHT.temperature;
float umidade = DHT.humidity;
// Conversão da Umidade do Solo para Porcentagem
const int maxUmidadeSolo = 700; // Valor máximo quando o solo está úmido
const int minUmidadeSolo = 300; // Valor mínimo quando o solo está seco
float umidadeSoloPercentagem = map(leituraSensor, minUmidadeSolo, maxUmidadeSolo, 0, 100);
// Arredonda a temperatura para uma casa decimal
temperatura = round(temperatura * 10) / 10.0;
// Envia os dados via Bluetooth
BTSerial.print("U:");
BTSerial.println(round(umidade)); // Arredonda a umidade do ar para o valor inteiro mais próximo
BTSerial.print("T:");
BTSerial.println(temperatura);
BTSerial.print("S:");
BTSerial.println(umidadeSoloPercentagem); // Envie a umidade do solo em porcentagem
// Imprime os dados no monitor serial
Serial.print("Umidade do Ar: ");
Serial.print(round(umidade)); // Arredonda a umidade do ar para o valor inteiro mais próximo
Serial.println("%");
Serial.print("Temperatura: ");
Serial.print(temperatura, 1); // 1 casa decimal
Serial.println("°C");
Serial.print("Umidade do Solo: ");
Serial.println(umidadeSoloPercentagem); // Imprima a umidade do solo em porcentagem
// Controle da bomba
if (leituraSensor > maxUmidadeSolo) {
digitalWrite(rele, HIGH); // liga a bomba
delay(500);
digitalWrite(rele, LOW); // desliga a bomba
delay(10000); // aguarda 10 segundos antes de verificar novamente
}
delay(2000); // Intervalo de leitura
}
Código App Kodular: