We developed a simple controller to pilot drones/cars/boats/etc. via 3G cellular connection, using a custom PCB on top of a Raspberry A+ with a camera.
Here is a video of test flight controlled via a 64Kbps cellular connection:
A view of the Raspberrry Pi "Hat":
The PCB in a prototype 3d-printed case:
All the source files, schematics and CAD files are open source and on github:
https://github.com/nfco/cellpilot
Any feedback would be welcome in order to guide the development of the project.
Anyone else interested in FPV control over cellular connection? If so, what setup are you now using?
Comments
Hi David, its quite interesting, I have four questions to you;
1. Will it support fixed wing aircraft as well as multi-rotors ?
2. I am referring to $35USD + Shipping You mentioned PCB, is it a completed assembled and tested board or bare PCB without components + case ? I could guess but to get things clear in initial stage itself.
3. If high speed data connection available, can it support HD video I mean atleast 720p ?
4. If due to any reason, 7500US$ goal could not be raised then would my money be refunded back ?
There should not be any firewall issues, because the current system allows to use an external UDP relay server to route the traffic. (the code for the UDP relay is only 20 lines of python and is in the /server directory of the repo).
I also tested to connect directly to the 3g device using STUN (because most 3g devices are behind a NAT). This also works but I think is less reliable because I think the IP address of the 3g device can change when moving between cell towers, etc.) Also each 3g network has a different type of NAT and symmetrical NATs can be difficult to connect to.
So currently, I fly by using a UDP relay, it works behind all routers and the latency is a little bit more than using STUN, but not more than around 100ms, which makes it possible to pilot without problem.
Ah ok, understood.
i think that would be not too difficult and the hardware should support it already, but currently I'm not using Mission Planner myself. I just made a small client program from scratch with SDL in C+lua (in the repo) that runs on my laptop and that I control using a gamepad. (I connect laptop to TV and control the drone/car with the wireless gamepad, I use a logitech F710)
I also have some plans to port this client program to android/IOS (SDL can be compiled on different platforms quite easily). This way I can control using a special joystick such as this one: http://www.lazada.co.th/ipega-joystick-pg-9023-839950.html .
Thanks David - so you can make a version that allows me to connect from Mission Planner to the APM/Pixhawk? Barring any firewall issues on the SP of course.
I think most of us here are at DIYD is fine to print or cut our own casings in the mean time!
I would also like to produce a first batch of controllers (maybe 50 pieces). Currently, the prototype PCBs are assembled by hand and the case is 3d printed, which is time consuming.
The PCB itself should cost less than 10$ to produce (board+assembly+components, without sensor module).
For the box, I would like to use a plastic injection mold but AFAIK it costs several thousand dollars to make such a mold. In the mean time, it's possible to use 3d printing to make the enclosure but the finish is not so good compared to a mold and the unit cost is high.
I would appreciate suggestions if anyone has ideas on how to produce a first batch, or perhaps it's unnecessary and people prefer to build PCB and 3d-print case on their own?
Yes of course.
Actually in a previous test version, I showed horizon, altitude, etc. in a HUD display over the client. Now stripped down everything to show only battery voltage in order to clean the code before put on github, I will add it back soon.
The strange colors are due to PiNoir camera that I used (was only camera I had on hand yesterday...)
On the PCB it's also possible to solder a 10DOF module to get sensor data directly. Some months ago I made a prototype to control the drone without external controller for stabilization directly from gyo/accel/baro/gps velocity sensor data. That code is in the /firmware_old directory in repo, I still need to port it to STM32 (used AVR before when testing an earlier prototype).
So now the board still links to an external controller for stabilization (can be any kind: apm,pixhawk,naza,etc.). There are 2 serial ports in the connector pins and also a CAN bus transceiver to connect to external controllers to read telemetry data for example. (the STM32 chip on the board has 3 serial ports but 1 of them is connected to the Pi GPIO to upload firmware, send commands, etc.)