Licence CC BY-NC-SA

Arduino : premiers pas en informatique embarquée

Venez découvrir le monde fabuleux du bricolage électronique et informatique en toute simplicité

Dernière mise à jour :
Auteurs :
Catégorie :

Bienvenue à toutes et à tous pour un tutoriel sur l'électronique et l'informatique ensemble ! :)

Ce que nous allons apprendre aujourd'hui est un mélange d'électronique et de programmation. On va en effet parler d'informatique embarquée qui est un sous-domaine de l'électronique et qui a l'habileté d'unir la puissance de la programmation à la puissance de l'électronique.

Nous allons, dans un premier temps, voir ce qu'est l'électronique et la programmation. Puis nous enchaînerons sur la prise en main du système Arduino, un système d'informatique embarquée grand public. Enfin, je vous ferai un cours très rapide sur le langage Arduino, mais il posera les bases de la programmation. Une fois ces étapes préliminaires achevées, nous pourrons entamer notre premier programme et faire un pas dans l’informatique embarquée.

Apprentissage des bases

Le cours est composé de façon à ce que les bases essentielles soient regroupées dans les premières parties. C'est-à-dire, pour commencer la lecture, vous devrez lire les parties 1 et 2. Ensuite, les parties 3 et 4 sont également essentielles et sont à lire dans l'ordre.

Après cela, vous aurez acquis toutes les bases nécessaires pour poursuivre la lecture sereinement. C'est seulement alors que vous pourrez sélectionner les chapitres selon les connaissances que vous souhaitez acquérir.

Découverte de l'Arduino

  1. Présentation d’Arduino

    1. Qu’est-ce que c’est ?

    2. Pourquoi choisir Arduino ?

    3. Les cartes Arduino

    4. Liste d’achat

  2. Quelques bases élémentaires

    1. Le courant, la tension et la masse

    2. La résistance et sa loi !

    3. Le microcontrôleur

    4. Les bases de comptage (2,10 et 16)

  3. Le logiciel

    1. Installation

    2. Interface du logiciel

    3. Approche et utilisation du logiciel

  4. Le matériel

    1. Présentation de la carte

    2. Installation

    3. Fonctionnement global

  5. Le langage Arduino (1/2)

    1. La syntaxe du langage

    2. Les variables

    3. Les conditions

  6. Le langage Arduino (2/2)

    1. Les boucles

    2. Les fonctions

    3. Les tableaux

Gestion des entrées / sorties

  1. Notre premier programme !

    1. La diode électroluminescente

    2. Par quoi on commence ?

    3. Créer le programme : les bons outils !

    4. Comment tout cela fonctionne ?

  2. Introduire le temps

    1. Comment faire ?

    2. Faire clignoter un groupe de LED

    3. Réaliser un chenillard

    4. Fonction millis()

  3. TP Feux de signalisation routière

    1. Préparation

    2. Énoncé de l’exercice

    3. Correction !

  4. Un simple bouton

    1. Qu’est-ce qu’un bouton ?

    2. Récupérer l’appui du bouton

    3. Interagir avec les LED

    4. Les interruptions matérielles

  5. Afficheurs 7 segments

    1. Première approche : côté électronique

    2. Afficher son premier chiffre !

    3. Techniques d’affichage

    4. Utilisation du décodeur BCD

    5. Utiliser plusieurs afficheurs

    6. Contraintes des évènements

  6. [TP] Parking

    1. Consigne

    2. Correction !

La communication avec Arduino

  1. Généralités sur la voie série

    1. Communiquer, pourquoi ?

    2. La norme RS232

    3. Connexion série entre Arduino et …

    4. Au delà d’Arduino avec la connexion série

  2. Envoyer et recevoir des données sur la voie série

    1. Préparer la voie série

    2. Envoyer des données

    3. Recevoir des données

    4. [Exercice] Attention à la casse !

  3. [TP] Baignade interdite !

    1. Sujet du TP sur la voie série

    2. Correction !

    3. Améliorations

  4. [Annexe] Ordinateur et voie série dans un autre langage de programmation

    1. En C++ avec Qt

    2. En C# (.Net)

    3. En Python

