lundi 18 août 2014

Tuto#3 Arduino: Communiquez votre carte avec...!

Domaine: Systèmes embarqués
Difficulté: Intermédiaire

Introduction

Hello Hello! :D ça c'est le troisième tuto pour le même sujet. La carte Arduino. 
Ici on va apprendre comment on communique une carte à un matériel et échanger les données entre-eux. Ce matériel peut être un ordinateur, un autre microcontrôleur, ou n'importe quel autre matériel.
Un peu de concentration maintenant! Allons-y :D :D

La communication série

Le type de communication qui nous intéresse dans ce tuto est appelé Communication en série. On lui a attribué ce nom non pas parce que l'Arduino et le matériel à connecter sont montés en série mais parce que les données sont envoyées bit par bit et donc en série.
Si on suppose que ce matériel est un ordinateur, on aura besoin d'un câble USB. En effet, dans ce cas, le câble va servir pour alimenter la carte et aussi pour la faire communiquer au pc.
Par contre s'il s'agit d'une liaison entre deux cartes Arduino, vous n'avez qu'à relier les deux masses et brancher les broches TX et RX des deux cartes ensemble et ceci de la manière suivante. La broche TX de la première carte liée à la broche RX de la deuxième carte et vice-versa.
Maintenant si vous voulez relier l'Arduino avec un autre microcontrôleur vous allez refaire la même démarche précédente.

La transmission des données

Préparation de la liaison
Notre rôle ici, c'est d'établir une connexion entre la carte Arduino et l'ordinateur pour échanger des données entre-eux. 
La première étape à suivre est du coté de l'ordinateur, lancez votre IDE et cliquez sur le bouton suivant.

Le terminal série s'ouvre alors:


Envoie des données de la carte vers l'ordinateur

Dans cette fenêtre vous allez envoyer vos messages vers l'Arduino et recevoir les données que la carte vous a envoyées. 
Laissez cette fenêtre ouverte et passez à la programmation! Vous allez tout d'abord: 
  • Ouvrir une liaison entre la carte et le pc.
  • Envoyer les données de la carte vers le pc                                                                                

Pour ouvrir la communication "série" on doit avant tout créer l'objet Serial. Cet objet qui existe déjà dans l'Arduino doit être obligatoirement créé pour assurer une liaison série entre la carte et l'ordinateur. 
Dans la partie setup() de votre code vous allez initialiser la communication série et vous devez indiquer aussi la vitesse de communication.
begin() est une fonction de l'objet Seriel qui sert à initialiser l'objet et à établir la communication. Cette fonction prend en paramètre la vitesse de la liaison estimé ici à 9600 bauds. 
Pour envoyer les données maintenant, on va écrire dans l'objet serial.
La fonction à utiliser est print() ou println() si vous voulez revenir à la ligne.


Et voilà! Maintenant vous savez comment envoyer des données de la carte à l'ordinateur! Vous n'avez pas de problème la dessus tout est simple jusque là! Vous n'avez qu'à ouvrir le terminal série, initialiser l'objet Serial et écrire le message que vous voulez envoyer.

Réception des données depuis l'ordinateur

Cette étape est un tout petit peu compliquée par rapport à la précédente.
On doit vérifier à chaque fois l’existence des données à recevoir. En effet, la carte dispose d'une fil d'attente qu'on appelle Buffer de réception. Cellei-ci contient les éléments que nous désirons envoyer à la carte.
Il existe aussi un autre Buffer d'envoi qui contient les éléments que nous voulons envoyer vers l'ordinateur.

On va donc vérifier régulièrement si les données existent dans le buffer. Et là! deux méthodes existent soit avec la fonction available() soit avec la fonction read(). On commence par la premiére méthode.
Tapez donc ces lignes de code dans la partie loop().

available() est une fonction de l'objet Serial qui renvoie -1 si le buffer est vide.
Maintenant qu'on est sur que le buffer contient au moins une donnée on va passer à la lecture de ces données avec la fonction read().
Par contre vous pouvez passer directement à la lecture avec read() qui renvoie -1 si le buffer est vide et donc inutile d'utiliser available().

Supprimez ce que vous avez écrit précédemment et écrivez ces lignes là.


Maintenant vous connaissez deux méthodes pour vérifier la présence des données.
Très bien! On va utiliser la troisième méthode!  :p

Arduino nous a facilité ce test et nous a rajouté une fonction qui s'exécute régulièrement avant  chaque redémarrage de la loop. C'est la fonction serialEvent(). 
Cette fonction va être rajoutée après les fonctions setup() et loop().
Voilà un exemple pour comprendre cette méthode.


