First Project - Motion Tracking Device to Control RC Camera Gimbal

I have a project in mind and would welcome advice and feedback:

I saw and filmed this at NAB and realised it can't be that hard to build myself:

I've already built a simple 2-axis camera gimbal controlled by a head tracking device run through my Futaba controller, and the principle is much the same.

After little searching I came across these instructions for using arduino nano to build a head tracking device:

However, this needs you to use a regular store-baught 2.4Ghz controller and receiver to transmit the signal which doesn't work well as the device needs to be light and self-contained.

So looking for a cheap 2.4Ghz Tx board I found the NRF24L01+ and the Sparkfun which I think is basically the receiver. However, my question is how can I use these to transmit up to 8 channels (or at least 6) like a normal RC controller? Ideally it would have at least 6 or 8 channels since along with pan, tilt and roll, I would need to transmit other commands such as start recording etc.

Also, at the receiver end the gimbal has up to 8 servo plug sockets. How easily can the Sparkfun Rx be connected to each channel to the gimbal controller? Eg does it require another arduino or can it operate to just relay the signals straight through?

Alternatively, are there more appropriate Tx/Rx boards I should be using?

All suggestions welcome.

You would use two NRF24s as both transmitter and receiver - they are bidirectional.

You could send, for example <23,45,118,37,120,0> representing the values needed by each data stream.
You could also send each value as a single byte if you want to reduce the data throughput.

…R

Hi Robin2,

Thanks for your answer. I gather you mean that the NRF24 only has a single channel and so a way around that is to send a sort of array containing the values for each channel?

I imagine it would look something like this?

IMU+Nano+NRF24 —> <array representing 8 ‘channels’> —> NRF24+Gimbal

That could work but is there code or a library for sending multiple ‘channels’ of data like you suggest and interpreting it as analog output on the output pins of the Rx to the gimbal?

Also, something that occurred to me yesterday is would it be possible to adapt this so that the head tracker works on a 3 axis gimbal using brushless motors and not servos? I tried something similar by using the head tracker in some fatshark goggles to a Zenmuse Z15 gimbal and as expected it moved the gimbal but it would just keep moving unless you centred the goggles/headtracker back to the starting point.

Do you know if there is a way to get the brushless motors to mirror the head tracking as they would using servos??!!

samlivingstone:
but is there code or a library for sending multiple ‘channels’ of data like you suggest and interpreting it as analog output on the output pins of the Rx to the gimbal?

I don’t think so. Even the old RC systems transmitted the data as a succession of pulses for all 6 channels. The new ones use radios very similar to the NRF24. In effect they are computers with wireless transceivers attached.

Have a look at this Deltang website. Most of the devices he sells are actually Arduino compatible. He has them programmed to work with Spectrum RC equipment. I have used some of them to control N-Gauge model trains with Arduino code. One of them is connected to my PC and is the master. The locomotives have the same devices programmed as slaves.

…R

Robin2:
I don't think so. Even the old RC systems transmitted the data as a succession of pulses for all 6 channels. The new ones use radios very similar to the NRF24. In effect they are computers with wireless transceivers attached.

Have a look at this Deltang website. Most of the devices he sells are actually Arduino compatible. He has them programmed to work with Spectrum RC equipment. I have used some of them to control N-Gauge model trains with Arduino code. One of them is connected to my PC and is the master. The locomotives have the same devices programmed as slaves.

...R

Thanks, I'll take a look. I've ordered some parts and will see how far I get. I suspect the hard part will be the programming if there are not already libraries out there to turn arduino into an RC for UAVs.

samlivingstone:
if there are not already libraries out there to turn arduino into an RC for UAVs.

I suspect you may be over-thinking the problem.

To control a UAV you just need data - perhaps values representing the speed for a motor or the angle for a servo.

The old RC systems used pulses of different widths to convey data (and that is still how the servos themselves are controlled).

But the Arduino Servo library just needs a number (say) from 1 to 180 so all you need to transmit is that number. The Arduino that receives the number can then use it to set the appropriate servo to the correct angle using Servo.write(93); or whatever. The NRF24s are designed for sending data.

...R

Robin2:
I suspect you may be over-thinking the problem.

Thats quite possible knowing me :slight_smile: I'm still waiting for the Arduino to arrive and I'm sure once I've had a play around it will become clearer. Will report back with how it goes and with any code I manage to get to work.

Hello!
I am currently on the same project! I joined the electronics in a battery location of a screen ...
I faced the same problem on Zenmuse Z15 ... she is in "speed" and not "position" mode!
Have you found a solution ???
Thank you!

I am currently on the same project!

. . . but a whole year behind.

I joined the electronics in a battery location of a screen

That's going to need some explaining.

I used the location of a battery to put the transmitter and headtracker Arduino Module ...
This is a small screen 7 "SkyZone" (5.8ghz rx integrated).
I was just looking to see if samlinvingstone had found a solution to put the zenmuse z15 in position mode ...

So ... I have a brief zenmuse z15 GH4 and I'm doing a diy Mimic system (see video Freefly MIMIC with Chase Jarvis on Vimeo)
Unfortunately the zenmuse in speed mode and there are no plans to put in position mode ..... it would be possible Arduino? I open a topic?