Les grandeurs analogiques

  1. Les entrées analogiques de l’Arduino

    1. Un signal analogique : petits rappels

    2. Les convertisseurs analogiques –> numérique ou CAN

    3. Lecture analogique, on y vient…

    4. Exemple d’utilisation

    5. Une meilleure précision ?

  2. [TP] Vu-mètre à LED

    1. Consigne

    2. Correction !

    3. Amélioration

  3. Et les sorties “analogiques”, enfin… presque !

    1. Convertir des données binaires en signal analogique

    2. La PWM de l’Arduino

    3. Transformation PWM -> signal analogique

    4. Modifier la fréquence de la PWM

  4. [Exercice] Une animation “YouTube”

    1. Énoncé

    2. Solution

Les capteurs et l'environnement autour d'Arduino

  1. Généralités sur les capteurs

    1. Capteur et Transducteur

    2. Un capteur, ça capte !

    3. Les caractéristiques d’un capteur

  2. Différents types de mesures

    1. Tout Ou Rien, un capteur qui sait ce qu’il veut

    2. Capteurs à résistance de sortie variable

    3. Capteurs à tension de sortie variable

    4. Étalonner son capteur

  3. Des capteurs plus évolués

    1. Capteur à sortie en modulation de largeur d’impulsion (PWM)

    2. Capteur à signal de sortie de fréquence variable

    3. Capteur utilisant un protocole de communication

Le mouvement grâce aux moteurs

  1. Le moteur à courant continu

    1. Un moteur, ça fait quoi au juste ?

    2. Alimenter un moteur

    3. Piloter un moteur

    4. Et Arduino dans tout ça ?

  2. Un moteur qui a de la tête : le Servomoteur

    1. Principe du servomoteur

    2. La commande d’un servomoteur

    3. Arduino et les servomoteurs

    4. L’électronique d’asservissement

    5. Un peu d’exercice !

    6. Tester un servomoteur “non-standard”

  3. A petits pas, le moteur pas-à-pas

    1. Les différents moteurs pas-à-pas et leur fonctionnement

    2. Se servir du moteur

    3. Utilisation avec Arduino

L'affichage, une autre manière d'interagir

  1. Les écrans LCD

    1. Un écran LCD c’est quoi ?

    2. Quel écran choisir ?

    3. Comment on s’en sert ?

  2. Votre premier texte sur le LCD !

    1. Ecrire du texte sur le LCD

    2. Se déplacer sur l’écran

    3. Créer un caractère

  3. [TP] Supervision avec un LCD

    1. Consigne

    2. Correction

Internet of Things : Arduino sur Internet

  1. Découverte de l'Ethernet sur Arduino

    1. Un réseau informatique c'est quoi ?

    2. Le shield Ethernet

    3. Un peu de vocabulaire

  2. Arduino et Ethernet : client

    1. Client et requêtes HTTP

    2. Utilisation du shield comme client

    3. Exercice, lire l'uptime de Eskimon.fr

  3. Arduino et Ethernet : serveur

    1. Préparer l'Arduino

    2. Répondre et servir des données

    3. Agir sur une requête plus précise

    4. Sortir de son réseau privé

    5. Faire une interface pour dialoguer avec son Arduino



Aller plus loin

Ce tutoriel vous a plus ? Vous en voulez encore ? Voici quelques autres tutoriels qui pourrait surement vous intéresser…

Et quelques articles sur mon blog pas encore paru sur ZdS :

Remerciements

Un gros merci à plusieurs membres de Zeste de Savoir pour le coup de main à l'import de ce tutoriel, sa relecture et l'aide à sa mise en page. Un travail et un soin magnifique ont été apportés pour tenter de vous fournir un tuto le plus propre possible.

Plein de mercis en particulier à :

Et pour leur travail sur la publication et l'export PDF, merci à :

  • gustavi ;
  • pierre_24 ;
  • SpaceFox ;
  • Et tout ceux ayant apporté leur pierre à l’édifice de près ou de loin ! Ça a vraiment été un travail de longue haleine. :D

31 commentaires

Staff

Il n'existe pas de Langage arduino. C'est du C ou C++ (réduit) compilé avec avr-gcc ou arv-g++.

Davidbrcz

Est ce qu'un langage tronqué n'est pas en soit un nouveau langage ? On ne peut pas appeler ça du C++, entre autre parce que toute forme d'exception est prohibé. Appeler ça du C++ serait donc faux pour un lecteur. Lui donner un nom spécifique ne me choc pas du coup. D'autant plus vu la cible du tuto.