On a branché une LED dans la broche 11 et on a initialisé son état "HIGH" elle est donc éteinte. et on a initialisé la liaison série avec une vitesse égale à 9600 bauds.
Aprés on va vérifier s'il y'a des données en attente, dans ce cas on va allumer notre LED.
Tant que la LED est allumée soyez sur que le buffer de l'Arduino contient des données à envoyer.

Je vous invite maintenant à essayer cet exemple.


Voilà! je sais que le tuto est un peu ennuyant, mais il est très important! Si vous désirez travailler encore sur des projets intéressants de domotique ou de robotique par exemple vous devez savoir comment établir une liaison série et ce travail va vous apparaître banal après :p

Concernant la source, je ne vais pas la mentionner cette fois :p  Cherchez-la dans les imprimes écran xD!

Allez! Je vous laisse maintenant, on se voit bientôt dans un autre tuto plus amusant que celui-là :p 

dimanche 10 août 2014

Tuto#2 Arduino: Allumez vos LED!

Domaine: Systèmes embarqués
Difficulté: Facile



Introduction



Voilà le deuxième Tuto! :)

Après avoir connecté la carte et après avoir vérifié son bon fonctionnement, let's have some Fun! :D 

Vous trouverez ici des programmes simples, vraiment très simples à essayer!

Allumer une LED, faire clignoter une LED, utiliser un bouton pour allumer et éteindre la LED,etc. 
Alors! Gooo :D

Un peu d'électronique

On va allumer une LED, on aura donc besoin d'une carte Arduino, un câble USB pour brancher la carte au PC et une LED. Voilà tout est bon! :D
Mais NON! Un autre composant très important manque! C'est la résistance. :)
Oui, on aura besoin d'une résistance branchée à coté de la LED pour la protéger. On doit fournir à notre LED une tension qui ne dépasse pas la tension maximale qu'elle peut supporter.

Comment choisir cette résistance?

La résistance a été calculée avec précis. voilà comment on a fait.
On sait que l'intensité qui traverse la LED, doit être égale à 20mA. Vous pouvez vérifier ça sur le datasheet de la diode.

On a donc: I=20mA.
La tension d'alimentation en sortie de l'Arduino est égale à 5V.
La tension qui parcourt notre LED doit être comprise entre 1,2 et 1,6 V (ça se trouve aussi dans le datasheet). On va la considérer ici à 1,2V.
La tension qui existe aux bornes de la résistance est donc Ur= 5V - 1,2V = 3,8V


Alors on a toutes les données pour pouvoir calculer la résistance! Vous vous souvenez de la loi d'Ohm? :p

U=R * I  oui! :D


Voilà donc ça donne R= Ur/I = 3,8/0,02 = 190 Ω 

On doit choisir une résistance supérieure ou égale à 190 Ω pour être sur que notre LED ne se détériore plus!



On revient à notre Arduino maintenant!



Allumer une LED



Réalisation

Voilà comment on va réaliser le branchement.
*Connectez la longue patte de la LED à la broche 5V de l'Arduino.
*Connectez la petite patte à la résistance qui sera reliée à son tour à la broche n°2 de la carte.

Voilà le montage


le fil noir est relié à la masse.

Programmation

Pour programmer votre carte, vous devez tout d'abord ouvrir un nouveau programme. Allez dans "File" cliquez sur "save as..."



Vous allez vous retrouver ici



Nommez votre sketch. Ici on a choisi test_1. 
Voilà qu'est ce que ça va donner après avoir cliqué sur "enregistrer"



Commençons la programmation donc! :D
Mais avant, laissez-moi vous présenter un programme Arduino. 
Tout programme Arduino se décompose de 3 parties dans la première on va définir les broches utilisées. La deuxième c'est la partie setup(), là où on va initialiser les états de chaque composant branché. Et la troisième partie c'est la partie loop(), c'est le programme lui-même, il s'agit d'une boucle qui va s’exécuter à l'infini.
Écrivons donc ces lignes pour initialiser la carte.




Voilà!
Maintenant on va définir les broches qu'on a utilisé. On a branché un seul composant dans la broche n°2. Il faut le mentionner donc!



Cette ligne veut dire qu'on a branché un composant dans la broche n°2 et on l'a nommé led_rouge.

On passe à la deuxième partie du programme. la partie setup()
On doit préciser ici si ce composant branché est une entrée ou une sortie. Pour se faire on utilise la fonction pinMode() qui prend en entrée deux paramétres: le nom de la broche et le type du composant.
Ici la LED est une sortie (OUTPUT). Traduisez ceci avec ces lignes de code.



Dernière étape! La partie loop(). 
On va écrire le programme qui va permettre d'éclairer la LED. On aura certainement besoin d'une fonction. La fonction qu'on cherche c'est digitalWrite(), comme son nom l'indique elle permet d'écrire en numérique. On va écrire l'état de la LED qui ne peut être que 0 ou 1. 
Dans notre cas nous voulons que notre LED soit éclairée et donc l'état "LOW"

