Re: Phil's lockdown project - a 4ch propo NRF24 set
Posted: 04 Apr 2020, 21:17
I've lost a bit of impetus with this project so I was browsing around and you know how google suggests stuff to look at based on your recent interests? Well up popped this Elektor article:
http://houseofthings.gr/wp-content/uplo ... _05-06.pdf
...which lists an NRF24L01 R/C system!
and a link to their software:
https://www.elektormagazine.com/files/m ... 408-11.zip
I have to say that whilst its well presented (as is all Elektor stuff) the software is not hugely impressive.
I was expecting something wonderful, but basically it just transmits the positions of 4 pots and a few switches, it has no 'facilities' at all, no mixers, no gizmos, not even failsafe. RF-wise, like my own experiment above, the Elektor set uses just one fixed channel and relies on addressing for separation. It did confirm what I've found on various 'maker' sites that many users are similarly using one hard-coded channel. Theres no check to see if the channel is busy though of course a 'busy' channel doesnt mean its not perfectly usable.
Obviously Werners frequency-hopping is a far superior method, but as a compromise I wondered about a 2-channel (like DSM2) system, which on power-up finds two clear and preferably (unlike DSM2) widely spaced channels, tells the rx what they are, then constantly sends the same packet on one channel then the other, and at first I thought the receiver would also switch on every packet received or on timeout if the packet isnt received on time.
But then I thought, if the rx is hearing good packets on one channel, why switch channels, why not just switch to the other channel only if the first channel starts to drop packets? Keep the tx alternating, but the rx sticks to one channel unless it drops out, when it tries the other channel. It sounds too simple but I'll try it as a compromise. In a nutshell the tx sends on both, and the rx uses whichever channel continues to provide timely data and only changes if thats no longer the case. Its the same principle as my old dual receiver adapter, which worked well.
The first big improvement whilst it still uses one RF channel would be to listen first and choose a quiet channel rather than a fixed, hard coded one. I've made a start, the channel-scanning bit is working.
Then I'll look at the DSM2-alike two channel thing. But I keep wondering is this worth pursuing?
Cheers
Phil
Edit: a further thought, why only 2 channels? why not have the tx cycle through several channels, and the rx 'hops' only if/when a packet goes missing? We could call it DSMthirteen
Later edit: the more channels it sends on, the less theres a need to scan for quiet ones! In practise I'd guess say 10 fixed channels from above the WiFi usage would be a good start. I quite like that idea
Collisions should be infrequent as the MU is so very low, at 250kbps it takes a fraction of a millisecond to send a packet, which happens only every 20ms. I'll try it when my prominis arrive.
http://houseofthings.gr/wp-content/uplo ... _05-06.pdf
...which lists an NRF24L01 R/C system!

and a link to their software:
https://www.elektormagazine.com/files/m ... 408-11.zip
I have to say that whilst its well presented (as is all Elektor stuff) the software is not hugely impressive.
I was expecting something wonderful, but basically it just transmits the positions of 4 pots and a few switches, it has no 'facilities' at all, no mixers, no gizmos, not even failsafe. RF-wise, like my own experiment above, the Elektor set uses just one fixed channel and relies on addressing for separation. It did confirm what I've found on various 'maker' sites that many users are similarly using one hard-coded channel. Theres no check to see if the channel is busy though of course a 'busy' channel doesnt mean its not perfectly usable.
Obviously Werners frequency-hopping is a far superior method, but as a compromise I wondered about a 2-channel (like DSM2) system, which on power-up finds two clear and preferably (unlike DSM2) widely spaced channels, tells the rx what they are, then constantly sends the same packet on one channel then the other, and at first I thought the receiver would also switch on every packet received or on timeout if the packet isnt received on time.
But then I thought, if the rx is hearing good packets on one channel, why switch channels, why not just switch to the other channel only if the first channel starts to drop packets? Keep the tx alternating, but the rx sticks to one channel unless it drops out, when it tries the other channel. It sounds too simple but I'll try it as a compromise. In a nutshell the tx sends on both, and the rx uses whichever channel continues to provide timely data and only changes if thats no longer the case. Its the same principle as my old dual receiver adapter, which worked well.
The first big improvement whilst it still uses one RF channel would be to listen first and choose a quiet channel rather than a fixed, hard coded one. I've made a start, the channel-scanning bit is working.
Then I'll look at the DSM2-alike two channel thing. But I keep wondering is this worth pursuing?

Cheers
Phil
Edit: a further thought, why only 2 channels? why not have the tx cycle through several channels, and the rx 'hops' only if/when a packet goes missing? We could call it DSMthirteen

Later edit: the more channels it sends on, the less theres a need to scan for quiet ones! In practise I'd guess say 10 fixed channels from above the WiFi usage would be a good start. I quite like that idea

Collisions should be infrequent as the MU is so very low, at 250kbps it takes a fraction of a millisecond to send a packet, which happens only every 20ms. I'll try it when my prominis arrive.