4-La partie informatique

Fiches élèves :

Ressources :

Matériels :

  • Smartphone ou tablette Andruid
  • Ordinateur connecté à internet

Logiciels :


Ici c’est la toute dernière partie du projet, pour faciliter la tâche et la bonne compréhension par les élèves,je vous propose de décomposer le travail en deux activités:

  1. Réalisation de l’application de pilotage de la maquette.
  2. Programmation de la carte Arduino.

C’est parti

1-   Réalisation de l’application de pilotage de la maquette

Voici la fiche élève contenant le plan à suivre pour réaliser une application qui permet d’allumer et d’éteindre une LED.

Les élèves devront suivre ce plan afin de comprendre la procédure à suivre pour se connecter au site Appinventor, se familiariser avec l’environnement de travail, créer et programmer les boutons et enfin installer l’application sur le Smartphone.

Une fois terminé, ils passeront à la réalisation de l’application de pilotage de leur maquette en toute autonomie.

Fiche élève : 


Partie informatique application


 

Avant de commencer, proposez aux élèves de faire un petit brouillon de l’application, alors dans leurs réponses ils vont tous faire un dessin contenant deux boutons, un pour allumer et un autre pour éteindre la LED. Du coup c’est important de leur expliquer qu’il manque un troisième bouton de sélection du module Bluetooth propre à leur montage et pas celui du voisin.

Donc en tout notre application sera composée de trois boutons.

Pour voir les étapes à suivre afin de réaliser l’application cliquer ici.

2-   Programmation de la carte Arduino

Ici les élèves vont réaliser le programme qui reçoit les ordres de l’application permettant d’allumer et d’éteindre une LED.

Cette activité va apprendre aux élèves à comment réaliser un programme simple sur le logiciel Arduino ainsi que son téléchargement sur la carte, par la suite ils feront eux même le programme qui permet de recevoir les ordres de l’application de pilotage de la maquette d’ascenseur.

Fiche élève:


Partie informatique Programme


Pour commencer, je dois me familiariser avec l’environnement dans lequel je vais réaliser le programme :

Lorsque j’ouvre le logiciel Arduino, je tombe sur la fenêtre suivante :

Arduino

Explication :

  • Déclaration
  • La fonction void setup () { } permet d’initialiser la carte (s’exécute en premier), entre les accolades de cette fonction je déclare le contenu de l’initialisation ou de la fonction.

Mais c’est quoi ce contenu ?

Après explication de la fonction void loop (){ } et du résultat de compilation, je reviendrai pour expliquer le contenu de la fonction void setup (){ } et d’ailleurs aussi le contenu de la fonction void loop (){ }

  • La fonction void loop () { } se répète et s’exécute à l’infinie après le setup, plus précisément elle répète ce qu’il y a entre ses accolades à l’infinie.
  • Le résultat de compilation : Il permet de faire une vérification de la déclaration du contenu des fonctions setup et loop, il donne des indications sur les erreurs faites dans le programme, le programme ne s’exécute pas tant que il y’a des erreurs .

Le contenu des fonctions setup et loop :

En effet le contenu de ces fonctions est appelé instructions.

Dans ce paragraphe j’expliquerai juste les instructions qui vont nous permettre d’allumer et d’éteindre une LED

  • Instruction : pinMode(pin,INPUT) ;     
  • Instruction : pinMode(pin,OUTPUT) ;

Ces instructions permettent de faire deux choses:

  • Déclaration du pin à utiliser (à la place de « pin » il faut mettre le numéro du pin à utiliser par exemple 13)
  • Déterminer la nature du pin utilisé, soit c’est un INPUT soit un OUTPUT (Par exemple le pin 13 sera une sortie donc OUTPUT, le pin 12 est une entrée donc un INPUT)

Donc avant d’utiliser un pin de la carte, il faut le déclarer, en quelque sorte informer la carte que un tel pin sera utilisé. Par exemple si je veux utiliser le pin 13, dans ce cas à la place de pin de l’instruction « pinMode(pin,INPUT) ; »  j’écris « pinMode(13,INPUT) ; »

Ensuite sachant que si je veux que le pin déclaré soit une entrée alors j’utilise la première instruction « pinMode(13 , INPUT) », par contre si je veux que mon pin soit une sortie alors j’utilise l’instruction « pinMode(13,OUTPUT) ».

Surtout il ne faut pas oublier le ; (point virgule) à la fin de l’instruction sinon tu auras un problème de compilation et le programme ne fonctionnera pas.

Ou déclarer ces instructions ?

Souvenez-vous du rôle de la fonction setup(), on avait dit qu’elle permet d’initialiser la carte et s’exécute en premier, donc logiquement pour informer la carte des pin à utiliser et de leur nature, je déclare les instructions à l’intérieur de cette fonction.

