Skyduino:~#
Articles
Autre, programmation, test

[Test] Duinomite-mega, un mini ordinateur sur base PIC32 (dérivé du maximite)

Bonjour tout le monde ! 🙂

Aujourd’hui je vais vous présenter la carte duinomite-mega fabriqué par olimex.

Mais avant de commencer un petit peu d’histoire 😉
A l’origine fut créé le projet « maximite » par Geoff Graham, un « mini ordinateur » programmable en MMbasic, un langage dérivé du Basic spaghetti.
La carte du projet maximite était trés sobre, elle n’avait rien de bien extraordinaire.
Les dév de olimex ont donc eu l’idée de se lancer dans une carte basée sur celle du projet maximite, mais avec un max d’accessoires sympa et des ajouts de fonctionnalité au langage MMbasic pour pouvoir gérer le tout.
Ainsi est née la série duinomite, de la carte la plus basique duinomite, à la plus poussé la duinomite-mega.

Pour vous donnez une idée voici le site du projet maximite :
http://geoffg.net/maximite.html
et la page olimex de la duinomite-mega :
http://www.olimex.com/dev/duinomite-mega.html

Je vais vous parler dans ce test uniquement de la carte duinomite-mega, mais les cartes duinomite normal possède les même fonctionnalités, il faut juste prévoir en plus de la carte les connecteurs qui vont bien.

Au passage olimex est en train de tester une nouvelle version nommée duinomite-emega, avec un e devant mega pour ethernet.
Cette nouvelle version possédera un port ethernet, une puce de stockage flash et plein de truc en plus !

Bref, entrons dans le vif du sujet 🙂

Comme toujours avec les cartes fabriqué par olimex, celles ci sont soigneusement emballé dans une boite aux couleurs vive.
Ya pas à dire j’adore les boites d’olimex, mais j’adore encore plus leurs contenu 🙂

Histoire de ne pas changer les habitudes, la carte est emballé dans un simple sachet anti-ESD, sans se casser la tête.
Toujours dans l’optique « pas chère mais complet » d’olimex.
Par contre j’aurai apprécié de voir un petit peu de mousse, ou une cale en carton, pour maintenir la carte dans sa boite, car pendant le transport les led sur le coté se sont un peu tordu (mais rien de grave).

Donc comme je le disait au début, la duinomite se programme en MMbasic, mais pas que !
Il est aussi possible d’utiliser MPlab ou l’ide pinguino pour programmer la duinomite.
En gros il est possible de programmer la duinomite en c++, en « arduino », ou en MMBasic.
Pour ma pars étant donnait que je possède un carte pinguino je vais uniquement utiliser le langage MMbasic.
La duinomite est un vrai mini ordinateur, elle peut marcher seul (avec un clavier et un écran), ou en duo avec un ordinateur (via l’usb ou le port rs232).

Pourquoi duinomite ?
D’aprés ce que j’ai compris les dev de olimex voulez garder le coté « maximite » mais aussi donner une impression d’explosion (de fonctionnalités).
Ils ont donc trouvé le nom « duinomite », un mix de « maximite » et de « dynamite ».

(Attention ça va péter !)

Parlons un peu du langage MMbasic.
Le langage MMbasic est dérivé du langage basic « spaghetti », ceux qui on déja vu ou utilisé un « vieux » ordinateur, amiga, trs80, etc aurons surement déja vu la syntaxe :
1 PRINT "Hello"
2 PAUSE 1000
3 GOTO 1

(dans certaines signatures de forum on peut aussi voir ce genre de syntaxe ;))

L’avantage du basic c’est que c’est trés simple à apprendre.
Le seul désavantage c’est que le code basic est interprété et non compilé, par conséquent la rapidité d’exécution est moindre comparé à un code c++ natif.
Mais ici ce n’est pas trés grave, car la duinomite est suffisamment puissante pour interpréter quasi instantanément n’importe quelle commande MMbasic.
(+30K instructions par seconde d’après mes test)

