Cours de Programmation Embarquée S5 - IISE 2024/2025 PDF

Summary

This document is an outline for an embedded systems programming course for undergraduate students at IISE in the 2024-2025 academic year. It covers the basic principles and key aspects like objectives, course content, and introduction to embedded systems. Examples of embedded systems and detailed comparisons to standard computer systems are presented.

Full Transcript

Cours : Programmation Embarquée Pr. Amine RGHIOUI [email protected] Filières: Ingénierie Informatique et Systèmes Embarqués Année Universitaire 2024/2025 Objectifs: Plan de cours ❑ Comprendre les principes fond...

Cours : Programmation Embarquée Pr. Amine RGHIOUI [email protected] Filières: Ingénierie Informatique et Systèmes Embarqués Année Universitaire 2024/2025 Objectifs: Plan de cours ❑ Comprendre les principes fondamentaux de la conception de systèmes embarqués. ❑ Concevoir et développer des systèmes. ❑ Comprendre les problèmes liés aux systèmes embarqués. ❑ Analyser et résoudre les problèmes complexes liés aux systèmes embarqués. ❑ Travailler en équipe pour concevoir et développer des systèmes embarqués. Contenu du cours: ❑ Exposé : Des exposés faits par les étudiants seront programmés, tout le long du déroulement de cours. ❑ Cours, et TD  Jeudi 08h30 – 10h Pr. Amine Rghioui Soyez à l'heure en cours et en TP ! FS Agadir Plan de cours Chapitre 1 : Introduction aux systèmes embarqués ❖ Définition des systèmes embarqués ❖ Exemples des systèmes embarqués ❖ Caractéristiques des systèmes embarqués Chapitre 2 : Architecture des systèmes embarqués ❖ Les différents composants d'un système embarqué ❖ Architecture en couches ❖ Processeurs Chapitre 3 : Système embarqués ❖ Système sur puce ❖ Processeurs ❖ Microprocesseurs Chapitre 4 : Circuit Logique programmables ❖ Domaine d’application ❖ Les caractéristiques ❖ Environnements et outils de développement Pr. Amine Rghioui FS Agadir Introduction ❑ Qu'est-ce qu'un système embarqué? ❑ Qu'est-ce que l'embarqué ? ❑A quoi sert un système embarqué? Pr. Amine Rghioui FS Agadir Introduction ❑ Qu'est-ce qu'un système embarqué? Un système embarqué peut être défini comme un système électronique et informatique autonome, qui est dédié à une tâche bien précise. Il est contenue dans un système englobant. Il n’est «généralement» pas programmable. Pas d’E/S standards Pr. Amine Rghioui FS Agadir Introduction ❑ Qu'est-ce qu'un système embarqué? ✓ Vous êtes réveillé le matin par votre radioréveil ; c'est un système embarqué. ✓ Vous programmez votre machine à café pour avoir un verre de café serré; c'est un système embarqué. ✓ Vous allumez la télévision et utilisez votre télécommande ; ce sont des systèmes embarqués. ✓ Vous prenez votre voiture et la voix du calculateur vous dit que vous n'avez pas mis votre ceinture; c'est un système embarqué. ✓ Vous appelez votre ami avec votre téléphone portable pour signaler que vous serez en retard; c'est un système embarqué. Pr. Amine Rghioui FS Agadir Introduction ❑ Qu'est-ce que l'embarqué ? L'embarqué est un terme plus général qui regroupe plusieurs notions selon le contexte : Le marché des systèmes embarqués. Les systèmes embarqués par abus de langage. Pr. Amine Rghioui FS Agadir Introduction ❑ A quoi sert un système embarqué? Le rôle des systèmes embarqués est primordial au quotidien. Objectif de l'ingénieur systèmes embarqués : que les bonnes procédures soient opérationnelles sur un objet pour qu'il exécute une tâche précise. Un système embarqué est un nœud de collecte et/ou d'exploitation de données. Pr. Amine Rghioui FS Agadir Introduction Caractéristiques d’un système embarqué Un système embarqué: Des ressources limitées Système principalement numérique Le moins cher possible Une puissance de calcul limitée Pas de consommation d’énergie inutile Exécution de logiciel dédié aux fonctionnalités spéciales Pr. Amine Rghioui FS Agadir Introduction Caractéristiques d’un système embarqué Une capacité de communication limitée Ne possède pas toujours de système de fichiers Faible coût: Solution optimale entre le prix et la performance Par conséquent, les ressources utilisées sont minimales Un système embarqué n’a que peu de mémoire Pr. Amine Rghioui FS Agadir Introduction Caractéristiques d’un système embarqué Faible consommation Fonctionnement en temps réel: Environnement: ❑ Un système embarqué est soumis à des nombreux contraintes d’environnement ❑ Il doit s’adapter et fonctionner avec eux Pr. Amine Rghioui FS Agadir Introduction L’embarqué en quelques chiffres Voici quelques repères historiques dans le domaine de l’informatique embarquée. 1967 : Premier système embarqué de guidage lors de la mission lunaire Apollo. Il contrôlait de manière automatique la navigation du vaisseau spatial 1971 : Premier microprocesseur commercialisé par Intel. 1982 : Le premier objet connecté est un distributeur de Coca-Cola installé aux États-Unis. Une interface permet de savoir si le distributeur est plein ou non, et si les canettes sont fraiches. 1984 : Lancement de l’avion A320 d’Airbus, dont les commandes sont intégralement contrôlées électroniquement. Les commandes étaient auparavant assurées manuellement par des câbles. 1998 : Mise en service de Météor, le métro informatisé sans conducteur de la ligne 14 à Paris. Pr. Amine Rghioui FS Agadir Introduction L’embarqué en quelques chiffres 2005 : Lancement de Nabaztag, un lapin connecté en wifi qui est devenu une icône des objets connectés. 2007 : Sortie de l’Iphone par Apple. Ce smartphone avec écran tactile est devenu l’emblème du smartphone ultra-connecté. 2014 : Invention de la Google Car, une voiture autonome dotée d’un pilotage automatique ainsi que de radars, de caméras vidéos et de GPS. 2020 : On estime qu’il y aura 30 milliards d’objets connectés à travers le monde. Il y en avait 15 milliards en 2015. Pr. Amine Rghioui FS Agadir Introduction Comparaison aux systèmes informatiques standards Informatique Embarqué Processeur standard Processeur dédié (contrôleur) Multiples unités fonctionnelles Architecture adaptée Vitesse élevée (> GHz) Vitesse faible (~200 MHz) Consommation électrique élevée Basse consommation La fonction principale du micrologiciel est de démarrer un appareil et de contrôler ses périphériques matériels, tandis qu'en revanche, la fonction du logiciel embarqué est le fonctionnement global et le contrôle de l'appareil pour exécuter sa fonction spécifique. Pr. Amine Rghioui FS Agadir Contraintes Introduction En informatique embarquée, un système embarqué doit a minima respecter les contraintes suivantes. Contrainte d’autonomie : il doit remplir sa mission pendant de longues périodes sans l’intervention humaine. Contrainte de fiabilité : il doit assurer une continuité de service et fournir des résultats exacts. Contrainte de réactivité : il doit réagir avec son environnement, ce qui implique des temps de réponse adaptés. On parle souvent du temps réel. Contrainte de faible encombrement : l’informatique embarquée nécessite souvent d’être contenue dans un faible volume. Contrainte de sécurité : certaines données peuvent être confidentielles, il faut donc collecter et conserver ces données en toute sécurité. Contrainte de puissance de calcul adaptée : le système embarqué doit ajuster la puissance de calcul afin d’éviter les éventuelles surconsommations d’énergie. Pr. Amine Rghioui FS Agadir Introduction Les Contraintes des systèmes embarqués 1. L’espace mémoire: L’espace mémoire des systèmes embarqués peut être très limité : de quelques dizaines de kilos de mémoire Flash et quelques kilos de RAM pour les petits microcontrôleurs embarqués dans des systèmes simples, jusqu’à plusieurs Giga de Flash pour des processeurs avec des OS Linux. Il est alors primordial d’établir précisément les besoins de l’appareil, afin de concevoir un système adapté. Si la miniaturisation des composants permet en partie de contourner cette contrainte, l’objectif de développement du système embarqué doit être de coller au plus près des besoins, de sorte à éviter les surcoûts, tout en obtenant un système efficace. 2. La puissance de calcul: La puissance de calcul nécessaire doit être précisément évaluée. Le système embarqué doit en effet comporter une puissance de calcul suffisante pour effectuer ses tâches, mais mesurée pour éviter un format ou une consommation excédentaires. Pr. Amine Rghioui FS Agadir Introduction Les Contraintes des systèmes embarqués 3. L’autonomie : Pour certains systèmes embarqués, l’autonomie est l’une des contraintes les plus importantes. Certains systèmes sont en effet autonomes ; ils doivent donc fonctionner sur pile ou batterie. La consommation énergétique doit alors être la plus faible possible afin de minimiser la taille des batteries ou la fréquence de changement des piles. Par ailleurs, certains systèmes autonomes sont en veille la plupart du temps. Dans ce cas, différents modes de fonctionnement peuvent être adoptés en vue d'optimiser la consommation en mode veille, tout en restant à l'écoute d'évènements utilisateurs par exemple. Quoi qu’il en soit, l’autonomie doit être prise en compte lors du choix du µC, afin d’opter pour le système le plus adapté à l’utilisation de l’appareil. 4. Les délais d’exécution: Le propre du système embarqué est de réaliser une tâche précise : les délais d’exécution et l’échéance sont alors cruciaux. Le système embarqué doit en effet être en mesure de fournir les résultats exacts dans les temps définis, souvent en temps réel. Pr. Amine Rghioui FS Agadir Introduction Les Contraintes des systèmes embarqués 5. La sécurité et la fiabilité : Les appareils utilisés dans certains secteurs doivent garantir rigoureusement la sécurité des utilisateurs et la confidentialité des données. Le système embarqué doit alors être développé de sorte à assurer la fiabilité et la sûreté du fonctionnement. Dans certains domaines, le logiciel embarqué assure d’ailleurs des fonctions de sécurité. Il peut alors être nécessaire de mettre en place une redondance du contrôleur, afin de s'assurer que le système reste sûr. Pr. Amine Rghioui FS Agadir Introduction Exemples des systèmes embarqués 1. GPS: Le GPS est un système de navigation qui utilise des satellites et des récepteurs pour synchroniser les données relatives à la localisation, au temps et à la vitesse. Le récepteur ou le dispositif qui reçoit les données est doté d'un système intégré pour faciliter l'application d'un système de positionnement global. Les dispositifs GPS intégrés permettent aux gens de trouver facilement leur emplacement actuel et leur destination. Ainsi, ils gagnent rapidement du terrain et deviennent les outils de navigation les plus utilisés dans les automobiles Pr. Amine Rghioui FS Agadir Introduction Exemples des systèmes embarqués 2. Dispositifs médicaux: Les dispositifs médicaux des établissements de santé intègrent des systèmes embarqués depuis un certain temps déjà. Une nouvelle catégorie de dispositifs médicaux utilise des systèmes embarqués pour aider à traiter les patients qui ont besoin d'une surveillance fréquente et d'une attention constante à domicile. Ces systèmes sont dotés de capteurs qui recueillent des données relatives à la santé des patients, telles que la fréquence cardiaque, le pouls ou les lectures des implants, qui sont envoyées à un nuage où un médecin peut consulter les données du patient sur son appareil sans fil. Pr. Amine Rghioui FS Agadir Introduction Exemples des systèmes embarqués 3. Distributeurs automatiques de billets: Un distributeur automatique de billets (DAB) est une machine informatisée utilisée dans le secteur bancaire qui communique avec un ordinateur bancaire hôte via un réseau. L'ordinateur de la banque vérifie toutes les données saisies par les utilisateurs et enregistre toutes les transactions, tandis que le système intégré au GAB affiche les données de la transaction et traite les entrées du clavier du GAB. Pr. Amine Rghioui FS Agadir Introduction Exemples des systèmes embarqués 4. Robots d'usine: Les robots d'usine sont conçus pour effectuer des tâches de haute précision dans des conditions de travail dangereuses. Ils disposent d'un système intégré embarqué pour connecter différents sous-systèmes. Dans un travail mécanique typique, les robots utilisent des actionneurs, des capteurs et des logiciels pour percevoir l'environnement et obtenir les résultats escomptés en toute sécurité. Pr. Amine Rghioui FS Agadir Introduction Exemples de systèmes embarqués 1. Grand public :Appareils photographiques et caméras, lecteurs DVD, chauffage et climatisation, éclairage, électroménager, domotique, sécurité (incendie, intrusion, surveillance, piscine), ascenseurs, HiFi, audio et vidéo, consoles de jeux, décodeurs, etc. 2. Transports: Automobile, aéronautique, spatial, marine, assistance à la conduite ou au pilotage, maintenance, signalisation, contrôle du trafic aérien, maritime (aujourd’hui aide, demain automatique, objectif trafic autoroutier), distributeur de billets, radar, etc. 3. Défense: Contrôle de trajectoire, lanceur, etc. 4. Secteur manufacturier et industrie :Chaînes de production, automates, production et distribution d’électricité, réacteurs chimiques, réacteurs nucléaires, raffineries, dispositifs de sécurité, aide à la maintenance, etc. 5. Information et communication :Imprimante, périphérique, téléphone, répondeur, fax, routeurs, téléphonie mobile, satellites, GPS, etc. 6. Santé :Imagerie médicale, diagnostique, soins, implants, handicapés, etc. Pr. 7. Amine Rghioui Autres :Carte à puce, distributeurs, etc. FS Agadir Introduction Principe de fonctionnement Un système informatique embarqué reçoit des informations du monde extérieur par le moyens de capteurs (ou senseurs). Il mémorise et traite ces informations par l’unité de traitement (le microprocesseur) puis renvoie des informations vers le monde extérieur par l’intermédiaire des actionneurs (ou actuateurs). Pr. Amine Rghioui FS Agadir Introduction La carte programmable Une carte programmable intègre un microprocesseur (unité de traitement) qui effectue tous les traitements et qui stocke le code du programme. Elle possède généralement des entrées/sorties. Le programme présent sur la carte est en permanence exécuté (boucle infinie) lorsque le système informatique embarqué est alimenté électriquement. Il existe une multitude de cartes. Les plus populaires sont les suivantes, pour quelques dizaines d’euros. Pr. Amine Rghioui FS Agadir Chapitre 2: Rappel Electronique Numérique Chapitre 3: Architecture des systèmes embarqués Architecture des Systèmes embarqués Exemples de Système Embarqué Microcontrôleur (Arduino) Le Système Embarqué le plus courant Comprend un μP, des bus, de la ROM et des E/S Pas d’OS Avantages : Pas cher, faible encombrement et faible consommation Inconvénients : énormément de choix (avec plus ou moins de périphériques), traitements plutôt léger 28 Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués Exemples de Système Embarqué Mini-Ordinateurs (ARM) Raspberry Pi OS Linux Embarqué Avantages : Puissance de linux (driver, ordonnanceur intégré,…) Inconvénients : Consommation, moins de liberté dans la programmation, la gestion de la mémoire et très bonne connaissance de Linux. 29 Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués Exemples de Système Embarqué FPGA (basé sur des portes logiques) Circuits logiques complexes reconfigurables Programmation en VHDL (possible d’autres langages mais sans garantie de compilation) Avantages : Flexibles permettant des évolutions, plus performants qu’un logiciel, moins chers que des ASICs Inconvénients : Développement long pour des applications compliquées, gourmands, moins fiables (???). 30 Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués Exemples de Système Embarqué DSP (Digital Signal Processing) Système Embarqué conçu pour les applications en Traitement Signal / Images / Vidéo Exemples : Télévision, amplificateur HiFi, Routeurs, Radar/Sonar, … Avantages : Précision, prédiction (simulations sur ordinateur), bibliothèques de calcul (fft, …) Inconvénients : Coût élevé (inutile pour des réalisations simples), complexité (optimisation du calcul) 31 Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués Les micro-contrôleurs sont typiquement des systèmes micro-programmés. Pr. Amine Rghioui FS Agadir 32 Architecture des Systèmes embarqués Un microcontrôleur est un : « Circuit intégré comprenant essentiellement un microprocesseur, ses mémoires, et des éléments personnalisés selon l'application. » Un microcontrôleur contient un microprocesseur. Avantages : - Mise en œuvre simple - Coûts de développement réduits Inconvénients : - Plus lent - Utilisation sous optimale 33 Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués Le processeur est au cœur du microcontrôleur Deux types de processeurs CISC : Complex Instruction Set Computer Grand nombre d'instructions, Type de processeur le plus répandu RISC : Reduced Instruction Set Computer Nombre d'instructions réduit (sélection des instructions pour une exécution plus rapide), Décodage des instructions plus rapide 34 Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués 1. Évolution des processeurs Depuis les années 70, les microprocesseurs ont vu le nombre de transistors augmenté. Intel 8086 (1978) : ❖ Architecture interne 16 bits ❖ 4 bus 16 bits ❖ Fréquence d'horloge 4,77/10 Mhz ❖ 39 000 transistors, gravés en 3µm Intel Pentium 4 Northwood C (2002): ❖ Architecture interne 32 bits ❖ fréquence d’horloge 2,4/3,4 Ghz (bus processeur : 200Mhz) ❖ plus de 42 millions de transistors, gravés en 0,13 µm 35 Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués 1. Évolution des processeurs Intel Core i7 Gulftown (2011): ❖ Architecture interne 64 bits 4/6 coeurs ❖ Fréquence d'horloge 3,46 Ghz ❖ Fréquence de bus: 3,2 GHz ❖ Fréquence de transfert des données 25.6 Gb/sec. ❖ 1,17 Milliards de transistors, gravés en 32nm Intel Core i9 (2017): ❖ Architecture interne 64 bits 8 Coeurs ❖ fréquence d’horloge 6 Ghz ❖ 4.2 billion de transistors 36 Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués 1. Évolution des processeurs Performances des processeurs sur 40 ans 37 Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués Les bus d'un système micro-programmé « Un bus est un jeu de lignes partagées pour l’échange de mots numériques. » On appelle bus, en informatique, un ensemble de liaisons physiques (câbles, pistes de circuits imprimés, etc.) pouvant être exploitées en commun par plusieurs éléments matériels afin de communiquer.. Un bus permet de faire transiter (liaison série/parallèle) des informations codées en binaire entre deux points. Typiquement les informations sont regroupées en mots : octet (8 bits), word (16 bits) ou double word (32 bits). Caractéristiques d'un bus Nombres de lignes, Fréquence de transfert. FS Agadir 38 Pr. Amine Rghioui Architecture des Systèmes embarqués Les types de bus : Bus de données : Le bus de données permet de recevoir ou de transmettre un mot de 'Y' bits, contenu dans la position mémoire sélectionnée préalablement. La taille de ce bus va de 8 à 64 bits. ex. : résultat d'une opération, valeur d'une variable, etc.. Bus d'adresses : Le bus d'adresses permet au microprocesseur de sélectionner une position mémoire (RAM ROM ou circuit d'interface). Sa taille est généralement de 16, 24 ou 32 bits. ex. : adresse d'une case mémoire, etc. Bus de contrôle : permet l'échange entre les composants d'informations de contrôle [bus rarement représenté sur les schémas]. ex. : périphérique prêt/occupé, erreur/exécution réussie, etc. 39 Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués Structure de Von Neumann: L'architecture dite architecture de von Neumann est un modèle qui utilise une structure de stockage unique pour conserver à la fois les instructions et les données demandées ou produites par le calcul. 40 Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués Structure de Harvard: Certains microcontrôleurs suivent une architecture Harvard : ils possèdent des bus séparés pour la mémoire de programme et la mémoire de données, ce qui permet aux accès d'avoir lieu en même temps (on parle d'accès concurrent). 41 Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués Structure de Harvard: 42 Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués Schéma bloc d’un microcontrôleur 43 Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués Schéma bloc d’un microcontrôleur mémoire rapide qui permet de stocker temporairement des données. mémoire à lecture seule, programmée à vie. (Elec. Erasable Programmable Read Only Memory) mémoire lente qui permet de stocker des données même après coupure de l’alimentation. 44 Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués Schéma bloc d’un microcontrôleur Le compteur de programme (PC) est un registre qui gère l'adresse mémoire de l'instruction à exécuter ensuite L'unité arithmétique et logique, chargé d'effectuer les calculs. Le plus souvent, l'UAL est incluse dans l'unité centrale du microprocesseur. Elle est constituée d'un circuit à portes logiques. 45 Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués Schéma bloc d’un microcontrôleur un système à entrées multiples et à une seule sortie pour recevoir des signaux provenant de plusieurs réseaux d'acquisition. un circuit combinatoire, son but est de traduire un code d'instruction en l'adresse dans la micro mémoire. L'horloge détermine la vitesse à laquelle le processeur exécute ses instructions sert à enregistrer des informations au sujet des fonctions actives dans un programme informatique 46 Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués Schéma bloc d’un microcontrôleur La liaison entre le microcontrôleur et l'extérieur. permet au microcontrôleur de communiquer avec d'autres systèmes à base de microprocesseur permet la mesure et le contrôle de différents événements et génère également des signaux de sortie modulés en largeur d'impulsion (PWM) 47 Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués Schéma bloc d’un microcontrôleur 48 Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués Système on Chip (SoC) 49 Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués Exemple de Système on Chip (SoC) 50 Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués Embedded System Capteurs Actionneurs 51 Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués Embedded System System On Chip Clock Microcontrôleur Memory Actionneurs Capteurs DAC USART CPU Timers ADC IN/OUT Memory Système Embarqué 52 Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués L'architecture d'un système embarqué se définie par le schéma suivant: Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués On retrouve en entrée des capteurs généralement analogiques couplés à des convertisseurs A/N. Le capteur: Il mesure la quantité physique et la convertit en un signal électrique qui peut être lu par un observateur ou par n'importe quel instrument électronique comme un convertisseur A/N. Le capteur stocke la quantité mesurée dans la mémoire. Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués On retrouve en sortie des actionneurs généralement analogiques couplés à des convertisseurs N/A. L’actionneur : Un actionneur compare la sortie fournie par le convertisseur (N/A) à la sortie réelle (attendue) qui y est stockée et stocke la sortie approuvée. Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués Convertisseur Analogique/Numérique (A/N) Un convertisseur (A/N) convertit le signal analogique envoyé par le capteur en un signal numérique. Convertisseur Numérique/Analogique (N/A) Un convertisseur numérique-analogique convertit les données numériques fournies par le processeur en données analogiques. Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués Au milieu, on trouve le calculateur mettant en œuvre un processeur embarqué et ses périphériques d'E/S. Microcontrôleur Le microcontrôleur est le cerveau du système embarqué, il exécute toutes les opérations du système. Un microcontrôleur est un processeur avec mémoire et toutes les entrées / sorties intégré sur la même puce. Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués Au milieu, on trouve le calculateur mettant en œuvre un processeur embarqué et ses périphériques d'E/S. - Les entrées Un système embarqué interagit avec le monde extérieur via ses entrées et sorties. Les entrées peuvent être des entrées numériques ou des entrées analogiques. Les entrées sont généralement utilisées pour lire les données des capteurs (capteur de température, capteur de lumière, capteur à ultrasons, etc.) ou d'autres types de périphériques d'entrée (touches, boutons, etc.). - Les sorties Les sorties peuvent également être des sorties numériques ou des sorties analogiques. Les sorties sont généralement utilisées pour les écrans, les moteurs d'entraînement ou autres dispositifs (actionneurs) Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués Sur ce schéma théorique d'un système embarqué, on trouve l'environnement extérieur. Un système embarqué doit faire face à un ensemble de paramètres extérieurs: ❖ Variations de la température. ❖ Vibrations, chocs. ❖ Variations des alimentations. ❖ Interférences RF ❖ Corrosion. ❖ Eau, feu, radiations Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués L'environnement dans lequel opère le système embarqué n’est pas contrôlé ou contrôlable. Cela suppose donc de prendre en compte ce paramètre lors de sa conception. On doit par exemple prendre en compte les évolutions des caractéristiques électriques des composants en fonction de la température, des radiations,... Les systèmes embarqués sont aujourd'hui fortement communicants. Cela est possible grâce aux puissances de calcul offertes par les processeurs pour l'embarqué (32 bits en particulier) et grâce aussi à l'explosion de l'usage de la connectivité Internet ou connectivité IP. La connectivité IP permet fondamentalement de contrôler à distance un système embarqué par Internet. Ce n'est en fait que l'aboutissement du contrôle à distance d'un système électronique par des liaisons de tout type : liaisons RS.232, RS.485, bus de terrain. Pr. Amine Rghioui FS Agadir Architecture des Systèmes embarqués Cette architecture peut varier selon les systèmes: on peut par exemple, ne pas trouver de systèmes auxiliaires dans de nombreux systèmes embarqués autonome et indépendants. L'architecture de base est la plupart du temps composée d'une unité centrale de traitement (CPU), d'un système d'exploitation qui réside parfois uniquement en un logiciel spécifique. De même l'interface Homme- Machine (IHM) n'est pas souvent existante, mais est souvent utile pour reconfigurer le système ou vérifier son comportement. Le fonctionnement du système se résume ainsi: Il reçoit des informations de l'environnement extérieur qu'il converti en signal numérique L'unité de traitement composée du CPU, de la mémoire, du logiciel, de l'ASIC et éventuellement de système externes traite l'information Le traitement génère éventuellement une sortie qui est envoyée vers la sortie, les systèmes auxiliaire, les ports de monitoring ou l'IHM Pr. Amine Rghioui FS Agadir Réaliser un système embarqué La grande majorité des conception de systèmes embarques commencent par un système basé processeur, en utilisant un microcontrôleur ou un microprocesseur comme élément central pour prévoir et traiter les taches élémentaires de contrôle et de surveillance, cette architecture fournissait une puissance de traitement suffisante pour réaliser tous les boucles de contrôle et enregistrer des données. Pour des systèmes plus complexe qui intègrent des taches avancées de contrôle et de traitement de signaux les équipes sont obligées d’utiliser des composants de traitement supplémentaires comme des FPGA (field programmable gate arrays) des DSP (digital signal processors et des GPU (graphics processing unis) afin d’atteindre un traitement des données très haute vitesse ainsi qu’un contrôle plus déterministe Pr. Amine Rghioui FS Agadir Réaliser un système embarqué Technologie Avantages Contreparties Microcontrôleurs Economiques, faible encombrement, simples à Pas assez de puissance pour programmer les applications haute performance Microprocesseurs Vitesses d’horloge élevées pour les Consommation élevée, architecture applications haute performance, simples à de traitement séquentiel programmer DSP Composants dédiés au traitement Traitement séquentiel par nature de signaux, calcul en virgule flottante GPU Moteurs de traitement parallèle Consommation assez élevée, pour l’accélération du processeur. nécessite la présence d’un processeur FPGA Matériel flexible via une circuiterie Complexité de programmation avec reprogrammable et définie par logiciel, avec les langages de description traitement parallèle par nature, matérielle consommation réduite. ASIC Circuits complètement personnalisés, Investissements initiaux importants, optimisés en un seul et unique package pour uniquement possibles en grands Pr. Amine Rghioui une application unique. volumes. FS Agadir Réaliser un système embarqué Les langages de programmation Le langage C: Le langage de programmation C est la référence pour programmer les microcontrôleurs avec des exigences temps réel. En effet, ce dernier présente l'avantage d'être un langage de programmation orienté matériel. Le code machine généré par le compilateur est presque optimal en ce qui concerne d'une part la taille de la mémoire requise et d'autre part la vitesse d'exécution du programme. Par conséquent, environ 65 % des applications embarquées sont programmées en C. Toutefois, le langage C présente également des inconvénients. Pr. Amine Rghioui FS Agadir Réaliser un système embarqué Les langages de programmation Le langage C++: C++ nécessite plus de ressources (utilisation de la mémoire, la puissance du processeur) que C (environ 20 %). Cela dépend essentiellement de comment le programme a été défini en C++. Est-ce que ce dernier utilise le polymorphisme ou non ? Le "C++ embarqué" est une version plus dépouillée du C++. C++ présente les avantages de la programmation orientée objet, ce qui est particulièrement intéressant pour les applications plus complexes. Environ 25 % des applications embarquées sont programmées en C++. Pr. Amine Rghioui FS Agadir Réaliser un système embarqué Les langages de programmation Le langage Assembleur Les applications programmées uniquement en assembleur sont relativement rares. Par contre, l'assembleur est souvent combiné avec du C ou du C++. Ce langage est principalement utilisé pour optimiser individuellement les fonctions. Par exemple pour les drivers (accès direct au hardware) ou les algorithmes qui nécessitent des calculs intensifs. Moins de 10 % de toutes les applications embarquées sont programmées (du moins partiellement) en assembleur. Pr. Amine Rghioui FS Agadir Réaliser un système embarqué Les langages de programmation Java Java est aujourd'hui rarement utilisé pour programmer les applications embarquées (moins de 3 %). Java n'est pas adéquat pour les applications temps réels. En effet, ce langage est interprété (lent) et le comportement temporel du "récupérateur de place" (anglais : Garbage Collector) n'est pas reproductible. Pr. Amine Rghioui FS Agadir Chapitre 4:System On Chip (SoC) Architecture d'un PSOC Définition PSoC : Programmable System on Chip, est une famille de circuits intégrés introduits au début des années 2000 par Cypress C'est un circuit intégré qui comprend un microcontrôleur et des fonctions logiques et analogiques configurables et interconnectables entre eux. L'idée est de remplacer le microcontrôleur et les circuits d'interfaces analogiques (convertisseurs AN et NA, filtres, amplificateurs opérationnels, etc..) ou numériques (compteurs, timers, uart, interfaces pour bus divers, etc..) associés par un circuit unique. On intègre ainsi un système électronique embarqué complet dans un circuit intégré unique, ou tout au moins, on réduit très considérablement le nombre de composants. Pr. Amine Rghioui FS Agadir Architecture d'un PSOC Définition C'est un circuit intégré qui comprend un microcontrôleur et des fonctions logiques et analogiques configurables et interconnectables entre eux. L'idée est de remplacer le microcontrôleur et les circuits d'interfaces analogiques (convertisseurs AN et NA, filtres, amplificateurs opérationnels, etc..) ou numériques (compteurs, timers, uart, interfaces pour bus divers, etc..) associés par un circuit unique. On intègre ainsi un système électronique embarqué complet dans un circuit intégré unique, ou tout au moins, on réduit très considérablement le nombre de composants. Pr. Amine Rghioui FS Agadir Architecture d'un PSOC Un PSoC est formé de : Un cœur Microcontrôleur8-bits, avec: ❑ Mémoire Flash ❑ Oscillateurs internes (pas de quartz externe) ❑ Multiplieur/accumulateur ❑ Contrôleur d'interruptions, Sleep Timer, Watchdog Timer ❑ Contrôleur I2C Des blocs logiques et analogiques banalisés configurables: ❑ Blocs logiques configurables en compteurs, timers, UARTs, PWMs, SPI, générateurs CRC, séquences pseudo aléatoires, etc. ❑ Blocs analogiques configurables en amplis-op simples, comparateurs, filtres, CNAs, CANs, modem, etc. Pr. Amine Rghioui FS Agadir Architecture d'un PSOC Mémoire Flash La mémoire flash des appareils PSoC fournit un stockage non volatil pour le micrologiciel utilisateur, les données de configuration utilisateur et le stockage de données en masse. -4K-32K octets Architecture extensible à64K octets Espace spécifique (ROM) en mode superviseur. Pr. Amine Rghioui FS Agadir Architecture d'un PSOC Mémoire RAM Mémoire paginée, 1 page = 256 octets Jusqu'à 8 pages 1-8 pages selon la famille. Pr. Amine Rghioui FS Agadir Architecture d'un PSOC Registres Pour l'accès aux fonctions internes, aux blocs logiques/analogiques et aux E/S Deux bancs de 256registres. Pr. Amine Rghioui FS Agadir Oscillateurs et Horloges Architecture d'un PSOC Oscillateur interne principal: ❑ Fréquence 48MHz ❑ Précision +/-2,5% sans composant externe ❑ Peut être calé sur quartz externe 32KHz si haute précision nécessaire Oscillateur interne basse fréquence: ❑ Fréquence 32KHz ❑ Précision +/-20% sans composant externe (50% en mode veille) ❑ Peut être calé sur quartz externe 32KHz si haute précision nécessaire Pr. Amine Rghioui FS Agadir Oscillateurs et Horloges Architecture d'un PSOC Système d’horlogerie: ❑ Fréquence principale = SYSCLK ✓ 24 MHz si mode interne ✓ 1 à 24 MHz si horloge externe ❑ Horloge CPU = division de SYSCLK ✓ 8 divisions possibles, de 24/12MHz à 96KHz (mode int.) ❑ VC1 = division de SYSCLK (1 à16) ❑ VC2 = division de VC1 (1 à16) ❑ VC3 = division de VC1/VC2/SYSCLK/SYSCLK2 (1 à 256) ❑ SYSCLK, SYSCLK2, 32KHz, VC1, VC2, VC3 : ❑ Horloge Sleep Timer = division de 32KHz Pr. Amine Rghioui ✓ 4 divisions possibles, de 512Hz à1Hz FS Agadir Entrées/Sorties Architecture d'un PSOC Jusqu'à 5 ports 8 bits + 1 port 4 bits: La fonction des broches E/S est paramétrable : ✓ Entrée et/ou Sortie standard (accessible en lecture et/ou en écriture dans l'espace registre). ✓ Entrée et/ou Sortie globale (connexion aux PSoC Blocks numériques). ✓ Entrée et/ou Sortie analogique. Mode de sortie paramétrable: Mode interruption configurable pour chaque broche: Pr. Amine Rghioui FS Agadir Entrées/Sorties Architecture d'un PSOC Jusqu'à 5 ports 8 bits + 1 port 4 bits: La fonction des broches E/S est paramétrable : ✓ Entrée et/ou Sortie standard (accessible en lecture et/ou en écriture dans l'espace registre). ✓ Entrée et/ou Sortie globale (connexion aux PSoC Blocks numériques). ✓ Entrée et/ou Sortie analogique. Mode de sortie paramétrable: Mode interruption configurable pour chaque broche: Pr. Amine Rghioui FS Agadir Chapitre 5:Programmation Arduino Programmation de la carte Arduino C’est quoi Arduino ? Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino C’est quoi Arduino ? Arduino= 1 carte microcontrôleur + 1 outil de développement +1 communauté active. Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Historique Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Les créateurs : des artistes au sens premier du terme Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Arduino : une philosophie Leur objectif : Processing pour le Hardware ! Le matériel est « open source » : − On peut le copier, le fabriquer et le modifier librement Le logiciel est libre : − On peut l’utiliser et le modifier librement. Sur l’Internet, on trouve : − Une communauté d’utilisateurs. − Des guides d’utilisation. − Des exemples. − Des forums d’entraide Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Avantages d’une carte Arduino Pas cher Développement des applications sans être forcement un spécialiste pointu de l’électronique ou de la programmation Environnement de développement intégré (IDE) clair et simple et multiplateforme: tourne sous Windows, Macintosh et Linux Nombreuses librairies disponibles avec diverses fonctions implémentées Logiciel et Matériel open source et extensible Nombreux conseils, tutoriaux et exemple en lignes (forum, sites perso, etc….) Existence de « shields» (boucliers en français): ce sont des cartes d’extension qui se connecte sur le module Arduino pour augmenter ses possibilités comme par exemple : ✓ Afficheur graphique couleur ✓ Interface Ethernet ✓ GPS … Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Champs d’applications Robotique Drones Domotique Pr. Amine Rghioui Automobile FS Agadir Programmation de la carte Arduino Champs d’applications Physical computing : Au sens large, construire des systèmes physiques interactifs qui utilisent des logiciels et du matériel pouvant s’interfacer avec des capteurs et des actionneurs. ✓ Électronique industrielle et embarquée ✓ Art / Spectacle ✓ Domotique ✓ Robotique ✓ Modélisme ✓ DIY (Do-It-Yourself), Hacker, Prototypage, Education, Etc. Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino La carte électronique Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Types de cartes Arduino Arduino Uno Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Types de cartes Arduino Arduino Uno 1 : port d’alimentation externe Pour fonctionner, la carte a besoin d'une alimentation qui est comprise entre 6 et 20 V. On conseille en général de l'alimenter plutôt entre 7 V et 12V pour garder une marge en basse tension et éviter que le circuit ne chauffe trop (car le régulateur de tension disperse toute surtension en chaleur). Cette tension doit être continue et peut par exemple être fournie par une pile 9V. Un régulateur se charge ensuite de réduire la tension à 5V pour le bon fonctionnement de la carte. Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Types de cartes Arduino Arduino Uno 2 : port USB Permet de communiquer avec la carte et de l’alimenter en 5V. 3: Les entrées/sorties numériques 4 entrées/sorties numériques dont 6 peuvent assurer une sortie PWM peuvent actionner de nombreux composants (LED, transistor, etc.) mais elles ne peuvent pas fournir beaucoup de courant (40 mA pour une carte Arduino UNO). Pour piloter des circuits de plus forte puissance, il faut passer par des transistors ou des relais. 4: Les entrées analogiques lui permettent de mesurer une tension variable (entre 0 et 5 V) qui peut provenir de capteurs 6 ou d'interfaces diverses (potentiomètres, etc. 5: Connecteur In-Circuit Serial Programming ICSP pour le téléchargement du programme. Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Types de cartes Arduino Arduino Uno 6: Microcontrôleur ATMega328 est un microcontrôleur ATMEL de la famille AVR 8bits. Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Types de cartes Arduino Arduino Uno Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Types de cartes Arduino Arduino Uno Le microcontrôleur dispose d’autres fonctionnalités: - Analog to Digital Converter (résolution 10bits) = 6 entrées multiplexées ADC0(PC0) à ADC5(PC5) - PWM = 6 broches OC0A(PD6), OC0B(PD5), 0C1A(PB1), OC1B(PB3), OC2A(PB3), OC2B(PD3) - Port série (USART): émission/réception série via les broches TXD(PD1)/RXD(PD0) - Gestion bus I2C (TWI Two Wire Interface) = le bus est exploité via les broches SDA(PC5)/SCL(PC4). - Comparateur Analogique: broches AIN0(PD6) et AIN1 (PD7) peut déclencher interruption - Watchdog Timer programmable Gestion d'interruptions (24 sources possibles): En résumé – Interruptions liées aux entrées INT0 (PD2) et INT1 (PD3) – Interruptions sur changement d'état des broches PCINT0à PCINT23 – Interruptions liées aux Timers 0, 1 et 2 (plusieurs causes configurables) – Interruption liée au comparateur analogique – Interruption de fin de conversion ADC – Interruptions du port série USART – Interruption du bus TWI(I2C) Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Types de cartes Arduino Arduino Uno: Brochage interne Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino La carte Arduino Des périphériques, capables d'effectuer des tâches spécifiques. On peut mentionner entre autres : − Les convertisseurs analogiques-numériques (CAN) (donnent un nombre binaire à partir d'une tension électrique), − Les convertisseurs numériques-analogiques (CNA) (effectuent l'opération inverse), − Les générateurs de signaux à modulation de largeur d'impulsion (MLI, ou en anglais, PWM pour Pulse Width Modulation), − Les timers/compteurs (compteurs d'impulsions d'horloge interne ou d'événements externes), − Les chiens de garde (watchdog), − Les comparateurs (comparent deux tensions électriques), − Les contrôleurs de bus de communication (UART, I²C, SSP, CAN, FlexRay, USB, Ethernet, etc.). CAN = ADC (Analog-to-Digital Converter) CNA = DAC (Digital-to-Analog Converter) liaison série = UART (Universal Asynchronous Receiver Transmitter) Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Types de cartes Arduino Il existe une bonne centaine de cartes Arduino différentes: Certains constructeurs modifient le modèle original afin d’améliorer certains points, −Le nombres d’entrées/sorties, −la consommation, −La fréquence de fonctionnement, −L’espace mémoire, −La réduction de la tension d’alimentation, −Le Type de bus de programmation. Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Types de cartes Arduino Il y a trois types de cartes : Lesdites « officielles » qui sont fabriquées en Italie par le fabricant officiel : Smart Projects Lesdits « compatibles » qui ne sont pas fabriqués par Smart Projects, mais qui sont totalement compatibles avec les Arduino officielles. Les « autres » fabriquées par diverse entreprise et commercialisées sous un nom différent (Freeduino, Seeduino, Femtoduino, G). Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Types de cartes Arduino Arduino Uno Microcontrôleur : ATmega328 Tension d'alimentation interne = 5V Tension d'alimentation (recommandée)= 7 à 12V, limites =6 à 20 V Entrées/sorties numériques : 14 dont 6 sorties PWM Entrées analogiques = 6 (avec une résolution de 10 bits => 1024 valeurs différentes) Courant max par broches E/S = 40 mA Courant max sur sortie 3,3V = 50mA Mémoire Flash 32 KB dont 0.5 KB utilisée par le bootloader* Mémoire SRAM 2 KB mémoire EEPROM 1 KB Fréquence horloge = 16 MHz Dimensions = 68.6mm x 53.3mm Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Types de cartes Arduino Arduino Uno La carte s'interface au PC par l'intermédiaire de sa prise USB. La carte s'alimente par le jack d'alimentation (utilisation autonome) mais peut être alimentée par l'USB (en phase de développement par exemple). Bootloader : un petit programme chargé sur le microcontrôleur. Il permet de charger le code sans programmateur. Il est activé quelques secondes lorsque la carte est « resetée ». Ensuite, il démarre le sketch (programme) qui a été chargé sur le microcontrôleur. Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Types de cartes Arduino Arduino Mega La carte Mega La carte Arduino Mega est une autre carte qui offre toutes les fonctionnalités de la carte précédente, mais avec des fonctionnalités supplémentaires. On retrouve notamment un nombre d’entrées et de sorties plus important ainsi que plusieurs liaisons séries. Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Types de cartes Arduino Arduino Duemilanove Est une carte basée sur l'ATmega168 ou l'ATmega328. Elle dispose de 14 broches d'entrée/sortie numériques (dont 6 peuvent être utilisées comme sorties PWM), de 6 entrées analogiques, d'un oscillateur à cristal de 16 MHz, d'une connexion USB, d'une prise d'alimentation, d'un connecteur ICSP et d'un bouton de réinitialisation. « Duemilanove » signifie 2009 en italien et doit son nom à l'année de sa sortie. La Duemilanove est la dernière d'une série de cartes USB Arduino. Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Types de cartes Arduino Arduino Mini Est une carte microcontrôleur basée sur l'ATmega328P. Elle dispose de 14 broches d’E/S numériques (dont 6 peuvent être utilisées comme sorties PWM), de 6 entrées analogiques, d'un bouton de réinitialisation et de trous pour le montage d'embases à broches. Une embase à six broches peut être connectée à un câble FTDI pour fournir une alimentation USB et une communication à la carte. L'Arduino Pro Mini est destiné à une installation semi-permanente dans des objets ou des expositions. La carte est livrée sans embases pré-montées, ce qui permet l'utilisation de différents types de connecteurs ou la soudure directe de fils. La disposition des broches est compatible avec l'Arduino Mini. Il existe deux versions du Pro Mini. L'une fonctionne à 3,3 V et 8 MHz, l'autre à 5 V et 16 MHz. Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Types de cartes Arduino Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Types de cartes Arduino Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Arduino fournit un environnement de développement avec un éditeur de source, les opérations de compilation et de chargement dans la mémoire du microcontrôleur étant ramenées à des clicks sur des boutons dans l'IHM (très simple). La communication entre le PC et la carte se fait via le port USB, moyennant installation d'un driver adapté (fourni par Arduino) Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Espace de programmation Arduino Apres la préparation du programme, il y’a des étapes à faire afin de terminer la programmation, qui sont les suivantes : - Obtenir une carte Arduino et un câble USB - Télécharger l'environnement Arduino - Raccorder la carte à l'ordinateur - Installation des pilotes du périphérique Série-USB - Lancer l'application Arduino Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Choisir la carte Choisir le port de connexion de la carte Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Chargé un programme dans la carte Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Chargé un programme dans la carte Transférer le programme vers la carte Vérifier/Compiler Choisir le type de la carte Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Chargé un programme dans la carte Le programme est envoyé dans la carte lorsque vous cliquez sur le bouton Le logiciel Arduino va alors vérifier si le programme ne contient pas d’erreur et ensuite le compiler (le traduire) pour l’envoyer dans la carte : Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Chargé un programme dans la carte Le programme va alors subir une petite transformation qui permet d’adapter le signal électrique correspondant au programme vers un signal plus approprié pour le microcontrôleur. On passe ainsi d’un signal codé pour la norme USB à un signal codé pour une simple voie série. Puis ce “nouveau” signal est alors intercepté par le microcontrôleur. Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino A l’intérieur du microcontrôleur Le microcontrôleur reçoit le programme sous forme de signal électrique sur ses broches Tx et Rx. Une fois qu’il est reçu, il est intégralement stocké dans une mémoire de type Flash que l’on appellera “la mémoire de programme”. Ensuite, lorsque la carte démarre “normalement”, le cerveau va alors gérer les données et les répartir dans les différentes mémoires : La mémoire programme est celle qui va servir à savoir où l’on en est dans le programme, à quelle instruction on est rendu. La mémoire de données, aussi appelé “RAM” va stocker les variables telles que le numéro de la broche sur laquelle est connectée une LED, ou bien une simple valeur comme un chiffre, un nombre, des caractères, etc Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino A l’intérieur du microcontrôleur Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Démarrage du microcontrôleur Lorsque le microcontrôleur démarre, il va commencer par lancé un bout de code particulier : le bootloader. C’est ce dernier qui va surveiller si un nouveau programme arrive sur la voie USB et s’il faut donc changer l’ancien en mémoire par le nouveau. Si rien n’arrive, il donne la main à votre programme, celui que vous avez créé. Ce dernier va alors défiler, instruction par instruction. Chaque fois qu’une nouvelle variable sera nécessaire, elle sera mise en RAM pour qu’on ai une mémoire de cette dernière (et supprimer lorsqu’elle n’est plus nécessaire). Sinon, les instructions vont se suivre une par une, dans l’ordre que vous les avez écrites. Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Structure d’un projet Arduino Le langage Arduino est très proche du C et du C++.Pourtant il y a des différences surtout au niveau des de l’écriture des fichiers Pas de fonction main Deux fonctions sont obligatoires (setup et loop) Et bien d’autres points de différences Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Structure d’un projet Arduino Un programme Arduino est composé de 3 parties: ✓ La partie déclaration des variables (optionnelle) ✓ Fonction setup () : C’est une partie initialisation et configuration des entrées / sorties. Elle est appelée une seule fois lorsque le programme commence. ✓ Fonction loop() : C’est la partie principale contenant le programme. Elle est répétée indéfiniment en boucle infinie. Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Notions du langage Arduino Structure Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Notions du langage Arduino Structure Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Notions du langage Arduino Fonctions Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Notions du langage Arduino Variables et constantes Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Notions du langage Arduino Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Exemple Module LED LED : C'est une diode électroluminescente, composant électronique émettant de la lumière lorsqu’il est parcouru par un courant électrique. Une LED ne possède pas de filament qui chauffe à la manière d’une ampoule incandescente. La LED émet la lumière par le biais d’une petite puce électronique. Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Exemple Module LED But : Allumer ou éteindre une LED selon le schéma électrique suivant : Pour réaliser ce montage, nous aurons besoin de : Carte Arduino Une plaque d’essai Une résistance de 170Ω Une LED de votre couleur préférée Quelques fils de prototypage Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Exemple Module LED si on veut faire clignoter notre LED, il va falloir utiliser cette fonction. Voyons un peu le schéma de principe du clignotement d’une LED Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Exemple Module LED Pour faire commuter (allumer/éteindre) une LED, il suffit de modifier l’état du port numérique à laquelle elle est connectée, grâce à la fonction digitalWrite() : void setup() { // Réglage du port numérique associé à la LED : mode sortie = OUTPUT pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); // Allumage de la LED : état haut = HIGH delay(1000); digitalWrite(13, LOW); // Extinction de la LED : état bas = LOW delay(1000); } Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Quelques explications La ligne pinMode(13, OUTPUT); initialise la patte 13 du microcontrôleur comme sortie, c'est-à-,dire que des données seront envoyées depuis le microcontrôleur vers cette patte. Avec l'instruction digitalWrite(13, HIGH);, le microcontrôleur connecte la patte D13 au +5V ce qui a pour effet d'allumer la LED. L'instruction delay(1000); indique au microcontrôleur de ne rien faire pendant 500 millisecondes, soit ½ seconde. Avec l'instruction digitalWrite(13, LOW);, le microcontrôleur connecte la patte D13 à la masse (Gnd) ce qui a pour effet d'éteindre la LED. L'instruction delay(1000); indique au microcontrôleur à nouveau de ne rien faire pendant 500ms soit ½ seconde. Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Exemple Digital Output: Blinking Two LEDs But : Maintenant , on va ajouter deuxième Led. Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Exemple Digital Output: Blinking Two LEDs Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Exemple Digital Output: Blinking Two LEDs La breadboard : une platine d'expérimentation ou platine de prototypage est un dispositif qui permet de réaliser le prototype d'un circuit électronique et de le tester. L'avantage de ce système est d'être totalement réutilisable, car il ne nécessite pas de soudure. Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Exemple Digital Output: Blinking Two LEDs Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Exemple Digital Output: Blinking Two LEDs void setup() { void loop() { Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Exemple Feu de carrefour But : Maintenant , on va ajouter une 3eme Led. Pour cela, on utilise les résistances suivantes : Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Exemple Digital Output: Blinking Two LEDs Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Exemple Digital Output: Blinking Two LEDs Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Exemple Feu de carrefour void loop() { digitalWrite(ledR, HIGH); // allumer la led rouge nt ledR = 3; delay(2000); // attendre 2 secondes int ledG = 4; digitalWrite(ledR, LOW); // eteindre la led rouge int ledO = 5; delay(1000); // attendre 1 seconde void setup() digitalWrite(ledG, HIGH); // allumer la led verte { delay(2000); // attendre 2 secondes // initialize the digital pin as an output. digitalWrite(ledG, LOW); // eteindre la led verte pinMode(ledR, OUTPUT); delay(1000); // attendre 1 seconde pinMode(ledG, OUTPUT); pinMode(ledO, OUTPUT); digitalWrite(ledO, HIGH); // allumer la led orange } delay(500); // attendre 0,5 seconde digitalWrite(ledO, LOW); // eteindre la led orange delay(500); // attendre 0,5 seconde } Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Exemple Bouton Poussoir But : Allumer ou éteindre deux LEDs selon l’appui d’un bouton poussoir: Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Exemple Bouton Poussoir Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Exemple Bouton Poussoir Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Serial (ou comment lire et écrire) digitalRead() Description: Lit l'état (= le niveau logique) d'une broche précise en entrée numérique, et renvoie la valeur HIGH (HAUT en anglais) ou LOW (BAS en anglais). Syntaxe: digitalRead(broche) Paramètres: broche : le numéro de la broche numérique que vous voulez lire. (int) Valeur renvoyée: Renvoie la valeur HIGH (HAUT en anglais) ou LOW (BAS en anglais) Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Exemple Bouton Poussoir Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Exemple Bouton Poussoir boolean etatBouton = digitalRead(pinBouton); //déclaration des variables //test des conditions int pinBouton; if (etatBouton==HIGH)//test si bouton appuyé int pinLed1, pinLed2; { digitalWrite(pinLed1,LOW); //led1 éteinte void setup() digitalWrite(pinLed2,HIGH); //led2 allumée { } //initialisation des variables if (etatBouton==LOW)//test si bouton levé pinBouton = 2; { pinLed1 = 4; digitalWrite(pinLed1,HIGH); //Led1 allumée pinLed2 = 6; digitalWrite(pinLed2,LOW); //led2 éteinte //définition des modes } pinMode(pinBouton, INPUT); //mode lecture pour le bouton delay(100); //petite attente pinMode(pinLed1, OUTPUT); //mode écriture pour led1 } pinMode(pinLed2, OUTPUT); //mode écriture pour led2 } Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Exemple Bouton Poussoir Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Serial (ou comment lire et écrire) La librairie Serial est une librairie essentielle du langage Arduino qui permet de visualiser sur le PC des messages reçus depuis la carte Arduino ou de commander la carte Arduino.. En couplant l'utilisation de cette librairie avec l'interface programmable graphique Processing côté PC, on dispose d'un outil extrêmement puissant pour réaliser toute sortes d'affichages graphiques sur le PC ou d'interactions entre la carte et le PC (commande de la carte Arduino avec la souris ou le clavier !).. Elle est utilisée pour les communications par le port série entre la carte Arduino et un ordinateur ou d'autres composants. Toutes les cartes Arduino ont au moins un port Série (également désigné sous le nom de UART ou USART) : Serial. Ce port série communique sur les broches 0 (RX) et 1 (TX) avec l'ordinateur via le port USB. C'est pourquoi, si vous utilisez cette fonctionnalité, vous ne pouvez utiliser les broches 0 et 1 en tant qu'entrées ou sorties numériques. Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Serial (ou comment lire et écrire) Vous pouvez utiliser le terminal série intégré à l'environnement Arduino pour communiquer avec une carte Arduino. Il suffit pour cela de cliquer sur le bouton du moniteur série dans la barre d'outils puis de sélectionner le même débit de communication que celui utilisé dans l'appel de la fonction begin(). La carte Arduino Mega dispose de trois ports série supplémentaires : Serial1 sur les broches 19 (RX) et 18 (TX), Serial2 sur les broches 17 (RX) et 16 (TX), Serial3 sur les broches 15 (RX) et 14 (TX). Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Serial (ou comment lire et écrire) Serial.begin() Description: Fixe le débit de communication en nombre de caractères par seconde (l'unité est le baud) pour la communication série. Pour communiquer avec l'ordinateur, utiliser l'un de ces débits : 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, or 115200. En pratique utiliser une valeur comprise entre 9600 et 115200. Typiquement 115200 fonctionne très bien ! (Plus le débit est élevé et plus la communication est rapide... ) Syntaxe: Serial.begin(debit); Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Serial (ou comment lire et écrire) Serial.available() Description: Donne le nombre d'octets (caractères) disponible pour lecture dans la file d'attente (buffer) du port série. Syntaxe: Serial.available(); Valeur renvoyée: Le nombre d'octet disponible pour lecture dans la file d'attente (buffer) du port série, ou 0 si aucun caractère n'est disponible. Si une donnée est arrivée, Serial.available() sera supérieur à 0. La file d'attente du buffer peut recevoir jusqu'à 128 octets. Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Serial (ou comment lire et écrire) Serial.read() Description: Lit les données entrantes sur le port Série. Syntaxe: Serial.read(); Valeur renvoyée: Renvoi le premier octet de donnée entrant disponible dans le buffer du port série, ou -1 si aucune donnée n'est disponible. (int) Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Serial (ou comment lire et écrire) Serial.write() Description: Écrit des données binaires sur le port série. Ces données sont envoyées comme une série d'octet; pour envoyer les caractères correspondants aux chiffres d'un nombre, utiliser plutôt la fonction print(). Syntaxe: serial.write(val) serial.write(str) serial.write(buf, len) Paramètres: − val: une valeur à envoyer sous forme d'octet simple − str: une chaîne à envoyer sous forme d'une série d'octets − buf: un tableau pour envoyer une série d'octets − len: la largeur du tableau Valeur renvoyée: Un octet représentant le nombre d'octets écrits (même si il est optionnel de récupérer cette valeur) Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Serial (ou comment lire et écrire) Serial.print() Description: Affiche les données sur le port série sous forme lisible pour les humains (texte ASCII). Cette instruction peut prendre plusieurs formes. Les nombres entiers sont affichés en utilisant les caractères ASCII pour chaque chiffre. Les nombres à virgules (float) sont affichés de la même façon sous forme de caractères ASCII pour chaque chiffre, par défaut avec 2 décimales derrière la virgule. Les valeurs de type byte sont affichés sous la forme d'un caractère ASCII. Les caractères et les chaînes sont affichés tels quels. Syntaxe: Serial.print(val) Serial.print(val, format) Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Serial (ou comment lire et écrire) Serial.print() Paramètres: − val: la valeur à afficher. N'importe quel type de données. − format (optionnel) : spécifie Valeur renvoyée: Un size_t (long) représentant le nombre d'octets écrits (même si il est optionnel de récupérer cette valeur) Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Serial (ou comment lire et écrire) Exemples ✓ Serial.print(78); // affiche "78« ✓ Serial.print(1.23456); // affiche "1.23« ✓ Serial.print(byte(78)); // affiche "N" (dont la valeur ASCII est 78) ✓ Serial.print('N'); // affiche "N« ✓ Serial.print("Hello world."); // affiche "Hello world.« ✓ Serial.print(78, BIN) ; // affiche "1001110" ✓ Serial.print(78, OCT); // affiche "116" ✓ Serial.print(78, DEC); // affiche "78" ✓ Serial.print(78, HEX); // affiche "4E" ✓ Serial.print(1.23456, 0); // affiche "1" ✓ Serial.print(1.23456, 2); // affiche "1.23" ✓ Serial.print(1.23456, 4); // affiche "1.2346" Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Serial (ou comment lire et écrire) Serial.println() Description: Affiche les données sur le port série suivi d'un caractère de "retour de chariot" (ASCII 13, or '\r') et un caractère de "nouvelle ligne" (ASCII 10, or '\n'). Cette instruction a par ailleurs la même forme que l'instruction Serial.print() Syntaxe: Serial.println(val) ou Serial.println(val, format) Paramètres: − val: la valeur à afficher. N'importe quel type de données. − format (optionnel) : spécifie Valeur renvoyée: Un size_t (long) représentant le nombre d'octets écrits (même si il est optionnel de récupérer cette valeur) Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Serial (ou comment lire et écrire) Exemples ✓ Serial.println(analogValue); // affichage décimal ✓ Serial.println(analogValue, DEC); // affichage décimal ✓ Serial.println(analogValue, HEX); // affichage hexadécimal ✓ Serial.println(analogValue, OCT); // affichage octal ✓ Serial.println(analogValue, BIN); // affichage binaire ✓ Serial.write(analogValue); // affichage octet simple ✓ Serial.println(); // affichage retour à la ligne Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Exemple Capteur de Température LM35 But : apprendre à mesurer la température avec le capteur analogique LM 35 et montrer la valeur sur le moniteur série: Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Exemple Capteur de Température LM35 LM 35 est un capteur de température très populaire: il est précis, peu coûteux, très simple d’utilisation et d’une excellente fiabilité. Il peut mesurer des températures entre les -55 et les 150ºC. La sortie analogique du capteur est proportionnelle à la température. Il suffit de mesurer la tension en sortie du capteur pour en déduire la température: chaque degré Celsius correspond à une tension de +10mV. Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Exemple Capteur de Température LM35 Comment calculer la température partant de la tension du capteur LM 35 Le pin VCC du capteur se connecte à la broche de 5V de la carte et la broche centrale se relie à l’entrée analogique A0. De cette façon, avec la fonction analogRead(A0) on pourra lire la valeur enregistrée dans la variable capteur (une valeur entre 0 et 1023 équivalente à une tension entre 0 et 5V). Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Exemple Capteur de Température LM35 Mesurer la température avec le capteur LM 35 et montrer le résultat à travers du moniteur série. Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Serial (ou comment lire et écrire) analogRead() Description: Lit la valeur de la tension présente sur la broche spécifiée. La carte Arduino comporte 6 voies connectées à un convertisseur analogique-numérique 10 bits. Cela signifie qu'il est possible de transformer la tension d'entrée entre 0 et 5V en une valeur numérique entière comprise entre 0 et 1023. Il en résulte une résolution de : 5 volts / 1024 intervalles, autrement dit une précision de 0.0049 volts (4.9 mV) par intervalle ! − Une conversion analogique-numérique dure environ 100 μs pour convertir l'entrée analogique, et donc la fréquence maximale de conversion est environ de 10 000 fois par seconde. Syntaxe: analogRead(broche_analogique) Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Serial (ou comment lire et écrire) analogRead() Paramètres: broche_analogique : le numéro de la broche analogique (et non le numéro de la broche numérique) sur laquelle il faut convertir la tension analogique appliquée (0 à 5 sur la plupart des cartes Arduino) Valeur renvoyée: valeur int (0 to 1023) correspondant au résultat de la mesure effectuée Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Exemple Capteur de Température LM35 Code: int capteur; // Pour enregistrer la valeur de A0 float temperature; void setup(){ Serial.begin(9600); } void loop(){ capteur = analogRead(A0); temperature = ((capteur * 5000.0) / 1023) / 10; Serial.print(temperature, 1); // un seul décimal Serial.println(" C"); delay(1000); } Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Exemple Capteur de Température LM35 Téléversant le code au IDE de Arduino on peut tester les résultats des lectures du capteur, sur le moniteur série. Pr. Amine Rghioui FS Agadir Programmation de la carte Arduino Environnement de développement Arduino Exemple Capteur de température et d’humidité DHT11 Le capteur DHT11 a 4 broches, mais il est souvent vendu sur une carte support qui possède 3 broches. Il communique avec l’Arduino très simplement au travers d’une de ses entrées numériques. Les 2 autres broches sont pour son alimentation 5 V et

Use Quizgecko on...
Browser
Browser