Contact

Nathanael Hania

Introduction

Bonjour tout le monde,

Aujourd'hui j'ai envie de contrôler l'interphone de chez moi et activer l'ouverture de la porte avec un Arduino. C'est très utile pour gérer l'ouverture toute les heures, ou bien activer l'ouverture à distance (si on ajoute un module wifi, bleutooth etc) pour les flemmard qui veulent pas taper le code ou prendre la peine de s'en souvenir.

Il y a deux partie dans ce projet, la première consiste a réaliser le boitier dans lequel sera l'Arduino, la batterie et un afficheur LCD et quelques boutons. L'afficheur et les boutons rendront l'interface homme machine plus ergonomique. La seconde partie consiste à réaliser la programmation de l'Arduino. Dans cette partie, nous allons concevoir un système qui pourra interagir avec l'utilisateur. Un afficheur LCD indiquera les informations et les boutons permettront à celui-ci de paramétrer son système.

PARTIE BOITIER

Je ne suis pas assez doué (pour le moment) pour réaliser mon propre boitier. J'ai donc été sur le site : http://www.thingiverse.com/ qui propose des modèles 3D prêt a être imprimer. Ils sont modifiable si nécessaire. J'ai recherché “Arduino button” (Eh oui c'est un site en anglais désolé les amis) et j'ai trouvé ce modèle : http://www.thingiverse.com/thing:142282.

En téléchargeant tous les fichiers, on remarque qu'il y en a deux. Le boitier et un moule pour les boutons.

J'ai imprimé le moule, il ressemble à cela :

Le boitier est prévu pour fitter avec un shield LCD particulier comme celui ci : Ce qui est important c'est la disposition des boutons en dessous de l'afficheur. Si vous ne prenez pas ce type de shield, les boutons du shield ne seront pas alignés avec les boutons du boitier. Ce type de shield coûte une dizaine d'euros environ sur ebay.

J'ai commencé a me renseigner sur la programmation à mêttre en oeuvre. Tout d'abord j'aimerais réaliser un module qui ne soit pas gourmand. Je n'entend pas par la qu'il ne doit pas manger de pain en chocolat ( surtout que c'est vachement bon :)) mais plutôt que je veut qu'il puisse tenir un maximum de temps sans changer la batterie. Eh oui, je suis flemard (vous le savez ou vous le verrez) et donc je ne veut pas changer la pile tout les mois.

Dans les microcontrôleurs en général, plusieurs solution sont apportées. Il y a les interruptions, le fait de pouvoir désactiver des broches, désactiver des partie voir la totalité du chip.

Nous travaillons avec un Arduino UNO. Les Arduinos gèrent les interruptions de manière assez facile. Tout d'abord vous allez me dire : “C'est quoi une interruption ?”.

Nous allons tout d'abord commencer par un cas pratique :

J'ai un portail de garage que je veux ouvrir quand j’appuie sur le bouton et seulement quand j’appuie sur le bouton. Je vais donc appeler la fonction ouvrir_portail quand le bouton sera pressé.

Il y a deux méthodes. La première, le microcontrôleur regarde (scrute) le bouton sans arrêt pour savoir quand il sera appuyé. Cette méthode fonctionne mais pendant le temps ou le microcontrôleur scrute le bouton il ne peut rien faire d'autre. De plus il consomme de l’énergie (pas bon). La seconde méthode consiste a demander a quelqu'un de prévenir le microcontrôleur dès que le bouton est appuyé. Ainsi, le microcontrôleur peut travailler, dormir, danser, chanter etc .. jusqu'au moment ou on le prévient que le bouton à été appuyé et donc il arrête de faire ce qu'il faisait et il va exécuter la fonction ouvrir_portail.

Cette deuxième méthode correspond au interruption. On va définir une fonction à effectuer (dite : routine d'interruption) et on va dire au microcontrôleur quelle routine d'interruption exécuter lorsque l’événement (dit interruption) se produit. Cela permet au microcontrôleur de faire d'autre chose à coté et a défaut de se mettre en veille tant qu'il n'y a pas d'interruptions.