It’s been more than a year since I first set out to make the camera move around in a repeatable way. Sure, I was busy with another Chinese action movie, and life and such, but mostly it’s taken this long because building a robot is hard.
I knew it was going to involve challenges, but I was really naive. But you can’t know how much you didn’t know, until you do know.
Very quickly I realized that if I wanted the camera to move around on it’s own, I would not be able to use the wired controller that I’d just built. I would need to replicate the functionality, wirelessly. If I was going to be sending signals to control the camera wirelessly it made sense to send the controls for the robot the same way. I was familiar with midi over bluetooth, so I started there.
Firstly, I tried to make it work with bluetooth and midi. That midi ended up having too many limitations, and I wanted to go with a protocol called Open Sound Control, and OSC doesn’t work over bluetooth.
So I tried wifi, but I started with the wrong chip. The board is a nice board, but as I was warned in the description, it is new and all features haven’t been implemented. It took me many months to realize that I needed some of those features. When I got a hold of the adafruit M0 wifi feather I started making swift progress.
I am able to make the feather a wifi access point, so it is completely self sufficient. My phone or computer joins the wifi network created by the cambot. Cambot is running a UDP service, and OSC software on my phone can communicate over UDP to send OSC messages directly to cambot. In OSC the message can be anything, a number, a text string.
With a basic interface of sliders and buttons, I can control almost every aspect of the camera.
The controller is very similar to the wired controller, except all of the physical buttons and the touch interface are replaced by the phone screen, and the screen is much smaller. Once the OSC data is received from wifi connection, the controller acts very much like the wired controller. Instead of a physical encoder spinning to set the focus, its a touchscreen slider. Any data sent from the controller to the camera is sent the same way, using the sBus protocol. This controller is powered by the camera the same as the wired one.
But once the OSC data is received by the arduino, it doesn’t have to go to the camera. I can run a servo that can change the zoom or focus of a manual lens, and I’ve been playing with a piece of LCD that can darken, possibly automating a neutral density filter.
I could also control servos and stepper motors to animate the cambot, that’s next.