Périphériques d'entrée et de sortie, Interface Homme Machine(IHM)

Architectures matérielles et systèmes d’exploitation

Plan

Introduction

Les périphériques d'entrée et de sortie sont les objets qui, connectés à une machine, permettent à l'Homme de communiquer avec la machine. Ce qui signifie: pouvoir donner des informations à la machine mais aussi recevoir des informations de la machine.

Les deux périphériques d'entrée que nous utilisons le plus sont le clavier et la souris. Le périphérique de sortie principal est l'écran mais le son qui vient de votre pc est aussi issu d'un périphérique de sortie (la carte son).

Nous allons utiliser des robots qui ont bien d'autres périphériques d'entrée et de sortie. Nous allons aussi en profiter pour découvrir d'autres aspects de la programmation: la programmation évenementielle. D'autre part, vous découvrirez en réalisant des exercices que la traduction d'un phénomène continu (la lumière, la distance, le bruit) en numérique puis son traitement en programme informatique est bien plus difficile à gérér proprement qu'un programme uniquement destiné à un ordinateur.

Capteurs

Les robots sont généralement munis de capteurs. Ces derniers permettent au robot de percevoir son environnement. A charge au programmeur de les utiliser.

    Voici une liste de capteurs
  • capteur infrarouge: detecte les obstacles et mesure la distance. Principe de fonctionnement: un émeteur envoie un lumière de fréquence supérieure à 780nm et la reflection sur un éventuel objet et capté par un recepteur. Ce capteur peut aussi servir à capter une couleur, puisque chaque couleur n'aura pas le même indice de reflection.
  • capteur ultrason (les sons que l'on n'entend pas!): même principe que ci dessus mais avec une onde sonnore de fréquence élevée (>20khz).
  • Capteur tactile: un simple bouton en fait. Enfoncé ou pas
  • Capteur de luminosité: capte l'intensité lumineuse
  • Capteur de bruit: le micro
  • Capteur de température
  • etc....

Il faut prendre conscience de plusieurs choses très importantes. Les phénomènes de la vie courante sont généralement des phénomènes continus. Prenons par exemple, la distance. Toutes les mesures positives sont possibles, et si je mesures la distance qui me sépare d'un mur à vitesse constante et que je représente cela en fonction du temps, j'otiendrai une droite. Une courbe continue donc, sans saut, trou...

Or notre robot fonctionne en binaire! Cela veut donc dire que la mesure prise par notre capteur qui est au départ un signal electrique dont la tension varie de fonction continue va devoir être traduite en binaire. De plus il faut que je reçoive cette information. Cette traduction ne peut pas être faite en continu! C'est là qu'intervient la fréquence d'échantillonnage. Imaginons que je mesure la lumière. Ce capteur au départ, analogique (signal continu), va devoir être traduit en binaire. Si notre matériel n'est pas très puissant, disons que cette conversion est faite tous les dixième de secondes. On comprend tout de suite qu'il y a un trou entre chaque dixième de secondes qui n'est pas traduit.

Imaginons sur un capteur de distance. Si le robot peut rouler très vite mains que notre capteur de distance n'est actualisé que tous les dixièmes de secondes...même si notre code est bon, le robot pourra se cogner ! Il suffit d'avoir lu la distance trop loin de l'obstacle puis...trop tard. Et oui, il faut savoir que les capteurs ont aussi leur limites et que sur nos robots par exemple, les obstacles ne sont captés qu'à moins de 20 cm.

Un autre point important est la qualité des capteurs. Vous verrez que même si votre robot est immobile, la lumière mesurée sur le sol, ou la distance avec un obstacle ne sera pas constante! On utilisera donc très souvent des encadrements de valeurs plutôt que des égalités que nous avons peu de chance d'avoir.

Programmer un robot est donc bien plus difficile que de coder un jeu vidéo.

Actionneurs

Les actionneurs sont les parties du robot qui lui permettent d'agir

    Voici une liste d'actionneurs'
  • Moteurs: ils permettent de faire tourner les roues et donc de faire avancer le robot. Ils peuvent aussi servir à faire tourner des poulies etc...
  • LED: allumer un led d'une certaine couleur est aussi une action! On pourra les utiliser pour traduire certains états sur le robot: obstacle capté, son entendu etc..
  • Haut parleur: jouer de la musique, vous parler...

On retrouve sur les actionneurs les mêmes difficultés que sur les capteurs.

Par exemple, sur nos robots, il y a un moteur par roue. Si l'on indique aux deux roues de rouler à la même vitesse, on espère voir le robot rouler droit. Bien souvent ce n'est pas le cas. En effet, pour cela il faudrait que les axes des roues soient parfaitement alignés, que la rotation des moteurs soit strictement identique...or généralement ce n'est pas le cas.

Pour résoudre ce problème, il y a deux types de solutions. La première, celle de nos thymios, le calibrage : si l'on voit que notre thymio ne roule pas droit on lui indique qu'il doit généralement forcer un peu plus sur un moteur que l'autre. La deuxième solution, de bien meilleure qualité mais plus technique et necessitant des robots ayant des capteurs supplémentaires: l'ondométrie. L'ondométrie consiste à mesurer l'écart entre le déplacement réellement effectuer et celui prévu, puis par calcul de tenir compte de cet ecart pour les prochains déplacements.

Procédure de calibrage: imprimer le fichier, appuyer sur les flêches droites et gauches (mode vert clair), appuyer sur avant ou arrière, corriger avec droite et gauche, enregistrer avec le rond central et redémarrer le robot.

Robots Thymio

Nous avons fait le choix du robot Thymio pour sa simplicité et parce qu'il n'est pas démontalbe. Amis bricoleurs...désolé.

Ce robot s'appuit sur un langage de programmation propre et seuls les utilisateurs d'unix pourront le coder en Python

Il vous faudra donc installer la suite aseba.

L'ensemble des explications et commandes pour programmer nos robot Thymio étant assez long, je vous renvoie sur la page robot thymio de ce site.

Vous allez pouvoir découvrir la programmation événementielle qui execute des morceaux de codes en fonctions des évéments déclenchés, contrairement à la programmation séquentielle dont les intructions sont exécutées dans l'ordre, une à une dans l'ordre que vous avez établi.

Exercices

  1. Faites avancer le robot tout droit, s'arrêter lorsqu'il y a un obstacle, emettre un son, et clignoter en rouge.
  2. Améliorer le programme suivant pour que le robot avance sans cesse et évite les obstacles. On peut emettre un son et clignoter pour indiquer que l'on est en procédure d'évitement.
  3. Des bandes noires sont peintes au sol. Compter le nombre de bandes traversées.
  4. A l'aide du wifi, faites en sorte que tous les robots en marche imitent un robot maître (ceci pourrait être utilisé si le premier robot suit une ligne, les autres dessinent le même motif). Une fois ceci terminé, tentez de faire en sorte que la répétition soit décalée d'un certain laps de temps. Pour emettre un message, il faut créer un événement puis taper emit evenement(paramètre). Pour recevoir le message: onevent evenement et pour récupérer un argument event.args[0] pour la première valeur.
  5. Réalisez des chenillards de lumières de votre choix. Cet exercice mettra en évidence des soucis liés au wifi! voici un exemple de chenillards avec trois motifs différents. Je ne vous demande de faire qu'un motif!

Android

De la programmation pour pc à la programmation pour téléphone.

A finir

Pas eu le temps de tout faire.....