Skyduino:~#
Articles
test

[Test] Olimex STM32 Maple (Arduino)

Salut à tous !

Aujourd’hui je vais vous parler de la carte Arduino « Maple ».

Comme sont nom le laisse pensé la « Maple » est une carte reprenant le form factor et la philosophie Arduino.
la « Maple » a le même form factor que la carte arduino « UNO » avec quelque petits extra !

Des extras ?
Et oui, contrairement aux cartes arduino classique basé sur des AVR 8bit de atmel, la Maple est basé sur un STM32F103RBT6 de ST-microelectronic, un jolie petit microcontrolleur 32bit tournant à 72MHz (via un quartz 8MHz et une PLL interne) !

La maple (de olimex) est vraiment low-cost, moins de 25€ ! Soit moins chére qu’une arduino UNO !

Comme toujours olimex ne fait pas de faux pas, en fournissant du matériel d’une qualité exemplaire pour un prix vraiment microscopique !
Olimex est bien connu pour faire des cartes de développement de grande qualité, en plaçant plus d’attention sur le hardware que le software ainsi comme toujours vous êtes assuré d’un hardware de qualité mais pour le software, si ce n’est un code d’exemple pour montrer que ça marche, nada !

Cependant olimex aime aussi montrer son image et la Maple de Olimex n’échappe pas à la régle !
La carte est vendu dans un petite boite en carton, portant fièrement le logo Olimex et « RoHS Compliant », j’ai toujours aimé le packaging de Olimex, à chaque fois un nouveau sapin de noél avec des couleurs de partout ^^.

Pour une fois Olimex n’as pas innové dans le domaine de la protection ESD, la carte étant tous simplement mise dans un petit sachet plastique anti statique, toujours dans l’optique du « easy & low cost ».

Passons maintenant au point qui fâche, là où l’arduino classique à fait ses preuves, de quoi je veux parler ? De la licence !
Là ou je m’attendait à tomber sur une licence proprio avec quelques schémas dispo et bien je suis tomber sur une licence Creative Commons Attribution-Share Alike 3.0 au même titre que le projet Maple de leaflabs (bien normal j’ai envie de dire) !

Et là ou les choses deviennent vraiment intéressantes c’est que sur la page dédié du site de olimex (trés cheap, vive le html ;)) on peut tous de suite ce rendre compte du travail fourni !

La ou certain ce contente de re-router quelques pistes par-ci par-là, olimex à tout revue et à la hausse !
Contrairement à la carte Maple de leaflabs celle de olimex comporte un design réduisant les bruits parasites,
avec une vrai alimentation acceptant de 9 à 30v,
un régulateur µA (contrairement au tout les autres cartes arduino), permettant une utilisation longue duré sur batterie en mode sleep,
un chargeur Li-po intégré avec gestion de charge et une sélection auto de la source d’alimentation,
des composants soigneusement choisi pour une duré de vie optimisé,
un connecteur UEXT, permettant de brancher des modules d’extensions olimex (gsm-mod, zbee, gps, nrf-24L01-mod, …),
un quartz RTC pour le module RTC hardware du STM32,
un bus CAN, chose introuvable sur les arduino classiques,
un support micro-SD, pas besoin d’une shield ou autre,
une alimentation des parties numériques et analogiques séparé pour des mesures encore plus précise (et en 12bit/1µs !),
et bien sur tout les possibilité offerte par le STM32, usb, can, i2c, spi, uart, timer, …

Toute la carte est en composants CMS, seul quelques condensateurs, le quartz et les connecteurs sont en composants traversant,
pas de réparation « maison » donc mais il faut avoué que le layout des composants est impressionnant !

Le pcb est comme toujours d’une grande qualité, gravé en double face, avec un vernis rouge et un skillscreen blanc, celui ne se montre pas que décoratif mais aussi trés utile !
Ainsi comme sur l’avant, l’arrière est annoté des différentes broches, de leur fonction, et cerise sur le gâteau d’un tableau comportant les jumpeurs avec leur fonctions et leurs état par défaut !

Bon petit point négatif, l’absence du port ISP que l’ont retrouve sur les cartes arduino classique, à la place on retrouve le connecteur d’extension n°2, exit donc la ethernet shield officiel ou tout autres shield utilisant le port ISP.

L’alimentation de la carte est un petit bijou !
On y retrouve un connecteur JST pour une batterie Li-po et un jack standard.
Gros point positif, le chargeur li-po intégré, que la carte soit relié en usb ou via le jack celui ci garde la batterie chargé en prenant soin de ne pas trop la chargé comme un chargeur li-po classique.
Le régulateur utilisé est lui assez spécial, en plus de pouvoir géré 1A il peut passer en mode « sleep » consommant alors moins de 10µA,
tout cela permettant de faire des systèmes sur batterie avec une autonomie excellente en passant le STM32 et le régulateur en mode « sleep » lorsqu’il n’est pas utile pour le réveillé par la suite via une interruptions externe.