Exemple

Je veux utiliser le pin 13 de la carte Arduino afin d’allumer et éteindre une LED, donc j’écris entre les accolades de la fonction setup() l’instruction correspondant :

Instruction_pinMode

  • Instruction : Serial.begin(debit);

Cette instruction permet d’informer la carte Arduino qu’il y’aura une communication série, elle permet aussi de fixer le débit de cette communication  en l’indiquant à l’intérieur des parenthèses, donc à la place de debit j’écris la valeur (Il existe plusieurs débits selon le besoin : 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, or 115200).

Justement nous en aurons besoin, puisqu’il existe une communication série entre la carte Arduino et le module Bluetooth, donc nous allons initialiser la communication série à 9600 bit par seconde.

Du coup nous rajoutons la syntaxe dans le programme :

Communication serie programme

Jusqu’à présent nous avons réalisé un programme qui informe la carte que le pin 13 sera utilisé comme sortie et qu’il existe une communication série.

Mais le travail n’est pas terminé, il me faut une instruction pour allumer la LED, une autre pour l’éteindre, une instruction de lecture des informations venant de la communication série, et en fin une instruction de vérification des cas.

  • Instruction : digitalWrite(pin,HIGH);
  • Instruction : digitalWrite(pin,LOW);

La première instruction met un niveau logique HAUT (HIGH) sur le pin indiqué, c’est à dire envoie une tension de +5V à travers le pin indiqué. (Ce qui permet d’allumer la LED)

La deuxième instruction met un niveau BAS (LOW) sur le pin indiqué, c’est à dire mettre le pin indiqué à +0V (Masse). (Ce qui permet d’éteindre la LED)

Rajoutons les :

Instruction_digitalWrite

  • Instruction : Serial.read()

Sa traduction veut dire « Lecture série », cette instruction permet de lire les informations reçues de l’application via la liaison série entre la carte Arduino et le module Bluetooth.

Si vous vous rappelez, lors de la réalisation de l’application, nous avons programmé les boutons de sorte que: lorsque l’on appuie sur le bouton Allumer, l’application envoie la lettre « A » à la carte Arduino, la même chose pour le bouton éteindre qui envoie la lettre « E ».Donc cette instruction me permettra de récupérer et lire ces lettres.

Switch

 

 

 

 

 

C’est l’instruction qui permet de construire une liste de cas à l’intérieur des accolades, le programme teste chaque cas avec la variable de test, et exécute le code si une correspondance (un test VRAI) est trouvée.

Par exemple si :

  •  La variable qui se trouve entre les parenthèses de Switch est égale à la condition1 alors instruction1 sera exécutée et instruction2 ne sera pas exécutée puisque la variabe n’est pas égale à condition2.
  • Par contre si la variable qui se trouve entre les parenthèses de Switch est égale à la condition2 alors instruction2 sera exécutée et instruction1 ne sera pas exécutée puisque la variabe n’est pas égale à condition1.
  • Lbreak permet de ne pas continuer à vérifier dans la suite du programme si la variable est égale à d’autres conditions, il indique à l’instruction Switch d’arrêter de rechercher des conditions vraies.
  • ……., J’ai ajouté des points pour dire que c’est possible d’ajouter encore des conditions ( case ) selon le besoin. 

Comment les instructions Serail.read() est Switch/case vont elles nous aider ?

On sait que nous devons récupérer les informations venant de la liaison série, ensuite il nous faut une vérification des cas, sachant que nous avons deux possibilités :

  •  Si on reçoit la lettre ‘A’ il faut allumer la LED.
  • Si on reçoit la lettre ‘E’ on éteint la LED.

Comment les rajouter dans le programme réalisé précédemment ?

Regardez le programme suivant :

Instruction_SerialRead_et_switch

Une petite explication s’impose :

Une fois que la communication est établie, je peux envoyer les ordres du Smartphone au module Bluetooth via le protocole Bluetooth, une fois récupérés par le module celui-ci les envois à la carte Arduino via la liaison Série, l’instruction Serial.read() introduite dans le programme permet à la carte de lire les ordres, sachant que :

  • Si Serial.read() lit la lettre ‘A’, la LED branchée au pin 13 s’allumera puisque l’instruction digitalWrite(13,HIGH) est activée.
  • Si Serial.read() lit la lettre ‘E’, la LED branchée au pin 13 s’éteindra puisque l’instruction digitalWrite(13, LOW) est activée.

Voir le schéma suivant:

Schema complet du systeme


<<< 3-Partie électronique                                 <<Accueil>>