Niveau CPU, la duinomite-mega est propulsé par un PIC32MX795, autant dire un vrai monstre de puissance.
Je ne vais pas détailler toutes les fonctionnalité du cpu, car cela n’aurait pas vraiment d’utilité dans le sens où c’est l’interpréteur MMbasic qui gére tout.
Tout ce qui faut se dire c’est qu’il s’agit d’un cpu 32bits, avec beaucoup de ram et de flash, suffisamment pour faire des choses totalement impossible avec une carte arduino par exemple.

Parlons arduino tient !
La duinomite-mega possède un connecteur (enfin une série de connecteurs) au « form factor » arduino UNO.
Il est donc possible d’utiliser des shields arduino (pouvant tourner sous 3v3) avec la duinomite.
Autant dire que les possibilités sont infini !
Et comme toujours avec les cartes bien pensé, il y a en parallèle du « connecteur arduino », une série de connecteurs au pas « classique » pour pouvoir faire soi même, ses propres shield si on le souhaite avec une simple plaque à trou.

On remarquera en haut le petit connecteur ICSP qui permet de connecter un debuggeur/programmateur de PIC, ainsi que le quartz 32KHz pour l’horloge RTC intégré du PIC32.
(Petite remarque : le quartz a été soudé un peu n’importe comment, comme on peut le voir sur la photo. Y aurait il du relâchement chez olimex ? Allez pour ce coup ci ça passe :))

Comme toute les cartes olimex, la duinomite-mega possède un port UEXT permettant de brancher sans soudure, ni câblage, divers type de sondes/capteurs/modules externe appelé « MOD ».
Le « MOD » le plus intéréssant étant le MOD-RTC, à savoir une carte avec un DS1307 permettant via une simple commande en MMbasic de stocker/lire l’heure et la date du jour.
Mais il existe bien d’autre « MOD » comme le MOD-IR pour envoyer/recevoir des trames de télécommande infrarouge, le MOD-GSM pour communiquer en GSM, etc etc

La duinomite possède aussi un slot pour carte SD, qui permet de stocker les programmes ainsi que divers données utile.
Il est aussi possible de stocker/éditer/gérer les programmes de la carte SD directement depuis la console MMbasic, et même d’enregistrer au format bitmap une capture d’écran de la console.
A noter qu’il est aussi possible de stocker de petit programme directement dans la flash du PIC32 via le lecteur virtuel nommé A: (B: pour la carte SD).

(Notez aussi le second port UEXT sur le coté)

L’alimentation de la carte se fait via, au choix, l’usb ou une alimentation extérieur.
Pour ma par j’utilise le port usb pour l’alimentation car j’ai remarqué que ma télévision possède un port usb pouvant être géré avec la télécommande (la tv s’éteint -> la duinomite s’éteint, pratique !).
L’alimentation externe accepte de 9v à 30v DC, n’importe quelle adaptateur secteur du commerce fera donc l’affaire.
A noter que le port usb sert aussi de port série virtuel usb lorsqu’il est branché à un ordinateur, et que tout ce qui est passé à ce port série virtuel est à la fois envoyé sur l’écran et sur la console RS232.
Le port usb sert aussi pour les mise à jour via une petite application « HID Bootloader » fourni sur le site de olimex.

La duinomite possède aussi un connecteur DIL comportant un certain nombre de broches, et permettant de faire interagir la duinomite avec le monde extérieur par le bias de broche digital, analogique, de bus SPI, I2C, du port série, etc …
Bonus, la duinomite mega possède aussi un bus CAN permettant de concevoir des applicatifs pour le domaine automobile.

Bus CAN qui a la particularité d’être câblé sur un bornier extractible. C’est le genre de petits détails qui montre le travail de conception fourni par l’équipe d’olimex.

Parlons un peu plus en détails de la connectique !

Tout d’abord la duinomite-mega est équipé d’un connecteur pour clavier PS/2, celui ci permet, avec un écran, d’écrire, de debugger et de lancer des programmes sans avoir besoin d’un ordinateur ou de tout autre matériel.

La duinomite-mega comporte aussi un port RS232 avec lequel il est possible d’avoir une console MMbasic, ou de pouvoir communiquer avec des périphériques utilisant une liaison RS232.

Comme je l’évoquai plus haut, il est possible de brancher un écran sur la duinomite-mega pour pouvoir visualiser et modifier un programme sans avoir d’ordinateur.
Il est possible de brancher un écran, au choix, soit via la prise composite, soit via le prise VGA.

