What’s this about?
This is the UK website for Peter and Maureen Scargill. We live in the Northeast of England and also on occasion in Andalucia in Spain.

Read through the blog entries, menu-accessible pages and archives if you're interested! Welcome to Peter and Maureen's website.

Want to view this on your mobile? - go ahead - there's a special version just for you. Same address.

Get in touch via Facebook My Facebook Page
You should follow me on Twitter Follow me on Twitter
Join me on  Google+ Join me on Google+
Join my LinkedIn network Join my LinkedIn network
My Pinterest Pinterest

Pete's Online CV

Archive for the ‘NRF24L01’ Category

Home Control September 2014 Update

Streuth.. I’ve just realised I’ve been running this blog since 2005! Doesn’t time fly. My interest in using Atmel technology for home control started with an article I wrote back in 2012 simply called “Home Thermostat”. At that time I was just playing – but messing with prototypes really isn’t much fun so shortly thereafter I design the “UberBareBoard”. That article was followed up by my first attempt at home control over the Internet and part 2 by which time I was starting to see some real potential for not only my home but our holiday cottage business and for our place in Spain.  Then came more updates as I got to grips with the more powerful Atmega1284p chip and started to develop my own PC-based test tools. By July I had it all figured out – or so I thought – using RF24NETWORK software providing a mesh-type network of radios still using the NRF24L01 radio.

Amazing how things change. The NRF24L01 boards which – I’ll grant you are cheap, continue to function poorly –they do not like stone walls and the RF24NETWORK is not a true mesh – you have to specify every node in the mesh which makes replacing boards a lot of fun.. and it really cannot handle one of the boards going offline. Finally, no-one has yet made effective use of interrupts when using these radio boards in a network – which puts further limitations on what you can do – as you spend your time constantly polling the radio network.

Over the summer, my pal Aidan and I have been working hard – we now have a decent Atmega 1284-based board to work with – you’ll see it below. Late July I discovered the Radiohead library – the nearest our little processors have come to seeing a proper mesh network.. but that now pushes the 328 chips out of the window – as the library takes them near the limit of their available program memory and as for the tiny 2K of RAM – just not enough. For boards at the end of the chain, perhaps – and I have 3 working installations using these – but for the master board, the 328 is no longer an option.

In August while enjoying the sun, it hit me – the NRF24L01 chips don’t have the ability to know how strong the incoming radio signal is – so how the hell can a network possibly know which is the best unit to route the signal through – and that started me on the hunt for alternatives – which brings us neatly into this post.

If you’ve been following my blogs you’ll know about my on-going work on home control but firstly you’ll see the phrase “Arduino” bandied around. I use this merely for convenience as I use a lot of the Arduino libraries out there – but my boards are home-grown. I’m particularly fond of the Atmega1284p chip because, unlike the standard Arduinos you see our there, this has 4* the RAM – which means it’s less likely to run out. It also has 4* the FLASH memory – so just when Arduino sketches are running out of room, the 1284p is just getting started.

AiduinoI used to use hand-made boards and there are plenty of those lying around, but these days I’m using a design we put together called the “Aiduino” – so-called because my pal Aidan did the board layout. This particular design has stood the test of time and I use these on everything. It has space for both 3v3 and 5v regulators, the chip, the usual support components and that’s about it.

You’ll see a typical Aiduino above with edge connectors for all the port pins and an SPI connector near the middle. I don’t bother putting the programming interface on the board as the low-cost FDDI interfaces do that all for you – why waste valuable board space. I simply allocate a 6-way connector on the edge of the board for programming.

Armed with these boards, I have LCD display controllers (for wall mount displays), a master controller with Ethernet card and “slave” units to control lighting etc. All of these units talk to each other using NRF24L01 radios which are very cheap 2,4Ghz popular radio modules. There are two problems with these radios – firstly they are very low power and secondly they are on the same radio broadcast range as just about everything else including WIFI – and they DON’T like stone walls.

I’ve looked at the cheap FSK units as used in radio remotes – no-where near powerful enough.

