Robots suiveurs 2 : Différence entre versions
| Ligne 8 : | Ligne 8 : | ||
De plus, les débits disponibles ne semblent pas dépasser 1 mot/s.<br /> | De plus, les débits disponibles ne semblent pas dépasser 1 mot/s.<br /> | ||
Il semblerait possible d'envoyer un mot clé "ok", puis la distance distS1 entre le slave 1 et le master, puis la distance distS2 entre le slave 2 et le slave 1, puis l'action à réaliser (sur deux caractères).<br /> | Il semblerait possible d'envoyer un mot clé "ok", puis la distance distS1 entre le slave 1 et le master, puis la distance distS2 entre le slave 2 et le slave 1, puis l'action à réaliser (sur deux caractères).<br /> | ||
| − | Le tout avait été fait en prenant l'option d'un serveur sur chaque esclave, et le maître connecté | + | Le tout avait été fait en prenant l'option d'un serveur sur chaque esclave, et le maître connecté en tant que client aux deux esclaves car la carte ESP32 possède plusieurs interfaces wifi (4).<br /> |
| − | Cependant, le protocole UDP over WiFi permet d'utiliser toutes les possibilités du WiFi sans dépendre du nombre de liaison série disponible. De plus, ce protocole est relativement rapide à intégrer lorsque le travail précédent a été réalisé. | + | Cependant, le protocole UDP over WiFi permet d'utiliser toutes les possibilités du WiFi sans dépendre du nombre de liaison série disponible. De plus, ce protocole est relativement rapide à intégrer lorsque le travail précédent a été réalisé.<br /> |
| + | C'est pourquoi nous utiliserons le protocole wifi UDP pour la communications entre maitre et esclaves.<br /> | ||
| + | Afin de simuler l'appui d'une commande sur l'application, nous avons mis en place un bouton poussoir qui, en s'actionnant, enverra les commandes entrées aux esclaves grâce à la différenciation des adresses IP.<br /> | ||
'''<big>b) Communication Bluetooth</big>''' | '''<big>b) Communication Bluetooth</big>''' | ||
Version du 7 avril 2018 à 16:42
Projet du module Robots connectés 2017/2018.
1. Application et Communication WiFi et Bluetooth
a) Communication WiFi
Il a été constaté qu'en utilisant une carte Sparkfun ESP32 Thing en tant que point d'accès et une autre en client, la communication ne semble pas fonctionner lorsque les deux cartes se trouvent à moins de 20cm l'une de l'autre.
De plus, les débits disponibles ne semblent pas dépasser 1 mot/s.
Il semblerait possible d'envoyer un mot clé "ok", puis la distance distS1 entre le slave 1 et le master, puis la distance distS2 entre le slave 2 et le slave 1, puis l'action à réaliser (sur deux caractères).
Le tout avait été fait en prenant l'option d'un serveur sur chaque esclave, et le maître connecté en tant que client aux deux esclaves car la carte ESP32 possède plusieurs interfaces wifi (4).
Cependant, le protocole UDP over WiFi permet d'utiliser toutes les possibilités du WiFi sans dépendre du nombre de liaison série disponible. De plus, ce protocole est relativement rapide à intégrer lorsque le travail précédent a été réalisé.
C'est pourquoi nous utiliserons le protocole wifi UDP pour la communications entre maitre et esclaves.
Afin de simuler l'appui d'une commande sur l'application, nous avons mis en place un bouton poussoir qui, en s'actionnant, enverra les commandes entrées aux esclaves grâce à la différenciation des adresses IP.
b) Communication Bluetooth
Il a été mis en oeuvre une communication Bluetooth entre un smartphone et l'ESP32 du maître. Les données reçues sont ensuite aiguillées vers un port série de l'ESP32 pour l'envoyer à la Teensy dans le but de piloter le moteur. Il existe 2 types de communication série, HardwareSerial et SoftwareSerial. Nous avons choisi d'utiliser le SoftwareSerial afin de laisser libre l'UART2 pour la communication avec le LIDAR.
Remarque: L'accès à l'UART1 n'est pas immédiat, il faut faire une manipulation (simple) mais qui risque de rendre instable le système. En effet, l'UART1 est connecté à la mémoire FLASH de l'ESP32.
Les librairies utilisées proviennent des liens suivants:
c) Application Android
Lien vers l'apk de l'application
Afin de diriger le robot maître, il est nécessaire de créer une application android qui va donc envoyer les commandes nécessaires. Nous avons dans un premier temps mis en place des commandes correspondant aux différentes actions réalisables par le robot que nous pouvons retrouver dans le tableau suivant :
| Direction | Commande |
|---|---|
| Avancer | av |
| Reculer | ar |
| Droite | dr |
| Gauche | ga |
| Avant-droit | ad |
| Avant-gauche | ag |
| Arrière-droit | bd |
| Arrière-gauche | bg |
| Chorégraphie rotation | cr |
| Chorégraphie crabe | cc |
| Chorégraphie zigzag | cz |
| Stop | st |
Le principe de l'application doit donc gérer les actions du robot en envoyant une chaîne de caractères (correspondant aux commandes vues précédemment) et gérer la distance de l'esclave 1 par rapport au maître et celle de l'esclave 2 par rapport à l'esclave 1. Nous devons donc mettre en place autant de boutons que d'actions possibles et 2 zones de texte permettant de récupérer les différentes distances entrées par l'utilisateur.
De plus, l'application doit communiquer en Bluetooth avec le robot donc nous ajoutons un boutons permettant de voir et sélectionner les périphériques connectés en Bluetooth disponibles. (cf. photo suivante)
Nous créons l'application à l'aide de App Inventor 2 car ce dernier gère plus facilement le Bluetooth. En effet, après plusieurs essais sous Android Studio, nous n'arrivions toujours pas à gérer le Bluetooth et l'émulateur était vraiment très lent. App Inventor 2, utilise le prince de "Drag & Drope" ce qui permet de créer aisément une interface graphique ainsi que le programme.
Concernant le code, à chaque événement sur un bouton, on envoie la chaîne de caractères correspondante avec un "/" afin que la réception Bluetooth puisse séparer les différentes informations qu'elle reçoit.
Pour la distance, l'utilisateur la rentre dans une zone de texte et appuie sur valider. Donc, au clic, nous récupérons cette valeur que nous mettons dans une variable et que nous envoyons par la suite.
Participants : ARNALDO ALVES Lucas, BOUCHIKHI Al mehdi, BRIALON Auriane, CARVALHO FONTÃO Caroline, DALIL Hajar, GALLEY Nicolas, KASZUBIAK Grégory, KRA Kouassi, OKITAUDJI Florian, RAMOS Théo, SANE Baboucar, SILVESTRE Charles, VERGEZ Romain.