(Le port VGA)
Dans tout les cas avec la duinomite-mega « normal » (pas la version ethernet) il est possible d’avoir qu’une image en noir et blanc.
Il faudra attendre la version emega pour avoir des images en couleurs.

Il est aussi possible de relier la duinomite mega à une entrée audio composite ou jack pour pouvoir utiliser la génération de son par PWM du PIC32.

De même il est aussi possible de brancher une batterie lipo (ou lion) directement à la duinomite-mega pour la rendre totalement autonome.

La duinomite-mega possède 3 led de statut, indiquant l’état du cpu, ainsi que deux boutons poussoir, un pour le reset, et un autre pour activer le bootloader.

Comme toujours avec olimex, le skillscreen, ainsi que le pcb est d’excellente qualité !
Rien à dire de ce coté là, si ce n’est qu’il n’y a pas d’indication sur les jumper, les broches, etc … comme c’est le cas d’habitude, bizarre …

En tout cas une chose est sur, on ne rigole pas avec la qualité chez olimex !
Les pistes même trés fines sont d’une qualité à toute épreuve, c’est presque étonnant que de si petite pistes puisse être aussi résistante !

De même les pads non soudé sont d’une belle couleur doré, signe qu’ils ont été protégé chimiquement contre l’oxydation.

Pour tous ce qui est documentation, contrairement à d’habitude (ou normalement il n’y a que quelques rare documents), ici il y a une nombre incalculable de documents et d’exemples !

Rendez vous donc sur la page de la duinomite pour plus d’info : http://www.olimex.com/dev/duinomite-mega.html (partie DOCUMENTS)

Ma conclusion :
La duinomite-mega est une pure merveille, ce qui suivent mon blog doivent ce dire qu’il m’en faut peu pour m’émerveiller, mais là je suis vraiment sur le c*l !
Un hardware propre, de qualité, totalement irréprochable, avec un langage de programmation simple et bien documenté. Que demander de plus ?
Le support des clavier azerty (pour le moment il faut impérativement avoir un clavier qwerty, ou connaitre l’emplacement des touches d’un clavier qwerty) ? No problém !
C’est prévus dans MMbasic 3.1 ! La commande devrait être « CONFIG KEYBOARD FR » normalement.

Ps: Je ne débâterai pas sur l’action du dév du projet Maximite, qui a rendu le code source à partir du firmware 3.0 « closed source » (et donc plus du tout open source).
Si je commence à partir sur le sujet il y en aurai de quoi faire tout un article … donc je reste sur le hardware d’olimex et j’ignore totalement le software pour le moment.
Si vous avez du temps de libre : http://geoffg.net/OpenSource.html

Edit: Il y a désormais une version “spécial duinomite” avec le support du hardware olimex.
http://geoffg.net/maximite.html#Downloads

C’est « closed source » mais c’est une mise à jour trés importante au niveaux des fonctionnalités.

Discussion