La carte comporte deux boutons, un premier pour le reset et un deuxième laisser libre à l’utilisateur mais servant aussi à l’activation du bootloader. La carte comporte aussi trois led, une pour l’alimentation, et les deux autres utilisés lors de l’upload via le bootloader et laisser libre à l’utilisateur par la suite.

Bon pour les spécifications du STM32 je vais simplement vous copier/coller l’intro du datasheet.
Core: ARM 32-bit Cortex™-M3 CPU
– 72 MHz maximum frequency,
1.25 DMIPS/MHz (Dhrystone 2.1)
performance at 0 wait state memory
access
– Single-cycle multiplication and hardware
division
- Memories
– 32 to 128 Kbytes of Flash memory
– 6 to 20 Kbytes of SRAM
- Clock, reset and supply management
– 2.0 to 3.6 V application supply and I/Os
– POR, PDR, and programmable voltage
detector (PVD)
– 4-to-16 MHz crystal oscillator
– Internal 8 MHz factory-trimmed RC
– Internal 40 kHz RC
– PLL for CPU clock
– 32 kHz oscillator for RTC with calibration
- Low power
– Sleep, Stop and Standby modes
– VBAT supply for RTC and backup registers
- 2 x 12-bit, 1 μs A/D converters (up to 16
channels)
– Conversion range: 0 to 3.6 V
– Dual-sample and hold capability
– Temperature sensor
- DMA
– 7-channel DMA controller
– Peripherals supported: timers, ADC, SPIs,
I2Cs and USARTs
– 51 I/Os, all mappable on 16
external interrupt vectors, all 5 V-tolerant
except for analog inputs
- Debug mode
– Serial wire debug (SWD) & JTAG interfaces
- Up to 7 timers
– Up to three 16-bit timers, each with up to 4
IC/OC/PWM or pulse counter
– 16-bit, 6-channel advanced control timer:
up to 6 channels for PWM output, deadtime
generation and emergency stop
– 2 watchdog timers (Independent and
Window)
– SysTick timer: a 24-bit downcounter
- Up to 9 communication interfaces
– Up to 2 x I2C interfaces (SMBus/PMBus)
– Up to 3 USARTs (ISO 7816 interface, LIN,
IrDA capability, modem control)
– Up to 2 SPIs (18 Mbit/s)
– CAN interface (2.0B Active)
– USB 2.0 full speed interface

Pas mal la petite bête 😉
Alors je vais rajouter deux trois petite chose,
Pour vraiment utiliser au maximum toute ces fonctionnalités j’utilise Coocox IDE et le mapleIde pour l’upload.
Assez peut de chose sont vraiment prête avec la libMaple mais les choses semblent bien avancé.
Autre petite chose à noter, comme sur un FPGA, il est possible d’envoyer le programme en RAM ou en flash.
L’upload en flash est identique à celui d’une carte arduino classique, si la carte reboot, le même programme ce lance à chaque fois.
L’upload en RAM ne détruit pas le programme en flash, la carte ne redémarre pas après l’upload et le programme ce lance mais aprés un reboot c’est le programme en flash qui ce lancera, bien pratique pour du debug, si le programme plante, un reboot et la carte est comme avant !

Contrairement à certaine carte arduino, ce n’est pas ici un FTDI qui géré le port série et l’upload, à la place le bootloader Maple utilise le port usb hardware, un double bon point car pas d’intermédiaire donc un upload plus rapide et surtout un port usb utilisable à souhait !

Toute les broches de la carte Maple sont 5v tolérantes, excepté pour les broches analogiques, la maple ne comporte pas de régulation 5V par conséquent sont utilisation avec des shields arduino n’est possible uniquement si celle ci peuvent fonctionner en « vrai » 3v3.
Comme avec la carte chipkit, le convertisseur analogique/numérique est bien plus puissant que celui d’une carte arduino classique, avec en plus une précision de 12bit (au lieu de 10bit) et un temps de 1µs par conversion.

On remarquera la présence d’un port JTAG/SWD au format cms, en duo avec le débuggeur ST-Link d’une carte stm32-discovery la maple formera un couple parfait !

Je ne m’attarderai mais voici quelques photos de ce qui rend cette carte maple olimex sensationnel !

Le bus CAN, idéal pour un communication inter-maple et maple-automobile :

Le support pour carte micro SD, trés utile :

Le port UEXT, pour étendre les capacités de sa carte sans casse tête :

