Search the Community

Showing results for tags 'nRF24L01'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • News
    • Announcements
    • Suggestions
    • New users say Hi!
  • Spotlight!
    • Sponsor Spotlight
    • Sponsor Giveaways
  • Energia
    • Energia - MSP
    • Energia - TivaC/CC3XXX
    • Energia - C2000
    • Energia Libraries
  • MSP Technical Forums
    • General
    • Compilers and IDEs
    • Development Kits
    • Programmers and Debuggers
    • Code vault
    • Projects
    • Booster Packs
    • Energia
  • Tiva-C, Hercules, CCXXXX ARM Technical Forums
    • General
    • SensorTag
    • Tiva-C, Hercules, CC3XXX Launchpad Booster Packs
    • Code Vault
    • Projects
    • Compilers and IDEs
    • Development Kits and Custom Boards
  • Beagle ARM Cortex A8 Technical Forums
    • General
    • Code Snippets and Scripts
    • Cases, Capes and Plugin Boards
    • Projects
  • General Electronics Forum
    • General Electronics
    • Other Microcontrollers
  • Connect
    • Embedded Systems/Test Equipment Deals
    • Buy, Trade and Sell
    • The 43oh Store
    • Community Projects
    • Fireside Chat
  • C2000 Technical Forums
    • General
    • Development Kits
    • Code Vault
    • Projects
    • BoosterPacks


  • Community Calendar

