Introduction: $35 Wireless Follow Focus From the Crane 2
Let's make a $35 wireless follow focus for your camera. This can be great for use on film sets with a dedicated focus puller and can be used to adjust the zoom or focus of any camera wirelessly.
Supplies
Soldering Iron and solder
Heat Shrink
Courage and a will face the opportunity to diversify your skills
Step 1: Gather Your Parts!
Find a Crane 2 Follow Focus Servo from ebay (I found a few for under $30 that were being resold). If you have a gimbal with a servo already don't worry this hack is non-invasive and will not affect the normal operation of your gimbal!
It is highly recommended that you upgrade your servo's firmware to at least V1.70 to make use of the Stop A, Stop B and Clear functions of the application. More information on how to upgrade the firmware can be found on the official ZhiYun Crane support website. You will have to plug it into your computer to do this.
We need to gather only two (or three) more pieces for this build:
- HM-10 Bluetooth LE (low energy) serial communication device [these are extremely cheap as well]
- a pack of two micro USB connectors (preferably right angle or 'down-angle')
Step 2: Change the Internal BAUD Rate of Your HM-10
The default BAUD rate of the HM-10 is 9600 bit/s. We need to change the BAUD rate to 115200 to be able to send commands to the focus motor. Plug your HM-10 into a UART to USB adaptor and use the Arduino serial interface to change the Baud rate using the following commands:
1. AT
(should respond with an 'OK')
2. AT+BAUD4
(should respond with an 'OK+get:4')
Disconnect the HM-10, thats all we had to do!
Step 3: Solder Your Wiring!
The bottom port will be used to inject the TX serial data to the focus motor. We need to solder a lead from the TX port of the HM-10 to pin 4 of the micro USB male connector (usually is not frequently used for things). This pin should be right next to the ground pin. This connector will be plugged into the bottom of the focus motor that is labeled 'Crane 2'.
The USB Port on the left supplies a low current +5v supply that we can tap into to power our own HM-10 so we will splice a second wire to another microusb connector to pull 5 volts and a ground reference to the HM-10. (see images).
Hint: Use Heat shrink to couple the wires together so they can stay together well during use!
UPDATE::::::::::::::::::::: PLEASE SEE CORRECTION PHOTO FROM THE COMMENTS, THE WRONG PIN NUMBER FOR THE TX PACKETS WAS LISTED IN THE VIDEO, SORRY ABOUT THAT!
Step 4: Attach to Your Motor!
Plug the USB ports into your follow focus motor and velcro the HM-10 module to the backside.
Step 5: Download the Android App
I have created an application to drive the command packets through Bluetooth for the motor to listen to. This includes functionality for A and B stopping points as well as a sensitivity and reverse direction options. Check out the link (link below) to drive your motor using an android device running Android 5.0 or later!
Free App:
https://play.google.com/store/apps/details?id=appinventor.ai_ouch3994.ARD_HM10_AI2_Single_LED_03&hl=en
Step 6: Or Try Your Hand at Arduino Coding.......sorry (2 Years Later)
I apologize, i had started a new job and was have had little time to check for comments. I forgot to attach some code... i think this one was working, you will have to inject the arduinos output into the bottom USB port. this code makes the packet and attaches a CRC onto the end of it and transmits every 20ms as observed... i think i had a basic rotary encoder working too with this one. you will need the two libraries installed if you want this code to work for you...
'Encoder' https://www.arduino.cc/reference/en/libraries/enco...
and
'FastCRC' https://github.com/FrankBoesing/FastCRC
Hex string to send for:
Set A stop: [A5 5A 45 71 40 E0 02 00 87 E1]
Set B stop: [A5 5A 45 71 40 E0 03 00 B6 D2]
Clear stops: [A5 5A 45 71 40 E0 04 00 21 4B]
This already has the appropirate CRC included at the back of the listed packets
send one of these in place of a normal packet of data in the interval if you want to command the end A/B stop functionality of the motor.
You will need to purchase a second HM-10 and put it in Master Mode, and command it to connect to the MAC Address of the Slave HM-10 (on your motor). Grab a cheap rotary encoder and a potentiometer to make the wiring diagram above and have a stand-alone wireless follow focus!
post questions if needed!
-jack 4/1/2022
Attachments
Step 7: Wireless Bluetooth Controller Coming Soon!
working out the kinks on making a bluetooth controller so you dont have to use the app... using a rotary encoder and another HM-10 module. Will update when i get the chance.
16 Comments
11 days ago
Would you please post more info on the control protocol for the Crane FF motor? Thanks!
1 year ago on Step 3
CORRECTION: TX from BT should be connected to pin 2 (D-) from the left. The picture incorrectly shows pin 4 (ID) connected to TX.
Reply 1 year ago
just seeing these comments now, 2 years later, SORRY!
did you get it working ?
Reply 11 months ago
yes, got it working from the PC, now trying to get the crane2 follow focus remote to control the motor via a tiny esp32 board replacing the gimbal
Question 2 years ago on Introduction
Great job and quite entertaining (enjoyed your humor). Connecting the controls to an android makes it quite hard to adjust and control the camera. I would like to try to connect a rotary encoder w/ Bluetooth as the controller, yet I am quite lost in how you mentioned you emulated the pulse required. Would you be able to show the section on the code?
Answer 1 year ago
just seeing these comments now, 2 years later, SORRY!
did you get it working ? I have attached a sample code as step 6, i think i had a rotary encoder working at a basic level from an arduino generating the injected packet. give it a shot !
Answer 2 years ago
Ill try to post a working Arduino code this week that utilizes a rotary encoder or just a simple loop sometime this week.
Reply 2 years ago
Hope all is well, were you able to post that working Arduino code for the rotary encoder? I've been trying for the last week to understand how to use the CRC-xmodem and how to structure the packet to initialize the motor with absolutely no success. I hate drinking from the well and not filling it, I can assist with the design aspect of the app in MIT APP2 builder - I have created app on that platform before.
Reply 2 years ago
Hey thank you so much for the update and your efforts in this project. Super interested in how you approached the problem of figuring out the frequencies used by the motor controller.
My goal is to apply your theories to the Zhiyun Trans FF Motors which has a USB-c input for the power supply needs of the motor. This is the main reason why I haven't purchased the Titla Nano Wireless system, which for best results requires the "wireless" (lol) unit to be connected to a 12v source like v-mount batteries.
Which sensor are you going to use as the input? Potentiometer? Or Rotary Encoders?
I play in the realm of industrial design and rapid prototyping, if you need any 3D modeling or printing of parts please allow me to pay you for your time invested in this project. I attached pictures of a 2-3 day project to create a hood system for my camera rig (BMPCCK 4k, small-rig cage) as a reference- let me know how I can help. Maybe the design of a focus wheel?
Thanks again!!!
2 years ago
Great stuff ! I’m very interested too in your Arduino code with rotary encoder. I’m searching a way to control the Gudsen ifocus M that has STM32F302C8 and MP6536. This one is powered (no built-in battery) and controlled by the gimbal through a 4 pins jack. I have no Android device :-( Thanks for your help.
Reply 1 year ago
just seeing these comments now, 2 years later, SORRY!
did you get it working ? I have attached a sample code as step 6, i think i had a rotary encoder working at a basic level from an arduino generating the injected packet. give it a shot !
Question 2 years ago
This is the BEST halfway done project I’ve ever seen!
Mate please! Give us the commands.
We can make our own arduino thingies then.
Looking forward to that so much, then I’ll be your servant some other life for it ;)
Answer 1 year ago
just seeing these comments now, 2 years later, SORRY!
did you get it working ? I have attached a sample code as step 6, i think i had a rotary encoder working at a basic level from an arduino generating the injected packet. give it a shot !
2 years ago
Hi,
any chance of that arduino code or even better a standalone controller?
Touch control is not the most reliable nor intuitive thing.
Thank you!
3 years ago
Is there a way to get a source code for an app?
Or can you point me where or how to get a tx packets?
Thank you in advance!
3 years ago
Thanks for sharing your project :)