Pour un programmeur chevronné Arduino ou autre chose?

11

Mon parcours:

J'ai fait du logiciel depuis un bon moment, et je suis plus ou moins compétent en C, C ++, Java, Ruby, Erlang, Haskell, Lua et Python. J'ai également suivi un cours d'électronique de laboratoire, mais à part un bref laboratoire avec une pompe, il s'agissait de faire entrer un signal et A / D et de là dans un x86 avec LabView ( pas mon choix d'environnements de programmation). pour se remettre à bricoler avec du matériel en vue de la domotique. (Je pense que je peux faire mieux que ça pour moins de 500 $)

Question:

J'allais me couper les dents sur un Arduino, mais plus je lis, plus il me semble que le principal avantage de ce système est qu'il est simple à programmer. Est-ce un bon endroit pour commencer un logiciel (qui a encore besoin d'acheter un fer à souder) ou y a-t-il quelque chose qui me conviendrait mieux?

(PS j'ai plus de temps que d'argent)

John F. Miller
la source

Réponses:

4

En ce qui concerne les cartes d'évaluation du microcontrôleur prêtes à l'emploi, il y a bien sûr la famille Arduino. mais considérez également le tableau de bord msp430 pour 4,30 $. bon jeu d'instructions et performances similaires à celles de l'avr avec une tendance vers une faible puissance / coût. Pour 20 $, vous pouvez obtenir la découverte stm32f4 (à ne pas confondre avec la découverte de la ligne de valeur stm32 ou la famille stm8), ce qui est généralement inférieur à ce que vous paieriez pour un arduino utilisable (35 $ - 50 $) mais fait des cercles autour de l'arduino 168Mhz, virgule flottante unité, caches, etc. Dans la partie supérieure de la fourchette de prix Arduino, il y a un autre bras, le mbed (mbed.org), qui est probablement le plus proche de l'expérience du bac à sable Arduino.

Si vous voulez rester dans un standbox et simplement faire des appels api, l'arduino est probablement l'endroit où vous voulez vivre, il y a le méga pour plus de performances ou allez avec l'érable à feuilles qui est basé sur les bras mais tente de fournir l'expérience du bac à sable arduino.

Vous pouvez obtenir beaucoup plus de performances, en avoir pour votre argent, etc. si vous assumez un peu plus de responsabilités et de connaissances sur ce qui se passe. Je recommande les trois plates-formes (avr, msp, bras / pouce) et plusieurs fournisseurs (avr et msp sont verrouillés mais le bras est vendu par tout le monde avec des périphériques et des E / S différents). Par exemple, vous pouvez être habitué à une plate-forme qui n'a pas de tractions sur les lignes gpio et devez utiliser des composants externes où une autre puce ou un autre fournisseur fournit cela sur puce à un prix / performance comparable. De même, vous aimerez peut-être frapper un port série ou un bus spi, mais pour le même prix, la même puissance, la même taille, etc., un autre fournisseur a du matériel pour vous aider dans cette interface.

à tout le moins, il est dans votre intérêt en tant que programmeur et quelqu'un qui souhaite se lancer dans l'électronique de loisir d'en savoir plus sur ce qui se passe en dehors du bac à sable. Pour entrer dans ce monde de l'électronique de loisir, l'arduino est une transition très confortable de la programmation d'applications sur un système d'exploitation. sparkfun a maintenant quelques kits qui incluent l'interface série et quelques periperhals il y a un kit lilypad (une plate-forme Arduino) et peut-être un kit pro, les deux ne sont pas le facteur de forme du bouclier Arduino si cela importe. sparkfun vend au détail en boîte et de nombreuses autres saveurs d'arduinos, l'uno, etc. (les tableaux st et msp mentionnés ci-dessus, vous devriez commencer sur le site Web de ti ou st ou aller sur github.com/dwelch67 et j'ai des liens vers les différents conseils de mon exemples).

old_timer
la source
8

Je suis aussi un logiciel de jour. Il y a une dizaine d'années, j'ai commencé avec les tampons BASIC de Parallax, et après un long laps de temps, je suis récemment revenu dans des projets intégrés. Au début, j'ai regardé l'Arduino et ses différentes parties et j'ai réalisé que je pouvais simplement passer le prix de la carte Arduino et prendre des ATMega168 et recommencer. Cela a fonctionné pour la plupart, mais j'ai souvent rencontré des problèmes où avoir une carte pré-construite aurait été bien car je n'aurais pas pu foirer l'assemblage de base.

J'ai finalement commandé un Arduino et j'aime tout ce qui concerne la carte et les bibliothèques. Je ne suis pas un fan de "l'IDE", donc je clique sur "Utiliser un éditeur externe" et j'utilise l'IDE uniquement pour compiler et flasher le logiciel sur la carte. Habituellement, je démarre un projet ou une idée avec la carte Arduino, puis je le transfère dans une méga puce. Cela aide à réduire les coûts en utilisant uniquement les pièces nécessaires pour un projet, mais cela me permet tout de même de trouver rapidement un prototype.

Bonne chance!

Michael Dillon
la source
6

L'Arduino est une excellente introduction à la programmation d'un microcontrôleur.

Il y a une grande différence entre écrire un logiciel pour un PC et écrire un firmware pour un microcontrôleur.

L'Arduino serait un bon point de départ pour se familiariser avec les périphériques, etc. sans avoir à s'enliser dans le traitement de bizarreries de puces spécifiques et autres.

Mais, comme je l'ai dit, c'est une introduction.

Commencez avec l'Arduino, puis passez à des choses plus grandes et meilleures.

J'utilise beaucoup la famille de microcontrôleurs PIC, mais j'ai toujours mon fidèle Arduino que j'utilise pour essayer des idées et tester des choses rapidement.

Majenko
la source
6

Puisque «Arduino» comprend plusieurs choses, je pense qu'il peut être utile de les regarder séparément:

  • Côté matériel, un appareil compatible Arduino est essentiellement un microcontrôleur ATMega avec un certain chargeur de démarrage. Habituellement, une carte compatible Arduino prête à l'emploi comprendra également d'autres composants électroniques de support, comme une interface de port USB ou série, un régulateur de tension, des en-têtes de broches pour un accès facile aux broches, etc. Les périphériques matériels sont assez abordables si vous voulez la fonctionnalité USB et avec le chargeur de démarrage préprogrammé, il vous évite d'avoir à acheter un programmeur distinct pour télécharger votre logiciel. Donc, oui, l'Arduino (et les clones compatibles) sont utiles comme périphériques matériels lors du prototypage; pour la version finale, vous voudrez peut-être créer la vôtre avec uniquement les pièces dont vous avez besoin, vous n'avez donc pas besoin de mettre un Arduino complet dans chaque projet.

  • Côté logiciel, la bibliothèque Arduino est comme toute bibliothèque de programmation et son utilité dépend de vos besoins. Personnellement, je le trouve parfois utile pour le prototypage rapide (par exemple, la fonctionnalité du port série), mais en tant que programmeur expérimenté, je n'aime pas beaucoup de simplifications (en particulier la numérotation des broches). Dans tous les cas, vous pouvez facilement utiliser les bibliothèques AVR d'origine à la place ou en plus de la bibliothèque Arduino même si vous programmez pour un périphérique Arduino et / ou utilisez l'IDE Arduino. Donc, utilisez les bibliothèques Arduino que vous trouvez utiles, en particulier lors du prototypage, mais apprenez l'AVR sous-jacent au fur et à mesure (voir les sources Arduino et la fiche technique ATMega).

  • Enfin, l'Arduino IDE est l'environnement de programmation graphique avec un simple éditeur, une console de port série, un système de construction de type «make» (caché à l'utilisateur) et (un frontal pour) des outils pour télécharger votre logiciel sur le périphérique réel . Personnellement, je déteste l'IDE et ne l'utilise jamais, préférant travailler sur la ligne de commande, mais évidemment, c'est juste une question de préférence personnelle.

Arkku
la source
1
Je ne sais pas comment ils peuvent appeler cette monstruosité un IDE. C'est le morceau le plus horrible de [explétif supprimé] imaginable. J'ai Anjuta presque configuré pour tout faire pour moi maintenant que l'IDE (pas très) de l'Arduino le fait.
Majenko
4

Votre question est trop ouverte pour une réponse directe, alors tout ce que nous pouvons faire est de vous montrer les compromis.

L'adruino est un microcontrôleur enrobé de sucre abruti pour les masses. Il est optimisé pour que les choses de base soient faites rapidement avec le minimum de choses à apprendre.

Au cœur d'un arduino se trouve un microcontrôleur ordinaire, que vous pouvez également utiliser directement. L'avantage est que vous pouvez choisir votre micro pour exactement ce que vous voulez faire, ne pas avoir l'idée de quelqu'un d'autre de ce que vous devriez faire entre vous et le micro, et vous pouvez faire tout ce dont le micro nu est capable, ce qui est un bien plus que refait surface à travers l'abstraction Arduino. L'inconvénient est que vous devrez réellement apprendre quelque chose, la lecture de quelques 100 pages de fiche technique n'est que le début, et vous n'obtiendrez pas de gratification instantanée.

Vous seul pouvez dire ce qui vous convient le mieux. Voulez-vous embrasser votre crétin intérieur et être conduit béatement à travers le jardin pour toujours être relégué à dire "hein?", "Quoi?", Et "Oh c'est trop mignon!" aux choses électroniques? Ou préférez-vous marcher sur le long chemin sombre pour émerger avec une seule LED clignotante après beaucoup de travail et de problèmes? Voulez-vous simplement conduire la voiture ou apprendre comment fonctionne le moteur afin d'obtenir des performances maximales et de les modifier vous-même?

Olin Lathrop
la source
1
Olin, tu es de la vieille école! Je veux dire absolument cela comme un compliment ... Mais je suis respectueusement en désaccord avec vous sur cette question. Gérer des logiciels de conception médiocre sur un système d'exploitation mal conçu n'a rien ajouté à ma compréhension de l'électronique. A en fait absorbé des jours de temps précieux où j'aurais pu apprendre des choses utiles de personnes bien informées comme vous. Je dis "Vive Arduino!"
Kaelin Colclasure
2
@KaelinColclasure Votre commentaire est un peu déroutant pour moi. Vous vous opposez aux logiciels et aux systèmes d'exploitation médiocres, mais Olin ne résout pas cela du tout. Si quelque chose vous pouvez considérer ce que Arduino fait pour vous une couche d'abstraction comme la façon dont un système d'exploitation est une couche d'abstraction. Apprendre à utiliser un arduino ne fait pas grand-chose pour vous aider à devenir un meilleur ingénieur car les frais généraux entraîneront des coûts supplémentaires qui ne sont pas nécessaires. Cela dit, je pense que l'Arduino est une excellente plate-forme, mais ne devrait pas être considéré comme un remplacement pour vraiment comprendre le monde de l'électronique embarquée.
Kellenjb
Yay analogies de voiture! Olin, pour beaucoup de gens, il ne s'agit pas de truquer et d'apprendre les moindres détails de l'électronique et de devenir un ingénieur. Beaucoup de gens veulent simplement choisir un outil qui leur permet d'atteindre leur objectif et de résoudre leur problème. L'apprentissage de l'électronique est un moyen d'arriver à une fin dans de nombreux cas, et ce n'est pas la fin elle-même. Tout le monde n'est pas dans ce jeu pour les mêmes raisons que vous.
nemik
2
Oui? Alors qu'est-ce qui parle de "embrasser ton crétin intérieur"? Allons y. Embrassez-vous votre imbécile intérieur exécutant Windows ou Linux ou OS X au lieu d'écrire votre propre système d'exploitation comme un vrai homme ™? Ce sont des systèmes d'exploitation enrobés de sucre abrutis pour les masses.
nemik
1
@nemik: Embrasser votre crétin intérieur était une sorte de blague, tout comme marcher sur le long chemin sombre ... Bien sûr, il y a aussi une part de vérité dans les deux.
Olin Lathrop
4

En tant que programmeur, je préfère de loin la programmation dans un langage qui est utilisé par de nombreuses autres personnes, de cette façon, il y a beaucoup de livres, d'articles, de pairs, etc. disponibles pour m'aider à apprendre.

Dans le monde des ordinateurs à carte unique, l'Arduino est de loin le plus populaire avec le plus grand soutien. C'est un excellent choix pour votre premier micro-ordinateur.

Compte tenu du prix peu élevé de ces choses (la plupart sont inférieures à 50 $), vous voudrez peut-être envisager d'obtenir plus d'un type.

Pour quelqu'un qui connaît Microsoft Visual Studio et C #, Netduino est un excellent choix car il possède une chaîne d'outils que vous connaissez déjà.

Si votre environnement préféré est Unix, vous aimerez peut-être une carte comme le Raspberry Pi qui doit sortir en janvier 2012:

Qu'est-ce qu'un Raspberry Pi? Le Raspberry Pi est un ordinateur de la taille d'une carte de crédit qui se branche sur votre téléviseur et sur un clavier. C'est un petit PC capable qui peut être utilisé pour de nombreuses choses que fait votre PC de bureau, comme les feuilles de calcul, le traitement de texte et les jeux. Il lit également des vidéos haute définition. Nous voulons qu'il soit utilisé par des enfants du monde entier pour apprendre la programmation.

Quand l'appareil sera-t-il disponible à l'achat? Nous espérions avoir le Raspberry Pi disponible sur commande d'ici la fin de 2011. Nous prévoyons toujours de vendre aux enchères certains de nos premiers lots de cartes bêta avant la fin de l'année (gardez un œil sur le site après Noël); nous passerons à la production principale en janvier.

Combien ça coûtera? Le modèle A coûtera 25 $ et le modèle B 35 $.

La très bonne nouvelle est qu'il existe de nombreux microcontrôleurs à bas prix et que d'autres sortent tout le temps.

Enfin, il y a Texas Instruments MSP-430 Launchpad qui est disponible pour 4,30 $ avec la livraison gratuite. À un prix aussi bon marché, comment ne pas en acheter un?

JonnyBoats
la source
4

Commencez avec Arduino pour étoffer votre idée et créer un prototype minimal et apprenez simplement à vous interfacer avec les bases dont vous aurez besoin pour votre produit (moteurs, capteurs, série pour la communication).

Plus tard, si vous souhaitez plus de fonctionnalités (périphériques USB, Ethernet), passez aux puces ARM Cortex série M. ARM 32 bits signifie qu'ils sont très puissants et maintenant souvent moins chers et avec plus de périphériques que les puces 8 ou 16 bits haut de gamme comme les AVR et les PIC. Le mbed de NXP (http://mbed.org) est une introduction très douce à cette plate-forme si vous venez d'Arduino.

nemik
la source
2

Quand les gens disent qu'Arduino est "simple à programmer", ce qu'ils veulent vraiment dire, c'est que la chaîne d'outils fonctionne simplement. Cela fonctionne sur un Mac, cela fonctionne sur Windows et cela fonctionne sur Linux. Vous branchez votre tableau, vous écrivez votre code, vous le téléchargez et c'est parti.

Pour offrir un peu de contraste anecdotique, je viens moi-même de "mettre à niveau" le STK600 d'Atmel et leur environnement de développement AVR Studio 5. Cela ne fonctionne que sur Windows, j'ai donc dû installer et exécuter VMware sur mon Mac. Ensuite, j'ai dû installer le pilote USB Jengo finicky, ce qui a pris une journée de lecture des messages difficiles du forum. Ensuite, j'ai dû comprendre pourquoi je pouvais parler à la carte de développement de l'IDE, mais pas à la carte fille ATmega2560 fournie avec le STK600 ... (Le câble JTAG était mal branché, car j'ai suivi un tutoriel illustré sur le Web qui s'est avéré avoir une image montrant le câble connecté à l'envers.)

Jusqu'à présent, je n'ai pas écrit de ligne de code avec AVR Studio 5, mais j'ai probablement passé plus de temps à jouer avec lui qu'avec le temps total d'utilisation de l'IDE Arduino. Et j'ai écrit des dizaines de croquis Arduino.

Le langage dans lequel vous programmez est essentiellement du C ++ avec un tout petit peu de prétraitement. Avec votre expérience, vous n'aurez aucun mal à trouver comment transplanter les croquis que vous souhaitez dans un environnement "pro" plus tard si le besoin s'en fait sentir. Pour moi, le besoin n'est apparu qu'une fois que j'ai dépassé le bricolage du matériel Arduino et commencé à concevoir ma propre carte. YMMV, bien sûr ...

J'espère que cela t'aides. :-)

Colclasure de Kaelin
la source
3
Pas pour te harceler ... mais je suis de nouveau en désaccord avec toi. La raison pour laquelle les gens disent qu'un Arduino est simple à programmer, c'est parce qu'ils ont essentiellement ajouté une couche d'abstraction que vous n'auriez pas autrement. Vous évoquez également le C ++, c'est très rare à voir dans le monde embarqué. Il est parfois nécessaire pour des projets spécifiques, mais il ajoute également des frais généraux que vous ne pouvez tout simplement pas avoir lorsque vous essayez de couper chaque centime.
Kellenjb
@Kellenjb, je peux coder C ++ avec presque pas de surcharge, parfois les sections peuvent avoir jusqu'à 10%, mais beaucoup de sections avec 0 surcharge. Mais oui, c'est rare parce que vous devez faire plus attention à ce que vous faites avec votre langue, mais attendez, la même chose est vraie en C.J'ai déjà vu des utilisateurs essayer malloc () en c avant sur des résultats imbattables.
Kortuk
1

L'Arduino propose une plate-forme de départ flexible offrant des A / N, D / A (au moins en tant que PWM) de nombreuses E / S numériques, une LED programmable sur la carte, des modules série vers USB et des modules prêts à l'emploi disponibles pour beaucoup d'autres types de matériel. Si vous voulez rouler vous-même pour l'expérience d'apprentissage, vous n'en avez pas besoin. Si vous voulez qu'une plate-forme lance quelque chose juste pour le plaisir ou pendant que vous concevez la version matérielle à faible coût de ce quelque chose, alors elle est prête à fonctionner quand vous l'êtes. Ce sont des décisions de conception, stratégiques et économiques qui sont parfaitement valables à prendre de la manière qui convient à vos objectifs. Il n'y a rien de "idiot" à faire des compromis - c'est ce que les ingénieurs font - et sont censés faire - tous les jours.

JRobert
la source
1

L'expérience de John correspond presque exactement à la mienne il y a 15 ans lorsque j'ai pris ma retraite de l'enseignement de l'informatique (essentiellement la programmation en langage assembleur et C) pour les étudiants de premier cycle. J'ai alors réalisé que suivre les progrès de l'informatique serait prohibitif, alors ma femme a suggéré de retourner à l'électronique comme passe-temps, car j'avais aimé être ingénieur électricien dans les années 1950. C'est ce que j'ai fait, même si je n'avais rencontré que brièvement des transistors et que je n'avais jamais vu d'amplificateur opérationnel, j'ai donc eu beaucoup de plaisir à apprendre. J'ai gardé mon amour du langage d'assemblage, et lorsque Microchip Pics est apparu au milieu des années 90, je suis devenu accro.

Je ne peux pas les comparer avec Arduino, dont je ne sais rien, mais un avantage d'utiliser Pics est qu'il est bon marché à configurer, car Microchip fournit toutes les informations gratuitement, avec un IDE brillant, et vous pouvez apprendre à les utiliser , comme je l'ai fait, d'après ce qu'ils publient. Vous pouvez commencer avec un programmeur fait maison, beaucoup de designs sur Internet, donc cela ne coûterait que quelques livres pour quelques puces Pic pour commencer. Mais je recommanderais le PicKit 2 qui possède de nombreuses fonctionnalités intégrées pour faciliter le développement de programmes. Peut-être pas PicKit 3, cependant, voir:

http://www.eevblog.com/2009/10/21/eevblog-39-pickit-3-programmerdebugger-review/ Bien que cela ait été mis à jour, voir les notes sur cette référence.

Il existe un grand nombre de livres sur les photos, mais certains sont des ordures, méfiez-vous. Pour un démarrage facile, une excellente introduction à Pic est:

"Concevoir des systèmes embarqués avec des microcontrôleurs PIC: principes et applications" [Broché] par Tim Wilmshurst, 22-66 £ sur Amazon, qui comprend à la fois Assembleur et C. J'ai évité C pendant un certain temps car il semblait en retirer l'intimité avec le matériel que l'assembleur donne, mais avec le compilateur C fourni par Microchip, vous pouvez également voir le code d'assembleur qui est généré.

Pour une couverture globale, bonne et technique (sans peur de mettre les maths) de l'électronique moderne, je recommande: "Practical Electronics for Inventors" 2 / E [Broché] par Paul Scherz, 19-95 £ sur Amazon.

J'ai payé respectivement 26-99 £ et 22-99 £ pour ces livres dans les magasins, et je ne le regrette pas du tout.

Je ne peux pas couvrir suffisamment ici, je serais heureux de correspondre par e-mail à ce sujet: [email protected] (et, au cas où, je me méfierais beaucoup de ce que je lis ou télécharge ou réponds.)

Harry Weston
la source