Comment piloter un objet technique « Arduino » avec un Smartphone ?
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
La chaîne d’information est découpée en 2 parties
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
SmartphoneCarte Arduino UNO
Communication sans fil Communication filaire série
Module Bluetooth
La communication
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Le Bluetooth est un protocole de communication bidirectionnel proche du WIFI.
Il fonctionne sur le modèle Maître / Esclave.
Le maître, c’est lui qui propose aux autres dispositifs de s’appairer.
L’esclave lui, ne peut que recevoir les demandes d’appairage.
Dans notre cas le maître sera le smartphone et le module Bluetooth sera l’esclave. Maître
Esclave
Remarque : un dispositif maître peut communiquer avec plusieurs esclaves et former un petit réseau.
La communication
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Quel module Bluetooth utiliser ?
Le HC-06 : 4 broches. Ce module n’est qu’esclave. C’est le module que j’utilise sur mes maquettes.3 - 4€ sur ebay.
Le HC-05 : 6 broches. Ce module peut être « maître » ou « esclave ».
On peut trouver le HC-06 sur platine Groove, sinon on peut utiliser un câble de conversion 4 broches femelles standard/Grove.
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
La communication
Comment appairer le module Bluetooth avec un smartphone ou autre ?
1. Activer le Bluetooth;2. Le module apparait dans la liste des appareils disponibles, le sélectionner ;3. Saisir le code pin. Par défaut avec un HC-06 : 1234;4. Si le module est appairé, il doit apparaitre dans la liste des appareils associés;
1
2
3
4
Remarque : le nom du module HC-06 peut être changé en utilisant les commandes AT voir Tuto_Renommer_module_HC06.pdf
La communication filaire série
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Module Bluetooth
Le module Bluetooth va dialoguer avec la carte Arduino via une communication série asynchrone.
Pour cela le microcontrôleur de la carte Arduino UNO possède un émetteur-récepteur asynchrone universel.
Liaison série asynchrone
On parle de UART pour Universal AsynchronousReceiver Transmitter.
Broche D0 -> RX (réception)Broche D1 -> TX (transmission)
ATTENTION les câbles doivent être croisés !
5v0v
Remarque : le module Bluetooth doit être débranché pour téléverser un programme dans l’Arduino !
La communication filaire série
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
RAPPEL les câbles doivent être croisés !
Shield capteur V4Shield capteur Grove
Positionner les cavaliers sur COM
Comment câbler le module Bluetooth sur les Shields
Positionner l’interrupteur sur 5v
La communication filaire série
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Une communication série asynchrone.
Cette communication est dite asynchrone car aucune horloge n’est transmise entre le récepteur et l’émetteur.L’émetteur et le récepteur doivent donc être paramétrés sur la même vitesse de transmission.La vitesse de transmission est définie en bits/s.
Le module HC-06 est paramétré par défaut à 9600 bits/s.
ATTENTION par défaut mBlock communique à 115200 bits/s. La liaison série s’initialise en définissant la vitesse à 115200 bits/s via l’instruction serial.begin()Remarque : La fonction setup est exécutée au démarrage de l’Arduino.
Blocs Arduino de mBlock
La communication filaire série
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Comment paramétrer la vitesse de communication ?
2 solutions :
- Modifier le paramétrage du module HC-06 (possible en utilisant les commandes AT)
- Utiliser une librairie adaptée sous mBlock
Dans la librairie du robot la vitesse de communication est paramétrée sur 9600 bits/s
Blocs de la librairie du robot
La communication filaire série
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Comment recevoir des données ?
Les fonctions du langage Arduino :
✓ Serial.avaible() -> cette instruction renvoie le nombre d’octet (mots de 8bits) disponible. Ce sont des données reçues et stockées dans la mémoire tampon du module UART.Dans ma librairie, le bloc « une donnée Bt est disponible » détermine si le nombre d’octet disponible est > 0
✓ Serial.read() -> lit les données reçues
Blocs de la librairie du robot
La communication filaire série
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Comment envoyer des données ?
Les fonctions du langage Arduino :
✓ Serial.write() -> Écrit des données sur le port série. Ces données sont envoyées sous la forme d'un octet ou d'une série d'octets;
ATTENTION pour envoyer facilement des variables à virgule flottantes ou des caractères il faut plutôt utiliser la fonction print().
✓ Serial.print() -> Envoie les données sous forme de texte ASCII. Cette commande peut prendre plusieurs formes. Les nombres sont envoyés en utilisant un caractère ASCII pour chaque chiffre. Les flottants sont envoyés de la même manière que les chiffres ASCII, avec par défaut deux décimales. Les caractères et les chaînes sont envoyés tels quels.
Blocs de la librairie du robot
Blocs Arduino de mBlock Exemples :- serial.print(78) donne « 78 » ;- serial.print(1.23456) donne « 1.23 »;- serial.print(« Bonjour ») donne « Bonjour »;
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Table ASCII
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Trame en communication série asynchrone
Le dialogue entre le smartphone et la carte Arduino
02/05/2018
Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Extrait de programme App Inventor
Extrait de programme mBlock
Le téléphone envoie une donnée
Le dialogue entre le smartphone et la carte Arduino
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Extrait de programme App Inventor
Extrait de programme mBlock
Le téléphone reçoit une donnée
Créer son application Android avec App Inventor
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Créer son application Android avec App Inventor
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
La démarche :
1• On crée l’interface graphique à partir d’objets disponibles
2• On programme le comportement de l’application à partir
d’éléments graphiques, des blocs
3• On teste puis on compile l’application afin de l’installer sur
l’appareil mobile (création du fichier exécutable .apk).
Créer son application Android avec App Inventor
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Programmation Orientée Objet
On va associer à des objets des actions (appelées des méthodes).Exemples :
L’objet est un bouton
L’action est « au clic »
Cette routine sera donc exécutée à chaque clic sur le bouton « Déconnecter »
On cache ou on fait apparaitre le bouton en utilisant l’action « Visible ».La valeur est « Vrai » ou « Fausse ».
Remarque : Les objets ne sont pas que des éléments visibles, exemples : client Bluetooth, horloge, etc.
On demande à l’objet « Client_Bluetooth1 » de réaliser l’action de se déconnecter.
Créer son application Android avec App Inventor
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
2 solutions
En ligne : http://appinventor.mit.edu
Mais cela nécessite un compte Google par élève !
En local, sur le réseau :
Version portable à copier sur le poste prof.Tutoriel sur l’
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
L’utilisation d’App Inventor en local (version portable) :
Le dossier contenant tous les fichiers est copié à la racine du lecteur du poste profs.On clique sur l’exécutable AI2U.exe. On lance les serveurs en cliquant sur « Tous les serveurs ».
"Tous les serveurs" : lance les serveurs de développement et AI2 Starter"Développement" : lance que le serveur pour créer des applications"AI2 Starter" : lance le serveur qui permet de tester les applications en émulation ou directement sur votre matériel, en utilisant l’application "MIT AI2 Companion.pk""Arrêter tous les serveurs" : stoppe les serveurs
"Ouvrir AppInventor2" : lance le navigateur à l'URL locale 'http://localhost:8888/' pour se connecter au serveur de développement sur le poste prof.
"Quitter" : stoppe tous les serveurs et ferme le lanceur.
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
L’utilisation d’App Inventor en local (version portable) :
L’état des serveurs apparait dans des fenêtres « Invite de commandes »On peut contrôler que les serveurs sont bien opérationnels.
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
L’utilisation d’App Inventor :
On accède à l’interface via le navigateur :URL : 'http://localhost:8888’ sur le poste profRemarque : il sera peut être nécessaire d’autoriser l’adresse locale « localhost » dans les paramètres du serveur proxy du navigateur.
Ou
URL : 'http://adresse_IP:8888’ sur les postes élèves. En remplaçant adresse_IP par l’adresse IP du poste où est lancé le serveur.
Pour se connecter, On clique sur :« Click here to use your Google Account ».
On choisit un identifiant. Attention il faudra le mémoriser.
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Création de l’application : Commencer un nouveau projet
Vous pouvez basculer l’application en Français.
On crée un nouveau projet
Créer son application Android avec App Inventor
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Fenêtre en Mode « Designer »Création de l’interface
Fenêtre en Mode « Blocs »Création du programme
L’interface du logiciel
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Palette des composants disponibles(visible ou invisible à l’écran, exemple Timer, Client Bluetooth, capteurs, etc).
Rendu de l’interfaceAffiche l’écran en cours d’édition.
L’organisation des composantsAffiche les composants utilisés avec les relations parents/enfants
Les propriétés des composantsC’est ici que l’on personnalise les composants :- Alignement;- Dimensions- Couleurs;- Style;- Visible ou invisible;- Etc.
Toutes les propriétés peuvent être modifiées par une méthode dans le programme.
La fenêtre du Mode « Designer »
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Blocs associés à chaque composant utilisé
La fenêtre de programmation
La fenêtre du Mode « Blocs »
Blocs standards
La bibliothèque des blocs de programmation
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Création de l’application : Les premiers paramètres
On définit les paramètres généraux de l’application dans les Propriétés de l’écran « Screen1 »
Définir le nom de l’application
On peut importer un icône au format .png, tailles standards : 29px, 36px, 48px, 57px, 72px, …
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Mettre le dimensionnement sur Responsive afin que l’application s’adapte à la taille de l’écran de l’appareil.
On peut cacher le titre de l’écran « Screen 1 »
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Création de l’interface de l’application :On définit en premier les différentes zones nécessaires sur l’écran « Screen1 », pour cela on fait glisser les objets de disposition dans l’écran.
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Création de l’interface :On paramètre les propriétés des différents objets
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Création de l’interface :
On rajoute un Label dans la zone supérieure, puis on paramètre l’objet.
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Création de l’interface :On rajoute une image, un sélectionneur de liste (pour afficher les dispositifs Bluetooth disponibles et se connecter) et un bouton (pour déconnecter l’appareil).
Remarque : afin de faciliter la lecture du programme, ces objets seront renommés avec un préfixe (Bt_-> Bouton).
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Création de l’interface :
Paramétrage des objets : image, sélectionneur de liste et bouton.
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Création de l’interface :
Remarque : les objets cachés peuvent être affichés.
Au lancement de l’application, nous allons cacher le bouton Déconnecter pour n’afficher que le bouton Connecter.
Pour cela on décoche le paramètre « Visible » du bouton déconnecter.
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Création de l’interface :
Mise en place des boutons de commande. Il faut penser à les renommer.
On supprime le texte et on insère les images.
Remarque : Par défaut la résolution de l’écran est définie en 480x320 dans App Inventor.Pour remplir la largeur de l’écran les images ont été créées en 100x100.
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Création de l’interface :
Mise en place de l’ascenseur pour gérer la vitesse + un label Vitesse. Penser à renommer les objets.
Remarque : Pour simplifier la programmation on peut définir la valeur max à 255 (PWM -> variable sur 8 bits), la valeur min sera définie à 50 car à cette vitesse le robot n’avance pas.Les valeurs < 50 serviront comme données pour le mode de déplacement.
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
Création de l’interface :
Mise en place des composants Client_Bluetooth et d’une Horloge
L’horloge servira pour créer un évènement périodique (toutes les 0,5 s).Lors de cet évènement, on récupèrera les données émises par l’Arduino.
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
La programmation de l’interface :
On bascule en Mode « Blocs »
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
La programmation de l’interface :
Au clic du bouton ConnecterOn affiche la liste des appareils appairés au client Bluetooth
Rappel : A chaque objet sont associées des méthodes.Donc on trouve les blocs en cliquant sur l’objet considéré.
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
La programmation de l’interface :
Après avoir sélectionner l’appareilOn demande au client Bluetooth de se connecter
Si le client est connecté alorsOn cache le bouton connecterOn affiche le bouton déconnecter
Au clic du bouton déconnecterOn demande au client Bluetooth de se déconnecterOn affiche le bouton connecterOn cache le bouton déconnecter
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
La programmation de l’interface :
Position.puce renvoie une valeur à virgule. Pour transformer cette variable en une valeur entière on utilise la fonction arrondi.
Si l’ascenseur a changé de position alorsSi le client Bluetooth est connecté alors
On envoie sur 1 octet la valeur de la position de la puce de l’ascenseur.
Toutes les 0,5 secondesSi le Client_Bluetooth est connecté Alors
On met le label Lab_Var_Distance à la valeur reçue sur le port série
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
La programmation de l’interface :
Quand Bt_Avancer est cliquéSi le Client_Bluetooth est connecté alors
Envoyer le nbr 8 sur un octet (8bits)
Pour simplifier le dialogue entre le smartphone et le robot, j’envoie un code correspondant au pavé numérique.
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
La programmation de l’interface :
02/05/2018 Formation Comment piloter un objet avec un Smartphone ? / S. AZZOLA
La programmation du Robot :