Je joue avec Arduino depuis un certain temps maintenant, et je suis en train de passer du niveau débutant au niveau intermédiaire. J'aimerais avoir quelques opinions sur le .NET Micro Framework , en termes de performances et de disponibilité du matériel.
Je suis un programmeur .NET, mais j'ai trouvé que le traitement pour Arduino est à peu près sans friction ... Il est si proche de C # que tout ce que je veux faire ne nécessite même pas un voyage dans la documentation.
Quoi qu'il en soit, quel est le meilleur?
arduino
.net-micro-framework
Chris B. Behrens
la source
la source
Réponses:
Si vous voulez passer du débutant à l'intermédiaire, le langage que vous devez apprendre est C. Même si vous mettez de côté tout le débat sur le verrouillage de Windows, vous devez être très bon en programmation en C avant de pouvoir faire un travail de qualité sur un microcontrôleur dans un langage de niveau supérieur comme .NET Micro ou C ++.
Les systèmes embarqués sont composés d'une pyramide de connaissances, et vous devez vraiment connaître au moins une partie de chaque étape pour être un bon concepteur:
^ Code utilisateur
^^ Systèmes d'exploitation
^^^ Le langage C
^^^^ Langage d'assemblage
^^^ ^^ Architecture du microcontrôleur
^^^^^^ Conception numérique
^^^^^^^ Semi-conducteurs
^^^^^^^^ Electronique de base (loi d'Ohm)
Le cadre Arduino fournit un crochet pratique pour les amateurs dans la pyramide quelque part entre le langage C et un système d'exploitation.
Spécifique à votre question sur le .NET Micro Framework, le propos dit:
En outre, la brochure le différencie de Windows Mobile , Windows Embedded , CE 6.0 et .NET Compact Framework et le compare à Linux, en temps réel, Java et aux systèmes d'exploitation personnalisés. C'est un énorme saut par rapport au framework Arduino / Processing.
Votre Arduino dispose d'un processeur 8 bits avec 1 Ko de RAM. En plus de la perte de puissance de 8 bits contre 32 bits, il fonctionne également moins de la moitié plus rapidement que la plupart des processeurs répertoriés. Bien que je ne vous décourage pas de passer à un processeur 32 bits, je le recommanderais comme un mouvement intermédiaire à avancé.
Il est vraiment facile d'utiliser beaucoup de temps et de mémoire avec quelques lignes en C # ou C ++, qui sont insignifiantes sur un processeur dual core fonctionnant à quelques gigahertz avec des gigaoctets de RAM, mais qui peuvent faire une énorme différence sur un appareil embarqué . Jusqu'à ce que vous soyez bon en langage assembleur et / ou C, ou un gourou en C # ou C ++, je ne recommanderais pas de l'utiliser pour la programmation intégrée.
Donc, je commencerais par télécharger WinAVR et programmer une simple routine de clignotement des LED en C. Si C vous déroute complètement, faites un peu de code natif ("Hello World") sur votre PC, puis passez à la microcontrôleur, mais cela ne devrait pas être nécessaire. Ensuite, passez à la communication via l'UART, commencez à utiliser des interruptions et refaites certains de vos projets Arduino en C. Ensuite, trouvez (ou créez!) Une nouvelle carte de développement avec un microcontrôleur différent, peut-être un PIC ou un ARM , et certains des accessoires comme un écran LCD, Ethernet, une carte SD ou tout ce que vous voulez, et essayez d'apprendre un nouveau système. Une fois sur place, vous saurez mieux où vous voulez aller.
Nous serons là pour vous aider sur le chemin!
la source
Je n'ai aucune expérience avec le ".NET Micro Framework", mais je me méfie fortement de tout ce qui implique l'exécution d'une machine virtuelle sur des plates-formes embarquées de faible puissance. Cela me semble juste un gaspillage. Vous avez besoin de plus de processeurs d'alimentation, plus de mémoire, plus de consommation d'énergie, pour obtenir le même effet que d'exécuter une plate-forme plus dédiée qui se compile en code machine natif. Peut-être pourquoi mon téléphone Android à 528 MHz exécutant une machine virtuelle (similaire à JVM) semble souvent plus lent que mon ancien Palm Treo à 312 MHz qui exécute des applications compilées pour le code machine natif.
D'un coup d'œil, .NET MF nécessite un processeur ARM, qui est un cran au-dessus de la puissance et de la complexité des puces ATMega 8 bits utilisées dans Arduino.
Ma suggestion est que si Arduino fait ce que vous voulez, respectez-le. Sinon, vous pouvez vous tourner vers les puces ATMega ou ATXmega les plus puissantes, et surtout celles qui fonctionnent avec ARM directement en C / C ++, sans la couche de traduction .NET supplémentaire par-dessus.
la source
Si vous souhaitez passer à intermédiaire, vous devriez essayer une plate-forme en dehors de l'environnement Arduino. Il y en a beaucoup à choisir, vous pouvez rester à 8 bits, même avec un MCU Atmel ou passer à un autre fournisseur. Utilisez un IDE, écrivez le langage de code C, comprenez comment fonctionne un MCU, écrivez votre propre code de chargeur de démarrage ou utilisez un programmateur en circuit et continuez à avancer.
Mais si vous voulez vraiment essayer d'écrire en C # pour les microcontrôleurs, essayez ceci: http://www.trygtech.com/products/sh7619_evb.php
Il utilise un MCU beaucoup plus grand, l'encombrement .NET typique est d'environ 512 Ko de mémoire flash et 256 Ko de RAM.
la source
Je viens de voir le Netduino qui peut être un compromis intéressant pour vous. Je n'ai aucune idée des spécifications ou des détails du système, mais il semble utiliser .NET Micro, donc cela semble être un bon moyen d'essayer au moins ce cadre.
la source
Le plus gros problème pour moi avec Processing / Arduino est le manque d'un débogueur décent. J'ai un dragon AVR, mais cela n'aide pas beaucoup car (a) le débogueur d'AVR Studio est lent et bogué, ou (b) le débogage dans Eclipse est tout simplement lent et, encore moins, toujours bogué. Je n'ai pas eu l'occasion de l'essayer dans WinAVR, mais c'est le prochain sur la liste.
Il n'y a bien sûr pas de débogueur dans l'IDE Arduino.
Une fois que vous sortez des applications simples et commencez à créer des applications qui doivent faire des choses impliquées au niveau du réseau câblé et sans fil, c'est assez frustrant. C'est principalement la raison pour laquelle j'examine sérieusement le .NET MF - j'ai joué avec le SDK et j'ai bientôt du matériel.
la source
Vous voudrez peut-être consulter Netduino . Il est conçu pour être compatible avec la disposition et les broches Arduino et exécute le .NET Micro Framework. Vous pouvez donc coder en C # et même déboguer dans Visual Studio!
Jusqu'à présent, je l'ai trouvé très bon et facile à travailler. Bien que je n'aie pas trouvé beaucoup de tutoriels, je pense que vous pouvez simplement porter beaucoup de choses Arduino. Étant un newb, j'ai pu facilement porter une configuration et un code de photorésistance / photocellule à partir d'un tutoriel Arduino.
la source
Vous pourriez envisager de faire du développement C de style Arduino sur un STM32 (ARM M3), via l'un des nombreux projets open source. LeafLabs et xduino ont tous deux du matériel de travail et des chaînes d'outils basées sur Arduino. J'utilise la carte Maple Leaflabs lorsque j'ai besoin d'un microcontrôleur 32 bits, par rapport aux puces Atmega ordinaires
la source
Vous pouvez consulter http://www.hpinfotech.ro/html/cvavr.htm qui est un joli IDE facile à utiliser pour Atmel et écrire que certains CI l'ont utilisé professionnellement et son très bon, plus comme le niveau de commodité que vous obtenir des IDE comme Visual Studio. J'ai Eclipse pour être un peu maladroit pour le développement Android pas aussi lisse qu'un acheté.
J'ai Netduino sur lequel j'ai implémenté un système de contrôle Tricopter pour le plaisir, qui est très bien en temps réel et qui fonctionne de manière fiable, écrit en C # avec Visual Studio 2010. Le débogage sur l'appareil est généralement excellent, je le fais synchroniser automatiquement les données via wifi et j'ai un petit serveur HTTP dans l'avion.
la source
Nous utilisons .NET Micro Framework dans des applications de production (appareils de mesure de précision). Ça fonctionne bien.
Les microprocesseurs d'aujourd'hui ont atteint l'état où vous pouvez utiliser le paradigme «créer-voir-changer-voir-profil ...». Les quantités de mémoire sont assez importantes et bon marché maintenant, donc très probablement, vous n'empilerez pas avec des conditions de mémoire insuffisante.
Et en tant que développeur C #, vous savez qu'un profilage adéquat pour atteindre la condition souhaitée est une meilleure façon de vivre que de deviner quoi de plus compliqué que vous devriez faire lors de la création de votre code pour rendre votre code (et peut-être pas) un peu plus rapide.
la source