Proyecto ESP32, con modulo xbee

Hola a todos ,estoy teniendo problemas con un proyecto, la cual el proyecto consta de 3 sensores conectados a un Arduino uno , adicional tiene conectado una antena xbee (tx), la cual hace un enlace inalámbrico con otra antena xbee (rx), mi segunda antena xbee(rx) está conectado a un esp32, que la función del esp32 es leer los datos que le está llegando a mi antena receptora, además con la ayuda de firebase , pude realizar una página para mostrar los datos en tiempo real, el problema está en que no manda los datos a la página, e intentado múltiples cosas y no tengo resultados.

Además, sé que le está llegando los datos a mi antena receptora, porque lo monitoreo con su respectivo software, también conectando mi esp32 , puedo mandar datos ramdon a la página comprobando que no hay problema en ello, creo que el problema radica desde el principio, capaz estoy realizando una mala programación en el Arduino, que no mande la correcta información para que el esp32 lea bien los datos, o si tengo que programar con las mismas variables de la página en el Arduino.

Necesito ayuda respecto a esto, primero quería implementar con solo un sensor, en este caso el sensor ultrasónico estoy usando este codigo en el arduino:
// Configuración de pines del sensor ultrasónico
const int triggerPin = A0;
const int echoPin = A1;
const float maxHeight = 100.0;

float distance;
float fuelLevel;

void setup() {
Serial.begin(9600);
pinMode(triggerPin, OUTPUT);
pinMode(echoPin, INPUT);
}

void loop() {
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);

long duration = pulseIn(echoPin, HIGH);
distance = duration * 0.0343 / 2;

if (distance >= maxHeight) {
fuelLevel = 0.0;
} else if (distance <= 0) {
fuelLevel = 100.0;
} else {
// Cálculo proporcional: (maxHeight - distancia) como porcentaje
fuelLevel = (1 - (distance / maxHeight)) * 100.0;
}

Serial.print(fuelLevel, 2);
Serial.println();

delay(1000); // Esperar 1 segundo entre mediciones
}
Además, el código del esp32 que manda valores aleatorios a la página :
#include <Arduino.h>
#if defined(ESP32)
#include <WiFi.h>
#elif defined(ESP8266)
#include <ESP8266WiFi.h>
#endif
#include <Firebase_ESP_Client.h>
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include "addons/TokenHelper.h"
#include "addons/RTDBHelper.h"
#define WIFI_SSID ""
#define WIFI_PASSWORD ""
#define API_KEY ""

#define USER_EMAIL ""
#define USER_PASSWORD ""

#define DATABASE_URL ""

FirebaseData fbdo;
FirebaseAuth auth;
FirebaseConfig config;

String uid;

String databasePath;
String tempPath;
String humPath;
String presPath;

float temperature;
float humidity;
float pressure;
float contador =1.0;

unsigned long sendDataPrevMillis = 0;
unsigned long timerDelay = 5000;

void initWiFi() {
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("Connecting to WiFi ..");
while (WiFi.status() != WL_CONNECTED) {
Serial.print('.');
delay(1000);
}
Serial.println(WiFi.localIP());
Serial.println();
}

void sendFloat(String path, float value){
if (Firebase.RTDB.setFloat(&fbdo, path.c_str(), value)){
Serial.print("Writing value: ");
Serial.print (value);
Serial.print(" on the following path: ");
Serial.println(path);
Serial.println("PASSED");
Serial.println("PATH: " + fbdo.dataPath());
Serial.println("TYPE: " + fbdo.dataType());
}
else {
Serial.println("FAILED");
Serial.println("REASON: " + fbdo.errorReason());
}
}

void setup(){
Serial.begin(115200);

initWiFi();

config.api_key = API_KEY;

auth.user.email = USER_EMAIL;
auth.user.password = USER_PASSWORD;

config.database_url = DATABASE_URL;

Firebase.reconnectWiFi(true);
fbdo.setResponseSize(4096);

config.token_status_callback = tokenStatusCallback;

config.max_token_generation_retry = 5;

Firebase.begin(&config, &auth);

Serial.println("Getting User UID");
while ((auth.token.uid) == "") {
Serial.print('.');
delay(1000);
}

uid = auth.token.uid.c_str();
Serial.print("User UID: ");
Serial.println(uid);

// Update database path
databasePath = "/UsersData/" + uid;

// Update database path for sensor readings
tempPath = databasePath + "/temperature"; // --> UsersData/<user_uid>/temperature
humPath = databasePath + "/humidity"; // --> UsersData/<user_uid>/humidity
presPath = databasePath + "/pressure"; // --> UsersData/<user_uid>/pressure
}

void loop(){
// Send new readings to database
if (Firebase.ready() && (millis() - sendDataPrevMillis > timerDelay || sendDataPrevMillis == 0)){
sendDataPrevMillis = millis();

  if(contador>20){contador = 1.0;}
  contador=contador+1;
temperature = contador*0.1;
humidity = contador*0.2;
pressure = contador*0.3;


// Send readings to database:
sendFloat(tempPath, temperature);
sendFloat(humPath, humidity);
sendFloat(presPath, pressure);

}
}
Las credenciales si las tengo simplemente las borre, quisiera que el valor del sensor se guarde en la variable PATHUM, para subir a la pagina, Espero me puedan ayudar porfa.

He trasladado su tema de una categoría de idioma inglés del foro a la categoría International > Español @Xbrotherswar .

En adelante por favor usar la categoría apropiada a la lengua en que queráis publicar. Esto es importante para el uso responsable del foro, y esta explicado aquí la guía "How to get the best out of this forum".
Este guía contiene mucha información útil. Por favor leer.

De antemano, muchas gracias por cooperar.

1 Like

Moderador:
Por favor, lee las Normas del foro
Si posteas en el foro en inglés usa idioma inglés para expresarte.
Si escribes en español debes usar el foro Arduino en español.
Edita también tu código/error usando etiquetas de código.
Ve a edición, luego selecciona todo el código que has publicado, lo cortas y click en <CODE/>



Este mensaje lo envío porque tu hilo fue movido del foro en inglés.
A partir de ahora todos responden en español.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.