Dois-je acheter un Netduino ou un Arduino?


17

Je cherche à acheter un NetDuino pour des projets de loisirs à la maison amusants.

L'un d'entre vous l'a-t-il utilisé et quelle a été votre expérience?

Dois-je plutôt regarder la gamme Arduino ou FreeDuino (ou quelque chose de totalement différent)?

J'ai décidé de m'en tenir à NetDuino en raison de ma connaissance de C #, mais ce n'est pas une exigence.

Merci

PS. Je ne sais pas si cela appartient au wiki de la communauté ou non (conseils appréciés).


5
Que voulez-vous faire avec la planche? Cela affectera votre choix.
Toby Jaffey du

3
Le microcontrôleur ARM7 sur le NetDuino et l'AVR 8 bits sur l'Arduino sont dans une classe complètement différente. C'est comme si vous demandiez s'il fallait acheter un serveur ou un netbook. Cependant, vous ralentissez votre serveur en exécutant une machine virtuelle mal adaptée - les performances seront similaires et vous utilisez les deux outils pour la même tâche. Avez-vous vraiment besoin de cette couche d'abstraction?
Kevin Vermeer

@reemrevnivek - "Mal adapté" euh ... c'est une couche d'abstraction, mais ce n'est certainement pas mal adapté (et pas un vm, vraiment, non plus).
Connor Wolf

2
@Fake Name Il semble que netduino (TinyCLR) ne possède pas de compilateur JIT. Ainsi, il est une machine virtuelle / interprète. tinyclr.com/faq/#13
Toby Jaffey

1
Les VM sont ce sur quoi Smalltalk, Java, Python, etc ... s'exécutent. Cela signifie n'importe quelle machine abstraite, exécutant un jeu d'instructions différent du "métal nu". Pas seulement un PC virtualisé.
Joe Koberg

Réponses:


16

J'adore C # et je trouve que les avantages en termes de productivité du développement en C # avec Visual Studio sont un facteur très fort en faveur de Netduino. Je ne voudrais pas pooh-pooh Netduino parce que "C # n'est pas pour les environnements microcontrôleur / embarqué" comme d'autres réponses ici l'indiquent.

Vous pouvez faire de grands projets amusants et en apprendre beaucoup sur la connexion de différentes entrées physiques et périphériques de sortie à l'aide de Netduino, tout comme vous le pouvez avec Arduino ou sur le "métal nu" et sur la gestion MCU directe de l'AVR, du PIC ou d'autres microcontrôleurs.

Cela dit, je m'en tiens à Arduino pour les raisons suivantes:

  • Meilleur soutien communautaire. Arduino a juste beaucoup plus d'échantillons, d'exemples et d'une plus grande communauté sur laquelle vous pouvez vous appuyer.
  • Netduino n'a pas d'histoire pour aller au-delà de l'approche coûteuse de kit / prototypage. Vous allez mettre en place une exposition d'art interactive nécessitant des dizaines de microcontrôleurs exécutant votre code? Préparez-vous à débourser 35 $ chacun pour les Netduinos. Avec Arduino, vous pouvez prototyper sur l'Arduino, puis l'implémenter sur une solution MCU uniquement avec le microcontrôleur AVR pour moins de 10 $ chacun.

Donc, je dirais que si vos compétences en C sont poussiéreuses ou inexistantes, vous aimez C # et Visual Studio, et vous voulez juste bricoler sur quelques projets de loisirs qui n'auront pas besoin d'évoluer là où les coûts deviennent un problème plus important, allez sur Netduino.

Si vous êtes à l'aise en C, ou à l'aise pour vous en sortir avec l'aide d'exemples de code et de la communauté, et que vous souhaitez être plus proche du métal et envisager de vous éloigner éventuellement de l'approche "prototype" de Netduino et Arduino, allez Arduino pour commencer.


1
Je sais que c'est un peu une vieille réponse, mais je voulais ajouter que, puisque le Netduino est entièrement open-source (y compris le matériel), vous pouvez acheter l'uC de n'importe qui et y flasher le firmware Netduino. Vous pouvez donc utiliser la plate-forme Netduino dans un produit de production.
Unkwntech

