Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

18/04/2015 #21

Avatar de luvhines

luvhines dijo: Ver Mensaje
Buen día amigos, espero estén muy bien.

El día de hoy he decidido compartir con ustedes mi experiencia con los famosos módulos NRF24L01 de Nordic Semiconductor.
http://i62.tinypic.com/2n16ykh.jpg
Por lo visto no hay un tema conciso y concreto sobre el uso de estos módulos en el foro, así que fundado en lo aprendido en la web y mi propia experiencia, me di a la tarea de redactar un tema sobre como dominar un poco estos bichitos

Me falto la lista de materiales.

2 módulos Nrf24L01
2 Pic´s 16f876a
2 cristales 4mhz
4 condensadores cerámicos de 22pf
1 Dipswich de 8 pines o bien 6 pulsadores
8 resistencias de 1 kΩ
6 resistencias de 220 kΩ
6 leds

2 conectores ribbon de este tipo:


o bien de este otro tipo:


Este ultimo lo podrían cortar para insertar los módulos NRF24L01 soldar cables he insertarlos fácilmente en el protoboard, ya que la separación entre los pines del modulo no permite insertarlos en la proto, y tampoco recomiendo para nada soldar cables directamente a los pines del modulo ya que lo podrían dañar.

Por ultimo, en el esquemático que postee yo creé el componente del nrf24L01 en proteus solo para poder ilustrar la conexión, pero no tuve en cuenta los números de los pines, así en esa imagen solo tengan en cuenta el nombre de los pines según la siguiente imagen lo pueden conectar tal cual al pic.
18/01/2016 #22


if(ret2==0){
//Envio realizado y ACK recibido
}

else if(ret2==1){
//Envio realizado y ACK no recibido
}

else{
//Envio no realizado
}
buen dia amigos del foro es que tengo duda de como utilizar el modo de confirmacion de estos modulos. mi pregunta es como se hace para que el receptor conteste automaticamente que recibio el dato y sino el transmisor vuelva a enviar el dato. agradeceria su ayuda
11/03/2016 #23


PIC16F887 y PIC16F818 no funciona con modulos NRF24L01
Hola tengo un inconveniente, compre estos modulos y la verdad no puedo hacerlos funcionar trate de utilizar el ejemplo por donde comenzaron este foro y no logro nada, estoy utilizando un pic16f887 y un pic16f818, que son los que tengo para hacerlos funcionar como ejemplo, lo que quiero es precionar un botoen en el 887 que seria el TX, y el 818 que es el RX enciende un led, no logro hacerlo. Me pueden explicar por favor ese simple ejemplo que quiero a ver si puedo hacerlo funcionar, estoy utilizando un protoboard no simulo.
Subi los dos archivos zip del TX y RX modificando la libreria del 818 porque SDI, SCK y demas son otros pines, pero no entiendo la verdad? precionar un boton y el receptor encender un led Una verguenza preguntar esto pero no me sale. Por favor si hay alguien que con un simple ejemplo asi lo cargo y lo puedo probar muchas Gracias.

Otra cosa capaz este bien y lo que este mal son los modulos pero nose como chequearlos! Pero me inclino mas que es problema en la programacion.

Tengo dos pic16f819 por si quieren utilizar estos para explicarme tambien

es uno de los progrogramas porque lo voy variando a cada rato. la verdad no entiendo alguien tiene un programa o me ayuda hacerlo? de ultima que prenda un led de un lado y lo repita en el otro pero algo.

lo peor que me puede pasar que no me funcione los modulos pero nose? hay alguna manera de testearlo?

lo que si antes aclaro logre comunicar los dos pic mediante spi osea uno enciende el led (maestro) y el esclavo hace lo mismo. fue todo un logro jeje
Archivos Adjuntos
Tipo de Archivo: zip trx con modulo rf.zip (101,7 KB (Kilobytes), 82 visitas)
13/03/2016 #24


yo los hice funcionar con el pic16f876a.
13/03/2016 #25


