The nrf24le1 SoC could be extremely useful for IoT applications. Many projects already use the nrf24l01 chip, which also needs a microchip to run it. The le1 is the exact same radio combined with a microprocessor. I believe it hasn't been used as much because it isn't very easy. This project will address that.
I have already completed the software side of this project for both Windows and Linux. I also wrote a Wiring library.
Once completed, this will be a very inexpensive, small, and flexible base for IoT applications.
I recently ported the floe/BTLE library to this platform and used it to develop an Eddystone-URL beacon.
I have been spending most of my time with the nrf51822, but took some time to add a few things, document things, and update this page.
After porting the BTLE library, I made something useful out of it, an Eddystone™-URL Beacon. I modified the BTLE library I ported to make it easier. There are 3 protocols defined, URL, UUID, and telemetry, however only the URL variant can be used due to the packet size constraint of the nrf24le1. A typical beacon is going for somewhere around $15.00 and the development kits for around $35.00. You can buy nrf24le1 modules on aliexpress for around $5 and a programmer for $3.
The main drawback to using a nrf24le1 is you only have 8 characters to work with for the URL. This is made a bit easier because the standard has abbreviated codes for http://www, .com, .net/ etc. I used 3.ly to make an address, qr.net/bfu3j, which fits into the space available. The other thing you lose out on is the over-the-air configuration, but that's not a deal-breaker.
I have included an Eddystone-URL template in my Sublime plugin. If you just want to take a look at it, you can download the zip here.
Sort of anyway. I ported this library. I haven't really put it to use, but it is interesting to see the little nrf24le1 being used like this. I tried making some sort of beacon with it and succeeded in making an Eddystone-URL beacon.
I'd be interested to see how this might be effectively put to use, I'm sure there are some ways; I don't have much app development experience. Using only the GAP advertising packet seems somewhat cumbersome.
Anyway, it is available in the Sublime plugin package. Zip of a barebones project here.
While I'm waiting for things to come in the mail, I've been working on the software part of this project.
Sublime Text plugin - The software can be installed through Package Control; Ctrl + shift + P, type "package control" and find Install Package, then type "io Node Framework". After it has been installed; Ctrl + shift + P, type "io node" and choose "i/o node: Create Project".
Major work on wiring.h
Major work on porting the RF24 library
Both the wiring library (wiring.h) and the RF24 library (rf24.h) are included in the software installation.
make the package available outside of Sublime
find someone to package my programming perl script for OSX
I have heavily borrowed from SublimeAVR, a Sublime Text plugin that lets you use the AVR toolchain, and made the equivalent for the nrf24le1. There will be a Windows and Linux version.
The Windows version will include GNU Make and the programmer (which is a perl script) 'compiled' so that the end-user doesn't need to bother setting up a perl environment. It also puts the required include and lib directories in the project and a Makefile so that everything just works out of the box.
The Linux version is mostly the same, with a 'compiled' perl script that includes the dependencies so there won't be any fuss installing extras. Make won't be included since it's likely to be installed anyway.
That should mean that SDCC and Sublime Text will be the only required installs. And neither will require any tinkering.
After everything else is ready, I will put this on Package Control so it will be easy to install. Until then, check it out at my repo.
The PC side of this is already done. I just need to package it up nicely.
When it comes to compilers, there is only free option, SDCC. The other option, Kiel, costs an outrageous amount of money. SDCC works in both Linux and Windows.
Likewise, there is only one option here. Someone named Brennen did a huge amount of work and compiled an SDK that makes use of nearly the entire chip's functions and released it to everyone under an open source license. Combine this with my Wiring library and you get a familiar and portable environment.
I considered integrating this with the Arduino IDE, but then I remembered how awful that is in comparison to just about everything else. Right now I am using Sublime and a make file. It works , although it could use some work to automate things. It works on Linux and Windows. build-essential is required on Linux for make. You can try installing CygWin on windows for make, but I have just been using a bat file called make.bat. Sublime doesn't know the difference.
I currently have a mess of wires from a le1 hookup board to an Arduino Uno. This works, but barely. The le1 is not 5v tolerant per the datasheet, but it is tolerant 98% of the time, the other 2% will kill it. Not to mention the wires and the extra board.
To make things better, I am going to use an Arduino Pro Micro 3.3v and use that as a programmer and UART bridge. Combined with a cheap module breakout, this should make be a big improvement. Programmer software here.
You can buy a breakout module on aliexpress for around $5.00. I considered just using those, but I soon ran into a spaghetti tangle of wires connecting power, sensors, programming pins and whatever else. I also found, to my annoyance, that each company sells a different breakout. I have multiple versions of le1's. Each one has different pinouts. It is impossible to reliably replicate things. One supplier might disappear and I'll be left figuring out some new board. And, they all come with 1.27mm headers which is very inconvienent to work with.
Also, I want to design a board from start to finish. Just to do it and see it work.