"De toute façon, vos connaissances en C # sont presque inutiles sur une plate-forme embarquée, alors n'y mettez pas trop de poids." -- Quelle chose stupide à dire. Netduino est intégré, il bascule et c'est C # ...
Jonesome Reinstate Monica

11

Votre connaissance de C # est presque inutile sur une plate-forme embarquée de toute façon, alors n'y mettez pas trop de poids.

J'irais avec un Arduino ou l'un des clones, non pas parce que .Net est le diable, mais parce que c'est ce que tout le monde utilise, vous aurez donc beaucoup plus de facilité à obtenir de l'aide et à vous moquer du code des gens.

Une fois que vous avez mouillé vos pieds, essayez de vous diversifier et essayez différentes choses.


Êtes-vous en train de préconiser le langage de câblage utilisé sur l'Arduino, ou de supprimer (et de contribuer) au code C sur avrfreaks ?
Kevin Vermeer

1
@reemrevnivek Arduino est juste du C ++ avec quelques bibliothèques. Je ne le classerais pas comme un "langage" - c'est du C ++ avec un en-tête et un pied de page attachés
Toby Jaffey

Oups, le câblage est ce que je voulais dire.
Kevin Vermeer

Je trouve cela un peu étrange que je prendrais presque "Une fois que vous avez mouillé vos pieds, branchez-vous par tous les moyens" comme suggestion d'aller avec Netduino pour commencer parce que l' élément de programmation devrait être beaucoup moins problématique - permettant à un développer les «autres» compétences nécessaires.
Murph

1
Mauvais commentaire, dren.dk est tout simplement faux. Moi et beaucoup d'autres utilisons netduino et C # toute la journée.
Jonesome Reinstate Monica

7

J'ai actuellement un Arduino, mbed et enfin un Netduino à ma disposition pour le développement / usage amateur. Je n'ai jamais aimé travailler avec l'Arduino, peut-être parce que l'éditeur n'est pas très bon, et je suis vraiment gâté en tant que développeur C #. Quand j'ai reçu mon mbed, j'aimais beaucoup le développement sur ça, beaucoup mieux, mais le débogage est toujours pénible car vous devez utiliser des instructions d'impression pour comprendre ce qui se passe.

Lorsque vous développez un produit ou que vous vous trompez, la grande majorité de votre temps est d'abord consacrée au débogage ... et lorsque vous déboguez, vous voulez avoir des points d'arrêt. J'ai beaucoup de mal à revenir au matériel embarqué qui n'offre aucune sorte de points d'arrêt.

Je n'ai pas encore d'expérience avec JTAG, mais chaque micro que j'ai vu jusqu'à présent (à part les modules RabbitCore) l'exige pour permettre le débogage via des points d'arrêt. Imaginez ma surprise lorsque j'ai branché mon Netduino aujourd'hui et que j'ai pu parcourir mon code dans VS2010! J'en ai été extrêmement satisfait.

Personnellement, je ne vous inquiétez pas de la taille de l' empreinte, les maux de .NET et Microsoft, etc. , etc. Je ne se soucient d'être en mesure de déboguer rapidement et efficacement, donc je peux juste me faire des choses .


Faire les choses est une leçon qui s'apprend le mieux à la dure

@kurtnelle on dirait que vous préconisez de ne pas utiliser le .NET MF?
Dave

@Dave, oui je le suis. C'est seulement parce que j'ai essayé l'ancien machin du microcontrôleur 8 bits basé sur c et que j'ai fait très peu pour beaucoup d'efforts.

@kurtnelle mais avec le .NET MF, je fais beaucoup de travail avec très peu d'effort.
Dave

2
@Dave, désolé pour la réponse dyslectique précédemment; Je plaide pour .NET MF

5

En tant qu'utilisateur BasicStamp depuis près de 20 ans et utilisateur NetDuino depuis seulement 2 semaines (je n'ai jamais utilisé un Arduino), je dirais que le NetDuino est une excellente plateforme. Les deux principales fonctionnalités que j'apprécie: la facilité de programmation (et les points d'arrêt!) Dans VisualStudio et l'ADC haute résolution sur la carte sont des raisons clés. Les quelques boucliers Arduino que j'ai essayés de SparkFun ont parfaitement fonctionné avec le NetDuino.


4

