RFShowControl Protocol Explained
Overview
RFShowControl utilizes an On-Air protocol which was originally designed and implemented by Joe Johnson for use with the RFColor2_4 project. Inspired by this, and with the intent of being fully interoperable with Joe's RFColor2_4 GECE controllers, the RFShowControl library was built to simplify the setup and configuration of the transmitters and receivers.Current / Beta RFShowControl Protocol
The RFShowControl protocol is built within the limitations of Nordic Semiconductor's nRF24L01+ tranceiver.
- Transmission Rate: 250kbps, 1Mbps, 2Mbps - Configurable
- RFChannels Available for Transmitters: 125 ( allows for up to 64,000 individual channels or 21,000 pixels!!!)
- One Transmitter per RFChannel, Each transmitter can transmit up to 512 channels at 250kbps.
Packet Structure
RFShowControl utilizes a 32 byte packet, So we need more than 1 packet to send an entire 512 channels (if needed).- 30 bytes of channel data
- 1 offset byte ( this 0 indexed byte is multiplied by 30 to determine what channels are in the packet)
- one reserved byte (not currently used)
Because of the restrictions of 30 "data channels" per packet we need 18 packets to send an entire 512 channels. Transmitters can broadcast fewer than 512 channels and will use less packets to do so if needed.
OneRF Packet | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Packet Inxex | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
ByteContents | ch1 | ch2 | ch3 | ch4 | ch5 | ch6 | ch7 | ch8 | ch9 | ch10 | ch11 | ch12 | ch13 | ch14 | ch15 | ch16 | ch17 | ch18 | ch19 | ch20 | ch21 | ch22 | ch23 | ch24 | ch25 | ch26 | ch27 | ch28 | ch29 | ch30 | OFFSET | TBD |
Channel 1-30 Packet | 0*30=0 | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Packet Index | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Byte Contents | 255 | 0 | 0 | 255 | 0 | 0 | 255 | 0 | 0 | 255 | 0 | 0 | 255 | 0 | 0 | 255 | 0 | 0 | 255 | 0 | 0 | 255 | 0 | 0 | 255 | 0 | 0 | 255 | 0 | 0 | 0 | NOTUSED |
Channel 31-60 Packet | 1*30=30 | |||||||||||||||||||||||||||||||
Packet Index | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Byte Contents | 255 | 0 | 0 | 255 | 0 | 0 | 255 | 0 | 0 | 255 | 0 | 0 | 255 | 0 | 0 | 255 | 0 | 0 | 255 | 0 | 0 | 255 | 0 | 0 | 255 | 0 | 0 | 255 | 0 | 0 | 1 | NOTUSED |