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 liked the protocol section that you have mentioned in this post Because I am VPN user and by default my VPN set udp protocol that is why I have faced few issues with my internet, However, I have read many guides related to VPN protocols but that you post. It is very helpful.
Was looking for best VPN services online and how to install a VPN network on android. Got great info from your thread. Found great and positive expressvpn review online and got to know about its fast internet speed and supreme security. Going to take yearly plan for this VPN.
Cjg... since a small, light android device is the optimal on board unit, do you think this 67 gram unit would run the software on the aircraft?
http://www.banggood.com/ZGPAX-S82-1_54-inch-MTK6572-1_2GHz-Dual-cor...
Please correct me if i am wrong,
is it possible to build this kind of setup:
APM telemetry port (GND,tx,rx,vcc) >>>> FTDI >>>OTG >>> android phone (usb host) >>> andorid app that till relay from serial to tcp or udp(help me to find one except getblue)
i think it is much better solution than use of bluetooth inside of aircraft.
i will try today or tomorrow to setup this , but please correct me if this is even possible, i am IT guy weak in electronics.
Thanks
Hey I just did this except without FTDI, I used the APM 2.5's onboard usb interface connected directly to my phone via usb otg. The app I used was TCP_Serport which seemed to have trouble picking up the usb initially but once it did was rock solid. I put a vid of it working up on youtube here.
Wow I sound like a nerd when I fit that many acronyms into a single post :).
Nice. Did you have/see "potential" issues between the two powersources
a) APM
b) Android Mobile?
I don't know anything about (a backloop), i always was concerned about this. If you know something about this, please contribute, thanks.
HI, i can ping my local ip, but I can't get a mavlink connection, don't know why, I set port at 5000
thanks!
I have been very interested in doing something much like this with a dronecell on a hexcopter, im glad to hear you have managed to acheive this. Do you think i would have to alter the arducopter code for the link between the dronecell and apm for it to work properly?
i justify that the routers with DD WRT firmware offer VPN server feature with which you can set multiple clients to connect on router simultaneously. It works perfect!
i use Windows 7 Enterprise with no limitation in network infrastructure but this is still a problem. You use router with custom firmwire like DD WRT or similar? i see that the DD WRT support in some devices PPTP Server feature. Now i am trying an old Linkys VPN router wich support PPTP Server and parallel connections. We will see.
You have ever use external Vpn server, (a cloud service) to connect the two parts with an outside(out of your home network) host server?