Aidan and I are investigating some Atmel chips with on-board radio – these look promising but getting all of that running in the Arduino IDE and hence keeping access to the Arduino libraries – is proving a challenge but watch this space as he’s working on this right this minute. We’d like to produce (where others have failed) a tiny radio module which runs on SPI and which internally handles all the mesh coding and massive buffering – as well as offering other functions to take the load off the main boards.. Meanwhile…

tmpB859I’ve looked at the RF22 modules – but these come from the USA and hence are a little expensive (inc. postage).. but only in the last few weeks have I discovered even cheaper Si4332-based radio boards from China which are compatible with the RF22 modules and hence can work with the likes of the Radiohead library for Arduino – a simple but fully functional “mesh radio” library. Not only that but these radios and library combined, unlike the slightly less expensive (but only just) NRF24L01 units, make good use of interrupts to ensure you can actually do something else while the radios are working!!

See the radio on the right – that’s one of them. They are tiny which poses a problem for prototyping as the edge connector is 0.05” pitch – but it’s do-able with care.

Below you’ll see one of my bodged Aiduinos which has the radio board mounted on top of the 1284P chip. If this all pans out I’ll make a board that incorporates the radio… and in the process of research I’ve found out some interesting things about these little radios.

tmpCF15I can say that I’ve had 3 of these running in mesh mode and the range covered by 3 equally spaced units (the centre one acting merely as a message relay in this case) covers from my garage, to my greenhouse – through 4 stone walls and an intermediate lightweight wall – which is WAY better than the NRF24L01 chips can manage.

At first I managing a couple of message round trips a second – I needed to get the speed up to dozens of round trips a second in order to allow me to, for example round-robin poll several units to update the mobile phone.

Well that worked too thanks to some help from the designer of the Radiohead library – a change from the library defaults brought me to 100 package round trips a second – when I say package – we’re talking about, say a 20 byte package going there and back – and with additional maintenance bytes (from, to, ID etc.)

The chip used in these radios, the Si4332 is supposed to handle a maximum +20db output  – I managed +17db – but I’m convinced the little spring aerials are now the limiting factor – with full power I can now get through 2 stone walls but not right across the house.. but WAY better than the NRF24L01 chips even when the latter have stub aerials.

To run these radio boards, they need 3v3 power. Our Aiduinos run on 5v but have 3v3 out. You can feed the one output from the radio directly but the inputs to the chip might be damaged by direct connection to 5v logic – one option is a level convertor, another is a resistive divider. I found that for the 3 inputs that need it, 470r series resistors do the job just fine (The NRF chips work off 3v3 but will accept 5v signals directly). Why don’t I just run everything off 3v3? Speed and driving other devices, that’s why.

I’ve now modified the Radiohead library so that I can also get a flag when data is passed THROUGH the unit so it’s now possible to indicate the success of not only incoming packets but those passed on elsewhere – very handy for debugging and there’s nothing wrong with pretty lights anyway.

So there it is – what looks like a reasonably inexpensive radio solution for home control and with a tiny mod, the standard Ethernet library handles the Atmega 1284 chips no problem – it’s detailed in here somewhere but boils down to adding the chip to one of the library conditionals for the Mega boards. I did notice when these radios are running constantly, a slight decrease in range of my plug-in-the-wall mains controller handsets as they are on the same frequency range – but in my application, such all-out non-stop transmission would only occur when say the mobile phone is actually polling the units – otherwise it’s just about occasional updates and checks. As for the handsets interfering with the network – they don’t – maybe thanks to the frequency-hopping technology embedded in the boards. Incredible technology for such a low price.

Far more to come in the future. I plan to add moisture detection for our plants, gas monitoring for the home, I already have lighting and heating control working in 2 of the properties. I also have IR remote control and radio mains control underway. Do look in.

This is the latest to date in my series of articles on home control which started with my original article on a cottage thermostat in which I envisaged a very simple controller. Then came the UberBareBoard article about an Atmega328-based Arduino clone, initial attempts to master the NRF24L01 radio. The next article was the first item entitled home control and after this – then part 2 and then the winter update – then the April 2014 update and then things really started to move as I discovered better networks – then came the full mesh article – by this time I had everything starting to run the way I wanted things but for the radio network – as you’ll realise by now, that issue is starting to disappear.

Home Control April Update

