- Posts: 2633
Adding channels to the Bayang protocol?
- goebish
-
- Offline
- NRF Weirdo
Less
More
30 Mar 2016 16:37 #45447
by goebish
Replied by goebish on topic Adding channels to the Bayang protocol?
I agree with victzh, if breaking stock transmitter compatibility is not an issue then better design a new protocol from scratch.
- SirDomsen
-
- Offline
30 Mar 2016 19:08 #45456
by SirDomsen
Replied by SirDomsen on topic Adding channels to the Bayang protocol?
Sounds very cool to me. Thumbs up!
- xxx
-
- Offline
Less
More
- Posts: 43
30 Mar 2016 19:15 #45457
by xxx
silverxxx
Replied by xxx on topic Adding channels to the Bayang protocol?
So, I guess we go for a new one.
So far we have 4 analog main channels + 5 (minimum 3) pid channels (8bit) + digital switches - whatever is left
Channel hopping - I guess we should include it
telemetry should be same packet format, just different header, that should be easy to figure out
So, we need to come up with the rest of it. I have seen posted the H8 protocol is nothing special, is there any cool stuff that we could add to this one?
Is there really a need for more then 4 channels?
So far we have 4 analog main channels + 5 (minimum 3) pid channels (8bit) + digital switches - whatever is left
Channel hopping - I guess we should include it
telemetry should be same packet format, just different header, that should be easy to figure out
So, we need to come up with the rest of it. I have seen posted the H8 protocol is nothing special, is there any cool stuff that we could add to this one?
Is there really a need for more then 4 channels?
silverxxx
- goebish
-
- Offline
- NRF Weirdo
Less
More
- Posts: 2633
30 Mar 2016 19:32 - 30 Mar 2016 19:37 #45458
by goebish
Replied by goebish on topic Adding channels to the Bayang protocol?
what about something like that:
- 250 kbps bitrate (for better sensitivity / range)
- channel hopping, but something in the range 00 - 0x42 (I found that the xn297 lose sensitivity with anything higher ...)
- short packets (because 250kbps)
AA DD DD DD DD DD DD DD DD DD CC
AA: packet type (bind, sticks, pid, ....)
DD: data (can hold 4x 16 bit values + 1x 8 bit)
CC: checksum or crc8
edit: oops, I forgot only the XN297L can do 250kbps
so we've to stick to 1Mbps
- 250 kbps bitrate (for better sensitivity / range)
- channel hopping, but something in the range 00 - 0x42 (I found that the xn297 lose sensitivity with anything higher ...)
- short packets (because 250kbps)
AA DD DD DD DD DD DD DD DD DD CC
AA: packet type (bind, sticks, pid, ....)
DD: data (can hold 4x 16 bit values + 1x 8 bit)
CC: checksum or crc8
edit: oops, I forgot only the XN297L can do 250kbps
Last edit: 30 Mar 2016 19:37 by goebish.
- FDR
-
- Offline
30 Mar 2016 19:39 #45459
by FDR
Replied by FDR on topic Adding channels to the Bayang protocol?
You will need binding package and some binding id in the data package too.
Furthermore it can determine the hopping sequence too.
Furthermore it can determine the hopping sequence too.
- victzh
-
- Offline
Less
More
- Posts: 1386
30 Mar 2016 20:45 #45465
by victzh
Replied by victzh on topic Adding channels to the Bayang protocol?
Yes, 2-3 bytes for TX id, 2 bytes per channel 12 channels. CRC is provided by packet structure, it's OK to use only this.
For quadcopter there is probably no need for more than 4 channels, but usually it pays to design a bit ahead - you never know where this design is going to be used in 10 years
So, 3(tx id) + 1(packet type) + 24 = 28 packet length. I don't know, for some reason nobody uses packets this long. May be error free transmission probability for such a long packet is not very high.
I like what S-FHSS is doing - they have packet subtypes - even packets transmit first 4 channels, odd - next 4; and there is space for extension - you can always add packets 3 and 4 - there is space for it.
They also pack the values peculiarly, we can avoid this. With minimal packing (12-bit values) and 4:4:4 channels schema packet length would be 3+1+6 = 10 bytes. With 6:6 - 3+1+9=13.
I also like how HiSky handles FH sequence - it passes it along the TX id explicitly, no formula in RX to use, just write it down.
For quadcopter there is probably no need for more than 4 channels, but usually it pays to design a bit ahead - you never know where this design is going to be used in 10 years
So, 3(tx id) + 1(packet type) + 24 = 28 packet length. I don't know, for some reason nobody uses packets this long. May be error free transmission probability for such a long packet is not very high.
I like what S-FHSS is doing - they have packet subtypes - even packets transmit first 4 channels, odd - next 4; and there is space for extension - you can always add packets 3 and 4 - there is space for it.
They also pack the values peculiarly, we can avoid this. With minimal packing (12-bit values) and 4:4:4 channels schema packet length would be 3+1+6 = 10 bytes. With 6:6 - 3+1+9=13.
I also like how HiSky handles FH sequence - it passes it along the TX id explicitly, no formula in RX to use, just write it down.
- xxx
-
- Offline
Less
More
- Posts: 43
30 Mar 2016 22:09 #45470
by xxx
silverxxx
Replied by xxx on topic Adding channels to the Bayang protocol?
Yes, actually, it might be a good idea to reduce the packet lenght. The software spi takes a while, and 28 bytes is looong
Also , the pids are not very dynamic, and there is no point sending them full rate. maybe send them 1 in 10 or so. Would have to be a number not a multiple of the rf channels, so it does not end up on a dead channel all the time. Also , i'd like throttle duplicated between packets for failsafe purposes if its convenient. Or maybe a bit could be set if throttle is under 10%.
Well, you guys write the tx, and i'll see if I can make an rx that works for it... Or you could do both if you feel like it.
Also, I found some xn297 registers that work for the higher channels on the radio side.
Also , the pids are not very dynamic, and there is no point sending them full rate. maybe send them 1 in 10 or so. Would have to be a number not a multiple of the rf channels, so it does not end up on a dead channel all the time. Also , i'd like throttle duplicated between packets for failsafe purposes if its convenient. Or maybe a bit could be set if throttle is under 10%.
Well, you guys write the tx, and i'll see if I can make an rx that works for it... Or you could do both if you feel like it.
Also, I found some xn297 registers that work for the higher channels on the radio side.
silverxxx
- mwm
-
- Offline
31 Mar 2016 20:48 #45512
by mwm
Do not ask me questions via PM. Ask in the forums, where I'll answer if I can.
My remotely piloted vehicle ("drone") is a yacht.
Replied by mwm on topic Adding channels to the Bayang protocol?
I'd say most modern quads want five channels - four flight control + 1 "FC Mode" channel. Sure, you can cram the last state into bits in the other four, but you then have to turn those into channels to in the mixer in order to use them, so why bother? And many will want up to three more full-resolution channels for controlling a gimbal, though only the devo12 can really take advantage of that.
We've talked about custom NRF-based protocols before. I think the end result was using the channel area to control channel size. Say half the channels are full size, 1/4th of whats left are 4 bits, 1/4th are 2 bits, and 1/2 is one bits (most common option).
FWIW, the CFLIE and YD717 protocols have telemetry in the source, but it's not enabled in the nightly build for some reason.
We've talked about custom NRF-based protocols before. I think the end result was using the channel area to control channel size. Say half the channels are full size, 1/4th of whats left are 4 bits, 1/4th are 2 bits, and 1/2 is one bits (most common option).
FWIW, the CFLIE and YD717 protocols have telemetry in the source, but it's not enabled in the nightly build for some reason.
Do not ask me questions via PM. Ask in the forums, where I'll answer if I can.
My remotely piloted vehicle ("drone") is a yacht.
- Richard96816
-
Topic Author
- Offline
Less
More
- Posts: 208
31 Mar 2016 22:26 #45516
by Richard96816
Replied by Richard96816 on topic Adding channels to the Bayang protocol?
So what's the maximum data payload available without sacrificing speed/latency?
And is it possible to make the unused channels configurable (enable/disable) at the model file?
And is it possible to make the unused channels configurable (enable/disable) at the model file?
- xxx
-
- Offline
Less
More
- Posts: 43
31 Mar 2016 23:19 #45519
by xxx
silverxxx
Replied by xxx on topic Adding channels to the Bayang protocol?
ok i'll look at yd717 and CFLY.
I actually was thinking 4 rf channels, sorry, I was ambiguous.
I actually was thinking 4 rf channels, sorry, I was ambiguous.
silverxxx
- victzh
-
- Offline
Less
More
- Posts: 1386
31 Mar 2016 23:32 #45520
by victzh
Replied by victzh on topic Adding channels to the Bayang protocol?
Theoretical limit is pretty high. 5ms per packet means every packet should not be longer than 1Mbps x 5e-3s = 5000 bits. With overhead you realistically will have 2000 bits every 5ms. Each channel is no more than 12 bits. So you can have around 167 channels before there will be physically no place to put them. So, you can have 83 control channels and 62 16-bit telemetry channels. If your speed is 250kbit/s, divide by 4.
- Richard96816
-
Topic Author
- Offline
Less
More
- Posts: 208
01 Apr 2016 05:48 #45536
by Richard96816
Replied by Richard96816 on topic Adding channels to the Bayang protocol?
I have a tiny 12 channel DSMX receiver on a CJMCU, of which 7 channels are used. Are the other channels taking up bandwidth? Does it matter?
(Orange R111xn satellite, with Devo 7e.)
(Orange R111xn satellite, with Devo 7e.)
- victzh
-
- Offline
Less
More
- Posts: 1386
01 Apr 2016 06:10 #45539
by victzh
Replied by victzh on topic Adding channels to the Bayang protocol?
No.
- mwm
-
- Offline
01 Apr 2016 20:43 #45596
by mwm
Do not ask me questions via PM. Ask in the forums, where I'll answer if I can.
My remotely piloted vehicle ("drone") is a yacht.
Replied by mwm on topic Adding channels to the Bayang protocol?
As we just saw, the concept of "channel" is overloaded here. While there are RF channels, in the context of RC transmitters it's really used to count the number of remote devices that can be controlled. Possibly they used to be the same (I re-entered RC stuff after digital became common, and didn't get into the technical stuff earlier), but they aren't any more.
In most (all to date?) rc protocols, all channels values are sent every frame, in "channel number" order. So you get channel 1, followed by channel 2, etc. Robotics and wired protocols use a "command" structure. Instead of sending a specific set of values, you either send a device selector and a value for it, or you have a command structure where the command implies the device(s) to control. Since some of these protocols use words on a unicode line as the protocol, the number of devices you can control is essentially unlimited.
I've been thinking that for a modern RC system, some kind of hybrid approach would be nice. Since flight controls and the like might be changing nearly continuously, send those channels in the traditional RC format in every frame. Maybe negotiate the number at bind time. Then follow them with 0 or more commands in that frame. That would allow you to have hundreds or even thousands of devices - or "channels" - without having to worry about the frame length.
The downside is that RC protocols aren't 100% reliable. That needs to be dealt with. The protocol needs to include some form of ACK and a behavior to make sure commands get through in spite of dropped frames, and that either missed or repeated commands don't cause problems.
In most (all to date?) rc protocols, all channels values are sent every frame, in "channel number" order. So you get channel 1, followed by channel 2, etc. Robotics and wired protocols use a "command" structure. Instead of sending a specific set of values, you either send a device selector and a value for it, or you have a command structure where the command implies the device(s) to control. Since some of these protocols use words on a unicode line as the protocol, the number of devices you can control is essentially unlimited.
I've been thinking that for a modern RC system, some kind of hybrid approach would be nice. Since flight controls and the like might be changing nearly continuously, send those channels in the traditional RC format in every frame. Maybe negotiate the number at bind time. Then follow them with 0 or more commands in that frame. That would allow you to have hundreds or even thousands of devices - or "channels" - without having to worry about the frame length.
The downside is that RC protocols aren't 100% reliable. That needs to be dealt with. The protocol needs to include some form of ACK and a behavior to make sure commands get through in spite of dropped frames, and that either missed or repeated commands don't cause problems.
Do not ask me questions via PM. Ask in the forums, where I'll answer if I can.
My remotely piloted vehicle ("drone") is a yacht.
- Richard96816
-
Topic Author
- Offline
Less
More
- Posts: 208
01 Apr 2016 22:52 #45603
by Richard96816
Replied by Richard96816 on topic Adding channels to the Bayang protocol?
Good stuff, mwm.
Sending only data that has changed might be helpful. Could add to reliability.
Error correction might be possible. Though, that would add complexity.
Could take the simpler route to get something flying and add accoutrements later. Perhaps stub out for enhancements in the key areas. Get the basic structure tested, then go from there. Add better error correction, etc., later.
Love the extensibility idea. Especially if you could control it from the model file. That would really take advantage of Deviation's abilities.
Sending only data that has changed might be helpful. Could add to reliability.
Error correction might be possible. Though, that would add complexity.
Could take the simpler route to get something flying and add accoutrements later. Perhaps stub out for enhancements in the key areas. Get the basic structure tested, then go from there. Add better error correction, etc., later.
Love the extensibility idea. Especially if you could control it from the model file. That would really take advantage of Deviation's abilities.
- hexfet
-
- Offline
Less
More
- Posts: 1971
01 Apr 2016 23:27 #45606
by hexfet
Replied by hexfet on topic Adding channels to the Bayang protocol?
That's what Frsky does. The D protocols send 8 or 16 channel values every frame and also have a byte stream to transfer data packets. The rx->tx telemetry packets have RSSI and AD1 (and AD2 for D8) in "channels". The s.port and hub telemetry is returned in the byte stream. I posit at least the D16 protocol also has a forward (tx to rx) byte stream in packet bytes 22-27 because it's required for
these
to be possible.
The byte stream is nice for telemetry because of the number of sensors and values to be communicated. As victzh pointed out there are plenty of individual bits available for just turning things on and off (without the delay of byte stream decoding). As mwm noted communication errors in the rf link will affect the byte stream data more severely than the channels sent every frame.
IMHO the protocol needs to fit the application. Plenty of room for plain old "channels" to support PID tuning and gimbal control and on/off bits. Will the H8 be sending back such a variety of telemetry that a streaming protocol is needed?
The byte stream is nice for telemetry because of the number of sensors and values to be communicated. As victzh pointed out there are plenty of individual bits available for just turning things on and off (without the delay of byte stream decoding). As mwm noted communication errors in the rf link will affect the byte stream data more severely than the channels sent every frame.
IMHO the protocol needs to fit the application. Plenty of room for plain old "channels" to support PID tuning and gimbal control and on/off bits. Will the H8 be sending back such a variety of telemetry that a streaming protocol is needed?
- xxx
-
- Offline
Less
More
- Posts: 43
02 Apr 2016 01:21 - 02 Apr 2016 01:21 #45608
by xxx
silverxxx
Replied by xxx on topic Adding channels to the Bayang protocol?
since the 32k processors have been replaced with 16k ones in the latest H8 board iteration, I will have to limit the complexity in order to save flash. So it's only going to be battery and rx rate, basically only a few bytes.
It's hard to believe so little protocols use telemetry, with the 2.4 transceiver chips in use now it's only a matter of implementing the software. Even the cheap toy tx's that have a buzzer would only need a software change to make it beep on battery low.
It's hard to believe so little protocols use telemetry, with the 2.4 transceiver chips in use now it's only a matter of implementing the software. Even the cheap toy tx's that have a buzzer would only need a software change to make it beep on battery low.
silverxxx
Last edit: 02 Apr 2016 01:21 by xxx.
- Richard96816
-
Topic Author
- Offline
Less
More
- Posts: 208
02 Apr 2016 07:12 #45639
by Richard96816
Replied by Richard96816 on topic Adding channels to the Bayang protocol?
Be nice to find another cheap quad with more than 16K flash.
Some of the potential of re-flashed toy quads fades without it.
Some of the potential of re-flashed toy quads fades without it.
- Richard96816
-
Topic Author
- Offline
Less
More
- Posts: 208
02 Apr 2016 09:19 - 02 Apr 2016 10:07 #45641
by Richard96816
Replied by Richard96816 on topic Adding channels to the Bayang protocol?
What about sending configuration data during bind? Like PIDs, etc. Put them into the model file and they get sent on each bind. Anything that begins with the magic string gets sent ...
Receiver looks for 'PID' in it's list of items and assigns the given values at each bind. Same FC board and firmware works in various frames with minor changes to the model file. No more reprogramming and reflashing for each aircraft. Possibly saving data in flash ...
bindconfig=PID,8,8,8bindconfig=save
Last edit: 02 Apr 2016 10:07 by Richard96816.
- Ian444
-
- Offline
Less
More
- Posts: 8
02 Apr 2016 09:34 #45642
by Ian444
Replied by Ian444 on topic Adding channels to the Bayang protocol?
It would maybe be a way to confirm what PID numbers are in the FC, if they could be sent back by telemetry and displayed on the Devo screen. Just a thought.
Time to create page: 0.318 seconds
-
Home
-
Forum
-
Development
-
Protocol Development
- Adding channels to the Bayang protocol?