11 réflexions sur “[Test] Duinomite-mega, un mini ordinateur sur base PIC32 (dérivé du maximite)

  1. Pratique pour de la domotique, ca m’interesse =D

    Publié par nicolas Di Nunno (@zilator) | 16 février 2012, 14 h 44 min
    • La prochaine version avec ethernet sera encore plus intéréssante pour de la domotique je pense (écran couleur, ethernet, mémoire flash, …), par contre le coup du firmware devenu « closed source » c’est pas cool =(

      Publié par skywodd | 16 février 2012, 15 h 13 min
      • Ethernet n’est pas forcément la panacée pour la domotique.
        Je préfère les courant porteurs ou surtout la paire téléphonique de base. Ca permet des solutions simples, pas chères et de faible consommation, sans avoir besoin de sortir un monstre CPU pour traiter une couche TCP.

        Publié par Barbudor | 16 février 2012, 21 h 19 min
  2. Notez que le site http://www.themaximitecomputer.com/ n’est pas le site officiel de la MaxiMite de Geoff Graham mais le site de Don McKenzie, un des premiers supporteurs de la MaxiMite et un des concepteurs du concept DuinoMite, mais qui prend ses distances avec les récentes décisions de Geoff Graham.
    Le site officiel de MaxiMite est http://geoffg.net/
    A+

    Publié par Barbudor | 16 février 2012, 21 h 17 min
    • J’ai changé le lien par celui officiel, c’est plus respectueux pour le travail de Geoff Graham, merci de la
      précision.

      Au passage j’ai ajouté le lien vers l’article complet ou il explique sa décision.

      Il devrait regarder du coté de la licence CC BY-NC-ND 2.0 …
      Je crois qu’en fait il n’as pas vraiment réfléchi au choix de la licence lors de la 1er publication de son code source et que maintenant il s’en mord les doigts et a peur d’utiliser une licence non proprio.

      Publié par skywodd | 16 février 2012, 21 h 50 min
  3. « Il est possible de la programmer en C++ »
    Ah bon ? J’aimerais bien avoir plus d’infos là dessus 🙂 Avec mplab, on peut compiler en C, mais je n’ai pas encore
    vu de compilateur C++ pour PIC32, ça m’intéresserait, d’ailleurs.

    Est-ce une petite erreur ? Ou est-ce moi qui ne connait pas encore le compilateur en question ?

    Publié par julz | 18 juin 2012, 15 h 23 min
  4. Un bonheur cette petite carte, ça me rappelle le ZX81, VIC20 etc et plus tard le GWBasic sur les premiers PC (séquence émotion 20 à 30 ans en arrière… j’en ai eut la larme à l’œil ;’)

    Par contre, au bout d’une journée, j’ai chargé le firmware 3.2C pour avoir un clavier Fr, ne plus avoir besoin de la numérotation des lignes, permettre l’indentation, avoir un éditeur plein écran etc (tout comme le Qbasic)

    Bon, il faut relire attentivement la doc parfois; exemple: J’ai passé du temps pour comprendre pourquoi j’avais des caractères parasites avec l’écran LCD série 16×2 série de Sparkfun (il fallait simplement ajouter un « ; » après la chaine envoyée par print# pour éviter le saut de ligne final)

    Bravo pour tes articles, c’est un travail remarquable 😉

    Publié par Marc56 | 6 juillet 2012, 8 h 01 min
  5. >> Par contre, au bout d’une journée, j’ai chargé le firmware 3.2C pour avoir un clavier Fr, ne plus avoir besoin de la numérotation des lignes, permettre l’indentation, avoir un éditeur plein écran etc (tout comme le Qbasic)

    J’ai pas fait la mise à jour personnellement, vu que la version 3.2 n’est pas (il me semble) optimisé pour fonctionner sur la duinomite (pas toute les GPIO disponible, instructions manquante, etc …).
    Faudrait que je regarde ça plus en profondeur.

    Edit: Effectivement il y a bien une version « spécial duinomite » avec le support du hardware olimex.
    http://geoffg.net/maximite.html#Downloads

    >> Bravo pour tes articles, c’est un travail remarquable 😉
    Merci 🙂

    Publié par skywodd | 6 juillet 2012, 12 h 41 min
  6. Bonjour à tous !

    Je suis nouveau sur le sujet, après avoir beaucoup lu cet article et c’est celui qui m’a fait penché pour la eMega !

    J’essaye d’exploiter la carte sans MMbasic, directement en C avec MPLab (ça faisait longtemps (presque 10 ans) que je n’avais pas PICer 🙂 PIC16F lol…)

    J’y arrive (LCD3310 en SPI OK) et là je suis à la Flash SPI intégrée (AT45DB041D et non la 161D comme indiquée dans le schéma hardware de la carte par Olimex).

    J’arrive à lire/écrire dessus mais j’ai un soucis à la mise sous tension : le « reset » du flash semble mal se passer si je reset pas la carte avec le petit bouton 🙂 et je lie un buffer de la flash un peu « aléatoire » alors qu’après reset « propre » par le bouton, c’est impeccable (plusieurs essais).

    Est-ce vraiment un problème hard ? (pas bloquant quand on le sait, on fait un beau reset 😉 )

    Merci pour vos avis 😉

    Publié par amadeus | 10 juillet 2012, 2 h 19 min

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

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.