nRF24L01 & PIC18F4220

 
- página modificada en agosto del 2012 - (English version)



circuito para uso con multiples sensores.
18F4220 & nRF24L01 18F2420 & FT232 serial to USB converter

La idea del proyecto es tener un circuito pequeño de solo 5,2mm por 4,2mm a mano que permite enchufar varios sensores y que esta alimentada por una batería para su uso en un escenario, independiente de corriente y con la habilidad de envío de datos por aire, inalámbrico.

La transmisión inalámbrico está solucionado con dos nRF24L01 de Nordic.

Abajo de este página hay un link que permite bajar el código para el PIC. El proyecto está realizado con SourceBoost y MPLAB. El código escrito en SourceBoost para el PIC es casi ANSI C compatible, así fascil de adaptar para el uso con otros compiladores.


visualizar el esquema electrónico del circuito "General_Nordic_V2"
punkt_yellow.jpg



En comparación del precio de 45E por un módulo xBee ZNet 2,5, el precio del Nordic nRF24L01 es de 3,50E por unidad. Sobretodo por el tamaño de solo 4mm * 4mmm del Nordic y el reducio coste del mísmo he hecho el esfuerzo de escribir el código. En el prototipo he incorporado el nRF24L01 (foto abajo), pero por la batería que actúa como una especie de blindaje para las ondas inalámbricos el rango inalámbrico del circuito quedaba en solo algunos metros, así insuficiente para tener un sistema para actuaciones en directo. Por eso motivo la versión actual del circuito lleva un “break out board” de Sparkfun incorporado.




18F4220 & nRF24L01 Foto de la placa "General_Nordic_V1" con el Nordic módulo inalámbrico, el  nRF24L01 incorporado.

Por la pila que está monatda abajo del circuito el rango del nRF24L01 es solo de algunos metros, insuficiente para actuar en escenarios en directo.
(esquema General_Nordic_V1)

visualizar el esquema electrónico del circuito "General_Nordic_V1"
punkt_yellow.jpg

 

 
receptor/transmisor
18F2420, FT232 transmisor/receptor, PIC18F2420 & FT232

visualizar el esquema electrónico del circuito "18F2420_nRF24L01"
escquema 18F2420_nRF24L01
visualizar el esquema electrónico del circuito "Nordic_Receiver"
punkt_yellow.jpg



código para manejar los datos con SC

// first part creates 6 sliders.
(
var win= Window("ACCELOMETER", Rect(100, 100, 590, 420));
var sld0= Slider(win, Rect(20, 10, 50, 400));
var sld1= Slider(win, Rect(115, 10, 50, 400));
var sld2= Slider(win, Rect(215, 10, 50, 400));
var sld3= Slider(win, Rect(315, 10, 50, 400));
var sld4= Slider(win, Rect(415, 10, 50, 400));
var sld5= Slider(win, Rect(515, 10, 50, 400));

~action_gui= {|chan, val|
    switch(chan,
        0, {{sld0.value = val/1023}.defer}, // z (RA0) OLD version x, RA2
        1, {{sld1.value = val/1023}.defer}, // y (RA1)
        2, {{sld2.value = val/1023}.defer},  // x (RA2) OLD version z, RA0
       
        3, {{sld3.value = val/1023}.defer}, //
        4, {{sld4.value = val/1023}.defer}, //
        5, {{sld5.value = val/1023}.defer}  //
    );
};
win.front;
)

SerialPort.listDevices // command to evaluate the USB port.

// The next section is:
// Incomming data with packages of 3bytes. 1.byte header 0x00, 2nd byte
// hi data-byte, 3thd byte low data-byte. The 2nd byte incorporates also the
// 6 address bites (64 addresses max)

(
var port= SerialPort("/dev/ttyUSB0", 57600); //edit port here
Routine({
    var byte, loByte, hiByte, val, valsl, chan, index= 0;
    inf.do{
          while({(byte= port.read).isNil}, {}); //wait for serial
          //byte.postln;        //debug
          if(index==0 and:{byte==0},
          {
          index= 1;
           }, {
            if(index==1, {
            hiByte= byte;
            index= 2;
                },
              {
            if(index==2, {
            loByte= byte;
                       
            //("received: hi:"+hiByte+" lo:"+loByte).postln;
            chan= (hiByte&2r11111100)>>2; // mask 2 lower data-bites
            val= ((hiByte&2r00000011)<<8)|loByte;
            //("chan:"+chan+"val:"+val).postln;
            ~action_gui.value(chan, val);
            ~action_synth.value(chan, val);
                           
            index= 0;
            });
        });
        });
    };
}).play;
CmdPeriod.doOnce({port.close});
)

code written by Fredrik Olofsson


NORDIC wireless nRF24L01 from Martin Hug on Vimeo.


links relacionadas con esta página abriendo una segunda ventana. (solo IE)

 


bajar los ficheros del proyecto descargar los ficheros del proyecto