Como puedo enviar la Información recibida desde un sensor de flujo de agua y un sensor de humedad esto utilizando módulos nrf24l01, tomando en cuanta que tengo 2 emisores cada uno en 2 arduinos diferentes y 1 receptor en otro arduino totalmente aparte?.
Esta el la programación que tengo por ahora, lo que pasa es que el receptor no puede recibir datos de los 2 emisores al mismo tiempo.
Alguien con alguna solucion? GRACIAS!.
EMISOR1:
#include <nRF24L01.h>
#include <printf.h>
#include <RF24.h>
#include <RF24_config.h>
#define CE_PIN 9
#define CSN_PIN 10
//Variable con la dirección del canal por donde se va a transmitir
byte direccion[5] ={"1Node"};
//creamos el objeto radio (NRF24L01)
RF24 radio(CE_PIN, CSN_PIN);
//vector con los datos a enviar
float datos[3];
//sensor de flujo
volatile int flow_frequency;
unsigned int l_hour;
unsigned char flowsensor = 2;
unsigned long currentTime;
unsigned long cloopTime;
void flow ()
{
flow_frequency++;
}
void setup()
{
//inicializamos el NRF24L01
radio.begin();
//inicializamos el puerto serie
Serial.begin(9600);
//Abrimos un canal de escritura
radio.openWritingPipe(direccion);
//sensor de flujo
pinMode(flowsensor, INPUT);
digitalWrite(flowsensor, HIGH);
Serial.begin(9600);
attachInterrupt(0, flow, RISING);
sei();
currentTime = millis();
cloopTime = currentTime;
}
void loop()
{
//sensor de flujo
currentTime = millis();
if(currentTime >= (cloopTime + 1000))
{
cloopTime = currentTime;
l_hour = (flow_frequency * 60 / 7.5);
flow_frequency = 0;
Serial.print(l_hour, DEC);
Serial.println(" L/hour");
}
//cargamos los datos en la variable datos[]
datos[1]=(l_hour);
//enviamos los datos
bool ok = radio.write(datos, sizeof(datos));
//reportamos por el puerto serial los datos enviados
if(ok)
{
Serial.print("Datos enviados: ");
Serial.print(datos[1]);
}
else
{
Serial.println("no se ha podido enviar");
}
delay(1000);
}
EMISOR2:
#include <nRF24L01.h>
#include <printf.h>
#include <RF24.h>
#include <RF24_config.h>
#define CE_PIN 9
#define CSN_PIN 10
//Variable con la dirección del canal por donde se va a transmitir
byte direccion[5] ={"2Node"};
//creamos el objeto radio (NRF24L01)
RF24 radio(CE_PIN, CSN_PIN);
//vector con los datos a enviar
float datos[3];
void setup()
{
//inicializamos el NRF24L01
radio.begin();
//inicializamos el puerto serie
Serial.begin(9600);
//Abrimos un canal de escritura
radio.openWritingPipe(direccion);
}
void loop()
{
//cargamos los datos en la variable datos[]
datos[0]=((analogRead(0)/1023.0) * 100.0);
//enviamos los datos
bool ok = radio.write(datos, sizeof(datos));
//reportamos por el puerto serial los datos enviados
if(ok)
{
Serial.print("Datos enviados: ");
Serial.print(datos[0]);
}
else
{
Serial.println("no se ha podido enviar");
}
delay(1000);
}
RECEPTOR:
#include <RF24.h>
#include <RF24_config.h>
#define CE_PIN 9
#define CSN_PIN 10
//Variable con la dirección del canal que se va a leer
byte direccion[5] = {"1Node","2Node",};
//creamos el objeto radio (NRF24L01)
RF24 radio(CE_PIN, CSN_PIN);
//vector para los datos recibidos
float datos[3];
{
//inicializamos el NRF24L01
void setup()
radio.begin();
//inicializamos el puerto serie
Serial.begin(9600);
//Abrimos el canal de Lectura
radio.openReadingPipe(1, direccion);
radio.openReadingPipe(1, direccion2);
//empezamos a escuchar por el canal
radio.startListening();
}
void loop() {
uint8_t numero_canal;
//if ( radio.available(&numero_canal) )
if ( radio.available() )
{
//Leemos los datos y los guardamos en la variable datos[]
radio.read(datos,sizeof(datos));
//reportamos por el puerto serial los datos recibidos
Serial.print("humedad= " );
Serial.print(100-datos[0]);
Serial.print(" % ");
Serial.print("flujo de agua= " );
Serial.print(datos[1]);
Serial.println(" L/h ");
}
else
{
Serial.println("No hay datos de radio disponibles");
}
delay(1000);
}