OK, there is a lot of discussion about this topic. There are also some solutions (dronecell, phonedrone: http://store.diydrones.com/PhoneDrone_Board_p/br-phonedrone.htm ) but for me these solutions did not satisfy my expectations. So I started to develop a more simple set up. But there are still some points for improvement.
1) The philosophic question, should the drone act as server or client?
Thinking a lot, I believe the drone should act as server, so the login procedure is done on the ground. There are other arguments as well.
2) The Protocols TCP or UDP:
In theory the best way is to use UDP. For now, I decided to go with TCP since the components are ready.
3) The Parts:
APM, Bluetooth Modul, Android mobile/handset (xperia / nexus) and a Notebook with Mission Planner and a Browser. That’s all.
4) The Telemetry over 3G Setup:
4.1. Connection between APM and Android:
These problems drove me nuts (the phonedrone board is cool, but for me too expensive). So I decided to use a serial connection with the help of one of these 7$ HC-06 (S) Bluetooth moduls (https://www.google.at/search?q=HC-06+bluetooth).
Excursus:
HC-06 comes in two styles: master or slave. I think the client one fits better. There is a HC-05 as well that could act as Client and as Server (http://cxem.net/arduino/download/HC%20Serial%20Bluetooth%20Products%20201104.pdf)
Hooking up HC-06 with the APM I is similar to the xbee connection (http://code.google.com/p/ardupilot-mega/wiki/APM2Wireless). The HC-06 needs a 3,3V input so you have to ad a 1K resistor here (RX, TX, Grnd works without). There is also a mysterious HC-06 v1.04 which should accept the 5V input-power of the APM without resistor as well.
4.2. Android Mobile/Handset:
For my testing I used a sony xperia. A nexus would be better. In the long run it is easier to change the kernel (settings and so on). For Video transmission the camera of the handset is important as well.
4.3. Data Plan:
If the Drone is acting as the Server, a data SIM with open ports is needed (else you has to set up your drone as client). This is difficult to find. In my country 3G internet is common. It is a standard option (big thanks to drei.at). For video you should also use a flat rate SIM.
4.4. Connection APM – Xperia – Internet – Mission Planner:
At first I wanted to write the code myself … but you know:
4.4.1 Bluetooth SSP – android – tcp/ip connection:
I found two APPs in the Android Google Playstore:
GetBlue Demo: https://play.google.com/store/apps/details?id=com.tecit.datareader.android.getblue.demo
or http://www.tec-it.com/en/download/data-acquisition/getblue/Download.aspx
Connection Terminal:
https://play.google.com/store/apps/details?id=app.bluetooth&feature=more_from_developer#?t=W251bGwsMSwxLDEwMiwiYXBwLmJsdWV0b290aCJd
The setup of GetBlue was easier but it is a Demo version and you just can use it for free for 90 days but it should work longer … great piece of software, btw.
Connection Terminal:
a) Configuration/Bluetooth (Pair devices, Connect Automatically)
b) Configuration/Network/TCP server (Port, Integrate with Bluetooth)
Then start server and you are all set. Now you have to figure out the IP address of your handset. You could see it as Local IP on the Dynamic DNS Client.
Dynamic DNS Client:
https://play.google.com/store/apps/details?id=org.l6n.dyndns&feature=more_from_developer#?t=W251bGwsMSwxLDEwMiwib3JnLmw2bi5keW5kbnMiXQ..
4.4.2 Optional: Use Dynamic DNS Client to give your handset/drone a Domain Name:
Use one of the common DNS services (http://en.wikipedia.org/wiki/DynDNS eg. http://dyn.com/dns/)
eg.: mydrone.dyndns.com
I also use Dynamic DNS Client:
https://play.google.com/store/apps/details?id=org.l6n.dyndns&feature=more_from_developer#?t=W251bGwsMSwxLDEwMiwib3JnLmw2bi5keW5kbnMiXQ..
OK, NOW YOUR BIG MOMENT:
… Start your APM
… Start Dynamic DNS Client
… Get your IP address
… Start GetBlue or Connection Terminal
4.4.3 Mission Planner:
a) So your PC/Notebook should be connected with the internet.
b) Then you should check if the TCP Port (which you use in GetBlue or Connection Terminal) of your PC/Notebook is open. If not, you have to check your firewall and/or router.
c) Ping your Mobile/Drone IP or Domain Name.
d) Start Mission Planner, connect over TCP (add the IP and the PORT of your Mobile/Drone) and …
… you should see your MAVLINK over IP data coming in.
5) The Video over 3G Setup:
For Video I also use the Cam-Modul of my Android Handset and an APP of the playstore.
IP Webcam (free):
https://play.google.com/store/apps/details?id=com.pas.webcam&hl=de
IPCam Pro (1,49$):
https://play.google.com/store/apps/details?id=christoph.nikolay.android.ipcam&feature=more_from_developer#?t=W251bGwsMSwxLDEwMiwiY2hyaXN0b3BoLm5pa29sYXkuYW5kcm9pZC5pcGNhbSJd
a) Start IP Webcam
b) Start Browser on your PC/Notebook
c) Add your IP and Video Port: e.g. http://xxx.xxx.xxx.xxx:8080 or http://xxx.xxx.xxx.xxx:8000, and …
… you should see the VIDEO of your android mobile/handset coming in.
(Using IPCom on 3g/HSDPA with VLC I have a delay of 1-2 sec but with Browser and building Videocodec only 0.2 - 1.0 sec !!!)
6) Future:
Using UDP and/or Client setup.
… that is it. Hopefully we will see more androids in the sky. best .cj.
christian joachim gruber
[meta]contemporary art/s
Replies
i want to add an interest but warning point. if someone try to setup a vpn network with two devices must take into consideration that through your windows home pc you can't handle two parallel connection. the fisrt time my laptop had internet connection through a the wifi of my house but when i tryed outside to connect to my vpn "server" there was no way to connect simultaneously. Now i will try with a vpn router extra( because i already have one) but i think that openvpn could solve this warning with no issue and need for extra equipment. CJG is it right?
i use spp mirror too with great yield. an other question...with your openvpn you use encryption, i ask beacause with traditional connection with allowing incoming calls (network settings) i faced some times with messages like busy server or similar, after disable encryption worked fine. you have any idea?
wow, to add vnc is neat. Thanks for the hint of the native device. I don't know which BT app you use, but if you have time, could you test the free "spp mirror" as well? It should be more safe, because of the BT auto-reconnect feature ...
the same setup but with xperia mini x10! i shared photos in my album profile page. i use also a vnc server-client to handle remotely the android phone. there is also a feature with which you can set the ip webcam of android phone as a native device of your pc and then you can integrated into the planner HUD.
anyway is excelent job...one last feature for improvement is a way to see in hud the signal quality of the android phone in order to justify that you are in a 3g area network. thanks!
cjg please PM me, i get the module and i think that some configuration is required before.please!
i will test in two weeks! have ever checked with UDP connection?
thank you very much. very useful informations.
Do you believe that through the BT the devices can cooperate on air for improve the calculations or any similar work? i mean that using the powerful arm processor and android os, could assist the whole project offering goods like failsafe storage, advanced calculation e.t.c. and act as a medium step between APM and your GCS. All of that considering that a new application or shell script run on android device.
Now there is another app in the market, which offers a simple "BT SPP (serial) to TCP" function, called "Serial Mirror". There is an auto-reconnect option for BT. So, one concern less.
https://play.google.com/store/apps/details?id=com.jeffboody.SPPMirr....
you suggest the slave module? this is clear.
did you see how the whole connection reacts in case of lost signal for a moment from both sim and/or bluetooth (case of faillure) ?