tmpB947The home control system is coming along nicely and after a “weekend of code” has some nice new facilities, not the least being a new test desktop PC program and some new radio error checking. Add to that the recent work on week/weekend temperature program and it’s just about ready to roll to both the cottage, our house and Spain. One of the guys helping me has gone off with the first model to play with.

tmp25FEFirstly the Android/IOS App has been tidied up and some new screens put in the place – the first is shown on the left here and shows temperature monitoring, +-adjustments and hold-off (in days) which puts it on standby – useful for the cottage if it’s not in use. Dusk and dawn times are automatically calculated on a daily basis and any of the on-off controls can now include on from dusk until midnight, on from dusk until dawn etc.

The second page shows some demo NRF24L01 remote units and similar on-off controls with these.

The new internal additions allow for momentary radio failure and will temporarily log out and failed unit and it’s siblings to prevent slowing everything down. This was a major pain before as constant polling of units could slow things down. That is all now history.

tmp6051The third page here can control serial LEDS – the new type with individual serial control. I’ve not yet implemented a simple means to change the lengths of these LED strips but that will come shortly. There’s no reason I can’t store this in EEPROM.

tmp4C84Note the various colour controls and sliders. The very bottom is just an experiment area.

Below right you’ll see the heating controls which allow setting main and fall-back temperatures as well as weekday and weekend timing controls. You should be able to enlarge these images by clicking on them incidentally.

Below all of that is a glimpse of the new PC testing software – just finished working on that and not yet turned it into stand-alone compiled code but that will come this week hopefully. It works perfectly and includes the ability to save profiles for testing different board scenarios.

imageWhat has made a bit of a difference is the discovery of the ease of extracting mains control PCBs from some of the low cost plug-in-the-wall Chinese USB supplies – the newer ones have very small boards capable of giving out over 0.5amps at 5v very efficiently.

So now it’s possible to make plug-in-the-wall radio units and masters no longer needing separate power supplies. Added a nominal level of security

Some way to go before I’ll be satisfied with this but it’s starting to look ok. I now have TWITTER alerts kind of running on the larger boards but the low-cost version still won’t have them – I’ve written off to the guy who designed the Ethernet library to see if that can be fixed.

All of this has come a long way from my early experiments with the NRF24L01 radio boards – which seems to have been a popular video https://www.youtube.com/watch?v=VgmVYdSCNLs but documenting this lot could take quite some time.

The only problem with the NRF24L01 boards is range – they are atrocious. Firstly they are very susceptible to noise and many people recommend putting an electrolytic capacitor on the board at the connector. I suspect this has to do with current spikes when transmitting. This does seem to make a difference. Secondly -  they are in the same radio spectrum area as WIFI etc. Thirdly there is no way to gauge incoming signal strength and therefore when used with any mesh network software, it can’t tell which is the best connection to use – and finally – just because of the frequency band they operate in combined with low output, they won’t go through thick walls easily – I’ve seen their range reduced to a few feet in certain circumstances.  On the plus side, they ARE cheap and though they need 3v3 to operate, the data lines happily work with 5v logic – most other cheap boards out there need level convertors which at the very least means a bunch of messy resistors.

tmp7176On the right you see a little stand-alone Ethernet-driven board which is dirt cheap to put together.. that too has possibilities though of course it still needs an Ethernet lead to run. I’ve sent off for some inexpensive plug-in-the-wall mains USB supplies so I can rip them up and get the supply PCB out of them to power these units.

Somewhat frustrating that they are way too expensive when sourced in the UK but hey, at least they’re available.

That’s it for now, got a lot of work to get through before I can devote more time to this and awaiting feedback from various people to fix some minor library issues… but no doubt about it, the next house will be the one to watch for home automation…

Update July 2014:  I’m in Spain and working with controllers here – the range of the NRF24L01 boards (or lack of it) is getting to be a severe problem. Investigating alternatives such as the Atmel processor with built in radio and some 800Mhz and 433Mhz transceivers.

This all sprang up from my original article on a cottage thermostat in which I envisaged a very simple controller. Then came the UberBareBoard article about an Atmega328-based Arduino clone, initial attempts to master the NRF24L01 radio. The next article was the first item entitled home control and after this – then part 2 and then the winter update – all the time learning more and more. And after this… July and the full mesh.