Édité

+23 -1

Juste une petite info pour ceux qui aurait rencontré le même problème que moi (et je pense que ce serait bon de l'indiquer dans le tuto :D), le .toAscii est obsolète pour Qt5, donc la ligne:

port->write(caractere.toAscii());

Indique une erreur selon laquelle la classe QString n'as pas de membre ".toAscii()"

EDIT: Je suis toujours à la recherche d'une méthode équivalente :D

EDIT2: Bon ben en faite j'ai trouvé, il faut utiliser ".toLatin1()". De rien :)

Édité

+1 -0

Il n'existe pas de Langage arduino. C'est du C ou C++ (réduit) compilé avec avr-gcc ou arv-g++.

Davidbrcz

Est ce qu'un langage tronqué n'est pas en soit un nouveau langage ? On ne peut pas appeler ça du C++, entre autre parce que toute forme d'exception est prohibé. Appeler ça du C++ serait donc faux pour un lecteur. Lui donner un nom spécifique ne me choc pas du coup. D'autant plus vu la cible du tuto.

Kje

Peut être. Mais le fait que les exceptions ou que l'implémentation standard ne soient pas livrés avec le compilateur ne veut pas dire que ce n'est pas du C/C++. Typiquement, le code suivant ne compilera pas:

1
2
3
4
5
void setup() {
  int throw; // le mot-clé throw est reconnu
}
void loop() {
}

Il vaudrait mieux souligner plus le faite que Le langage Arduino c'est que du C ou du C++ (selon le mode de compilation) augmenté d'un certain nombre de facilitées (fonctions et quelques typedefs). L'importance de dire ceci réside dans le fait que les sémantiques de ces deux langages sont déjà détaillées dans les standards ISO concernés et bien expliquées dans un bon nombre d'ouvrages et tutos.

+1 -1

Bon je vais mettre tout le monde d'accord pour clore ce débat qui je pense pourrait être sans fin entre la "team puriste" et les "grands défendeurs des débutants". Voici le wikipedia Anglais :

Arduino programs are written in C or C++. The Arduino IDE comes with a software library called "Wiring" from the original Wiring project, which makes many common input/output operations much easier. Users only need define two functions to make a runnable cyclic executive program:

Wikipedia Arduino anglais

et voici la version française.

Le langage de programmation utilisé est le C++, compilé avec avr-g++ 3, et lié à la bibliothèque de développement Arduino, permettant l'utilisation de la carte et de ses entrées/sorties. La mise en place de ce langage standard rend aisé le développement de programmes sur les plates-formes Arduino, à toute personne maîtrisant le C ou le C++.

Wikipedia Arduino français

On est tous sur la même longueur d'onde ? Si vraiment vous tenez a débattre a ce propos, n’hésitez pas a ouvrir un sujet sur le forum :) (mais essayons de garder cette zone de commentaires pour centraliser les remarques/critiques/questions sur le tuto en lui-même ;) )


@Spitrou : Un jour je prendrais le temps de migrer vers Qt5. Un jour. :D


@thib.

Pour le bluetooth, j'ai effectivement une annexe pour utiliser un petit module sur mon blog. Cependant j'estime qu'elle pourrait être améliorée avant d’être importée sur ZdS comme je l'ai déjà fais pour d'autres annexes.

Le 433MHz, je n'ai pas le matériel a tester. Donc pas de tutos a proposer. Si un jour j’achète ce truc ptet que je le ferais :D

Pour le WiFi ce sera Non. Pour plusieurs raisons :

  • Le prix du shield : j'ai pas envie de payer 80 euros pour ca
  • Par principe : Le shield wifi est xx fois plus puissant que ce que pourra jamais faire l'Arduino. C'est a mon sens une ineptie que de brancher une telle techno sur un si petit microcontrolleur. Si qqun veux vraiment faire du wifi alors autant partir sur une raspberryPi ou un BeagleBone avec un dongle wifi USB.

Pour l'ethernet : J'ai reçu un shield officiel mais n'en ai jamais eu besoin. J'ai cependant commence a écrire un bout de tuto a ce sujet qui sera ainsi je pense la dernière partie du tuto Arduino. Cela prend du temps et j'en ai pas vraiment, donc ca viendra un jour. Cependant, la encore c'est un peu dommage de brancher un truc si costaud sur un petit microcontrolleur 8bits… Autant partir la encore sur une solution RPI ou BB qui coûte aussi cher que Arduino+shield et on le mérite d’être bien plus véloce.

Dans tout ca il resterais le XBee. J'aimerais bien (re)jouer avec mais les modules coûtent tout de même assez cher pour "juste un tuto" et je n'ai toujours pas le temps pour de toute facon…

Voila mon avis et mes réponses :)

