Quand on a besoin d’un contrôleur pour un projet la réponse simple et évidente est Arduino. Arduino est devenu le synonyme de microcontrolleur, l’apparente simplicité et la large diffusion contribuent à cet état de fait mais il existe bien d’autres choix qui peuvent être plus judicieux en terme de prix, de puissance ou même de facilité d’utilisation.

Un arduino n’est rien d’autre qu’un microcontrolleur (de la famille AVR) associé à une interface de programmation qui permet de communiquer simplement avec l’interface de développement.

Avant de détailler les solutions pour la programmation des microcontrolleurs et les environnements de programmation dans de prochains articles, on va essayer de faire un tour des différentes familles de microcontrolleur et des solutions pour ajouter un cerveau à vos projets. Les regroupements sont arbitraires et la liste est loin d’être exhaustive, il y a des oublis et certainement des erreurs. Il ne faut jamais oublier que la vérité est dans la datasheet (et dans les erratas).

Les Petits : AVR, Pic, MSP430, CortexM0, 8051, PSOC3

AVR

Les AVR sont au cœur des cartes Arduino, mais c’est une famille étendue qui comporte des dizaines de références. Depuis les tous petits boîtiers en SOT23 avec 6 pins jusqu’aux boîtiers en PQFP 64. http://www.atmel.com/products/microcontrollers/avr/

Développé par ATMEL, l’architecture interne est très propre, 32 registres généraux et un jeu d’instruction RISC permettent une utilisation efficace pour un compilateur C.

Architecture AVR8

Les prix vont de 0,50€ à 6€ suivant les capacités mémoires (de 128 octets à 16kB pour la ram et de 2kB à 256kB pour la flash)

Avec des boitiers DIL et un nombre de composants externes réduit il est très facile de fabriquer une carte minimaliste :

Carte AVR prototype

On pourra trouver aussi des modules tous fait :

Atmel fournit un environnement de développement intégré appelé AVR Studio : http://www.atmel.com/Microsite/atmel_studio6/ mais le compilateur GCC http://www.avrfreaks.net/wiki/index.php/Documentation:AVR_GCC peut être utilisé. Pour programmer les chip le programmateur et debugger AVR Dragon coûte seulement 50€ http://parts.digikey.fr/1/1/713463-kit-dragon-32kb-flash-mem-avr-atavrdragon.html .

Le site de référence pour tout ce qui concerne les AVR : http://www.avrfreaks.net

Pic

Les PIC de Microchip sont dérivés d’une architecture du milieu des années 70 avec un faible nombre de transistor. L’architecture simple est compensée par une vitesse de fonctionnement relativement élevée.

La famille PIC18 est plus évoluée et peut gérer une mémoire plus importante. En pratique l’utilisation d’un compilateur C permet de ne pas s’occuper des détails de l’architecture et du faible nombre de registres.

La grande force de la famille PIC c’est les versions, des centaines en comptants les différents boîtiers et les périphériques avec un coût généralement relativement faible.

Les PIC24 ont eux une architecture 16bits et les dsPIC ajoutent à cette architecture des instructions de traitement du signal, pour faire du contrôle moteur par exemple.

Généralement Microchip donne des échantillons gratuitement ce qui en fait un constructeur aimé de tous les hobbyistes. Vous pouvez aussi acheter des plus grandes quantités directement auprès de Microchip ce qui est une exception dans le monde des semi-conducteurs.

Comme pour les AVR il est très facile de se faire une carte avec le PIC et quelques composants autours. Il existe des centaines de cartes à base de PIC :

Pour programmer l’environnement de développement est fourni par Microchip, il s’agit de MPLAB et un programmateur debugger PICKit3 est disponible pour 53€ :http://www.microchipdirect.com/ProductSearch.aspx?Keywords=DV164131 avec une carte de démo.

MSP430

La famille MSP430 de Texas Instrument a été prévue dès le départ pour une consommation réduite. L’architecture 16bits est simple et efficace, il existe une version Verilog du processeur qui peut être synthétisée dans des FPGA de différents constructeurs.

Architecture MSP430

A noter des versions avec de la FRAM et des futures versions avec une très basse consommation les Wolverine. Généralement les processeurs MSP430 disposent de moins de mémoire RAM (les plus petites versions ont 128 Octets de RAM et les plus gros 128kB mais le prix n’est plus le même), il faut donc bien évaluer les besoins de votre programme avant de choisir.

L’environnement de programmation est basé sur code composer studio de TI, mais il est aussi possible d’utiliser GCC :http://sourceforge.net/apps/mediawiki/mspgcc/index.php?title=MSPGCC_Wiki

Pour débuter avec les version les plus simples de la famille MSP430, le kit LaunchPad http://www.ti.com/tool/msp-exp430g2 livré avec une carte de prototypage qui fait aussi office de programmateur pour un prix de $4.30 et de 6€ en France : http://hackspark.fr/fr/ti-msp430-launchpad.html

Pour un debugger JTAG, pour l’instant le seul disponible est celui de TI : http://www.ti.com/tool/msp-fet430uif pour environ 90€

