====== Télémétrie ======
Pour pouvoir debugger, comprendre le comportement du drone et éventuellement utiliser la charge utile (quelle qu'elle soit) en direct, il faut pouvoir lui transmettre autre chose que des commandes de vol et recevoir un maximum de paramètres de vol. Il faut donc pouvoir streamer des données entre le PC et le drone alors même que le drone est en vol.
Dans ce projet, j'ai fait le choix (au 20/01/2020) de transmettre les commandes de vol avec des modules Xbee mais le reste des communications se fait par wifi.
Comme, il est possible de communiquer avec le Raspberry PI Zero WH, qui contrôle le drone, par wifi, profitons en pour créer un programme qui transmets et envoi des informations par socket. Pour cela, on crée un programme python client sur le PC et un programme python serveur sur le Raspberry PI.
Cependant, il y a un hic : il faut qu'une box soit a proximité pour produire le réseau wifi sur lequel le PC et le raspberry sont tous les deux connectés. Cela devient un problème si on veut faire voler le drone dans une zone éloignée des habitations ou simplement dans une zone sans wifi (ce qui est de plus en plus rare de nos jours !).
Pour contrer cela, il est possible de faire créer son propre réseau wifi au raspberry pi (s'il y est équipé d'une antenne wifi évidement, ce qui est le cas du Zéro WH).
===== Créer un réseau Wifi Ad-Hoc avec un Raspberry PI =====
**Sur le Raspberry**
* Vérifier la présence de l'interface réseau actuelle en faisant "ifconfig" : "wlan0"
* Modifier le fichier : /etc/Network/Interfaces en y ajoutant (et en supprimant le reste / faire une copie de sauvegarde):
auto wlan0
iface wlan0 inet static
address 192.168.4.1 (ou une autre adresse qu'on choisi)
netmask 255.255.255.0
wireless-channel 1 (ou un autre channel / le 1 par exemple)
wireless-essid WifiDuCapitaine (c'est le nom du réseau créé)
wireless-mode ad-hoc
* On télécharge et on installe le soft pour que le RPI puisse gérer les connexions et donnent des adresse IP (on en fait un serveur DHCP). On tape la ligne de code suivante dans une console:
sudo apt-get install isc-dhcp-server
* On modifie le fichier /etc/default/isc-dhcp-server et on met l'interface "wlan0" entre les guillemets
* On modifie le fichier /etc/dhcp/dhcp.conf: on décommente (le dièse est un commentaire) "authoritative;". On décommente et on modifie les lignes suivantes:
subnet 192.168.4.0 netmask 255.255.255.224 {
range 192.168.4.150 192.168.4.170;
option domain-name-servers ns1.internal.example.org;
option domain-name "internal.example.org";
option routers 192.168.4.1;
option broadcast-address 192.168.4.255;
default-lease-time 600;
max-lease-time 7200;
}
* Rebooter le Raspberry
**Sur le PC (sous Windows)**
* Quand on détecte le nouveau réseau wifi on peut pas directement ce connecter
* On va dans le centre de réseau et partage et on crée manuellement une nouvelle connexion réseau qu'on appelle du meme nom que le réseau produit par le Raspberry PI
* On peut vérifier aussi qu'on peut faire ça en tapant la commande dans une console (Win+r -> cmd) :
netsh wlan show driver
Si le paramètre "Réseau Hébergé pris en charge" est oui alors c'est bon.
* Il faut paramétrer la nouvelle connexion wifi en tapant la ligne de commande suivante:
netsh wlan set profileparameter name="WifiDuCapitaine" connectiontype=ibss
* Finalement pour se connecter on écrit dans la console :
netsh wlan connect "WifiDuCapitaine"
On est alors connecté et on peut utiliser une console SSH ou une prise de contrôle à distance comme le VNC.
Si le PC est sous Linux, ce dernier doit pouvoir directement se connecter au WiFi Ad-Hoc