Communication

Pour permettre l'interaction entre la tablette Android et le drone ou le simulateur, il fallait gérer la communication entre ces deux périphériques. Tout d'abord la pièce principale de cette interaction était le module WIFI de marque Lantronix.

Routeur :

Nous avons commencé par configurer le routeur afin d'établir un réseau sur lequel l'ensemble des équipements se connectaient.
Cette configuration se fait, après installation via un CD, à partir d'une interface Web.

Module WIFI :

I – Présentation du module WIFI :

Ce module module sans fil est un module WIFI Matchport b/g de Lantronix. Ce module supporte deux
version de la norme IEEE 802.11, la version b et la version g. La dernière version est la version n, qui
à été conçu pour amélioré le débit de la communication sans fil. Cette dernière version n'est pas supporté
par notre module WIFI. Dans notre cas, cela ne pose pas vraiment de problème car nous n'avons pas besoin d'un
fort débit pour ce que l'on souhaite réaliser.

Figure 1 : Module WIFI Lantronix MatchPort b/g

Ce module est assez complet, en effet ce module inclut plusieurs services, comme par exemple un serveur
web ou encore un serveur de messagerie. Dans notre contexte nous avons seulement utilisé l'interface web pour
mené à bien la configuration de notre module. Il est aussi possible de configurer le module par telnet via le
port série. Pour la configuration de notre module nous avons aussi utilisé le logiciel DeviceInstaller.

II – Configuration du module WIFI :

Tout d'abord la tablette Androïd ne supporte pas le réseau Ad-Hoc, donc il faut configurer le module en
mode infrastructure. De plus il faut donc fixer une adresse Ip pour le module WIFI, ainsi la tablette envoie ses
informations sur cette adresse directement.
Pour débuguer la configuration du module nous avons utilisé l'hyperterminal qui nous permetait d'obtenir
les mêmes options que DeviceInstaller.

Le protocole :

Pour pouvoir analyser les données envoyées par l’application Android, il fallait
définir un protocole. Nous avons donc choisi d’utiliser le protocole suivant:

LETTRE : Valeur

Nous avons utilisé certaine lettre pour représenter un mouvement du drone. Ainsi le
Z représente l’altitude, le Y le cap (Yaw), le P le tangage (Pitch) et le R le roulis (Roll). De
plus, les deux points permettent de séparer le type de commande des valeurs. Le protocole
inclus également le point d’interrogation permettant une demande effectuée par le
simulateur à l’application Android. Cet envoi de données par le simulateur n’a pas été géré.
Les valeurs sont des inclinaisons (de -10 à 10), correspondant à celles de la tablette ou du
smartphone, provenant ses accéléromètres.

Les différentes communications :

Communication Module Wi-Fi - PC par port série :

La communication par le port série s’est faite par le biais de la reprogrammation d’un
hyperterminal en langage C. Nous avons utilisé ce type de communication afin d’envoyer les
données récupérées de la tablette grâce au module Wi-Fi par le port série. Ce programme
fut complexe à réaliser puisque Windows ne gère pas l’utilisation directe des ports série. Il a
donc fallu, après quelques recherches sur Internet, utiliser une structure complexe
représentant un port série.
L’étape principale a été l’initialisation de la
structure DCB permettant de respecter la configuration de l’envoi des données par le
module Wi-Fi. Comme par exemple l’initialisation à 9600 bauds pour la vitesse de réception
des données.

Communication directe Android-PC :

La communication directe en UDP, sans passer par le module Wi-Fi, permet
l'interaction entre l'application Android et le simulateur. Celle-ci, réalisée en langage C, est
intégrée au simulateur. En résumé nous avons donc intégré un serveur UDP à Raydium, afin
de récupérer les valeurs d’orientation envoyées par la tablette ou le smartphone Android au
simulateur. La fonction les récupérant est ensuite appelée par la fonction « step » du
simulateur.
Nous avons utilisé une socket non bloquante :

id_de_la_socket = socket(AF_INET,SOCK_DGRAM,0);
ret = ioctlsocket(id_de_la_socket,FIONBIO,&mode);

Communication, écriture sur le port série du microcontrôleur :

Cette communication permet au simulateur, qui reçoit les données, de les envoyer
au microcontrôleur qui ensuite effectuera les calculs pour gérer les mouvements du drone,
dans le but d’alléger le simulateur 3D. Ce code est contenu dans le programme du port série
mais cette partie n’a pas été intégrée au simulateur.

Gestion du simulateur par le clavier :

Cette interaction est directement liée au simulateur. Nous pouvons donc commander
le drone virtuel directement au clavier. Cette partie a été réalisée par le binôme s’occupant
du simulateur.