Il y a aussi des cartes d’évaluation originales comme une montre avec liaison radio :http://www.sparkfun.com/products/10019 pour $56

Ou encore une carte avec afficheur LCD chez Olimex :

Carte Olimex MSP430 449stk2

Pour 33€ http://olimex.com/dev/msp-449stk2.html

Cortex M0

Les Cortex M0 appartiennent à la grande famille ARM, et ne sont pas liés à un constructeur particulier mais fabriqué sous licence. Si le cœur est le même et bien sur compatible les périphériques sont différents d’un constructeur à l’autre.

C’est la gamme 32bits la moins chère, on peut trouver les premières versions autours d’1€.

Les principaux constructeurs proposant des processeurs basés sur le cœur M0 :

Carte d'évaluation Cortex M0 Discovery de ST

Un programmateur débuggeur est inclus sur la carte, et le compilateur GCC suffit pour développer.

8051

La famille 8051 a été développée par Intel au début des années 80, ce fut pendant longtemps un des microcontrolleurs le plus populaire. Cette architecture a été reprise et améliorée (passage de 12 clocks à 4 clocks par instruction) par de nombreux constructeurs. A noter qu’il y a eu une version embarquant un interpréteur Basic qui a été très populaire chez les hobbyistes.

Architecture 8051

Aujourd’hui on peut trouver des versions 8051 chez plusieurs constructeurs :

Il existe un compilateur C libre pour la famille 8051 : http://sdcc.sourceforge.net/

Parmi les particularités des 8051, il y a une zone mémoire qui est bit addressable pour réduire la consommation mémoire des flags, ainsi que plusieurs banques de registres qui sont utilisées suivant l’interruption. Ce qui permet de faire des traitements sous interruption sans avoir à sauvegarder le contexte.

On peut trouver de nombreuses cartes à base de 8051, mais cette architecture est en perte de vitesse et les AVR sont généralement un meilleur choix pour les nouveaux développements.

PSOC3

La famille PSOC est développée par Cypress. Elle offre un choix entre 3 cœur, M8C, 8051, ou Cortex-M3.

La particularité de cette gamme de processeurs est d’avoir à coté du processeur des blocks configurables numérique et analogique. Il ne s’agit pas d’un FPGA mais de blocks prédéfinis pouvant être configurés et chaînés pour réaliser des traitements matériels sans intervention du processeur.

Architecture PSOC de Cypress

A noter que les blocks numériques et analogiques peuvent être reconfigurer en cours d’exécution ce qui permet par exemple d’avoir un modem half-duplex en ayant des blocks pour la réception et de les reconfigurer pour faire l’émission en FSK.

Le développement se fait par une interface de Cypress, Psoc Designer.

Malgrès les avantages de cette famille elle n’est pas très populaire, on peut trouver une carte d’évaluation du constructeur :http://fr.farnell.com/cypress-semiconductor/cy8ckit-010/kit-processor-module-psoc-5/dp/1823447 pour environ 80€.

Les Moyens : Cortex M3-M4, ARM7

ARM7 et Cortex M3&M4

Contrairement au plan informatique pour tous en France qui n’a accouché que des MO5 et autres TO7 avec leur claviers en gomme en Angleterre Acorn a produit son propre microprocesseur pour l’Archimedes (un des premiers micro 32bits) ce qui allait donner naissance à la famille ARM.

Les ARM sont certainement les processeurs les plus répandus, ils sont fabriqué sous license par des dizaines de fondeurs. Les cortex M3 et M4 sont une mise à jour de l’architecture ARM7, plus petit, plus rapide, moins de consommation. Les cortex M4 sont les premiers microcontrolleurs avec un prix inférieur à 6$ à intégrer une FPU (optionelle) et des instructions DSP ce qui peut simplifier grandement les algorithmes de traitement du signal.

Architecture Cortex M3

Avec un prix de base aux environ d’1$ les cortex M3 entrent clairement en concurence avec les 16bits et les 8bits plus ancients. Les familles les plus faciles à trouver sont :

– LM3S chez Texas Instrument :  http://www.ti.com/mcu/docs/mculuminaryprodsearch.tsp?sectionId=95&tabId=2485&familyId=1755

– STM32 chez ST : http://www.st.com/internet/mcu/class/1734.jsp

– SAM chez Atmel, ARM7 et Cortex M3 : http://www.atmel.com/products/microcontrollers/arm/default.aspx