Le quartz 32KHz, pour l’utilisation de l’horloge RTC interne du STM32:

Seul petit regrée, l’utilisation d’un STM32 « medium-density », ne comportant par conséquent pas de convertisseur numérique analogique … dommage.
sur ce point la Maple RET6 est en avance.

Mais quoi qu’il en soit il est trés clair qu’il existe un gouffre entre le maple de leaflabs et celle d’olimex !
La preuve :

Et oui … c’est tout de suite pas le même niveau !

Bon coté hardware je pense avoir tout dis, maintenant coté software.
Sur ce point les deux board ce rejoignent ! Elles utilisent toutes deux le même IDE nommée mIDE (aka Maple IDE), une version modifié de l’ide arduino.
Comme avec l’IDE chipkit celui de Maple est en tout points identique à celui de l’ide arduino classique, excepté que le core et le compilateur ont été remplacé par une version spécial de gcc compatible ARM et plus particulièrement compatible STM32.

Pour plus d’info sur l’IDE, la libMaple c’est sur le wiki de leaflabs que ça ce passe !

Coté librairie les choses ont l’air d’avancé lentement mais surement, quelques librairies non officiel commence même à faire leurs apparitions !
cf : http://wiki.leaflabs.com/index.php?title=Libraries

Conclusion :
Je trouve cette carte plutôt sympa, d’une qualité impressionnante et surtout d’un prix vraiment intéressant !
Si vous êtes un bricoleur comme moi et que vous voulait aller toujours plus loin avec l’arduino achetez cette board !
Seul petit point négatif, le STM32 RBT6 et non RET6, avec le même pinout il aurait était plus intéressant (2x + de ram et de flash et un DAC 12bit intégré !).

Discussion

