Arduino : getting started
La plateforme
Matériel
Présentation générale
Une plateforme Arduino se compose la plupart du temps des mêmes éléments (qui varient en fonction des modèles), le schéma ci-dessous permet de situer les principaux composants sur la carte. On y retrouve au centre et nommé "IC1" le microcontrôleur (de marque ATMega principalement), un port USB sur la gauche pour l'alimentation et la programmation. Les broches vertes en haut sont les entrées/sorties numériques sachant que les 0 et 1 sont dédiées aux communications séries, les broches bleues en bas correspondent aux entrées analogiques. On peut retrouver également une sortie 5V et 9V (broches oranges).

Arduino Uno
Le modèle que j'ai choisi pour faire cette présentation et celui que j'avais en ma possession est un Arduino Uno. C'est un modèle très classique et basique qui permet déjà de faire un grand nombre d'application. D'après l'image ci-dessous, on remarque que l'on retrouve les principaux composants décrit auparavant.
Celui-ci est composé de :- Un microcontrôlleur ATMega328 fonctionnant à une fréquence de 16Mhz
- 14 entrées/sorties numériques (dont 6 PWM)
- 6 entrées analogiques
- Une mémoire Flash de 32KB
- Une mémoire SRAM de 2KB
- Une mémoire EEPROM de 1KB

Il existe évidemment bien d'autres modèles (disponibles sur le store d'Arduino) en fonction de ce que l'on veut : plus petit, avec plus d’I/O, sur 32 bits ...
Entrées / Sorties
Nous allons maintenant rentrer dans le vif du sujet. Nous avons parlé dans les sections précedentes des entrées et sorties, quelles soient numériques ou analogiques, mais à quoi servent-elles vraiment ?
Entrées analogiques
Les entrées analogiques (broches bleues sur le schéma du haut de page) permettent de convertir des valeurs analogiques (une tension) en valeurs numériques. Ces entrées utilisent donc un convertisseur analogique numérique (ici 6 canaux) pour faire une résolution sur 10bits. En appliquant une tension de 0 à 5V en entrée, on récupérera des valeurs entre 0 et 1023 (4,9 mV par unité) dans notre microcontrôleur. Il est important de savoir que la valeur de réference en entrée peut être changée mais que la résolution sera la même, plus on augmente la tension et plus on perdra en précision.Principale utilisation : ces entrées permettent de lire des valeurs à partir de capteurs (lumière, infrarouge etc). On pourra alors fixer des seuils et faire réagir notre système en fonction par exemple.
Entrées/Sorties numériques
Les entrées et sorties numériques sont les plus simples à comprendre, chacune des broches vertes peut être configurée soit en entrée, soit en sortie. Par défaut, toutes les broches sont en entrée. En entrée, on appliquera sur la broche soit un état haut (5 Volts) soit un états bas (0 Volts) et on récuperera l'état dans notre programme (voir les constantes dans la section "Ecrire un sketch". En sortie, on pourra positionner 0 ou 5 Volts sur la broche et on peut ainsi contrôler différents composants ou capteurs.
PWM
En plus du fonctionnement standard décrit précedemment, certaines broches numériques peuvent être utilisées dans un mode appelé Pulse Width Modulation. Le but étant ici de simuler un signal analogique en utilisant la moyenne d'un signal numérique. Pour ce faire, on va générer des signaux carrés entre 5 Volts (ON) et 0 Volts (OFF). Ainsi, en faisant varier la pulsation, on peut faire varier la valeur moyenne du signal. Plus la fréquence sera haute et plus on se rapprochera de 5 Volts. Le chronogramme ci-dessous permet de bien comprendre le principe de variation des pulsations et donc de la valeur moyenne. On pourra grâce à ce mode, augmenter linéairement la tension en sortie d'une broche.

Utilisation : une de ses principale utilisation étant pour faire varier linéairement la vitesse d’un moteur.
Serial
Les entrées et sorties précedentes nous permettent d'interagir avec des capteurs et différents composants éléctroniques, en plus de cela, Arduino fournit un mode de communication série (broches 0 en RX, et 1 pour le TX en haut sur le schéma). Cela va permettre de communiquer soit avec le PC, soit avec une carte bluetooth par exemple. La communication se fait en ASCII ou en mode par octet, ce que nous verrons avec les fonctions.
Environnement de développement
En plus des différents cartes disponibles sur le store, Arduino fournit tout un environnement de développement permettant de les programmer. L'énorme avantage est que celui-ci est compatible avec les systèmes suivants :
- GNU/Linux & *BSD
- Windows
- Mac OSX
Après avoir installé le SDK et les différents librairies fournit par Arduino, chacun est libre d'utiliser l'outils de développement qui le satisfait le plus. Ainsi plusieurs outils sont disponibles, sachant que Arduino fournit un IDE permettant de débuter et de rapidement prendre en main le système. Néammoins, on retrouve des environnements permettant de développer avec Eclipse, Netbeans, Visual Studio ou encore XCode, la liste étant longue. Le but n'est pas ici de décrire le processus d'installation du SDK et des outils, pour plus d'informations on peut se rendre ici .
Ci-dessous un aperçu de l'IDE fournit par Arduino :