Pour la programmation un adaptateur JTAG est suffisant, le projet open source OpenOCD (http://openocd.sourceforge.net/) fonctionne avec des matériels différents dont certains coutent moins de 10€.

Pour la compilation GCC bien sur mais aussi d’autres compilateurs propriétaires chez IAR ou autre. Sous Windows l’environement de programation Coocox (http://www.coocox.org/) est spécifiquement concu pour les cortex M0,M3, ou M4.

Il existe des dizaines de cartes d’évaluation ou de modules basés sur les cortex M3, pour les cortex M4 la carte la moins chère et la plus répandue est la STM32F4Discovery : http://fr.farnell.com/stmicroelectronics/stm32f4discovery/board-eval-stm32f4-discovery/dp/2009276 pour 18€ vous avez un processeur à 168MHz, 196kB de RAM et 512kB de flash avec des périphériques variés (USB HS, ADC 7.2Mega/s, DAC, I2S, I2C, SPI ..). Pour plus d’informations sur cette carte rendez -vous sur cet article : ST32F4DISCOVERY.

Les Gros : ARM9, ARM11, MIPS

Parfois il vaut mieux utiliser une carte existante qui a un processeur puissant pour assurer par exemple l’interfacage réseau au lieu de créer une carte à partir de rien. On trouve à des prix très abordable des cartes qui embarquent un Linux et qui disposent d’I/O que l’on peut utiliser directement ou bien interfacer avec un petit µcontrolleur.

Chumby Hacker Board

Une carte entièrement open source avec les schémas, les gerbers mais aussi le fichier de routage sous Altium. Le coeur est un ARM9 à 450MHz de Freescale (anciennement Sigmatel) avec un port USB HS host une interface LCD ect…

Chumby hacket boardCette carte est disponible pour $89 chez adafruit : http://www.adafruit.com/products/278

Carambola

La carte Carambola est basée sur un processeur MIPS le RT3050 qui intègre une unterface wifi 802.11N et deux interfaces ethernet (il faut ajouter les transfos). Le processeur n’est pas vraiment ouvert, il faut chercher un peu pour trouver la datasheet, mais un linux basé sur OpenWRT est livré et vous avez aussi une interface I2C, un SPI, un I2S (16bits seulement) et quelques I/O. Avec un prix unitaire  de 22€ c’est la solution la moins chère pour interfacer directement des capteurs ou des sorties TOR en wifi.

Carte Wifi Carambola RT3050Coté programmation vous avez bien sur accès à tous les languages disponnibles sur Linux, mais il y a aussi un language spécialement conçu

La carte est disponible ici : http://www.8devices.com/product/3/carambola

 Beaglebone

Un véritable ordinateur sur carte avec un CortexA8 cadencé à 700MHz avec une interface ethernet et sur les connecteurs d’extensions des interfaces multiples que l’on peu utiliser facilement. C’est une version faible coût et plus orienté embarqué des cartes comme BeagleBoard, Pandaboard.

Coté programmation vous avez bien sur accès à tous les languages disponnibles sur Linux mais il y a Bonescript, basé sur Javascript, spécifiquement conçu pour cette carte.

La carte est disponible pour momins de 90€ ici: http://www.lextronic.fr/P26022-platine-de-developpement-beaglebone.html

Les bizarres : Propeller, XMOS

XMOS

C’est anglais, c’est bizarre. On peut appliquer ce concept à beaucoup de choses venant de là bas (avez vous essayé les Deep fried mars bars ?) . L’architecture XMos prend ses racines dans les transputers d’Inmos, développée au début des années 80 pour proposer des architectures massivement parallèles. Il y eu même un prototype grand public, le mythique Atari TT.

Architectu XCore

Aujourd’hui XMOS se positionne entre les FPGA et les µC. Programmé en C avec une architecture d’I/O rapides et flexibles, chaque coeur a 8 threads qui s’exécutent en même temps pour une performance globale de 400Mips. Les circuits se composent de 1, 2, ou 4 coeurs (4 à 32 threads) et ils peuvent être facilement interconnectés entre eux par des liens séries rapides (comme les transputers).

Xmos fournit un environnement de programmation avec un simulateur et un compilateur : http://www.xmos.com/products/development-tools. Il n’y a pas d’interface dédiée, vous avez besoin d’une interface I2C ? Il suffit simplement de programmer la machine d’état dans un thread. C’est peut être moins simple que d’utiliser une fonction toute faite mais cela offre des avantages en termes de performance et de latence.

Une communauté active partage ses  projets sur : https://www.xcore.com/

Une carte d’évaluation est disponnible pour 35€ : http://www.alpha-crucis.com/fr/outils-de-developpement/1357-xmos-xs1-l1-64-development-board-3700386101137.html

Propeller

L’architecture Propeller a été développée par Parrallax qui a commencé en vendant des cartes basic stamp, un interpréteur basic dans un PIC. C’est une architecture originale qui n’est basée sur rien de connu. Chaque processeur a 8 COG qui accédent à tour de role à la mémoire centrale. Le composant dispose de multiples périphériques dont un générateur video qui permet d’afficher facilement des informations sur une télé.

Architecture PropellerLa programmation se fait soit dans un language proche du basic, Spin ou directement en assembleur.

Plusieurs cartes sont disponnibles dont une version à faible coût pour environ 25€ : http://www.parallax.com/Store/Microcontrollers/PropellerDevelopmentBoards/tabid/514/CategoryID/73/List/0/SortField/0/Level/a/ProductID/748/Default.aspx.

Conclusion

Voila fini un petit tour d’horizon des possibilités en dehors d’Arduino. Il ne s’agit pas d’être contre l’écosystème Arduino, mais de montrer que de nombreuses autres options existent. Bien sur il manque beaucoup de familles (PIC32, ColdFire, les japonais de Renesas…) mais il s’agissait de montrer que le monde ne se résume pas à Arduino.