tenes un ejemplo asi con un boton solo y un led en el receptor asi lo enciendo.. me ayudas? con un pic16f819. aca no es problema del pic. ayudame y mostrame algo asi los codigos a ver si me funciona.
14/03/2016 #26
Moderador

Avatar de D@rkbytes

Saludos.
Cuando yo realicé la prueba de éstos módulos, me funcionó a la primera.
No tuve complicaciones de ningún tipo con el software, con el hardware si tuve, pero lo resolví.

Recuerdo que la primera prueba fue usando Proteus para analizar la comunicación SPI con el debugger.
Noté que existían varias advertencias cuando se hacía el cambio de modo Master/Slave.
Así que en modo de depuración me dediqué a corregir la librería "lib_rf2gh4_10.h"

Esa fue una prueba y corrección en simulador, me quedaba la duda de que funcionarán físicamente.
Pero llegó el detalle con el hardware. Los módulos no son aptos para usarse en protoboard.
Entonces realicé unos pequeños adaptadores en PCB, y hasta con máscara antisoldante.

Posteriormente hice el diseñó para el cual tenía pensado usar los módulos.
(Un sistema de control de iluminación con LEDs para una discoteca.)
Tras armar las tarjetas, todo funcionó correctamente al primer encendido.
El sistema funcionó tal cual se requería y se había programado, sin ninguna falla. (Hasta el momento)

Ahora les comparto un proyecto, pero para encender y apagar un simple LED.
Incluye los esquemas y diseños para los PCB, así como también el footprint que usé como adaptador.
(Este footprint les servirá si desean hacer pruebas en protoboard.)

El sistema está funcionando físicamente y no deben tener problemas si realizan todo como está en los esquemas.
Usé dos PIC16F690, ya que con esos realicé mi prototipo.
(Tienen módulo SSP, oscilador interno y la cantidad de pines que yo necesitaba.)

Nota:
Recuerden que si se desea usar otro PIC, éste debe tener módulo SSP, y no olvidar configurar los pines a usar en la librería.

Espero les sea de utilidad.
Imágenes Adjuntas
Tipo de Archivo: jpg Adaptador NRF24L01.jpg (44,2 KB (Kilobytes), 65 visitas)
Archivos Adjuntos
Tipo de Archivo: rar 16F690 NRF24L01.rar (1,74 MB (Megabytes), 140 visitas)
14/03/2016 #27


Ahora lo voy a ver, pero otra consulta, vos diste un detalle, vos tenes los modulos para proteus para simularlo? porque la verdad ya nose. Lindo seria saber si mis modulos funcionan hay manera de saberlo eso?. Y como dije voy a observar eso que esta en el rar , y tal cual queria eso solo sencillo encender o apagar un led mediante un boton o lo que sea pero nunca lo logre comunicar. espero entenderlo. vos sabes mucho y la verdad nose mucho de esto con spi.

perdon ahi vi que pusiste tambien las librerias para proteus
14/03/2016 #28
Moderador

Avatar de D@rkbytes

Las librerías adjuntas del NRF24L01, no sirven para simulación.
Son para realizar el diagrama esquemático que posteriormente se usará para crear el circuito impreso.

La única forma de saber si los módulos funcionan, es realizando una prueba en físico.
El proyecto que subí funciona perfectamente y debe funcionar con cualquier PIC que tenga módulo SSP.
Nada más se necesita configurar los pines conforme al PIC que se quiera usar.
15/03/2016 #29


Te comento, yo tengo los dos pic16F819 que programe uno como TX y el otro RX con sus respectivos modulos NRF24L01, (que la verdad nose si funcionan porque hice de todo) la realidad que no pasa nada solo me enciende el led como que envia el dato segun tu programa, lo que hice fue modificar unos puntos para poder utilizarlos con mis pic.

Por favor podrias verlos porque la realidad no me funciona esta todo armado en un protoboard y prolijo nada de nada solo el led en mi pic transmisor como que envia el dato. Ahi te adjunto los archivos. Maestro ayudame por favor.