Comment faire la différence entre HIGH et LOW?
L'état "HIGH" correspond à la valeur 5V et l'état "LOW" correspond à la valeur 0V. Ici on a branché la LED à 5V et donc pour l'allumer on doit créer une différence de potentiel à ces bornes et la relier de 0V, c'est pour cela qu'on lui attribue l'état "LOW".

Complétez votre programme donc!



 Exécutez votre programme maintenant! Et voilà, la LED s'allume *_*
Et si nous voulons la faire clignoter? C'est trés trés simple! Une question de deux lignes de codes à rajouter :D

Faire clignoter une LED

Vous allez garder le même montage précédent et le même programme aussi, sauf que vous allez faire la connaissance d'une nouvelle fonction. C'est la fonction delay().
Elle sert à quoi à votre avis?  à faire clignoter la LED! :D

Ah non! ce n'est pas exactement ça ! :p
delay() sert à arrêter le programme, à mettre une pause pendant une période bien précise.

Voilà  votre loop() semble à ceci.



On a allumé la LED, on a arrêté le programme pendant 1 seconde, on a éteint la LED, on a arrêté le programme encore une fois et on refait cette boucle à l'infini.

Et voilà votre LED clignote :D 

Entraînez-vous encore en rajoutant plusieurs LED et en les faisant clignoter. Vous pouvez construire quoique ce soit! Ecrivez votre nom par exemple et clignotez-le :p

Avant de vous dire au revoir, j'aimerais bien vous présenter aussi une dernière partie qui va rendre plus "élégant" votre travail. On va voir ensemble comment utiliser un bouton pour allumer la LED.
Allez! Suivez-moi! :D

Utiliser les boutons

Réalisation

Branchez vos composants! 
Connectez tout d'abord la résistance à la broche 5V et reliez l'autre patte de la résistance au bouton qui sera branché de l'autre coté avec la masse. 
Faites sortir un petit fil du point qui relie le bouton à la résistance et branchez-le à la broche °2.
Disposer après un condensateur en parallèle avec le bouton.
Pour le branchement de la LED, on va refaire le même travail que dans la partie précédente.
Branchez la longue patte à 5V et la petite à une résistance et reliez cette résistance à la broche n°13.

Quel est le rôle du condensateur?
En appuyant sur le bouton, on ne va pas passer directement de 0V à 5V le signal va rebondir plusieurs fois avant d'arriver. Ce phénomène va gêner notre programme et c'est pour cela qu'on a mis ce condensateur pour éliminer cet effet.
Le condensateur va absorber ces rebonds.

Voilà, votre montage doit ressembler à ceci



Programmation

Tapons notre programme tout de suite! :D
Définissons nos variables, et  initialisons les états de nos composants.

On commence par les variables! Ce sont les broches qu'on a utilisé n°2 et n°13. Mais aussi une autre variable qu'on va nommer "etatBouton" et qui va stocker l'état du bouton.



Tapez la partie setup() maintenant. Précisez le type de chaque composant branché à la carte c.à.d le bouton et la LED et mettez aussi l'état initial du bouton (un état relâché).



Dernière étape! :D la partie loop().
Voilà ce que vous allez écrire là-bas.  :)



digitalRead() est une fonction qui va lire l'état du bouton et le stocker dans la variable etatBouton. 
Après on va faire un test sur cette valeur. Si le bouton est relâché (etatBouton= HIGH) on va donc éteindre la LED. Dans le cas inverse on va allumer la LED.

Exécutez votre programme!! Voilàààà tout est bon! :D 
Bravo ;)

Et notre deuxième tuto est fini!! :D
Essayez de refaire le travail en rajoutant plusieurs diodes et plusieurs boutons. Entraînez-vous à la réalisation des montages et à la programmation parce qu'après on va passer aux choses sérieuses! :D


La référence pour ce tuto? même référence que l'article précédent! le site du zéro, j'ai pris les imprimes écran de là-bas xD 

Allez! Je vous laisse maintenant A très bientôt! ;)







vendredi 8 août 2014

Tuto#1 Arduino: Installation et Test!

Domaine: Les systèmes embarqués
Difficulté: Facile

Introduction


Voilà notre premier tuto! :D

 J'ai choisi de commencer par la carte Arduino puisqu'elle est simple et moins compliquée que les autres types de microcontrôleurs.

Une étape importante avant de commencer le travail, c'est l'installation et le test du bon fonctionnement de notre carte. Vous devez effectuer ce travail avant d'utiliser la carte.


Installation

Vous savez que, pour que n'importe quel périphérique puisse fonctionner sous notre machine on doit lui installer son driver. Même principe pour l'Arduino, on doit installer les drivers aussi. Si vous êtes sous GNU/Linux vous êtes chanceux! les drivers sont déjà installés. Par contre sous Windows, vous allez peut être faire un petit travail. Ce tuto va vous expliquer ce travail :)

