Vous vous demandez peut-être ce qu'est un microcontrôleur et à quoi il sert ? Un microcontrôleur est un dispositif informatique capable d'exécuter un programme (c'est à dire, une séquence d'instructions) et est souvent désigné comme le « cerveau » ou le « centre de contrôle » d'un robot, car il est habituellement responsable de tous les calculs, de la prise de décision, et des communications. Afin d'interagir avec le monde extérieur, un microcontrôleur possède une série de broches (connexions pour signaux électriques) qui peuvent passer de HIGH/HAUT (1/ON) à LOW/BAS (0/OFF) au moyen d'instructions de programmation. Ces broches peuvent également être utilisées pour lire des signaux électriques (en provenance des capteurs de forme ou d'autres dispositifs) et dire s'ils sont de type HAUT ou BAS.
La plupart des microcontrôleurs modernes peuvent également mesurer des signaux de tension analogique (c'est à dire des signaux qui peuvent avoir une gamme complète de valeurs au lieu de seulement deux états bien définis), grâce à l'utilisation d'un convertisseur analogique-numérique (CAN). En utilisant le CAN, un microcontrôleur peut attribuer une valeur numérique à une tension analogique qui n'est ni HAUT ni BAS.
Bien que les microcontrôleurs puissent paraître plutôt limités à première vue, de nombreuses actions complexes peuvent être obtenues en réglant les broches HAUT et BAS de façon intelligente. Néanmoins, la création d'algorithmes très complexes (tels que le traitement avancé de la vision et des comportements intelligents) ou de très grands programmes, peut s'avérer tout simplement impossible pour un microcontrôleur en raison de ses limitations inhérentes aux ressources et à la vitesse. Par exemple, pour faire clignoter une lumière, on peut programmer une séquence de répétition où les microcontrôleurs passent une broche sur HAUT, attendent un moment, la passent sur BAS, attendent un autre moment et recommencent. Une lumière connectée à la broche en question clignoterait alors indéfiniment. De la même manière, les microcontrôleurs peuvent être utilisés pour contrôler d'autres appareils électriques tels que des actionneurs (lorsqu'ils sont connectés à des contrôleurs de moteur), des périphériques de stockage (tels que des cartes SD), des interfaces WiFi ou Bluetooth, etc. En conséquence de cette polyvalence incroyable, les microcontrôleurs peuvent être trouvés dans des produits de tous les jours. Pratiquement tous les appareils ou dispositifs électroniques d'une maison utilisent au moins un (souvent plusieurs) microcontrôleur. Par exemple, les ensembles télévision, les machines à laver, les télécommandes, les téléphones, les horloges, les fours à micro-ondes, et à présent les robots, ont besoin de ces petits appareils pour fonctionner. Contrairement aux microprocesseurs (par exemple, le processeur des ordinateurs personnels), un microcontrôleur n'exige pas de périphériques tels qu'une mémoire RAM externe ou des périphériques de stockage externes pour fonctionner. Cela signifie que, bien que les microcontrôleurs puissent être moins puissants que leurs homologues pour PC, le développement de circuits et de produits à base de microcontrôleurs est beaucoup plus simple et moins coûteux, car très peu de composants matériels supplémentaires sont nécessaires. Il est important de noter qu'un microcontrôleur ne peut produire qu'une très petite quantité d'énergie électrique au travers de ses broches ; cela signifie qu'un microcontrôleur générique ne sera probablement pas en mesure d'alimenter directement des moteurs électriques, des solénoïdes, des éclairages puissants, ou toute autre grande charge. Essayer de le faire peut même causer des dommages physiques au contrôleur.
Le matériel spécial intégré dans les microcontrôleurs signifie que ces appareils peuvent faire plus que les habituelles E/S numériques, calculs de base, mathématiques de base, et prises de décision. Beaucoup de microcontrôleurs acceptent facilement les protocoles de communication les plus populaires tels que UART (ou série ou RS232), SPI et I2C. Cette fonctionnalité est extrêmement utile pour communiquer avec d'autres appareils tels que des ordinateurs, des capteurs avancés, ou d'autres microcontrôleurs. Bien qu'il soit possible de mettre en œuvre manuellement ces protocoles, il est toujours agréable d'avoir un matériel dédié intégré qui prend soin des détails. Cela permet au microcontrôleur de se concentrer sur d'autres tâches et garantit un programme propre. Les convertisseurs analogique-numérique (CAN) sont utilisés pour convertir des signaux de tension analogique en un nombre numérique proportionnel à l'amplitude de la tension, ce nombre peut alors être utilisé dans le programme du microcontrôleur. Pour émettre une quantité intermédiaire de puissance différente de HAUT et BAS, certains microcontrôleurs sont en mesure d'utiliser la modulation de largeur d'impulsion (MLI). Par exemple, cette méthode permet une gradation souple d'une DEL. Enfin, certains microcontrôleurs intègrent un régulateur de tension dans leurs cartes de développement. C'est particulièrement pratique car cela permet au microcontrôleur d'être alimenté par une large gamme de tensions qui ne vous obligent pas à fournir la tension de fonctionnement exacte requise. Cela lui permet également d'alimenter facilement des capteurs et d'autres accessoires, sans nécessiter de source d'alimentation extérieure régulée.
Vous pouvez trouver ci-dessous deux exemples qui illustrent quand utiliser une broche numérique ou analogique :
Avoir peur de la programmation des microcontrôleurs n'est plus d'actualité. Contrairement au « bon vieux temps » où faire clignoter une lumière nécessitait des connaissance avancées sur les microcontrôleurs et plusieurs dizaines de lignes de code (pour ne pas mentionner les câbles de type parallèle ou série connectés à d'immenses cartes de développement), programmer un microcontrôleur est très simple grâce à des environnements modernes de développement intégrés (IDE) qui utilisent des langages de pointe, des bibliothèques complètes couvrant facilement toutes les actions les plus courantes (et pas si courantes) et plusieurs codes prêts à être utilisés pour permettre aux débutants de se lancer. De nos jours, les microcontrôleurs peuvent être programmés dans divers langages de haut niveau, dont le C, C++, C#, Processing (une variation de C++), Java, Python, .Net, et Basic. Bien sûr, il est toujours possible de les programmer en Assembleur, mais ce privilège est réservé aux utilisateurs plus avancés ayant des exigences très particulières (et un soupçon de masochisme). En ce sens, toute personne doit être en mesure de trouver un langage de programmation qui convienne mieux à ses goûts et à son expérience de programmation préalable. Les IDE deviennent encore plus simples car les fabricants créent des environnements de programmation graphiques. Des séquences qui nécessitaient auparavant plusieurs lignes de code sont réduites à une image qui peut être connectée à d'autres « images » pour former du code. Par exemple, une image peut représenter le contrôle d'un moteur ,et l'utilisateur n'a plus qu'à la placer là où il/elle la souhaite et à spécifier la direction et le régime. Du côté matériel, les cartes de développement de microcontrôleurs apportent de la commodité et sont plus faciles à utiliser au fil du temps. Ces cartes répartissent habituellement toutes les broches utiles du microcontrôleur et les rendent faciles d'accès pour un prototypage rapide de circuit. Elles fournissent également des interfaces d'alimentation et de programmation USB pratiques qui se branchent directement dans n'importe quel ordinateur moderne. Pour ceux qui sont peu familiers avec ce terme, une carte de développement est une carte de circuit qui fournit une puce microcontrôleur avec toute l'électronique de prise en charge (telle que des régulateurs de tension, des oscillateurs, des résistances de limitation de courant et des prises USB) nécessaire au fonctionnement. Si vous ne prévoyez pas de concevoir votre propre circuit de prise en charge, l'achat d'une carte de développement est préférable au fait d'acquérir une puce microcontrôleur seule. Remarque : La programmation du robot est étudiée plus en profondeur dans la leçon 10.
Il est évident qu'un microcontrôleur est très similaire à un processeur de PC ou à un microprocesseur, et qu'une carte de développement s'apparente à une carte mère d'ordinateur. Si tel est le cas, pourquoi ne pas simplement utiliser un ordinateur complet pour contrôler un robot ?
En fait, dans les robots les plus évolués, en particulier ceux qui impliquent des algorithmes de calcul et de vision complexes, le microcontrôleur est souvent remplacé (ou complété) par un ordinateur standard. Un ordinateur de bureau comprend une carte mère, un processeur, un dispositif de stockage principal (comme un disque dur), le traitement vidéo (intégré ou externe), une mémoire RAM et, bien sûr, des périphériques tels que moniteur, clavier, souris, etc. Ce type de système est généralement plus coûteux, physiquement plus grand, plus avides d'énergie. Les principales différences sont mises en évidence dans le tableau ci-dessous.
Microcontrôleur | Ordinateur personnel | |
Exemple | Atmega328 | Intel Pentium Core 2 Duo |
Mémoire RAM | 1 Ko | 4 000 000 Ko (4 Go) |
Enregistrement | 15 Ko | 15 000 000 Ko (15 Go) |
Alimentation | 0,1 W | 600 W |
Tension | 12 | 12 |
Entrée/sortie | Broches | USB, RS232 |
Sans fil | Bluetooth*, RF* | Bluetooth |
Vidéo | Aucun | 1 000 000 Ko (1 Go) |
Prix | de 4 à 300 $ | de 400 à 2 000 $ |
Internet | WiFi* ou Ethernet* | WiFi ou Ethernet |
*Disponible en option sur de nombreux microcontrôleurs. |
À moins que vous ne soyez dans la robotique BEAM, ou n'envisagiez de contrôler votre robot personnalisé à l'aide d'un système filaire ou R/C (qui, se basant sur notre définition de la Leçon 1, ne pourrait être considéré comme un robot), vous aurez besoin d'un microcontrôleur pour tout projet robotique. Pour un débutant, choisir le bon microcontrôleur peut sembler une tâche ardue, surtout compte tenu de la gamme de produits, des spécifications et des applications potentielles. Il existe de nombreux microcontrôleurs différents disponibles sur le marché : Arduino, BasicATOM, BasicX, Pololu, Parallax et bien d'autres. Lorsque vous recherchez le bon microcontrôleur, posez-vous les questions suivantes :
Comme le prix des ordinateurs baisse, et que les progrès technologiques les rendent plus petits et plus économes en énergie, les ordinateur sur carte unique apparaissent comme une option attractive pour les robots. Ces ordinateurs sur carte unique sont essentiellement des ordinateurs que vous avez utilisé il y a environ 5 ans, et qui intègrent de nombreux appareils sur une seule carte (de sorte que vous ne pouvez pas modifier quoi que ce soit). Ils peuvent lancer un système d'exploitation complet (Windows et Linux sont les plus courants) et peuvent se connecter à des périphériques externes tels que les périphériques USB, les écrans LCD, etc.. Contrairement à leurs ancêtres, ces ordinateur sur carte unique ont tendance à être beaucoup plus économes en énergie.
Afin de choisir un microcontrôleur, nous avons compilé une liste de fonctionnalités/critères que nous recherchons :
Puisque notre robot utilisera deux moteurs, le microcontrôleur aura besoin de deux broches numériques pour le contrôle de la direction, et de deux broches MLI pour le contrôle de la vitesse (ceci sera expliqué plus en détail dans la leçon 5). Le robot devra également transmettre et recevoir des données, de sorte qu'il doit accepter le protocole de communication UART (ou série, ou RS232), dans notre cas. Nous aimerions également avoir la possibilité d'ajouter d'autres capteurs et dispositifs à l'avenir, des broches analogiques et numériques supplémentaires seront donc appropriées. Le prochain tableau RobotShop de comparaison des microcontrôleurs nous permet de comparer les principales caractéristiques d'un microcontrôleur avec un autre. Les microcontrôleurs Pololu et Arduino semblent mieux correspondre aux critères ci-dessus. Afin de sélectionner un microcontrôleur spécifique de chez ces deux fabricants, chacun a été étudié afin de déterminer la quantité disponible de matériel, code, la communauté des utilisateurs, les résultats Google et bien plus encore. L'Arduino Uno a finalement été choisi sur la base du rapport prix/caractéristiques et en raison de la notion de « blindages » (cartes accessoires séparées que vous branchez et empilez sur le microcontrôleur, et qui ajoutent des fonctionnalités spécifiques). Arduino est également particulièrement populaire, il existe de nombreux exemples de projets, et sa communauté est très active. Pour de plus amples informations concernant l'apprentissage de la construction d'un robot, veuillez consulter le Centre de formation de RobotShop. Consultez le Forum de la communauté RobotShop pour demander de l'aide dans la construction de robots, présenter vos projets ou simplement discuter avec d'autres collègues roboticiens.