Todo fisico lo pruebo nada de simulado todo lo que te explico
Archivos Adjuntos
Tipo de Archivo: zip trx819.zip (892,8 KB (Kilobytes), 30 visitas)
15/03/2016 #30

Avatar de luvhines

hola dcsalg, te recomiendo que no te sales las configuraciones iniciales del microcontrolador son muy importantes,

preguntas:

- Estas alimentando todo con una fuente de pc ? o baterías ? créeme que es muy importante también

- Estas alimentando todo a 3.3v? incluyendo los pics?

recomendaciones (aparte de las de arriba):

- no omitas las configuraciones iniciales del micro créeme que tuve problemas por eso

- para empezar trata de hacer lo mas simple posible tu código, cuando te funcione si retocalo todo lo que quieras, lo digo porque haces varios llamados a la funcion RF_RECEIVE() en tu receptor, te recomiendo que empezando trabajes solamente con la que esta en la interrupción, lo mismo para el emisor

-haciendo pruebas creo que también tuve problemas cuando asignaba valores enteros al array RF_DATA[0], prueba asignando valores hexadecimales primero
16/03/2016 #31


Esta tarde voy a intentar de nuevo. A ver que sucede. La alimentación de la pc , tendría que utilizar una fuente no?, lo de RF_RECEIVE voy a colocarlo en una interrupción, lo había sacado en su momento de ahí porqué tenía miedo que no funcionara la interrupcion. Como esta adentro de un bucle, me aseguraba sólo que lo iba a leer seguro. Pero voy a probar y te cuento esta tarde y te envío lo que hice

en lo siguiente deje el codigo asi, sigue sin funcionar. Los pic si estan Barbaros funcionan. no entiendo,. La alimentacion lo hago con un TTL que estoy ulizando en la PC que lo conectas a usb y entrega 5v y 3.3V. No creo que tenga problema eso, con eso mismo alimente dos pic que se comunicaban no por este medio sino por cable y funcionaban. Pero me supero esto ya nose que hacer?

el programa del transmisor es el mismo que esta en el archivo que subi anteriormente el RAR

Código:
#include <16f819.h>
//#fuses   nofcmen
#use     delay(internal = 4MHz)

#include "lib_rf2gh4_10.h"

#define  led   PIN_A1

// Servicio de interrupción externa por RB0
#int_ext
void sdi_rb0()
{
   int8 ret;

   ret = RF_RECEIVE();           // "ret" contendrá el valor que le llegue del emisor
   
   if ( (ret == 0) || (ret == 1) ) // Tanto si hay recepción simple o múltiple, leer datos.
   {
      do
      {
         ret = RF_RECEIVE();     // "ret" nos dirá si hay recepción simple, múltiple o no hay datos para leer.
         
            switch (RF_DATA[0])  // Seleccionar los datos que hay en RF_DATA[0]
            {
               case 1:
                  output_high(led);
                  break;
               case 0:
                  output_low(led);
            }
      }
      while ( (ret == 0) || (ret == 1) ); // Mientras haya datos para leer, seguir leyendo.
   }  
}

void main (void)
{  int8 ret;
   output_low(led);              // Inicialmente el LED estará apagado.
   
   
   
   RF_INT_EN();                  // Habilitar interrupción por RB0.
   RF_CONFIG_SPI();              // Configurar módulos SPI del PIC.
   RF_CONFIG(0x40,0x08);         // Configurar módulo RF (canal y dirección).
   RF_ON();                      // Activar el módulo RF.
   
   while (true)
   {
      sleep();
      delay_cycles(127);
     
       
   }
}
16/03/2016 #32

Avatar de luvhines

compa te comento de nuevo no te saltes las configuraciones para tu micro me refiero a esta parte :
Código:
    port_b_pullups(FALSE);         // Todo digital... etc.
    setup_adc_ports(NO_ANALOGS);
    setup_adc(ADC_CLOCK_DIV_2);
    setup_spi(SPI_SS_DISABLED);
    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
    setup_timer_1(T1_DISABLED);
    setup_timer_2(T2_DISABLED,0,1);
    setup_comparator(NC_NC_NC_NC);
    setup_vref(FALSE);
