Skyduino:~#
Articles
.net framework, programmation, test, tutoriel

[Test] Netduino Plus (le pouvoir du C#, le hardware d’une carte Arduino)

Bonjour tout le monde !

Aujourd’hui je vais vous parler d’une carte « arduino like » aux caractéristique des plus intéréssante, la netduino (plus).

La netduino est fourni dans un petit sachet trés sobre, noir et bleu.
On est loin des boites aux couleur pimpante d’olimex comme je les aiment, mais bon ce qui compte c’est ce qu’il y a dedans 🙂

Au passage la carte est fourni avec un câble micro-usb, un lot sitcker, et pieds en caoutchouc.

La netduino plus, version « amélioré » (« complète » pour être plus précis) de la netduino « normal » est une carte de développement « rapide » au format arduino, reprenant les principaux points important de la philosophie arduino avec cependant une différence majeur, le langage de programmation utilisé.

Elle comporte un microcontrôleur SAM7, microcontrôleur suffisamment puissant pour faire tourner le .net micro framework de microsoft.
Vous l’aurez compris, avec cette carte pas de digitalWrite(), analogRead(), d’ide arduino ou même de c++.
La netduino se programme en utilisant le langage C# et le logiciel Visual Studio Express (ou Pro).

Amis du manchot, mac-users, vous l’aurez aussi compris qui dit visual studio dit windows uniquement. Il semble cependant exister une technique pour utiliser/compiler avec le .net micro framework sous mono (portage unix de la machine virtuelle .net) mais cela semble relativement complexe. Je vous le dit tous de suite je ne tenterai pas l’aventure en utilisant MonoDevelop et netduino 😉

Le détails du hardware de la netduino plus :
– micro usb pour la programmation et le débogage (oui vous avez bien lu ! On peut débugger le code grâce au langage .net et à sa machine virtuelle embarqué),
– alimentation auto-sélective usb/alim externe (prise jack),
– pinout arduino « UNO » classique (/!\ pas pinout UNO 1.0),
– l’ethernet ! (c’est ce qui fait la vrai différence entre la netduino normal et la version plus),
– le slot micro SD

Comme avec un carte arduino « normal » il est possible d’utiliser une carte SD comme simple périphérique de stockage, mais avec le .net micro framework une autre utilisation, encore plus intéréssante devient possible !
Le lancement d’application depuis la carte SD en utilisant « l’assembly loading », la technique est trés répandu en programmation .net pour PC, il est donc normal quelle soit utilisé aussi sur la netduino.
(Quelques exemples ici : http://fabienroyer.wordpress.com/2010/12/29/loading-assemblies-dynamically-from-an-sd-card-with-a-netduino/)
Il est clair que en soit le simple fait de pouvoir lancer une application depuis une carte SD est un point non négligeable qui met dehors toutes les autres cartes « arduino like » (STM32 & PIC32 excepté).

Mais ce n’est pas tout !
Comme le langage C#, et VB.net sont des langages « semi-compilé » (source -> compilateur -> bytecodes indépendant de la plateforme sur lequel il s’exécute (même principe que java et la JVM)) il est possible d’injecter du code assembly dans la machine virtuelle, mais aussi de débugger « in situ » le code en cours d’exécution !
Pouvoir débugger son code, avec l’import/export des symboles, l’affichage en temps réel des variables, des exceptions/erreurs (si il y en as) … un pure bonheur !!

Pour faire marcher tout ce petit monde, relier la netduino à visual Studio, etc etc tout ce passe via un connecteur micro-usb.
Alors c’est cool dans le sens ou ce genre de micro-usb est disponible maintenant sur tout les téléphones portables, mais pour moi il y a un défaut qui me fait détester ce genre de port micro-usb sur les plateformes de développement (uniquement sur les devboard, pas sur les téléphone, mp3, …). C’est que justement un connecteur micro-usb, est par définition microscopique !
Pour brancher/débrancher encore et encore je trouve que c’est une pure galère (avis perso), pour le coup j’aurai préféré un « simple » connecteur mini-usb, certes moins résistant en terme de durée de vie branchement/débranchement mais plus « standard » pour un carte de développement rapide.

Il y a un autre point trés intéréssant sur la netduino plus par rapport à la netduino « normal », c’est le port ethernet.
Celui ci est câblé sur un port normalement laissé « en l’air » de la netduino normal.

Pour moi laisser un port complet « en l’air » est un pure gâchis !
C’est ce qui m’as fait prendre la version plus, niveau hardware c’est la même chose, mais avec l’ethernet et le slot SD en supplément, câblé sur le port normalement non utilisé.
Bon par contre le prix (+ de 50€) fait un peu mal …

Quand j’ai vu le port ethernet je me suis dit « Mais qu’est ce que c’est que ce truc !? », sérieusement un bon vieux port ethernet magjack avec self intégré n’aurait pas était plus « design » et tout aussi low-cost ? Pourquoi avoir mis une prise ethernet « ouverte » et un CI « selfs/bobines ethernet » séparé !?
Edit: J’ai eu une réponse de la pars de la team netduino, je vous expliquerai le pourquoi de ce port ethernet « bizare » en fin d’article 😉

Enfin bref passons, tout ce qui faut savoir c’est qu’avec le support de la partie ethernet activé, la taille de la mémoire ram disponible est divisé par deux (par rapport à une netduino « normal ») soit 28Ko (contre 60Ko sans ethernet), en plus des 64Ko de flash (contre 128Ko sans ethernet).
C’est quand même pas mal comparé aux « pauvres » 2Ko d’une carte arduino classique (j’avoue que la comparaison est mauvaise, on ne peut pas comparer un programme natif à un programme .net).

Sur le coté il semblerai y avoir un port SPI, mais j’avoue ne pas trop y avoir regarder.
On remarquera aussi le bouton reset à coté. Certains râlerons qu’un bouton reset horizontal ici est un mauvais choix, qu’il est impossible de reset la carte avec un shield monté par dessus, etc etc mais je trouve pas cela des plus problématique car la plupart des shields possède elle même un bouton de reset 😉

Voici les spécifications « hardware » de la carte, je les met un peu en vrac car il n’y a rien de bien nouveau comparé à une carte arduino classique.
Prenez quand même le temps de les lires, certain points sont différent d’une carte arduino classique et pourrait poser probléme avec certain montage / shield.

Processeur et Mémoire :
- Microcontrôleur Atmel 32-bit
- Cpu AT91SAM7X512 ARM7 à 48MHz
- Mémoire flash : 64 Ko (sans gestion de l'ethernet : 128Ko)
- Mémoire Ram : 28Ko (sans gestion de l'ethernet : 60Ko)

Leds :
- led d'alimentation : blanche
- led "libre" : bleu
- led ethernet (x3) : verte (x2) et ambre (x1)

Boutons :
- 1x Reset
- 1x BP "Libre"

Entrées / Sorties :
- les 20 broches (analogique compris) peuvent être utilisé en entrées / sortie "logique"

Les fonctions "spécial" des broches :
- D0 et D1: port série TTL 1
- D2 et D3: port série TTL 2 (oui il y a deux ports séries sur la netduino)
- D5 et D6: sorties PWM
- D7 et D8: ligne RTS et CTS du port série 2
- D9 et D10: sorties PWM
- A11, A12 et 13: bus SPI (MOSI, MISO, CLK)
- A4 et A5: I2C bus I2C (SDA, SCL)

Ethernet :
- Vitesse : 10/100M
- Driver TCP/IP : lwIP

Stockage :
- Slot µSD (/!\ SD jusqu'à 2Go max)
- Auto-détection d'insertion d'une carte

Alimentation :
- Alim externe de 7.5v à 12v DC ou par usb
- sortie 5v et 3v3 DC régulé
- Référence analogique : 2.6v ou 3v3
- chaque broches peut fournir 8mA
- les broches D2, D3, D7 peuvent fournir un peu plus, 16mA
- le total des courants ne doit pas dépasser 200mA
- toute les entrées / sorties sont à 3v3 (/!\ 3V3 en sortie PAS 5V) mais tolére du 5v en entrée.

Coté software comme je le disait il faut Visual Studio C# (ou VB.net selon le langage voulu/utilisé), il faut ensuite installer le .net micro framework et le netduino SDK disponible sur la page officiel du projet netduino ici : http://www.netduino.com/downloads/

L’installation est relativement simple : suivant, suivant, suivant, puis Windows, visual studio, nouveau projet, micro framework, netduino application 😉

Et juste pour vous, voici une petite vidéo tutoriel pour démarrer avec la netduino :

Ma Conclusion :
Cette carte est un peu le « summum » des cartes « arduino like ».
Un processeur relativement puissant (on est loin des perf d’un programme natif sous PIC32 mais tant pis), possibilité de chargement dynamique, débugage, émulation, … tout ce qui manque aux cartes arduino classique en somme !
Par contre il y a un gros bémol, le cpu tourne à 48MHz, mais il faut bien faire tourner la machine virtuelle .net, ce qui prend beaucoup de ressource cpu, donc aux final la netduino n’est pas une bête de course niveau performance et ne peut pas concurrencer des cartes comme la pinguino, chipkit ou maple.
Mais pour ceux qui code déjà sous .net ou qui voudrait tenter l’aventure .net c’est un pure bonheur !

Edit: Pourquoi ce port ethernet « bizarre » (cf: les commentaires) :
En réalité il ne s’agit pas d’un port ethernet « bizarre », mais d’un port ethernet « low profile », celui ci est donc bien plus bas et petit qu’un port magjack.
Un port magjack étant plus haut que les connecteurs « arduino », cela aurait empêché d’enficher comme on le souhaite les shields par dessus la netduino, voir pire, de causer des cours circuits avec les shields.
Je n’y avais pas du tout pensé, effectivement vu sous cette angle c’est en réalité un trés bon choix !
Merci à la team netduino d’avoir pris le temps d’éclaircir ce détails 🙂

Publicités

Discussion

9 réflexions sur “[Test] Netduino Plus (le pouvoir du C#, le hardware d’une carte Arduino)

  1. Hi skywodd,

    Thank you for posting such a thoughtful review. I’m sorry that my response is in English; unfortunately I have not yet learned French.

    The Ethernet jack is a special low-profile jack. Arduino shields may « short out » or « ground out » if pressed against a taller magjack. So we put this extra design into the board to make sure that you could use standard shields without any worries or special hacks.

    Chris
    Netduino Team
    Secret Labs LLC

    Publié par Chris Walker | 23 février 2012, 18 h 54 min
    • Hi,

      No problem for the english.
      I’m surprised, I never think the netduino team would read my article 🙂

      Ok! Thanks for the explanation.
      I’ve never look the size of magjack connectors, but effectively they are a little biggest than the arduino socket.
      In fact, it’s a very well chosen connector !
      I’ve add your answer to the article 😉

      Thank you for the incredible job you make with the netduino hardware and software.

      Ps: You’re fast ! 6 hours after publishing the article and already an answer ! Woo!

      Publié par skywodd | 23 février 2012, 20 h 39 min
  2. Bonsoir
    J’utilise déjà depuis 2 mois le .NetMF sur une carte Panda II de GHI Electronics qui elle aussi reprend les connecteurs Arduino + un connecteur supplémentaire 40points avec encore plus de ports, 3 série supplémentaires, 2 SPI supplémentaires, …
    J’aime bien la facilité à mettre en oeuvre.
    Le processeur utilisé sur la Panda II est à 72 MHz, donc un peu plus puissant que la NetDuino. Ils n’ont pas de cartes avec Ethernet incorporé mais ils utilisent un shield à base de du chip WizNET W5100, pas en natif. Moins de possibilités mais plus de CPU disponible pour faire le reste.

    Je n’ais pas encore commencé à utiliser Arduino, je viens juste d’acheter le chip pour me monter une version minimale. Mais un de tes commentaires me fait bondir :
    – micro usb pour la programmation et le débogage (oui vous avez bien lu ! On peut débugger le code grâce au langage .net et à sa machine virtuelle embarqué),

    Ca veut dire qu’on ne sait pas debugguer avec une Arduino ? C’est du Plug’n’Pray ? (branche et prie pour que çà marche).
    Je pensais qu’aujourd’hui tous les environnement de développement embarqué permettaient de faire du debug, pas à pas, variables locales et globales, …

    A+

    Publié par Barbudor | 23 février 2012, 22 h 02 min
    • >> J’utilise déjà depuis 2 mois le .NetMF sur une carte Panda II de GHI Electronics qui elle aussi reprend les
      >> connecteurs Arduino + un connecteur supplémentaire 40points avec encore plus de ports, 3 série
      >> supplémentaires, 2 SPI supplémentaires, …
      Humm … « GHI Electronics » c’est pas la boite qui édite Tiny CLR ?
      Il me semble que le code source du framework .net de TinyCLR n’est pas open source ?

      >> Le processeur utilisé sur la Panda II est à 72 MHz, donc un peu plus puissant que la NetDuino. Ils n’ont pas
      >> de cartes avec Ethernet incorporé mais ils utilisent un shield à base de du chip WizNET W5100, pas en natif. >> Moins de possibilités mais plus de CPU disponible pour faire le reste.
      Niveau CPU, 72MHz ou 48MHz, étant donné que tout passe par la .net Virtual Machine on ne peut pas vraiment faire de comparaison, tout ce qui rentre en jeu c’est la mémoire flash / ram disponible.

      Aprés c’est vrai que la Panda II semble intéréssante, mais si j’ai bien compris (je suis peut être totalement à l’ouest) le firmware est totalement closed source ?
      Moi je suis pour l’opensource 🙂

      >> Je n’ais pas encore commencé à utiliser Arduino, je viens juste d’acheter le chip pour me monter une version
      >> minimale. Mais un de tes commentaires me fait bondir :
      >> – micro usb pour la programmation et le débogage (oui vous avez bien lu ! On peut débugger le code grâce
      >> au langage .net et à sa machine virtuelle embarqué),
      Hola! Tu confond arduino et netduino 😉
      Avec le machine virtuelle .net il est possible de faire du debug, mais sur une carte arduino classique c’est totalement impossible.
      (C’est justement le pourquoi de mon commentaire)

      >> Ca veut dire qu’on ne sait pas debugguer avec une Arduino ? C’est du Plug’n’Pray ? (branche et prie pour
      >> que çà marche).
      >> Je pensais qu’aujourd’hui tous les environnement de développement embarqué permettaient de faire du
      >> debug, pas à pas, variables locales et globales, …
      Oui … mais NON ! 😉
      Les cartes arduino classiques ne possèdent pas de machine virtuelle, c’est du code c/c++ natif.
      Par conséquent il faut un débuggeur externe pour faire du pas à pas, export de symboles, …
      (Et à ce moment il faut ce passer du « core arduino » et utiliser un IDE plus poussé)

      Le débuggage « in situ » est encore trés rare sur les plateforme de dév, excepté pour quelques cartes comme les STM32 discovery, les LPCxpresso et la launchpad quasiment aucune cartes de dév n’est fourni avec un débuggeur intégré.
      Avec une carte arduino classique la phase de debug se résume à faire de Serial.println() 😉

      Publié par skywodd | 23 février 2012, 22 h 25 min
  3. une trés bonne carte qui d’ailleurs risque d’avoir un avenir prometeur

    Publié par zilators | 25 février 2012, 15 h 10 min
  4. je viens de recevoir ma carte 🙂 je soir, 1er test de la led qui clignote, ensuite j’attaque la partie pilotage d’un GPS..

    Est-ce qu’il existe un groupe Français pour le netduino ? un IRC ou un chat… si il y a des interresser me contacter sur MSN : web59000@yahoo.fr (ne m’envoyer pas d’email dessus, je ne lit pas.)
    ou ici par une réponse.

    Publié par Thierry | 14 mai 2012, 17 h 06 min
    • A ma connaissance il n’ a pas de forum / chat francophone pour la netduino.
      Vu la taille de la communauté FR netduino ça risque pas de ce faire ^^ » » »

      Déja qu’avec la communauté arduino francophone le chat irc est souvent vide …

      Publié par skywodd | 15 mai 2012, 8 h 05 min
      • oui, ce n’est pas la communauté Arduino… au passage, très bon article SkyWodd

        A noté : il est possible de mettre a jours votre carte Netduino avec le firmware V 4.2.0.0_RC5. Ceux ci permet d’utiliser la dernière version du framework (gestion de la carte micro SD / Ethernet … ).

        La carte a micro SD permet comme tu l’indique, le lancement d’application “l’assembly loading”…
        As tu testé ce code ? chez moi il a planté, lors de l’appel à StorageDevice.MountSD(“SD”, SPI.SPI_module.SPI1, Cpu.Pin.GPIO_Pin10 );
        je ne sais pas si ce code est fait pour le pilotage du microSd sur la carte Neduino Plus.
        Je vais attendre une nouvelle carte 2go pour continuer les tests avec la sd

        La microSd, permet aussi, bien entendu , de stockée des données, comme un fichier de configuration, des sons wav qui sont facilement exploitable, des sprites pour les LCD graphique… etc…
        Quelqu’un aurait t’il déjà exploiter ses possibilités ?

        Publié par Thierry | 15 mai 2012, 22 h 55 min
  5. Très bonne carte j’en avait entendu parlé. Les réactions m’ont rassuré je crois que je vais essayé de l’acquérir. J’ai aussi trouvé un site assez sympa ou il montre comment programmer en C# sous forme de tut video. Voila le lien en espérant que ca aide quelqu’un http://www.alphorm.com/formation/formation-programmer-en-c-2012-70-483

    Publié par arnaud | 28 août 2013, 14 h 38 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.