Personnellement, je ne suis pas fan de C # ou de .NET. Je suis un luddite en C. Donc, mon choix de plate-forme se résume à celui qui a les fonctionnalités matérielles que je veux (flash, RAM, vitesse d'horloge, nombre d'ADC, nombre de minuteries, etc.).

Cela dit, je peux imaginer que C # /. NET soit utile pour le prototypage rapide:

  • La gestion des chaînes sera probablement beaucoup plus simple
  • La sérialisation RPC et objet est probablement facile. Je soupçonne que vous pouvez simplement pousser des objets C # sur une liaison série. RPC "fonctionne probablement"
  • Portabilité - .NET est une machine virtuelle, le code doit donc s'exécuter sur d'autres cartes ou même sur des PC
  • La récupération de place rend de nombreux algorithmes plus simples à implémenter

Bien sûr, tout cela a un coût:

  • L'empreinte du code est plus grande (surtout lorsque vous tenez compte des bibliothèques standard)
  • L'utilisation de la RAM est plus élevée (tout est un objet, tout est-il tapé?)
  • Le garbage collector se mêle probablement de performances en temps réel
  • Si une fonctionnalité matérielle n'est pas prise en charge par les bibliothèques .NET, vous ne pouvez pas l'utiliser (sauf si vous implémentez les fonctionnalités vous-même, pour lesquelles vous aurez besoin de C / C ++, voir les commentaires)

Et, surtout, en utilisant vos compétences C # sur une plate-forme embarquée, vous n'apprenez vraiment rien sur les appareils embarqués.

Oui, cela fera le travail - mais, où est le plaisir là-dedans?


Je me demande combien il est difficile de patcher les bibliothèques .NET utilisées sur NetDuino avec une nouvelle fonctionnalité. Il semble qu'ils utilisent C ++ pour créer leur SDK .NET, dans les fichiers source de SecretLabs.NETMF.Hardware / Stubs . Soupir.
Kevin Vermeer

@reemrevnivek Pas mon idée du plaisir. Si vous corrigez le runtime, vous pourriez tout aussi bien commencer avec C / C ++
Toby Jaffey

1
@Joby - Je suis un luddite C comme vous, mais je voulais juste souligner que c'était possible - Vous avez dit "Si une fonctionnalité matérielle n'est pas prise en charge par les bibliothèques .NET, vous ne pouvez pas l'utiliser", ce qui n'est pas tout à fait vrai.
Kevin Vermeer

1
Avez-vous réellement vu des repères? Il est difficile pour moi d'imaginer qu'un 8 bits 16 MHz exécute les choses à la même vitesse qu'un micro 32 bits 60 MHz. D'autant plus que les bibliothèques Arduino ralentissent également les choses - rien n'est vraiment optimisé pour la vitesse non plus. Et il contient également des objets (sinon autant que ceux utilisés dans .NET). Et est-ce bien différent d'Arduino? S'il n'y a pas de bibliothèque Arduino prenant en charge une fonctionnalité ... vous devez l'implémenter vous-même (appel direct aux registres matériels, etc.)
davr

@davr Réponse modifiée
Toby Jaffey

3

J'ai trouvé que le mbed était un merveilleux substitut de l'Arduino.

La bibliothèque de logiciels est plus orientée C ++, avec tout le sucre syntaxique de surcharge d'opérateur d'affectation. De plus, un système est configuré de telle sorte que les utilisateurs peuvent publier et documenter des bibliothèques de code, qui peuvent ensuite être facilement recherchées et importées dans des projets.

Une autre bonne fonctionnalité est la possibilité de traiter l'appareil comme une clé USB et de simplement placer les .binfichiers directement sur le lecteur.