Found 13 results

  1. Hello I have been trying to implement multiceiver on nrf24l01 and msp430g2553. Basically I am trying to use different pipes for the same rf channel. The library and the example code I am using is the spirilis one, one of the most common. The problem is that I can only work with the default pipe 0 given in the code when ever I try to use the other pipes I can't get anything. I read the datasheet about the multiceiver part, I guess I understand both the code and the working mechanism but I still can't use the different pipes. Any help would be appreciated. What I do is that; at first by using msprf24_set_pipe_packetsize() and msprf24_open_pipe functions I set the pipe I would like to use which is from 0 to 5. Then I try for the given addresses on both tx and rx I set it to same pipe number and the same pipe address but only the default(one I posted here) works for the pipe 0 and that given address.
  2. After making the wearable MSP430 for Halloween this year I was requested to make more for a children's dance group. I have a question, but first some background. This is the latest version: Everything works fine. I use an adapter with pogo pins to program it as shown in the photo. There are three LEDs on the PCB, a push button switch for the user, and more accessible pins than the previous version. Parts are TSSOP and 0805 SMD. Snap fasteners and stainless thread can be used to connect it to LEDs on the costume. A CR2032 coin cell is used to power it (coin cell holder is on the backside of the PCB). So far that has been sufficient and the light weight and inconspicuous nature has been advantageous for the small children it is intended for. Now a new upgrade has been requested... add a radio so that multiple units can be synched and/or controlled offstage. Here is a rough list of requirements: must be inexpensive - current materials for 10 units is less than $5. I want to keep it under $10. keep SMD parts large enough to be hand soldered keep using CR2032 (rated 3V and 225 mAH) The MSP430G2553 and LEDs are currently using no more than 20 mA on average - to be safe assume 40 mA Unit needs to run at least half an hour on fresh batteries Unit needs reliable radio reception at 10m with clear line of sight Unit will need to receive only - no transmission. Reception updates required close to continuously - say every 100 ms keep PCB to the same size - 40mm/1.6" diameter needs to be programmable in Energia I have a fair amount of time - 6 months to get it working I have looked at several different radios but the two that I have experience with are the nRF24L01 and CC2650. I am ruling out the CC2650 due to cost. There is a small version of the nRF24L01 that is shown below for scale along with the more commonly seen version: I think I can shift things around and make this fit. Connection is by the castellated edge facing forward on the photograph. The datasheet states 13.5 mA RX at 2Mbps air data rate. That is in the range of what I have seen as well so it looks like it would meet the requirements. Here are my questions: 1) Is there another radio I should be looking at? Maybe one made by Hope. 2) I have no design experience with radios but could I use an off the shelf design and put the radio, bits, and PCB trace antenna on the PCB myself? I would probably have to give on the 0805 parts size criteria. 3) Any other thoughts, comments, and suggestions appreciated. This will be an open source design and anyone who wants to contribute or have the design is welcome EDIT: the material cost is on a per unit basis
  3. Hello all! I am currently working on a project that uses two NRF24L01 modules to communicate between two MSP430G2553 chips. The goal is to send a 14 character string of numbers and letters between the two devices. I have been trying to get code working with Code Composer Studio for a few weeks now, but have had no success at all. I found several posts on this forum from others who have tried similar things and this post in particular, with a link to a library created by Spirilis, however I've tried using this library and I can't get any of the code to compile. I suspect that recent changes to CCS and the compilers have rendered the code inoperable. It would be a huge help if someone could point me in the direction of a functional library or any resources that can help me communicate with these wireless modules and transmit/receive data. Thanks in advance!
  4. This is the first PCB that I have designed and sent off to be manufactured. Yesterday I received the boards, soldered them up, and they work! This write-up outlines the process I used in the hope that it will be useful to other hobbyists and builders. There are links at the end which provide additional detail. Selecting a Project The project consists of a small board with a MSP430G2553 microcontroller and an nRF24L01 radio. I started with a radio attached with jumpers to a LaunchPad quite some time back and then built one on a proto-board. The photograph below shows a G2553 with radio powered by a buck-boost converter attached to a super capacitor and solar panel. I used it for a while with my weather station which never was quite completed. Although I could have started with that, I actually chose to start with something simpler. The goal was to focus on the PCB design process and to minimize the issues associated with a new or technically challenging project. The objectives, strategies, and constraints I decided on included the following: Inexpensive
  5. Hi good day ... I'm doing a project that consists of a network of RF sensors that communicate to a station connected to the Ethernet network, the target station that read the sensors and update the variables shown in the IP address configured. I have connected the module NRF24L01 SPI port 2. I am using Enrf24 library. I have the enc28j60 SPI3 module connected to the port. I am using the library UIPEthernet, configure the module to use port 3 Enc28J60Network modifying the file that is included in the same library. I have the following problem: -The NRF24L01 module works well alone. (Although this module connected and energized enc28j60). -The Enc28j60 module works well alone. (Although this module connected and energized NRF24L01). In my code, if I comment the line Ethernet.begin (mac, ip); NRF24L01 module operates but does not work enc28j60 module. If I uncommented the same line opposite happens. attached files of my project, I add my code. What could be my problem? Regards #include <SPI.h> //Libreria para habilitar el puerto de perifericos serie #include <UIPEthernet.h> //Micro IP adaptado a LMF120H5QR #include <Enrf24.h> //Manejador para envio de mensajes RF #include <nRF24L01.h> //Controlador del modulo RF #include <string.h> //Libreria para el manejo de cadenas de texto void nodoEthernet(); void nodoRF(); void printIndex(); /*Valores de los sensores*/ float temperatura1 = 0; float temperatura2 = 0; float temperatura3 = 0; int humedad2 = 0; int humedad3 = 0; /*Mapeo de pines SPI del Stellaris LMF120H5QR*/ #define P2_0 PA_5 // CE #define P2_1 PA_6 // CSN #define P2_2 PA_7 // IRQ /*Configuracion de nodo RF*/ Enrf24 radio(P2_0, P2_1, P2_2); const uint8_t rxaddr[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0x01 }; //Direccion MAC del nodo RF principal void dump_radio_status_to_serialport(uint8_t); /*Configuracion del puerto Ethernet*/ EthernetServer server(80); //Iniciar servidor en el puerto 80 int statusConfig = 0; //codigo de configuracion void setup() { Serial.begin(9600); //Puerto Serie para depuracion SPI.begin(); //Iniciar el puerto SPI SPI.setDataMode(SPI_MODE0); SPI.setBitOrder(MSBFIRST); /*Configuracion de arranque del nodo RF*/ radio.begin(25000); // Velocidad 250kbps, canal 0, max TX power radio.setRXaddress((void*)rxaddr); radio.enableRX(); // Iniciar Escucha RF canal 0 /*Configuracion de Arranque del puerto Ethernet*/ //Serial.println("Estableciendo conexion Ethernet...."); byte mac[] = {0x00, 0x4f, 0x49, 0x00, 0x00, 0x03}; //Direccion MAC IPAddress ip = IPAddress(192, 168, 1, 100); //Direccion IP //Ethernet.begin(mac, ip); //Iniciar el puerto con los parametros MAC y IP server.begin(); } EthernetClient client; void loop() { nodoEthernet(); nodoRF(); } void nodoEthernet() { client = server.available(); if (client) { String cadenaEntrante = ""; //Cadena para guardar las peticiones del cliente while (client.connected()) //Mientras un cliente este conectado { if (client.available()) //Si hay bytes para leer del cliente { char c =; //Leer un byte Serial.print(c); //Mostrar el byte en el puerto serie if (c == '\n') //Si es un retorno de carro { //Si la linea actual esta en blanco se tienen dos retornos de carro. //Lo cual seria el final de la peticion HTTP y se puede proceder a responder. if (cadenaEntrante.length() == 0) { break; } else { cadenaEntrante = ""; } } else if (c != '\r') { cadenaEntrante += c; } if (cadenaEntrante.endsWith("GET / ")) { statusConfig = 0; printIndex(); } //Leer peticiones del cliente if (cadenaEntrante.endsWith("GET /temperatura1")) {EnviarDatos(1);} if (cadenaEntrante.endsWith("GET /temperatura2")) {EnviarDatos(2);} if (cadenaEntrante.endsWith("GET /temperatura3")) {EnviarDatos(3);} if (cadenaEntrante.endsWith("GET /humedad2")) {EnviarDatos(4);} if (cadenaEntrante.endsWith("GET /humedad3")) {EnviarDatos(5);} } } //Cerrar la conexion client.stop(); //Serial.println("cliente desconectado"); } } int EnviarDatos(int dato) { switch(dato) { case 1: client.println("HTTP/1.1 200 OK"); client.println("Content-type:text/html"); client.println(); client.println("<html>"); client.println(temperatura1); client.println("</html>"); break; case 2: client.println("HTTP/1.1 200 OK"); client.println("Content-type:text/html"); client.println(); client.println("<html>"); client.println(temperatura2); client.println("</html>"); break; case 3: client.println("HTTP/1.1 200 OK"); client.println("Content-type:text/html"); client.println(); client.println("<html>"); client.println(temperatura3); client.println("</html>"); break; case 4: client.println("HTTP/1.1 200 OK"); client.println("Content-type:text/html"); client.println(); client.println("<html>"); client.println(humedad2); client.println("</html>"); break; case 5: client.println("HTTP/1.1 200 OK"); client.println("Content-type:text/html"); client.println(); client.println("<html>"); client.println(humedad2); client.println("</html>"); break; default: break; } } void printIndex() { client.println("HTTP/1.1 200 OK"); client.println("Content-type:text/html"); client.println(); client.println("<html>"); client.println("<head><title>Fancy Sensors</title>"); client.println("<style>"); client.println("body{ background: whitesmoke; color:black; font-family:Consolas, monospace; font-size: 16px; }"); client.println("article{ background: #f0f8ff; border - style: solid; border-color: #008080;"); client.println("border-width: 8px; border-radius: 0.5em; margin: 1em auto; padding: 1em 0;"); client.println("width: 80 % ; text-align: center; box-shadow: 10px 10px 5px #888888; }"); client.println("input{ width: 100 % ; font-size: 24px; text-align: center; }"); client.println("table{ font-size: 24px; } td{ text-align: center; }label{ display: block; margin: .5em 0 0 0; }</style>"); client.println("</head>"); client.println("<body>"); client.println("<article>"); client.println("<header style=\"font-size: 24px;\"><h1>Fancy Sensors</h1></header>"); client.println("<table border = 0, align = \"center\", cellspacing = \"30\">"); client.println("<tr>"); client.println("<td><label>Temperatura Zona 1</label><input type = \"text\" value =\" "); client.print(temperatura1); client.print("\""); client.print("readonly /></td>"); client.println("<td><label>Humedad Zona 2 % </label><input type = \"text\" value =\" "); client.print(humedad2); client.print("\""); client.print("readonly/></td>"); client.println("</tr><tr>"); client.println("<td><label>Temperatura Zona 2</label><input type = \"text\" value =\" "); client.print(temperatura2); client.print("\""); client.print("readonly/></td>"); client.println("<td><label>Humedad Zona 3 % </label><input type =\"text\" value =\" "); client.print(humedad3); client.print("\""); client.print("readonly/></td>"); client.println("</tr>"); client.println("<tr><td><label>Temperatura Zona 3 </label ><input type =\"text\" value =\" "); client.print(temperatura3); client.print("\""); client.print("readonly/></td>"); client.println("<td>"); client.println("</td>"); client.println("</tr>"); client.println("</table>"); client.println("</article>"); client.println("</body>"); client.println("</html>"); } void nodoRF() { char inbuf[33]; dump_radio_status_to_serialport(radio.radioState()); while (!radio.available(true)) ; if ( { Serial.println("**************************************************************"); Serial.print("Paquete Recibido: "); Serial.println(inbuf); String cadenaRecibida = inbuf; if(cadenaRecibida.startsWith("TMP1")) { String temp = cadenaRecibida.substring(4); int temperatura = temp.toInt(); float fTemp = ((3.0 * temperatura * 100.0)/1023.0); } else if(cadenaRecibida.startsWith("TMP2")) { String temp2 = cadenaRecibida.substring(4); int temperatura2 = temp2.toInt(); //float fTemp = ((3.0 * temperatura * 100.0)/1023.0); } else if(cadenaRecibida.startsWith("HUM2")) { String hum2 = cadenaRecibida.substring(4); int humedad2 = hum2.toInt(); // float fTemp = ((3.0 * temperatura * 100.0)/1023.0); } else if(cadenaRecibida.startsWith("TMP3")) { String temp2 = cadenaRecibida.substring(4); int temperatura2 = temp2.toInt(); //float fTemp = ((3.0 * temperatura * 100.0)/1023.0); } else if(cadenaRecibida.startsWith("HUM3")) { String hum2 = cadenaRecibida.substring(4); int humedad2 = hum2.toInt(); // float fTemp = ((3.0 * temperatura * 100.0)/1023.0); } } } void dump_radio_status_to_serialport(uint8_t status) { Serial.print("Estado del tranceptor principal: "); switch (status) { case ENRF24_STATE_NOTPRESENT: Serial.println("No hay un tranceptor instalado"); break; case ENRF24_STATE_DEEPSLEEP: Serial.println("Modo de ultra bajo consumo <1uA "); break; case ENRF24_STATE_IDLE: Serial.println("Modulo de inactividad ON||Fucionando con oscilador"); break; case ENRF24_STATE_PTX: Serial.println("Transmitiendo de forma activa"); break; case ENRF24_STATE_PRX: Serial.println("Modo de Recepcion de Datos"); break; default: Serial.println("Codigo de estado desconocido"); } }
  6. I've got a bunch of sensors in my house uploading data to my phant repository - but I decided to start looking into placing sensors outside as well. I purchased some $2 solar sensors from Target (Apparently they're frequently available from the dollar store as well - I'll check into that) in the hopes that I could use them to power an MSP430. The ones I purchased only provide ~1.2v of power since they're single battery. They're 200maH as well, but I think that will likely be plenty for my uses. Since one wouldn't do it - I used two in series. At full power - that should be around 2.4v - perfect for an MSP430. I added a diode between the two just in case, and clipped the LED to avoid unneeded battery usage. Hooking directly into the battery means that I get power all the time - great since I didn't just want power at night. Plus - the power output for the LED is apparently pulsed - probably not good for the MSP430. I've been watching the sensor values today - it dropped a bit overnight (very little to be honest - about 0.05v), but it's charging nicely right now. I need to get a better container - but for now it's in a cheap tupperware container inside of a ziploc bag. Apparently the dollar store also sells locking containers with a gasket that would be perfect for this. Here is my graph for battery level. I'm not calculating the actual voltage - but it's out of 255 - 255 being a 3v reference voltage (technically vcc/2 compared to 1.5v reference). So 198 is ~2.33v. Next up - I've got some radioshack weather sensors (rain, wind speed & direction) that I'll be ripping the guts out of and replacing with MSP430 brains. They'll get solar power as well.
  7. Hello, I think it is a good place to post information about this library I prepared. It is a very simple NRF24L01 library. The library is in C and can be used for any hardware platform with very minimal change. Please feel free to comment and criticize. I tested this using Stellaris Launchpad. Projects using CCS are available in GIT repo. Blog post: Git repo: Thank you!!!
  8. I have played around with spirillis msp430 nrf24l01 libraries and written some simple applications using them, which is great. But now I am looking to set up a node network for sensors and actuators. I would like to have something a layer above the spirillis nrf24l01 libraries that could act as a way to either mesh network or star network the nodes. Maybe I am not searching the right things, but the best thing I have found so far is something from MySensors that seems to be Arduino only. What I like about the mysensors is that it looks to handle the networking of the nodes for you. Are there any c libraries or energia libraries like that for msp430 and nrf24l01?
  9. So this project is in the works - but I haven't been posting much lately and I wanted to start up a thread on progress. Here's the basic idea. I have had a BeagleBone Black for quite a while. I've mostly been using it to run my 3D printer. However, I updated to Debian which seems much more stable than Angstrom. I've also hooked it up to my TV and downloaded an NES emulator. It's pretty cool, but it would be much nicer to have a real working NES controller. I just happen to have purchased some knock-off NES controllers from eBay a while back. I also have several NRF24L01+ radios on hand - so I figured why not! So far - I've got the hardware mapped out for the most part. I'm planning on using an MSP430G on the controller end - hopefully using the Energia library so it's quick. On the other end - I'm planning on using an MSP430F5529 launchpad due to the USB functionality. The Energia library works fine on that device, so I may possibly try to get the 5529 USB keyboard example put together with the Energia library using the CCS6 Energia import functionality, but that may be a bit tough. I'm pretty sure there are some other NRF libraries around here that I could probably use instead if needed. Anyway - I'll post more info soon!
  10. Good day, I want to connect my Stellaris launchpad and the MSP430 2553 using NRF24L01 transceivers. I found following energia libraries, For MSP430 For Stelaris launchpad After that I connected the pins of the modules like below, MSP430 CE >> P2.0 CSN >> P2.1 SCK >> P1.5 MOSI >> P1.7 MISO >> P1.6 Stellaris launchpad CE >> PA6 CSN >> PA7 SCK >> PB4 MOSI >> PB7 MISO >> PB6 Then i used putty to check whether the transmission is happening. But I think it is not. MSP430 serial interface gives my this result, Enrf24 radio transceiver status: Receive Mode Received packet: Enrf24 radio transceiver status: NO TRANSCEIVER PRESENT Received packet: Enrf24 radio transceiver status: NO TRANSCEIVER PRESENT Received packet: Enrf24 radio transceiver status: NO TRANSCEIVER PRESENT Received packet: Enrf24 radio transceiver status: NO TRANSCEIVER PRESENT Received packet: Enrf24 radio transceiver status: NO TRANSCEIVER PRESENT Received packet: Enrf24 radio transceiver status: NO TRANSCEIVER PRESENT Received packet: Enrf24 radio transceiver status: NO TRANSCEIVER PRESENT Received packet: Enrf24 radio transceiver status: NO TRANSCEIVER PRESENT Received packet: Enrf24 radio transceiver status: NO TRANSCEIVER PRESENT Received packet: Enrf24 radio transceiver status: NO TRANSCEIVER PRESENT Received packet: Enrf24 radio transceiver status: NO TRANSCEIVER PRESENT Received packet: Enrf24 radio transceiver status: NO TRANSCEIVER PRESENT Received packet: Enrf24 radio transceiver status: Receive Mode Received packet: Stellaris launchpad gives me following result Timeout on response from server! Finished sending I'm not sure whether I am doing this correctly. Can someone please help me through.
  11. Good day for all, I want to know if exist the nrf24l01 library on Mpy or if the SPI library is available. Thanks!
  12. In this day and age, we should not need to use any keys or buttons. I have done away with the key remote in my car using this simple setup. I came to the same conclusion as this gentlemen in using the apple nike+ sensor to provide a proximity sensor to the car. His code lacks a couple things that I was looking for. 1) decoding of the apple serial protocol so that i can use any NRF module 2) detection of when to stop strobing the remote (when the key is inserted) 3) ability to open the trunk and since I can detect when the key is inserted, I can do other things when the car is on like strobing the garage door opener, To accomplish 1, I found that some genius went about decoding the modules to be decoded with NRF modules Also helping this along was energia and the already written NRF24 library. notes about my design and things I learned: - my design is based all on a repeating 10ms timer which is a good base for modifying this code to work for different scenarios - i am a fpga designer and some of the code is not as efficient as a c++ programmer would make it - one could optimize the interrupt routine to use less time by using a global counter and variables to store offsets rather than individual counters - my mazda remote is active low so the signals had to be inverted - i tapped into my car through the mazda keyless module. 12v and gnd is provided. an additional signal which pullses low at a 1khz rate when there is no key inserted, it is high when a key is inserted, this powers "car timeout" - i originally had everything on one board, but it seemed there was too much interference for the NRF to pick up the sensor properly - since there were a lot of rf devices decoupling capacitors was very necessary. - there is a 24 second timeout before my car relocks if there is no door opened, i kludged a single button press keep alive every 20 seconds using delays :-( i dont like using delays they seems so unclean.... an upgrade would be to use the -64dbm to detect that you are actually in the car and stop the strobing, ymmv and i have not implemented this (RPD register 0x09 bit 0) UPDATE: IMPLEMENTED IN NEWEST CODE - whenever the key is in the car, the car will cycle every ~2.5 seconds through the two parkade doors. the remote will auto shutdown if it detects a constant press so i have added a remote_pause to prevent this - the trunk has another msp430 performing capsense on the key hole and will activate another nike+ sensor to open the trunk. i am in the process of upgrading the sensitivity of this using swept frequency capacitive touch which i will share once i get the kinks out - a cheap chinese buck module was used to reducethe voltage from 12v to 3.3v - replace the *_sn vectors with whatever your nike+ sensor serial number is - avoid RF like the plague, even with one side guaranteed to be working, along with some issues with SPI, it was a PITA to get working the first time nikerf.ino printf.h
  13. Hi, I've finally found my "cahones" and decided to become a doer, and hopefully more active on the forum. I've been working on his for more than a year on my free time and have learned a lot. However, nothing real have come out of this project until recently. With the recent release of energia library for nRF24L01P by spirillis, I decided to restart working on it. Anyway. I'll post what I've done so far and move along with the suggestions. I'm a noob, so I've gone the noob way: Breadboarded first using what I had in my noob bin (msp430g2553 , nRF24l01P, ds18b20, thermistor, 7805, lm358, 9v battery, couple of resistors and capacitors) Used the launchpad schematics to get the components values. Board Layout with fritzing. Eagle was too complicated for me. Ordered the board thru Oshpark after exporting the gerbers. [ yay!!! I'm speaking like the pros :grin:) Programming with Energia, so far everything is going ok. I attached the fritzing file as well as the oshpark rendering of the board. Please, take a look, let me know where I've gone wrong.