Connectez votre carte à votre ordinateur sur le port USB, un petit message en bas de l'écran apparaît. Dans certains cas, votre carte doit s'installer toute seule. Cependant, si vous êtes sous Win 7, il se peut que ça ne marche pas du premier coup. 
Ne vous inquiétez pas, c'est très simple. :)

Laissez la carte branchée et allez dans le panneau de configuration
Cliquez sur "Système et sécurité" puis sur "Système" après sélectionnez "gestionnaire de périphériques" dans le panneau de gauche.  
Un menu contenant les drivers installés et non installés va apparaître. Les drivers non installés sont distingués par  un panneau "attention" jaune. Certainement les drivers d'Arduino sont distingués aussi par ce panneau. Faites un clic droit sur le composant et cliquez sur "Mettre à jour les pilotes". 
Sélectionnez l'option "Rechercher un pilote sur mon ordinateur". Sélectionnez le bon dossier contenant le driver. Il se trouve dans le dossier d'Arduino que vous avez du décompresser un peu plus tôt et se nomme "drivers".

PS: Si vous avez téléchargé la version française d'Arduino vous n'allez malheureusement pas trouver ce dossier vous devez donc télécharger la version originale anglaise pour pouvoir installer les drivers.

Comment vous allez savoir que votre carte est bien connectée et prête à être utilisée?

Une petite LED verte va clignoter indiquant sa bonne alimentation. :D




Test


Après avoir connecté la carte, on doit la tester! Ne donnez confiance à personne :p il se peut que votre carte soit endommagée.

Comment on va la tester donc?

C'est simple! 
En fait, tout est simple avec Arduino :D ... Bon! presque! :p 

Le logiciel Arduino contient des programmes prêts à s’exécuter, on va donc choisir l'exemple le plus simple et tester notre carte. Ce programme sert à faire clignoter une diode. Il se nomme Blink.

Ouvrez votre sketch. Cliquez sur "File" puis "Examples" puis "Basics" et enfin "Blink" :D



Une fois que vous avez cliqué sur Blink, une nouvelle fenêtre va apparaître avec le code source.


Voilà, notre programme est prêt à être exécuter. :D 
Ah! NON! une dernière étape encore avant de voir clignoter notre diode! On doit indiquer au logiciel quel est le type de notre carte. Ah oui! parce qu'il y'a plusieurs types d'Arduino xD
et on doit préciser aussi le port sur lequel elle est branchée. 

Alors, pour le nom de la carte vous allez le trouvez sur la carte elle-même ! Quelle coïncidence xD :p Dans notre cas, c'est la carte Uno.
Allez dans le menu  "Tools" puis dans "Board" et cochez le nom de votre carte.


Choisissons maintenant le port de la carte. Allez dans le menu "Tools" aussi, puis "Serial Port" et choisissez COM x avec x un nombre différent de 1. Oui vous ne devez jamais choisir COM1 ce port il ne peut être jamais connecté à la carte. Voilà dans cet exemple c'est le port COM5.


Pour trouver le numéro du port allez dans le gestionnaire des périphériques qui se trouve dans le panneau de configuration dans la ligne Ports (COM et LPT) vous devriez avoir Arduino Uno (COMX). 

Parfait, tout est bien configuré là-dessus on va maintenant envoyer le programme à notre carte.
Appuyez sur le bouton "Upload" le voilà en jaune.



Vous devez avoir en bas ce message ""Uploading to I/O Board..." ce qui signifie que le programme est en cours d'envoi.




Une fois envoyé, un autre message va être indiqué. En affichant le message "Done Uploading" on doit comprendre que notre programme a été bien envoyé et on doit normalement voir notre LED qui clignote :D 

Si au lien d'avoir ce message, on vous affiche des phrases en rouge c'est que votre programme contient des erreurs. Ce n'est pas forcément la faute du vendeur :p peut être votre carte est bien fonctionnelle mais vous avez des erreurs au niveau du code ou vous avez mal choisi la voie série. Vérifiez donc votre voie série, vos branchements et même votre code.

Sinon, le résultat rassurant est celui là! Une LED qui clignote! ;)



Et voilà! le premier Tuto est fini! :D 
J’espère que ça vous a plu! et j’espère aussi que vous l'avez trouvé clair et compréhensif.

N'hésitez pas à me donner vos remarques , vos critiques, peut être quelques fautes au niveau de la démarche. Mais bon! pour la démarche, elle est juste faites moi confiance :D J'ai pris ce tuto du site du zéro ainsi que les imprimes écran. Mais j'ai essayé quand même à faire un effort en rédigeant le contenu à ma manière :p

Allez! On se voit dans le tuto suivant. A bientôt  :)