Asi como tampoco las directivas del preprocesador. mi pregunta es si estas alimentando todo a 3.3 v tanto los pics como los NRF? y te recomiendo que la alimentación sea con una fuente de PC o con baterías y un regulador como el Ld33v puesto que estos módulos son muy susceptibles al ruido, y pueda que los micros funcionen pero los NRF ni a palos
16/03/2016 #33
Moderador

Avatar de D@rkbytes

Todas esas configuraciones son innecesarias, ya que son las que establece por defecto el compilador.
Lo puedes comprobar mirando los valores de los registros en Watch Window.
dcsalg dijo: Ver Mensaje
Te comento, yo tengo los dos PIC16F819 que programé uno como TX y el otro RX, con sus respectivos módulos NRF24L01 (que la verdad no sé si funcionan porque hice de todo)
En la realidad no pasa nada, sólo me enciende el led como que envía el dato según tu programa.
Lo que hice fue modificar unos puntos para poder utilizarlos con mis pic.

Por favor, podrías verlos, porque en la realidad no me funciona.
Está todo armado en un protoboard, prolijo y nada de nada, sólo el led en mi pic transmisor como que envía el dato.
Te adjunto los programas y esquemas modificados para usar el PIC16F819 en ambos.
Si montas los circuitos tal y como están los esquemas, deben funcionar físicamente.

Suerte.
Archivos Adjuntos
Tipo de Archivo: rar 16F819 NRF24L01.rar (98,7 KB (Kilobytes), 72 visitas)
17/03/2016 #34


D@rkbytes, lo probe como digiste ya desconfio que esten quemados es increible porque los compre hace poco esos modulos, y la verdad mo logro hacerlos funcionar. probe repito lo que me pasaste y nada. se me quedan encendidos los dos leds del transmisor por lo tanto no esta enviando nada. . por eso digo si ya con lo que me enviaste no funciono estaran quemados los modulos. Lastima porque nose si tienen un testeo para asegurarme eso. o si lo tienen?
17/03/2016 #35
Moderador

Avatar de D@rkbytes

Posiblemente si se dañaron durante las varias pruebas que haz realizado.
Yo no uso arduino, pero también los puedes probar con una cosa de esas.
Desafortunadamente no tengo los PIC16F819, pero los puedo conseguir fácilmente y probar con ellos.
Sin embargo, son similares en funciones al PIC16F690 con los que yo hice mi proyecto.

Recuerda que, tanto el PIC como el módulo, deben estar alimentados con 3.3V.
17/03/2016 #36


Upsss ehh yo alimente los pics con 5v y los módulos con 3.3v.
Paso algo por eso?
17/03/2016 #37
Moderador

Avatar de D@rkbytes

Pueden pasar dos cosas:
  1. No se establecerá la comunicación entre el microcontrolador y el NRF24L01
  2. Se puede dañar el NRF24L01 por exceso de voltaje en sus entradas.
Por eso es importante poner atención a los esquemas.
18/03/2016 #38


Compraré otros y bueno, probaré. Así que en un tiempo escribiré por aquí de nuevo a ver que me pasó.
19/03/2016 #39

Avatar de luvhines

Amigo los pines de señal del NRF24l01 son tolerantes a 5v OJO! solo los pines de señal pero su alimentación no debe ser mayor a 3.3v, puedes alimentar los pics a 5v y los NRF24l01 a 3.3v pero para evitar problemas con los niveles TTL, debes colocar una resistencia de 1k entre +5v y el pin MISO(7) del NRF o bien debes alimentar todo a 3.3v
18/04/2016 #40


entonces se quemaron o algo paso o vinieron fallados porque no me responde nada , por eso voy a comprar otros dos estoy esperando a que me lleguen los modulos aun. estan mas baratos afuera
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.