Go Down

Topic: 4 emisores nrf24l01 a un receptor (Read 4709 times) previous topic - next topic

surbyte

Mesh debe funcionar no tengo dudas porque Tmrh20 es una librería excelente pero Network funciona perfecto.
Asi lo uso yo.
Pero si tuviera la necesidad de usar Mesh no dudaria en probarlo.

gepd

Si, es bien raro lo que te sucede, yo estoy usando Mesh con dos nodos y un master, hasta ahora no me ha dado problemas.

Faltaría que pruebes con Network, yo no la he probado, aunque sé para usar mesh se necesita de Network, por lo tanto yo lo veo como si Mesh fuese una simplificación de Network.
Deviot el plugin IoT para Sublime Text. Si quieres probarlo y ayudarme con tu feedback, visita: https://github.com/gepd/Deviot

liebherr

Muchas gracias surbyte y gepd, yo no entiendo casi nada pero como dije primero funcionaba bien y luego se cambio la cosa, los 4 sensores enviaban creo que bien pero el receptor para mi se hacia un lío, quizá el receptor tendría que pedir al emisor1 que le envíe los datos, después el emisor2, y a si sucesivamente para no tener conflictos pero al llegar todo a al vez, puede que sea eso.

Como no entiendo no puedo aseguraros nada, pero eso si lo comprobé, puede como dice gepd que con dos emisores no haya esos conflictos, pero con los cuatro la verdad que no hay manera.

También deciros que hay muchos ejemplos de un emisor y receptor, pero muy poca o nada información de múltiples emisores y una cosa que me choca que por ejemplo en domotica tendría mucha importancia el hecho de tener sensores por toda la casa inalambricos, quizá se utiliza mas el tipo con cable.

Seguimos con las pruebas, os seguiré informando.

Un saludo.

surbyte

Reviendo tu consulta inicial, te comento, jamás de los jamases (o va con C) podrá un receptor recibir 4 operaciones simultáneas. Será siempre 1 a la vez, atiende 1, luego otra, etc.
Entonces para que generar colisiones? 
Yo pondria el master a polear como siempre se hizo. No te darás cuenta.
No me percaté hasta ahora de tu problema, por no leer bien la consulta inicial.
Cual es la necesidad de que 4 emisores esten permanentemente enviando datos?
No es el criterior habitual.

Puedes explicarte?

gepd

Ayer mientras hacía las pruebas con las librerías también se me vino a la mente este proyecto, sobre todo porque hay formas más optimas de manejar la información. Habrá que ver por qué quiere los 4 a la vez, y también pensé que la forma de mejorarlo es.

Emisor 1 envía información, receptor avisa que llegó todo OK, emisor 1 deja de enviar.
Emisor 2 envía información, receptor avisa que llegó todo OK, emisor 2 deja de enviar.


y así...


En caso de que uno de los emisores no recibe el mensaje que llegó todo bien, puede esperar 1 segundo y re-intentarlo.
Deviot el plugin IoT para Sublime Text. Si quieres probarlo y ayudarme con tu feedback, visita: https://github.com/gepd/Deviot

surbyte

Pero eso con un poleo a la inversa es lo mismo.. una configuración network no te parece?
porque hacer emisor -> receptor con 4 emisores cuando normalmente es un master que emite, espera la respuesta y da su ACK? y luego al siguiente.. no cambia nada y la respuesta es la misma

gepd

Creo que antes de adelantarnos deberíamos esperar para ver que dice liebherr ambos casos son posibles, solo se puede definir cual es el mejor, conociendo el proyecto en si. 
Deviot el plugin IoT para Sublime Text. Si quieres probarlo y ayudarme con tu feedback, visita: https://github.com/gepd/Deviot

liebherr

Bueno el caso como dije si funciona con network, pero claro no se como puedo hacer para que lea los datos de las 4 variables de cada emisor, supongo que se tiene que emplear el float ya que serán con decimales, pero lo difícil para mi ahora es que pueda ponerlo en el emisor y en el receptor para recibir las 4 variables de cada emisor, como os he dicho aquí tenéis una imagen que esta dando una lectura de cada emisor.

http://fotos.foromaquinas.net/images/2015/11/08/4emisores.png


Un saludo.

gepd

Pero para poder ayudarte un poco más, cuéntanos más sobre tu proyecto, qué es lo que quieres hacer, qué son esos emisores, cuál es su uso, etc.

Toda información es importante a la hora de plantear un proyecto/duda.
Deviot el plugin IoT para Sublime Text. Si quieres probarlo y ayudarme con tu feedback, visita: https://github.com/gepd/Deviot

liebherr

Pues tienes toda la razón gepd, pues mira estos emisores van cada uno con sensores mpu6050, un arduino nano y el nrf24l01, los mpu6050 me tienen que dar los ejes X y Y, la temperatura y el estado de la batería, por tanto de ahí que necesite las 4 variables para este proyecto.

El receptor consta de un arduino DUE y el nrf2401 y en este se aran todos los cálculos de trigonometria, que irán representados en una pantalla de 5" de tft.

Espero que ahora me haya explicado mejor.

Un saludo.

surbyte

Yo estoy haciendo exactamente lo mismo pero no lo hago como tu. Mi master pregunta a cada nodo y son 4 nodos.
Pero no hago que mis nodos envien a lo loco a mi master (tu receptor). Eso no esta habitualmente contemplado porque ya te dije, tampoco podra escuchar a 4 a la vez.

liebherr

A, gracias surbyte, pues seguramente que funcione mejor a tu manera, pero como te digo el ejemplo de network funciona bien, tampoco puedo decirte con exactitud si lo hace de una manera o de otra.

Un saludo.

gepd

liebherr, lo que surbyte te está diciendo no es un cambio de librería o algo tan radical, es simplemente cambiar la forma en que estás funcionando con la librería, lo único que debes hacer es invertir las solicitudes, en vez de hacer que los emisores envíen constantemente, hacer que el master solicite la información, Se hace con la misma librería y casi el mismo código.

En cada nodo emisor tienes que tener una rutina para verificar si te han enviado algo, eso lo hace con

Code: [Select]
network.available()

cuando hay algo lo recibes y lo lees, ahí sabrás que es lo que te están solicitando, luego de saber lo envías.

Es todo.

Para saber como solicitarle información a los nodos tienes el ejemplo llamado
Quote
RF24Mesh_Example_Master_To_nodes
Si analizas el código la diferencia está aquí:
Code: [Select]
RF24NetworkHeader header(mesh.addrList[i].address, OCT); //Constructing a header
Serial.println( F(network.write(header, &payload, sizeof(payload)) == 1 ? "Send OK" : "Send Fail"));


mesh.addrList.address es la dirección a donde vas a enviar el mensaje (puede ser reemplazado por un 1,2, etc..)
En ese ejemplo envían un mensaje a cada nodo, la idea es que tu lo modifiques para nodos específicos.
Deviot el plugin IoT para Sublime Text. Si quieres probarlo y ayudarme con tu feedback, visita: https://github.com/gepd/Deviot

liebherr

Muchas gracias gepd, bueno parece que de la manera que probé ultima funciona bien, pero ahora hay que separar los datos, osea que sepa de que dato y de que emisor es.

Bueno a ver si vamos avanzando en el proyecto.

Un saludo.

plogar

Hola, ¿y si usas un vector de tipo char como si fuera una trama?
Así podrías poner el indicativo del sensor y sabrías quien lo envía.

Creí leer algo de los indicativos cuando se conectaban en nodos, revisare el datasheet.

Go Up