Arduino : premiers pas en informatique embarquée

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

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.

Le cours est ponctué de vidéos réalisés lors de sessions lives sur ma chaîne Twitch https://twitch.tv/eskimon . L’ensemble de ces extraits ainsi que des vidéos complètes originales peuvent être trouvées sur la playlist YouTube suivante : https://www.youtube.com/playlist?list=PLNBsspAtBwlL7lw9HI50YE3WJKY5us-cn

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

    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

Ces contenus pourraient vous intéresser

53 commentaires

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…

+2 -0

bonjour. je viens d'acheter une ardino uno type r3 clone atmega 328p ch340g. je suis debutant et j'ai beaucoup de problemes à la mettre en route surtout au niveau du televersement. j'ai donc tout efface et repars a zero. on m'a dit que le programme 1.9.12 n'etait pas l..e bon. que faut il mettre a la place. y'aurait-il quelqu'un pour me quider dans ces premiers pas. merci pour vos mais cordialement. jpb

Bonjour! J'ai adoré ce cours malgré tout il me semble n'avoir rien vu sur la programmation d'un mini vibreur. j'aimerais faire vibrer un vibreur lorsqu'une condition est validée. Voici un lien pour trouver ce vibreur en question quelqu'un peut m'aider s'il vous plait. merci d'avance :zorro:

http://eud.dx.com/product/mini-flat-vibrating-vibration-motor-dc-motor-for-arduino-blue-844436124

Yep effectivement sur mon blog il y a une version. Elle est un peu ancienne mais a un rendu plus exploitable pour l’instant que l’export auto de ZdS. Les différences sont surtout des corrections de coquilles et l’absence de la partie 8 sur l’Internet. Du coup faudrait que je prévienne quand même l’équipe technique que l’export PDF ici est cassé (car ça marchait a une époque il me semble !).

+0 -0

Bonjour, merci pour ce tutoriel, il est génial. Pour l’exercice sur le barregraphe à LED, il ne serait pas plus simple d’utiliser un tableau led ? Cela réduirait quand même pas mal le code. Voici le mien, pour voir la différence.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
const int led[4] = {10, 11, 12, 13};
const int boutonPlus = 3;
const int boutonMoins = 2;

int i = 0;
int nbLedAllumees = 0;
int etatBoutonPlus;
int etatBoutonMoins;
int memoirePlus = HIGH;
int memoireMoins = HIGH;

void setup() 
{
 for(i = 0 ; i < 4 ; i++)
 {
   pinMode(led[i], OUTPUT);
   digitalWrite(led[i], HIGH);
 }
 
 pinMode(boutonPlus, INPUT);
 pinMode(boutonMoins, INPUT);  
}

void loop() 
{
 etatBoutonPlus = digitalRead(boutonPlus);
 
 if((etatBoutonPlus != memoirePlus) && (etatBoutonPlus == LOW))
   nbLedAllumees++;

 memoirePlus = etatBoutonPlus;

 etatBoutonMoins = digitalRead(boutonMoins);

 if((etatBoutonMoins != memoireMoins) && (etatBoutonMoins == LOW))
   nbLedAllumees--;

 memoireMoins = etatBoutonMoins;

 if(nbLedAllumees > 4)
   nbLedAllumees = 4;
 else if(nbLedAllumees < 0)
   nbLedAllumees = 0;
   
 allume(nbLedAllumees);
}

void allume(int nombre)
{
 for(i = 0 ; i < nombre ; i++)
   digitalWrite(led[i], LOW); 

 for(i = nombre ; i < 4 ; i++)
   digitalWrite(led[i], HIGH);
}

Qu’est-ce que vous en pensez ? Après peut-être que cela me semble normal car je programme en C…

+0 -0

Bonjour Eskimon. Quand tu dis une vieille version du pdf, on peut tout de même l’utiliser pour débuter ou il est préferable d’attendre la MAJ ?

Supersarma

Complètement utilisable dès maintenant. Il manque juste la partie Ethernet et pas mal de corrections de fautes. La présentation n’est pas super joli non plus. Mais sorti de ça c’est utilisable.

+0 -0

Bsr. Je dispose d’un arduino nano w atmega 328 CH340G. Qui fonctionnait correctement. J’avais l’habitude de téléverser les programmes par ARDUINOdroid sur mon Android. Jusqu’au jour où j’ai commencé à avoir ça :

Uploading error

Overriding Baud Rate : 57600 avrdude Sent: 0 [30][20] avrdude : Sent : 0 [30][20] avrdude Sent: 0 [30][20] …………… …………… avrdude usb_fill_buf() usb_bulLread()error=-7 avrdude stk500_recv() programmer is not responding

La led Rx clignote 3 fois lors du téléversement et c’est tout… La carte ne répond plus depuis lors..

Je suis allé sur Google mais les réponses sont assez floues. Je veux comprendre exactement ce qui se passe.. Et si il y a une issue au problème..

Besoin d’aide svp, c’est urgent..

Ce tutoriel est très complet. Mais quand on a jamais fait d’informatique auparavant, il est difficile de s’accrocher. En effet, dans les premier chapitres, les noms des différentes variables sont jetés sur le lecteur avec des stats inutiles pour les débutants. :'( En bref, le début ne donne pas envie de faire de l’informatique. Cependant, je trouve que les TPs sont très bien ^^ expliqués, ainsi que les différentes notions. Merci infiniment pour ce tutoriel qui ma permis de rentrer dans le merveilleux monde de l’informatique. :D

Je suis admiratif devant le travail fourni, bravo.
Cependant pour info la version pdf du 09 avril 2020 est buguée: elle ne comporte que 530 pages car des lignes de code ne sont pas visibles (par ex. page 78 pour les variables booléennes) alors que la version epub de 882 pages semble correcte (désolé je n’ai pas tout lu/vérifié)

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

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