Files
varlog/_cache/articles/bc697237-ff59-40d7-b252-c0e13499dffc.json
T
2026-05-15 10:37:48 +02:00

1 line
9.2 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"uuid":"bc697237-ff59-40d7-b252-c0e13499dffc","slug":"100-presentation-et-principe-de-l-arduino","title":"Présentation et principe de l'Arduino","author":"cedric@abonnel.fr","published":true,"published_at":"2022-01-28 09:51:27","created_at":"2022-01-28 09:51:27","updated_at":"2022-01-28 09:51:27","revisions":[],"cover":"","files_meta":[],"external_links":[],"seo_title":"","seo_description":"","og_image":"","category":"Électronique","content":"# Présentation et principe de l'Arduino\n\n## - Généralités\nUn Arduino représente des cartes électroniques regroupant plusieurs composants électroniques afin de réaliser des objets électroniques interactifs. Il peut être vu comme un ordinateur. \n\nOn retrouve de la **mémoire** sous deux types :\n- la mémoire morte, qui contiendra les instructions que l'Arduino devra exécuter\n- la mémoire vive, contenant les informations qui changent : les variables\n\nOn aura également un **calculateur** qui traitera et exécutera les instructions.\n\nTous ces éléments sont contenu dans un micro contrôleur. Il est d'architecture soit **AVR** soit d'architecture **ARM** comme le Cortex m3. \n\nLes cartes Arduino sont construits autour d'un microcontrôleur **Atmel AVR** pour les modèles : \n- ATmega328, \n- ATmega32u4, \n- ATmega2560, \n- ATmega168, \n- ATmega1280 \n- ATmega8 \n\nD'autres cartes Arduino sont construits autour des microcontroleur **Cortex** d'architecture **ARM**. C'est la société **STMicroelectronics** qui se lance dans l'aventure en mai 2016 avec les modèles **STM32** [^note: https:*www.st.com/content/st_com/ja/about/media-center/press-item.html/t3829.html]\n\nLes schémas des cartes électroniques Arduino sont publiés en licence libre. Le microcontrôleur peut analyser et produire des signaux électriques de format analogique ou de format numérique. On utilisera les entrées sortie de la carte électronique. \n\nPour le programmer, il faut utiliser la prise USB qui permettra de le relier à l'ordinateur. Elle permet également d'alimenter l'Arduino. Plus tard, l'alimentation seffectuera sur la broche **+Vin (7-12 V)** et **0V**.\n\nUne fois programmé, l'Arduino sera relié par un prise secteur ou une batterie via le port d'alimentation.\n\nLes broches sont des entrées/sorties qui permettent de relier des capteurs, des LED, des moteurs ou des cartes d'extension. Cela permet le contrôle des appareils domestiques - éclairage, chauffage…, le pilotage d'un robot, de l'informatique embarquée, etc.\n\nLes cartes Arduino et les schémas de ces cartes sont publiés en licence libre.\n\n## - Principe général\nLes différentes versions des Arduino fonctionnent sous le même principe général :\n\n![](brochagearduino.png)\n\nLes broches de **1** à **13**, ce sont les broches dites numériques (**0** ou **1**) ou « tout ou rien » ; elles offrent en sortie du 5 V et acceptent en entrée du 5 V sur le même principe.\nDans le code, on utilise les fonctions `digitalWrite()` et `digitalRead()`.\n\nLes broches de **14** à **19**, ce sont les broches dites analogiques, valeur entre **0 V** et **5 V**.\nDans le code, on utilise les fonctions `analogWrite()` et `analogRead()`\n\nEnfin, on y trouve également les différentes broches d'alimentation :\n- Rouge : sortie 5 V (+5V)\n- Orange : sortie 3,3 V (+3V3)\n- Bleue : les masses (0V)\n- Saumon : entrée reliée à l'alimentation de **+Vin (7-12V)**\n\nIl y a des variations entre les différentes cartes (par exemple : UNO, la patte 13 est équipée d'une résistance).\n\nLes tensions admises des entrées/sorties sont strictement comprise entre **0 V** et **5 V**. Pas de tension négative !\n\nIl existe plein de variantes de cartes Arduino :\n\n- Arduino Nano\n- Arduino NanoPro\n- Arduino NanoPro mini\n- Arduino NanoMega\n- Arduino NanoDiecimila\n- Arduino NanoDuemilanove\n- Arduino NanoLeonardo\n- Arduino NanoDue\n- Arduino NanoFio\n\n## - Présentation de l'Arduino Uno\nL'**Arduino Uno** est basé sur un microcontrôleur ATMEL 1502 de 32 registres, cadencé à 166 MHz (un cycle de 6ns).\n\n![](arduino_explications.png)\n*Crédit image : Mines Telecom - Programmer un objet avec Arduino, cours 04017 *\n\nL'**Arduino Uno** propose :\n- 14 entrées numériques\n- 6 entrées analogiques\n- 1 sortie 5 V à 500 mA\n- 1 sortie 3,3 V à 50 mA\n- 1 ports série Rx/Tx avec Led indépendantes\n- 1 port USB, qui sert également d'alimentation et de connexion série\n- 1 alimentation complémentaire (Vin 7 à 12 V)\n\nOn notera la présence d'une LED connectée sur la broche 13.\n\nLes broches **Rx** et **Tx** de l'Arduino permettent d'effectuer une communication série. On veillera à ne pas utiliser ces broches pour brancher des LED ou d'autres composants.\n\n![Schéma Arduino UNO Pinout by bq.com](20220128-105101.png)\n\n## - Utiliser une plaque de prototypage\nPour tester ses branchements directement sur l'Arduino sans soudure, il faut utiliser une platine d'essai (ou breadboard, plaque dessai, plaque de montage rapide).\n\nLa platine d'essai est composée d'une multitude de trous. La plupart d'entre eux sont reliés. Voici une représentation : \n\n![](breadboard.jpg)\n\nEn position portrait (comme sur la photo), la plaque est divisée à la verticale en 2 parties égales. Les 5 trous d'une ligne, d'une partie sont interconnectés. C'est-à-dire qu'il y a une liaison électrique pour les trous **a, b, c, d, et e** de la ligne 1, indépendante des lignes voisines et de l'autre partie de la plaque.\n\nSur notre plaque d'essai, nous avons 30 x 2 lignes de connexion. L'espace entre les deux parties et standardisé afin de positionner la plupart des circuits intégrés et de pouvoir leurs câbler toutes les broches.\n\nEnfin, tous les trous de la colonne `+` d'une partie de la plaque sont interconnectés entre eux. Ceci représente une ligne d'alimentation et il faudra l'utiliser tel quel. Il en va de même pour la colonne `-` et l'autre partie de la plaque.\n\nSur la partie gauche de la photo:\n\n- (trait rouge) à gauche, tous les trous de la colonne **+** sont reliés entre eux\n- (trait bleu) tous les trous de la colonne **-**, sont reliés entre eux\n- (trait jaune) tous les trous de la ligne 1 sont reliés entre eux, sur 5 colonnes (a, b, c, d et e). On peut reproduire ce schéma sur les 29 autres lignes.\n- la partie de droite, reproduit le même schéma par effet mirroir, avec un axe de symétrie vertical coupant la plaque en deux moitié égale.\n\nPar convention, je branche l'alimentation 5 V sur la colonne **+** et la masse (0 V) sur la colonne **-**.\n\n## - Logiciel de programmation d'un Arduino\nPour programmer un **Arduino** ou une carte programmable, il faut un éditeur qui fonctionne sur un ordinateur et un programme qui permettra de téléverser le code vers la carte.\n\nLe programme libre de droit **Arduino Software (IDE)** permet d'écrire du code et de le téléverser dans la carte. C'est l'outil privilégié si vous avez acheté du matériel. Il fonctionne sous Windows, Mac OS X, et Linux. Le guide d'installation du logiciel IDE Arduino sous Linux permet de mieux appréhender une installation de la dernière version en date.\n\nIl existe également un simulateur appelé **Tinkercad circuits** qui permet de tester votre code et les montages électroniques virtuellement.\n\n## - Principe de programmation Arduino\nLe langage Arduino est basé sur les langages C et C++. Les programmes Arduino sont intégrés dans un schéma (scketch) **setup** / **loop**. Il s'agit de deux blocs de fonctions obligatoirement présents dans tous programmes Arduino.\n\nUn bloc commence par le symbole `{` et se termine par le symbole `}`. Le nom d'une fonction est toujours suivie par les symboles `()`.\n\nLa fonction **setup()** est appelée systématiquement au démarrage de l'Arduino, une seule fois, après un **reset** ou **une mise sous tension**. Il est utilisé pour initialiser des variables, démarrer des librairies, modifier le paramétrage des broches, etc...\n\nAprès avoir utilisé la fonction **setup()**, la fonction **loop()** exécute de manière infinie le code à lintérieur de ce bloc afin de répondre aux interactions demandées.\n\nAfin de rendre plus intelligible le code écrit, il est possible d'écrire du texte qui ne sera pas interpréter comme du code. Une ligne de commentaire commencera par les symboles `<nowiki>*</nowiki>` alors qu'un bloc de commentaires sera encadré par les symboles `/*` et `*/`.\n\nPar exemple :\n```C\nvoid setup() {\n- Ceci est une ligne de commentaire\n}\n\nvoid loop() {\n /*\n Voici un bloc\n de commentaire\n sur plusieurs lignes\n */\n}\n```\n\nOn peut utiliser d'autres fonctions qui permettent dexécuter une ou plusieurs actions. Les fonctions sont définies avec :\n- un nom représentant l'utilité du bloc.\n- une ou plusieurs entrées. Il s'agit de paramètres ou arguments placés entre parenthèses.\n- une sortie qui est le résultat de la fonction.\n\nPar exemple, prenons le code suivant `pinMode(buttonPin, INPUT)`. Dans ce cas, la fonction est **pinMode** qui contient deux variables : **buttonPin** et **INPUT**.\n\n```C\nint buttonPin = 3;\n\nvoid setup() {\n Serial.begin(9600);\n pinMode(buttonPin, INPUT);\n}\n\nvoid loop() {\n- ...\n}\n```\n\n## - Référentiel des fonctions, variables et structures du Langage Arduino\n> https://www.arduino.cc/reference/en/","featured":false,"tags":[]}