Malheureusement, l'IDE est comparable à celui de l'arduino. De plus, c'est en ligne . C'est à la fois très bon (peut être utilisé sur n'importe quel PC, aucune installation requise) et vraiment mauvais (ne peut pas être facilement reprogrammé sans connexion Internet).

Le coût du conseil est de 60 $, mais ils ont un programme de parrainage, où ils feront don de conseils à des projets intéressants à condition que les progrès soient documentés et que le code source soit rendu public.


J'adore l'idée de parrainage - je vais devoir y réfléchir.
Dave

2

Je suis principalement un développeur C #. J'ai acheté un Arduino au lieu d'un Netduino en raison de la disponibilité du code source. Il ne serait pas facile d'intégrer Netduino avec des briques électroniques Arduino car vous devrez réécrire certains des échantillons à partir de zéro.


2

Lorsque vous lisez `` C # ne convient pas aux plates-formes embarquées '', n'oubliez pas que les personnes plus âgées qu'un certain âge ont déjà entendu dire au moins une fois à propos de `` C '', puis à nouveau à propos de C ++ au cours de leur vie ...

Bien sûr, cela représente un gaspillage monumental des capacités sous-jacentes du processeur, mais la possibilité d'exécuter votre boucle inactive 1000 fois plus vite que vous en avez besoin plutôt que 10 fois plus vite que jamais n'a jamais rendu quelqu'un riche.


Les boucles inactives ne sont pas pertinentes. Il existe certaines utilisations MCU où les cycles sont importants, comme la capture ou la génération de signaux vidéo, la fabrication de votre propre oscilloscope, l'analyse FFT en temps réel du signal d'entrée, et bien d'autres. Vous pouvez oublier C # pour ceux-ci. D'un autre côté, si vos besoins sont plus axés sur la création de "logiciels de type PC dans un petit package", alors C # et .NET MF ne sont pas du tout un mauvais choix ...
avra

2
... Pour une telle expérience, je préférerais choisir une carte ARM embarquée basée sur Linux, mais c'est un sujet pour une autre discussion. Le point est que pour quelqu'un qui vient d'entrer dans le monde embarqué avec un arrière-plan C #, .NET MF n'est pas du tout une mauvaise première étape.
avra

1

Si vous voulez sentir le métal nu et par exemple être capable de générer ou de capturer directement un signal vidéo, c'est là que chaque cycle compte et l'AVR / Arduino vous le permettra. Si vous voulez un niveau d'abstraction plus élevé, une programmation de niveau supérieur et un confort de débogage, un garbage collector et que vous pouvez vivre avec le fait que, comme dans Windows, vous ne contrôlez pas tout, choisissez NetDuino ou FEZ Domino. Étant donné que les deux ont ARM dans leur foyer, je parie que si nécessaire, vous pouvez tuer .NET MF sur la carte et flasher le code ARM GCC en métal nu directement à partir d'Eclipse comme IDE à l'aide d'un petit débogueur JTAG. Enquêter un peu. Le problème pourrait être que si l'en-tête JTAG est manquant, vous devrez effectuer une soudure.


C et C ++ ne sont pas assez bons pour la vidéo. Vous aurez besoin de Verilog pour cela :)

Il y a au moins 10 projets qui créent de la vidéo avec juste un logiciel. La plupart sont en noir et blanc ou en gris, mais il y a même des couleurs et des systèmes de jeu avec juste de la vidéo générée par le logiciel AVR. Des projets OSD existent également. Il existe également quelques exemples de capture d'images vidéo basse résolution avec AVR sans FPGA. Juste google autour ...
avra

Quand je dis vidéo, je veux dire couleur 1080p 24 bits. Le C ++ intégré peut-il faire cela?

0

Après une très longue interruption de l'électronique et de la programmation, je me suis remis au travail à cause d'un projet que l'un de mes fils fait à l'université. J'ai appris l'électronique lorsque les tubes étaient la norme et la programmation avec des interrupteurs à bascule (définir l'adresse, définir les données, charger, stocker, en binaire) et les cartes perforées. Au fil des ans, j'ai appris et utilisé chaque évolution du langage électronique et de programmation, ce qui a nécessité beaucoup d'efforts et de temps. Par conséquent, je suis tellement reconnaissant pour les progrès des microcontrôleurs et à quel point ils sont incroyablement bon marché, y compris les cartes de développement telles que l'Arduino, Netduino, etc. Les arguments concernant Arduino vs Netduino, etc., me rappellent les batailles Microsoft contre Apple telles comme ligne de commande vs GUI. Peu importe la plate-forme, le langage de programmation, etc., qui est utilisé tant qu'il est approprié au résultat.


-1

Si .net MF a donné des bibliothèques capables de faire ce que le code machine / métal pur peut faire, ... alors la seule abstraction (. Net MF) devient une bonne. En plus de prendre plus de place et d'exécuter un GC (ce qui devrait le rendre efficace ??)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.