Formation AppInventor 2
Formation AppInventor 2
Formation AppInventor 2
Formation AppInventor
Journée du 22 mai 2015
1 Présentation et contexte
L’environnement des élèves présente de plus en plus de systèmes qui intègrent des systèmes numériques.
Les smartphones sont des objets techniques très présents dans leur quotidien. Les usages associés à un smartphone
s’étoffent régulièrement.
Communiquer à distance (phonie, texte sms, vidéo), agenda, prise de notes, paiement sans contact, etc…
Programme du Cycle 3
En 2007 arrive l’Iphone qui révolutionne le marché. L’Open Handset Alliance se charge de regrouper des sociétés pour
concurrencer la marque à la pomme.
Source : http://www.gartner.com/newsroom
http://www.phonandroid.com/le-play-store-surclasse-lapple-store-tous-les-niveaux.html
5 IDE AppInventor
App Inventor permet de créer des applications Android à travers une interface purement visuelle (WYSIWYG pour
« What You See Is What You Get ») et de configurer les actions de l’app par un système de blocs logiques.
Puis on le démontre
5.2.2 Code.org
5.2.3 http://microalg.info/
Site d’un collègue pour passer de la programmation par blocs à la programmation par pseudo code.
5.2.4 Lil’Blocks
5.2.5 Blockly
L’IDE Blockly est maintenant réutilisé par plusieurs autres IDE.
https://developers.google.com/blockly/about/examples
5.2.7.2 Eclipse
Exemple de programmation en Java pour programmer un Smartphone ou tablette sous Android avec l’IDE Eclipse.
Passage de la programmation par block à une programmation en java. La difficulté d’apprentissage est sans commune
mesure entre les deux modes de programmation.
Pour cela lancer l’application Google play qui est déjà installée sur votre tablette ou smartphone. Il suffit de taper dans
le moteur de recherche le nom de l’application et de cliquer sur installer.
Vous allez installer l’application ESSAI.APK qui se trouve sur l’ENT dans la partie formation/dossier.
Pour télécharger le fichier Apk qui se trouve sur votre ordinateur vers votre tablette ou smartphone connectez votre
smartphone ou tablette via un câble USB à votre PC.
Vous devez alors voir votre tablette ou smartphone qui apparait dans la liste des périphériques de stockage.
Faite un copier-coller dans le répertoire de votre convenance dans votre tablette ou smartphone. Naviguer dans
l’arborescence de votre tablette ou smartphone pour coller votre fichier APK. Il y a souvent un répertoire nommé
« document ».
Il faut maintenant accéder au fichier APK collé dans votre smartphone ou tablette.
Soit vous avez déjà un gestionnaire de fichier installé sur votre tablette ou smartphone, soit installez un gestionnaire
Lancer ce gestionnaire et déplacez-vous dans l’arborescence pour retrouver votre fichier apk.
Cliquer sur le fichier apk, l’installation démarre, il suffit de suivre les instructions. Votre application s’installe et un
icône est créer dans la liste des applications.
7.2 Se connecter
Taper dans la zone d’adresse URL http://ai2.appinventor.mit.edu/
propriétés des
composants
(objets)
Bibliothèque Ecran virtuel Liste des composants
(objets)
Cela pourrait-être par exemple un résumé des connaissances et compétences associé à un cours d’une matière
donnée.
Ici, on se propose de mettre à disposition des élèves une synthèse sur la notion d’algorithme.
Ici on a besoin d’ajouter des zones de texte (objet label) ainsi qu’un objet image.
Label
Label
Label
Label
Label
Label
Label
Label
image
Pour placer un objet sur l’IHM, il suffit de faire un glisser déplacer de l’objet.
Vous pourrez aussi modifier le nom de votre écran ainsi que l’’icône que vous souhaitez afficher
sur votre smartphone pour identifier votre application. Pour cela vous sélectionnerez les
propriétés de l’écran en cliquant sur l’écran puis…
8 Simulation
Vous pouvez simuler l’application à l’aide de l’émulateur. Cela va vous permettre d’avoir un smartphone virtuel sur
votre écran de PC et de vérifier son fonctionnement. Vous pourrez utiliser votre application comme sur un
smartphone.
Vérifier que vous avez bien installé aiStarter sur votre PC.
Lancer aiStarter après avoir lancer Appinventor puis AiStarter et pas l’inverse !
Ce programme permet au navigateur de communiquer avec l'émulateur ou câble USB. Ce programme aiStarter a été
installé lorsque vous avez installé le package d'installation de App Inventor. Vous n’avez pas besoin d’aiStarter si vous
utilisez seulement le compagnon sans fil.
Il vous faudra être patient pour attendre que l’émulateur se lance, cela prend quelques minutes.
Voici la progression des différents écrans qui arrivent chronologiquement sur l’émulateur.
Laissez faire et patience…
Pensez à laisser actif l’émulateur pour éviter de devoir le redémarrer à chaque fois !
Vérifier que vous avez bien téléchargé et installé l’application « MIT AI2 Companion » sur votre smartphone ou
tablette.
Vérifier que vous avez un accès wifi sur votre smartphone. Votre PC ainsi que votre smartphone devront être connecté
à un point d’accès internet.
Objet ?
Ce qui est nouveau maintenant, est que l’application doit réagir suivant un évènement. Sur la première application,
l’évènement principal était le lancement automatique de l’ouverture de l’écran principal. Cet évènement était
automatique dès le lancement de l’application.
Ici, le nouvel évènement associé à l’environnement de la tablette ou du smartphone est l’appui sur le bouton
« écouter le texte en Anglais ».
Il faut maintenant nommer l’objet que vous allez utiliser dans votre application.
Pour nommer l’objet de type bouton, il faut cliquer que l’objet pour le sélectionner et aller dans la partie composent
de l’objet.
Vous allez synthétiser toutes ces informations indispensables pour le développement de votre application dans un
tableau.
Ecouter le texte en anglais bouton B_ecouter Sur clic (appuie sur le bouton)
Il ne faudra pas oublier d’insérer un composent supplémentaire qui permettra la diction dans une langue à partir d’un
texte donné.
11.1 Algorithme
Algorithme qui ne prend pas en compte la notion d’événement.
FIN
Il faudra sélectionner l’objet qui est associé à l’algorithme de l’événement choisi. Ici c’est l’objet bouton B_ecouter
qu’il faut sélectionner pour lui associé l’algorithme précédent.
Type d’événement
Ici au clic
Nom de l’objet
Un événement est
en marron
Il suffit alors de faire un glisser déplacer de l’évènement dans la zone de programmation à droite
Il faut suivre l’algorithme qui demande de lancer la prononciation. Pour cela on va sélectionner le composant
TextToSpeech1 et sélectionner une méthode associée.
Il suffit maintenant de lui spécifier quel est le message à prononcer, c’est-à-dire la propriété text de l’objet B_ecouter.
Nom de l’objet
Attention, ce n’est pas par ce qu’un programme n’a pas de warning ni erreur qu’il fonctionne !
11.4 Modifications
Vous constatez que la prononciation n’est pas correcte.
Il faudra donc modifier la langue de la prononciation. Pour cela il faut se positionner sur les propriétés associées au
composant TextToSpeech1 et rechercher l’information à renseigner.
http://beta.appinventor.mit.edu/learn/reference/components/other.html#TextToSpeech
Il faut commencer par lister les différents états stables de votre application.
Dans un diagramme d’état il faut fixer aussi les transitions pour sélectionner quelle est l’information qui permet le
passage d’une tâche à une autre.
Appuie sur le
bouton
Vous avez remarqué qu’il n’était pas possible de positionner des objets les uns à côté des autres horizontalement.
Suivant votre IHM vous avez besoin de positionner précisément des objets comme on le veut.
C’est la même chose que sur un traitement de texte pour positionner une zone de texte, mais la méthode est plus
basique.
On souhaite modifier la dernière application pour présenter différemment les différents objets. Pour cela pensez à un
faire un projet clone de l’application. Vous nommerez l’application EX_12_1_parle_anglais.
L’outil vous propose plusieurs positionnement possible, soit aligner des objets :
les uns à côté des autres les uns en dessous des autres dans un tableau
Faite un glisser déplacer de la forme du Layout voulu dans l’IHM, vous voyez alors apparaitre la zone du layout, mais
vide à l’intérieur.
Axe Z
Axe Y Axe X
Le smartphone ou tablette possède des capteurs pour pouvoir « ressentir » des accélérations. Il possède un capteur
qui permet de mesurer ces accélérations suivant les 3 axes.
L’application impose de ne pas bouger pour pouvoir mesurer un angle correct qui ne variera le moins possible. Oui,
mais si le système est stable, alors il n’y a pas d’accélération. Il y a cependant une accélération que nous subissons en
permanence qui fait que nous avons les pieds sur terre, c’est la force de gravitation P=m.g, g justement l’accélération
de la pesanteur. Cette accélération dépend de la masse des objets voisins et de leur distance. Comme la terre est
l’élément qui a la masse la plus importante et que la distance smartphone/terre a de très faible variation, on prendre
g=constante. Le vecteur accélération est donc vertical et dirigé vers le bas. Donc logiquement, notre accéléromètre
doit pouvoir détecter cette accélération même avec un smartphone immobile.
13.1 Réalisation d’une première version (visualisation des valeurs des capteurs)
Vous allez commencer par visualiser les valeurs des 3 accéléromètres sur les 3 axes.
Dessinez votre IHM papier, sélectionnez vos objets, rechercher les propriétés éventuelles associées.
Vous aurez besoin de sauvegarder le résultat de votre calcul dans une variable.
Pour cela vous devrez initialiser cette variable à une valeur donnée et de nommer cette variable.
Nom de la variable
Ici la variable globale n’a pas de sens. En effet une variable globale est définie si cette variable a besoin d’avoir une
portée sur plusieurs évènements, ce qui n’est pas le cas. Il faudra alors modifier l’application pour définir une variable
locale à l’évènement clique sur bouton !
« \n »
Il faut informer l’utilisateur du bon ou mauvais positionnement de son smartphone. Ne pas afficher la valeur de l’angle
si nécessaire.
1. IHM
2. Type des objets
3. Nom des objets
4. Algorithme
5. programme
13.5 Calibration
Vous avez constatez que les valeurs n’étaient pas parfaitement calibrées.
Vous pourrez améliorer votre application en faisant une calibration automatique en proposant à l’utilisateur de poser
le smartphone sur une surface plane pour calibration et de calibrer les 3 axes. Il faudra alors un montage pour pouvoir
positionner de façon fixe le smartphone suivant les 3 axes.
14 Notion de procédure
Pour simplifier l’écriture d’un programme, il nécessaire d’éviter de recopier n fois le même code. Cela permet de
limiter la taille d’un programme, cela permet de modifier plus facilement un programme en n’intervenant qu’à un seul
endroit, sa lisibilité est bien meilleure.
Il est possible de créer une fonction qui renverra alors une donnée.
Il suffira ensuite pour utiliser ce code encapsulé, d’appeler le bloc créé. Une fois la procédure ou fonction créée, il
faudra retourner dans le menu blocks/procédure.
Pour pouvoir tracer des formes géométriques il faut utiliser le composent canvas. Ce composent utilise le repère
suivant. (Regardez la documentation associée à ce composant).
Axe X
Axe Y
Il faudra pensez à réinitialiser le système pour refaire une nouvelle mesure si on touche à nouveau sur l’écran. Il serait
aussi possible de réinitialiser la mesure à partir de l’appui sur un bouton par exemple. On pourra modifier l’affichage
d’une information pour indiquer ce que doit faire l’utilisateur en fonction des différentes étapes.
5. algorithme
6. programme Appiventor
7. simulation
Eléments de réponse
IHM
Vous allez réaliser une simple application qui permet de passer de l’écran d’accueil (Sreen1) à un écran de
paramétrages (Screen2)
Ajouter un texte qui sera le nom de votre écran (attention pas le titre !)
Vous pourrez rechercher une bibliothèque de sons ici (https://soundation.com/studio) ou utilisez les fichiers sons wav
déjà disponibles sur l’ENT.
Vous pourrez utiliser les sons proposés dans l’ENT dans la partie formation pour vous éviter de perdre du temps.
Il vous faudra créer une variable globale de type liste pour mémoriser les fichiers sons à lancer. Pour cela vous
utiliserez la définition d’une liste.
Pour sélectionner l’élément i dans la matrice son(1,i), vous utiliserez la propriété associée :
Il faut insérer un objet son, comme le player. Il faudra alors ajouter dans la partie de l’IHM dans les propriétés du
player les différents fichiers wav en les téléchargeant dans l’application, ainsi, ces fichiers wav pourront être
sélectionnés dans la partie programmation dans une liste.
Pour cela il faudra cliquer sur les propriétés du player et cliquer dans la partie source sur Upload.
Exemple d’IHM
Eléments de correction
…….
Elément de correction :
Vous pourrez améliorer l’application pour qu’elle puisse proposer un calcul basé sur des nombres aléatoires.
Ainsi, il sera possible de converser des informations, même après avoir éteint et allumer son smartphone.
Vous allez réaliser une application qui permet aux élèves de stocker plusieurs résultats de mesures sur un smartphone.
Dans la même optique, il serait possible de sauvegarder les résultats d’un jeu, le paramétrage d’une application, etc…
On se propose de réaliser une application qui sauvegarde des mesures d éclairement d’une lampe donnée.
Au lancement de l’application, il faudra donc afficher les mesures déjà sauvegardées, puis proposer à l’utilisateur de
pouvoir ajouter à ses sauvegardes une nouvelle mesure. On n’oubliera pas de créer un bouton qui permettra en fin
d’application de sauvegarder la base de données dans la mémoire flash et de quitter l’application.
Correction du programme:
Vous pourrez améliorer l’application en ajoutant une fonction qui permet de supprimer un item sélectionné et un
bouton qui permet de réinitialiser la base de données complète pour effacer toutes les valeurs.
Vous allez réaliser une application qui permet de mesurer la vitesse de déplacement d’un robot.
Pour cela vous aurez tracé au sol deux lignes dont vous avez mesuré la distance qui les sépare. Pour mesurer la vitesse
moyenne de déplacement, il suffira que le robot se déplace entre ces 2 lignes et de démarrer un chronomètre dès que
le robot a croisé la première ligne et d’arrêter le chronomètre dès qu’il a croisé la deuxième ligne. A l’aide de
l’expression v=d/t, vous calculerez la vitesse moyenne de déplacement en m/s et km/h du robot.
Elément de correction
Ainsi la mesure se fera automatiquement. On pourra encore améliorer le système réaliser plusieurs mesures et en les
sauvegardant dans la mémoire flash, puis en les affichant sur un graphique et en calculant la moyenne et l’écart type
par exemple.
Diagramme d’état
Algorithme
Programmation codage, type de variables, recherche de documentation sur un objet, propriété ou méthode
Simulation
Compilation
Téléversement
Le système va envoyer un octet au portail. En fonction de l’octet reçu par le portail, il y aura ouverture ou fermeture.
Il faudra aussi faire un programme au niveau du système de réception du portail pour piloter le portail à partir des
commandes reçues par le module Bluetooth.
Vous pouvez utiliser différents microcontrôleurs comme un système Tinsy, Arduino, Picaxe, Microchip, etc…
Pour programmer la cible, il est possible d’utiliser des IDE graphiques comme Ardublock qui s’intègre à l’IDE arduino
très facilement. La programmation se fait alors avec la même méthode que celle vue actuellement, puisqu’Ardublock
utilise la base Blockly.
Exemple de codage pour gérer la réception d’un octet dans une cible microcontrôleur type Arduino.
Ce programme permet de tester un octet reçu sur la carte Bleutooth vec Ardublock.
Attendre 1000ms
FIN SI
FIN SI
FIN TANQUE
20 Accès au Web
20.1 Graphique sur site web
Il est possible de dialoguer entre un smartphone et un serveur web via Wifi.
L’application suivante permet de sauvegarder des mesures et de les visualiser sur un graphique.
Ici on utilise une application Web très pratique proposée par le site thingspeak.com très performant.
On utilise les requêtes http de type GET et DELETE pour accéder au site Thingspeak et envoyer les données au serveur.
On peut utiliser une application (Chrome Poster) très pratique pour envoyer des requêtes http précises.
Il est possible de faire des essais de requête avec l’extension chrome que l’on peut télécharger ici :
https://chrome.google.com/webstore/detail/postman-rest-client-packa/fhbjgbiflinjbdggehcddcbncdddomop?hl=en
Et en saisissant les paramètres suivants pour envoyer par exemple une demande de suppression des données.
https://thingspeak.com/docs/channels#clear
https://thingspeak.com/docs#headers
On remarque au passage que la requête DELETE proposée renvoie un coderéponse de 200 (ici status).
On peut de la même manière analyser les autres requêtes et vérifier les coderéponse de chacune des requêtes. Cela
permettra de trier les réponses reçues.
Eléments de réponses
Pour cela il est possible d’utiliser différentes requêtes comme les requêtes GET, POST, PUT, DELETE.
L’application proposée permet de dialoguer et d’échanger des données entre un système embarqué (carte wifi + µC)
IHM du projet. On peut modifier à loisir l’adresse IP de la carte wifi côté µC.
Le bouton GET permet d’envoyer une simple requête GET. Les informations reçues en retour sont affichées dans
code/type/content. Le bouton Navigateur envoie, lui aussi, une commande GET, mais avec l’affichage de la page web
reçue dans le navigateur intégré à l’application Android.
Lorsqu’une requête est envoyée, soit par une commande GET pure, soit en tapant l’adresse d’un site web, le
smartphone va envoyer une requête http GET.
Dans cet exemple, le module ESP8266 est utilisé comme module d’interface Wifi avec le µC. On prendra le soin de
connecter le TX de l’ESP8266 sur la pin3 et le RX de l’ESP8266 sur le pin2 et non sur le pin 0 et 1 ! En effet, nous allons
réserver ces pins pour la communication entre le µC Arduino et le moniteur série Arduino.
Initialisation
On remarque bien
que la valeur du
Code =200 compteur a à bien été
incrémenter entre
l’appui sur le bouton
Réponse à l’appui
GET et le bouton
sur le bouton
Navigateur. On passe
navigateur
Navigateur de 0 à 1
Wireshark permet de sniffer le protocole http et tcp et de vérifier l’envoi et la réception d’informations autour de la
commande GET.
Donnée envoyée
22 Ressources
22.1 Informations générales
http://appinventor.mit.edu/explore/ai2/tutorials.html
https://developer.chrome.com/apps/getstarted_arc
http://www.bluestacks.com/
http://appinventor.mit.edu/explore/ai2/support/blocks.html
http://ai2.appinventor.mit.edu/reference/components/
https://sites.google.com/site/appincarthage/
http://www.mightypocket.com/2010/09/installing-android-screenshots-screen-capture-screen-cast-for-windows/
22.4 Initiation
https://interstices.info/upload/docs/application/pdf/2014-06/csunplugged2014-fr.pdf
22.5 Programmation
http://studio.code.org/s/frozen/stage/1/puzzle/1
22.6 Algorithme
http://studio.code.org/s/course1/stage/6/puzzle/1
lancer votre navigateur et tapez localhost :8888 dans votre navigateur. Vous pouvez utiliser ce serveur à partir
d’autres postes en tapant l’adresse ip du poste sur lequel est installé ce serveur sans oublier le port 8888.
23 Notions d’apprentissages :
Evènement
Un événement est une action sur un objet capable de déclencher une tâche
Objet
Evènement Type d’évènement
objet
Propriété
Classe (clonage)
Algorithme
méthode
Programme
Compilation
Fonction, procédure
Types de variables
Programmation objet
Classe (description d’un ensemble d’objets, c’est un modèle d'objet) / objet (entité virtuelle ou réelle qui partagent les
mêmes caractéristiques, un objet est associé à une classe)/ états (étape de la vie d’un objet) / tâches
Diagramme d’objets
Diagramme de séquences
Diagramme d’états
Diagramme d’activité
23.1 Méthode
1. Analyse du cahier des charges
2. Informations d’entrée nécessaires/ informations de sorties
3. Dessin d’une IHM papier, insertion des objets et nommage des objets
4. Liste des objets nécessaires
5. Diagramme de cas d’utilisation
6. Propriétés utilisés sur les objets
7. Diagramme tâche/objets/évènement. Quel évènement déclenche une tâche donnée.
8. Diagramme de séquence
9. Diagramme d’état (que j'ai commencé à tester avec des 4eme et assez simple à faire passer car très naturel et
découle de l'analyse précédente)
10. Puis algorithme d’une tâche (logigramme / pseudo code?)
11. Bilan des variables nécessaires et type de variables
12. Dessin sur un IDE donné de l’IHM et définition des objets et insertions
13. Programmation de l’algorithme par tâche associé à un évènement
14. Tracking d’une variable en mode pas à pas, visualisation du déroulement de l’algorithme dans un programme
codé.
15. Débogage
16. Publication
Diagramme de séquence
Diagramme d’état
IHM sur l’IDE / Programmation sur l’IDE / Simulation / débogage / tracking mode pas à pas/ visualisation du contenu
des variables / Essais sur cible / Publication.
24 Propositions pédagogiques
24.1 Méthode
Pour pouvoir aborder les différentes notions demandées par les programmes, il est important de définir une
progression pédagogique de ces différentes notions.
Il serait intéressant de commencer par une application pour descendre à plus bas niveau.
Avant de se lancer dans un algorithme, les élèves peuvent analyser le fonctionnement d’une application pour
justement s’initier au déroulement d’un programme. Cela fait d’ailleurs partie d’une des compétences proposées par
le programme.
L’apprentissage du code semble facilité avec un premier apprentissage à l’aide d’IDE graphiques qui permettent de
limiter les erreurs de syntaxe, de vocabulaire d’un langage donné.
Une fois que les élèves auront acquis les compétences de bases demandées avec un système de type graphique, alors
il sera possible de passer à la programmation textuelle dans un langage donné.
Mais pour que les élèves basculent progressivement vers ces langages, il parait intéressant qu’ils puissent s’initier au
pseudo code en utilisant par exemple l’outil microalg ou algobox
En résumé :
1 Présentation et contexte.............................................................................................................................................. 1
2 Contexte des nouveaux programmes de collège ......................................................................................................... 3
2.1 Projet de programme en mathématiques ........................................................................................................... 3
2.2 Projet de programme en technologie .................................................................................................................. 3
3 Evolution des systèmes Android .................................................................................................................................. 4
3.1 Les smartphones .................................................................................................................................................. 4
3.2 Histoire d’Android ................................................................................................................................................ 4
3.3 Evolution d’Android ............................................................................................................................................. 4
4 Système d’exploitation pour un smartphone ou tablette ........................................................................................... 6
5 IDE AppInventor ........................................................................................................................................................... 7
5.1 Méthode pédagogique ......................................................................................................................................... 7
5.1.1 Analogie en mathématiques. ....................................................................................................................... 7
5.2 Exemples d’IDE qui utilisent le mode de programmation par blocs .................................................................... 8
5.2.1 Scratch2 ........................................................................................................................................................ 8
5.2.2 Code.org ....................................................................................................................................................... 8
5.2.3 http://microalg.info/ .................................................................................................................................... 9
5.2.4 Lil’Blocks ....................................................................................................................................................... 9
5.2.5 Blockly .......................................................................................................................................................... 9
5.2.6 Programmation par flux de données ......................................................................................................... 10
5.2.7 Programmation dans un langage textuel. .................................................................................................. 10
6 Exemple d’application smartphone ........................................................................................................................... 12
6.1 Téléchargement sur google play ou avec un fichier APK ................................................................................... 12
6.1.1 Google play................................................................................................................................................. 12
6.1.2 Paramétrage de son smartphone............................................................................................................... 12
6.1.3 A partir d’un fichier APK ............................................................................................................................. 13
7 Interface homme/machine (designer) ....................................................................................................................... 15
7.1 Analyse d’un cahier des charges ........................................................................................................................ 15
7.2 Se connecter....................................................................................................................................................... 15
7.3 IDE d’AppInventor .............................................................................................................................................. 16
7.4 Conception de l’application ............................................................................................................................... 18
7.4.1 Objectif de l’application ............................................................................................................................. 18
7.4.2 Dessin de l’IHM........................................................................................................................................... 18
7.4.3 Objets à insérer .......................................................................................................................................... 18