8 réflexions sur “[Test] Olimex STM32 Maple (Arduino)

  1. Je n’ai pas encore tout lu, mais il est normal qu’il n’y ait pas de port ISP, puisque les Cortex-M3 (en tout cas celui-ci) ne se programment pas par SPI comme les AVR.

    En revanche, ils disposent d’un bootloader sur le premier port série, à la condition de pouvoir jouer sur les pins BOOT0 et BOOT1

    Publié par ftorama | 20 novembre 2011, 15 h 38 min
    • Je sais bien 😉
      Les ARM se programme via SWD ou JTAG, quand je parle du port ISP c’est parce que certaines shields comme l’ethernet shield utilise le port ISP pour communiquer en SPI avec le µc tout en étant utilisable telle quelle sur une mega ou mega2560.

      Le fait qu’ils n’est pas pensé à router le port SPI vers un « pseudo » port ISP rend l’utilisation de certaines shields impossible, ce qui est dommage vu la bête.

      Publié par skywodd | 20 novembre 2011, 16 h 26 min
      • Sur la carte Olimex, le SPI est sur les broches D10 à D13 😉

        Maintenant j’avoue que j’ai une Maple, mais je n’ai pas encore vraiment pris le temps de jouer avec…

        Publié par ftorama | 20 novembre 2011, 16 h 39 min
  2. @FTORAMA:
    C’est vrai que le SPI est au même endroit que sur les arduino classiques (D10 ~D13) mais bon avoir les connecteurs ISP câblé au port SPI aurait rendu l’utilisation de certaines shields plus simple.

    Par exemple pour utiliser la ethernet shield il faut ajouter des headers 6&8pin pour surélevé l’ethernet shield sinon avec le connecteur ISP ça passe pas …

    Publié par skywodd | 20 novembre 2011, 17 h 39 min
  3. Je suis novice en Arduino. Je voudrais savoir s’il est possible de charger un code arduino tel quel ? ou s’il faut apporter des modifications au code pour cette carte MAPLE ?

    Publié par Edouard | 16 juin 2012, 19 h 01 min
    • Pour les codes extrêmement basique n’utilisant que les fonctions de bases digitalRead, digitalWrite, etc …

      Il n’y auras aucune modification à apporter au code, par contre pour tout ce qui est librairies et autre code plus poussé il faudra modifier le code en profondeur.

      Cette carte n’est pas la plus conseillé pour un débutant, il est préférable d’avoir une certaine expérience dans le domaine pour pouvoir s’en sortir 😉

      Publié par skywodd | 16 juin 2012, 19 h 24 min
  4. Habitué aux arduinos, j’ai achete cette carte dans le but de monter en puissance tout en conservant le principe arduino.
    Et bien le moins qu’on puisse dire c’est que je suis plus que decu. Certes le harware est pas mal mais alors cote IDE c’est une catastrophe ! Ca va pour faire muimuse 5 minutes histoire d’allumer une led par ci par la mais de la a developper reellement quelque chose avec il y a un monde !
    L’IDE maple a un retard immense par rapport a arduino donc le portage est pratiquement impossible et en plus il est truffé de bugs. Il faut ajouter des rustines un peu partout ce qui va pas rendre facile les updates de l’IDE.
    J’ai aussi teste de la meme facon les chipkit et meme punition en un peu moins pire.
    Ce type de carte est certainement tres bien mais a condition de ne pas prendre l’IDE qui va avec.
    La force de l’arduino est justement la parfaite integration hardware / software qui fait que developper avec est presque un jeu d’enfant. Si on veut faire de l’arduino, mieux vaut prendre un vrai arduino quitte a avoir un peu moins de puissance.
    Avec toutes ces cartes « arduino like », c’est cassage de tete et bidouille permanente pour arriver a faire tourner quelque chose. C’est simple j’ai pratiquement rien reussi a porter tel quel !
    Enfin c’est juste mon petit avis personnel.

    Publié par ironphil | 6 juillet 2012, 6 h 22 min
    • >> Certes le hardware est pas mal mais alors cote IDE c’est une catastrophe !
      >> L’IDE maple a un retard immense par rapport a arduino donc le portage est pratiquement impossible et en plus il est truffé de bugs.
      >> Il faut ajouter des rustines un peu partout ce qui va pas rendre facile les updates de l’IDE.

      L’ide maple est resté en accord avec l’api arduino 002x.
      La team arduino a fait le choix unilatérale de modifier une grande partie de l’api 002x en passant en version 1.0.

      Les développeurs avait donc deux choix :
      – recommencer tout leur travail avec l’api 1.0
      – rester en api 002x
      Tout les ide alternatifs (chipkit, maple, energia, …) ont décidé de rester en api 002x, refaire une grande partie du software n’était pas envisageable.

      >> J’ai aussi teste de la même facon les chipkit et même punition en un peu moins pire.

      L’ide chipkit est un peu spécial, il est conçu pour fonctionner avec les cartes arduino classique et les cartes arduino chipkits.
      Un compilateur gcc-pic32 a même été conçu spécialement pour l’occasion car aucun compilateur C/C++ n’existait.
      Du coup ils ont pu pousser la compatibilité software beaucoup plus loin.

      >> Ce type de carte est certainement tres bien mais a condition de ne pas prendre l’IDE qui va avec.

      Je ne suis pas (totalement) d’accord !
      Le but des cartes arduino « alternatives » est de permettre au développeurs de concevoir une application sur des cartes plus adapté à leurs besoins.

      Par contre le « point de vue arduino » n’est pas le même.
      Les cartes arduino alternatives sont conçu pour des personnes maitrisant déjà bien le développement embarqué.
      Quand on développe sur maple il faut avoir des bases de développement sur STM32F10x.
      Quand on développe sur chipkit il faut avoir des bases de développement sur PIC32.
      L’ide n’est là que pour faire la compilation et l’envoi en mémoire (ram ou flash dans le cas de la maple).

      >> La force de l’arduino est justement la parfaite intégration hardware / software qui fait que développer avec est presque un jeu d’enfant.
      >> Si on veut faire de l’arduino, mieux vaut prendre un vrai arduino quitte a avoir un peu moins de puissance.

      Voir mon commentaire plus haut, avec les cartes arduino alternatives on n’est (pas) plus dans le domaine arduino « débutant » mais dans le domaine arduino « confirmé », voir développeur embarqué.

      Si on veut faire du « développement facile » il faut rester sur une carte arduino classique.
      Le développement n’est pas un jeu d’enfant, c’est un art et un métier.
      La team arduino rend les choses un peu plus simple avec son systéme de fonctions « tout prête », mais dés qu’on sort du domaine du « tout prêt » on découvre vraiment ce que développer signifie.

      >> Avec toutes ces cartes “arduino like”, c’est cassage de tete et bidouille permanente pour arriver a faire tourner quelque chose. C’est simple j’ai pratiquement rien reussi a porter tel quel !

      Normal, et logique …
      Pas le même compilateur, pas le même langage bas niveau, pas la même API, pas la même architecture hardware, …
      Il est IMPOSSIBLE de porter telle quelle une librairie arduino classique vers Maple (ou chipkit, ou autre).
      Pour cela il faut entièrement reprendre le code en le codant pour l’architecture ARM-Cortex M3, c’est en partie pour cela qu’il y a si peu de librairies maple.

      Publié par skywodd | 6 juillet 2012, 13 h 07 min

Skyduino devient Carnet du Maker

Le site Carnet du Maker remplace désormais le blog Skyduino pour tout ce qui touche à l'Arduino, l'informatique et au DIY.