ZdS, le best du Zeste ! Tuto Arduino, blog, etc

+2 -0

Bonjour eskimon, est-ce que ce tuto est identique à celui présent sur ton site ? Et si oui, pourquoi certaines annexes ont l'air manquante ? :-)

En tout cas c'est un très bon tuto ! L'annexe Ajouter des sorties numériques à l’Arduino, le 74HC595 m'a beaucoup aidé, c'est justement celle que je cherchais ^^

La curiosité est le plus beau des défauts

+0 -0

Bonjour eskimon, est-ce que ce tuto est identique à celui présent sur ton site ? Et si oui, pourquoi certaines annexes ont l'air manquante ? :-)

En tout cas c'est un très bon tuto ! L'annexe Ajouter des sorties numériques à l’Arduino, le 74HC595 m'a beaucoup aidé, c'est justement celle que je cherchais ^^

Dark Patate

C'est cadeau alors : https://zestedesavoir.com/tutoriels/?tag=arduino :D

Elles sont pas dans le tuto pour éviter que ce dernier fasse des kilomètres et car il avait subit une petite restructuration du plan il y a un (long) moment, mais il faudrait que je rajoute le lien précédent dans la conclusion ca pourrait être pratique !

ZdS, le best du Zeste ! Tuto Arduino, blog, etc

+1 -0

Effectivement, j'aurais du chercher ailleurs :honte: Merci beaucoup ! Je pourrais tout chercher ici désormais, car j'ai cru comprendre que tu préférais écrire ici que sur ton Wordpress :-)

Édité

La curiosité est le plus beau des défauts

+0 -0

Je pourrais tout chercher ici désormais, car j'ai cru comprendre que tu préférais écrire ici que sur ton Wordpress :-)

Dark Patate

Maintenir deux tutos identiques en parallèles c'est un peu pénible oui. Les outils sont meilleurs ici pour ce genre de redaction, la visibilite y est surement meilleure aussi donc a terme c'est fort probable que le blog ne soit plus tres utile.

ZdS, le best du Zeste ! Tuto Arduino, blog, etc

+0 -0

Merci pour ce tuto qui s'annonce déjà très enrichissant!
Il doit cependant y avoir une erreur dans les adresses des sites arduino car les deux conduisent sur le site anglais qui ne comporte pas d'option pour changes la langue :$ .

Est-ce une erreur l'ors de l'entrée des adresse ou est-ce un changement survenu deupuis la mise en place du tuto?

+0 -0

Est-ce une erreur l'ors de l'entrée des adresse ou est-ce un changement survenu deupuis la mise en place du tuto?

Effectivement, depuis l’écriture du tuto le site officiel a évolué et les adresses des traductions ne sont plus correctes. J’essaierai de les retrouver, un jour, peut-être… (car je m’étais déjà fait la réflexion qu'elles sont bien cachées dorénavant et je ne les ai pas encore revu !)

ZdS, le best du Zeste ! Tuto Arduino, blog, etc

+0 -0

Bonjour!

Tout d'abord je tiens à féliciter et remercier les gens qui ont travaillé sur cet ouvrage. Il est très bien documenté et explique très bien.

Cependant j'ai remarqué que l'exportation du Tutoriel en format pdf semble avoir un petit accros. Certaines images sont des blocs noir. Est-ce possible que lorsque le pdf à été généré que un des serveurs hébergent certaines images étaient offline?

Merci pour tout!

Edit: En allant voir les fichiers Markdown (dans le fichier a téléchargé Archive) j'ai cru remarquer que l'url des images qui ne fonctionnent pas en PDF n'est pas complet. L'url commence par "/media/galleries…" au lieu de "http://zestedesavoir.com/media/galleries…". Je ne sais pas si ça a un impact du côté génération du pdf… Des fois que ça pourrait aider…

Édité par Delta_x

+1 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte