2008-09-17 12 views
74

J'ai développé un logiciel en C++, Java, PHP, .NET et maintenant je suis intéressant d'apprendre à programmer des choses matérielles. Je voudrais programmer un système qui pourrait interagir avec IR, LCD et être capable de remettre en marche les vieux moteurs d'imprimantes pour l'utiliser, etc.Comment démarrer la programmation d'un microcontrôleur?

Mon problème est, par où commencer? J'ai cherché sur le web et j'ai trouvé une carte open source appelée Arduino mais comment assembler d'autres composants électroniques? Quel livre ou didacticiel devrais-je faire pour être capable de créer un petit projet?

+0

AJOUT D' aux commentaires ailleurs, je voudrais suggérer de lire un livre intitulé "[Vous voulez être un ingénieur embarqué: le guide de l'ingénierie embarquée, de la consultation à l'échelle de l'entreprise] (http://www.amazon.com/You- Wanna-Embedded-Ingénieur-Ingénierie/dp/0750679530) ". Ça vous donnerait un indice. – avar

Répondre

61

La parallaxe est notoirement surévaluée. Ils s'en tirent parce qu'ils vendent leurs affaires à des établissements d'enseignement qui ne savent pas mieux. L'Arduino est un bon début, passez en revue quelques-uns de leurs exemples (cliquez sur 'Apprentissage' sur le site Arduino) et voyez de quelles pièces ils ont besoin. Mon magasin électronique en ligne de passe-temps préféré est sparkfun.com. Ils ont des tonnes de pièces conçues pour s'interfacer avec des choses comme l'Arduino.

Vous pouvez les programmer en assemblages C, C++ ou AVR. Personnellement, je dirais éviter les BASIC, ils sont beaucoup plus lents et si vous êtes déjà dans la programmation, ça ne vaut pas la peine.

(Pour votre information, l'Arduino est essentiellement une carte et d'une bibliothèque logicielle conçue autour du microcontrôleur AVR merveilleux)

+0

Bonne réponse! juste pour ajouter un peu, semblable à Arduino, il y a le projet Freeduino: http://www.freeduino.org/ –

+0

Personnellement sparkfun est un peu trop cher ... vous pouvez trouver beaucoup de choses beaucoup moins cher par ebay ou aliexpress .. si vous sont prêts à attendre un peu plus de temps car ils expédient généralement de Chine. Mais il y a beaucoup de vendeurs américains qui ont de bons prix sur les capteurs Arduino etc Mais c'est juste mes deux cents. – jason

4

La série de tampons BASIC est très intéressante. Ils ont beaucoup de bons tableaux de bord simples pour vous aider à démarrer et la programmation est simple. Le contrôleur exécute réellement BASIC. Bien que cela ne puisse pas exciter beaucoup de gens, l'écriture de code de microcontrôleur prend du temps pour le faire. Ce système est idéal pour se mouiller les pieds. Ensuite, lorsque vous avez un bon projet (et simple) en cours d'exécution, vous pouvez passer à d'autres contrôleurs plus difficiles. Ceux-ci seront très probablement assemblés ou C programmés. Le débogage sera votre plus grand défi.

Parallax BASIC Stamp

3

Chaque microcontrôleur est différent. Le BASIC stamp est très populaire parmi les amateurs, car vous pouvez le programmer dans un langage de haut niveau. Pour le travail de bas niveau, un choix extrêmement commun est le PIC, une puce bon marché (< 4 $) et rapide (~ 20   MHz) avec presque aucune mémoire intégrée. Vous pouvez trouver un list of development environments sur Wikipedia.

Si vous avez besoin d'acheter des composants électroniques pour votre microcontrôleur, DigiKey est un excellent point de départ.

1

J'ai deux suggestions.

  1. Les microcontrôleurs de tampon sont de grandes puces d'introduction. Vous pouvez ramasser les kits sur eBay pas cher (< 30 $ généralement). Je peux également recommander le livre Stamp2 Communications and Control Projects de Tom Petruzzellis http://www.amazon.com/STAMP-2-Communications-Control-Projects/dp/0071411976/ref=sr_11_1?ie=UTF8&qid=1221613350&sr=11-1

  2. Microchip (www.microship.com) fait le microcontrôleur Stamp. Ils offrent également des échantillons gratuits de leur site Web, y compris l'expédition. J'ai pris quelques micros avec des radios intégrées pour faire des communications RF bidirectionnelles (pas WIFI). Un autre grand fabricant de microcontrôleur est Dallas Semiconductor http://www.maxim-ic.com/ et ils expédient également des échantillons gratuits aussi. Dallas/Maxim a également un journal d'ingénierie qu'ils enverront gratuitement à votre adresse et le journal a des tonnes d'exemples d'implémentation, en utilisant leurs jetons, bien sûr, à partir de laquelle vous pouvez obtenir beaucoup de bonnes informations.

+0

Ce livre a une très mauvaise note sur amazon: P –

3

J'ai aussi l'impression que vous devez commencer des choses d'architecture de microcontrôleur de base. Le PIC est bon pour commencer, car les modèles de base et les premières séries peuvent être très utiles - ils n'ont pas trop de fonctionnalités supplémentaires, donc vous ne serez pas perdu avec les extras se concentrant sur les bases, ce qui est bien. Après cela, vous devez comprendre beaucoup de choses sur l'organisation de la mémoire et l'exécution du programme dans le contexte des modèles de cycle de vie et de synchronisation du microcontrôleur. Après cela, vous pouvez aller de l'avant avec l'analyse de base des exemples assembleur pour un microcontrôleur concret et aller de l'avant avec des techniques plus avancées. Ensuite, vous pouvez passer à des séries plus avancées de PIC avec DAC et d'autres modules qui sont communs à la plupart des microcontrôleurs modernes, mais sur le PIC vous pouvez obtenir beaucoup de bases sans douleur supplémentaire qui fonctionnera à peu près la même chose pour tous les autres puces.

28

Eh bien, le domaine des microcontrôleurs est assez important. Vous avez plusieurs marques, chacune arborant une gamme complète de contrôleurs, avec différents degrés de capacité, de complexité et de capacité. Cela dit, la manière de commencer avec la plupart des microcontrôleurs est de lire le manuel du fabricant. Contrairement à la programmation "normale", où la plupart des programmeurs se conforment aux normes et règles, aux meilleures pratiques et aux frameworks, la programmation des microcontrôleurs est encore assez proche de la programmation du début des années 1980: en lisant un manuel de contrôleur, en reproduisant des exemples s'étendant à partir de là. Les manuals de Microchip, par exemple, sont excellents. Ils ont également un très bon community, et fournissent à certaines bibliothèques des fonctions "standard" que vous aimeriez utiliser (comme les maths, les E/S, faire des E/S série en utilisant deux broches, etc.). Beaucoup de personnes travaillant avec les PIC sont très ouvertes et partagent normalement leur code source si elles pensent que cela pourrait être utile à quelqu'un d'autre.

Vous devez faire quelques choix avant de commencer. Le premier est la langue que vous allez utiliser. Vous avez trois options:

  1. Assemblage: La plupart des fabricants proposent des kits de développement gratuits ou plutôt bon marché pour leurs microcontrôleurs (MCU). C'est l'option la plus puissante, et celle que vous devriez utiliser si vous vous sentez à l'aise. Il va également vous apprendre un lot sur les ordinateurs en général.
  2. Autre chose: Si vous préférez utiliser quelque chose comme C, vous devrez payer un peu d'argent pour le compilateur (bien qu'il y ait au moins one open source option pour certains de l'appareil), et vous devez considérer le Le code produit par les langages de haut niveau prend normalement beaucoup d'espace/de mémoire dans l'appareil. En outre, en fonction de la bibliothèque standard, vous finirez par programmer une bonne partie de la fonctionnalité de votre choix.
  3. Langage de type Pascal/de base: certains MCU sont livrés avec un interpréteur Basic/Pascal. Ceux-ci sont parfaits pour commencer à faire des projets «jouets», et avoir le sentiment de comment cela fonctionne.

Ensuite, vous devez décider quel type de périphérique vous souhaitez utiliser. Les prix par unité varient énormément en fonction du fabricant, qu'il s'agisse de PROM, d'EPROM, d'EEPROM, de la quantité de mémoire dont il dispose, de la capacité de stockage, du nombre de broches programmables, etc.

Ma recommandation, pour commencer, serait:

  1. Essayez de trouver un « brûleur » gratuitement sur Internet si vous voulez ressentir le frisson de la programmation de votre MCUs en utilisant quelque chose vous avez construit. Il y a beaucoup de disponibles là-bas, juste google pour "simple brûleur PIC" ou similaire. Si ce n'est pas une exigence, alors vous pouvez acheter un brûleur, mais cela vous coûtera pas mal d'argent.
  2. Obtenez un Version EEPROM du MCU que vous pensez utiliser le plus. Cela vous évitera d'avoir à jeter un matériel de 5 $ juste parce que vous avez un bug dans votre code.
  3. Achetez un bouquet de la version PROM du MCU. Ils ne coûtent pas cher, et vous en aurez besoin. Et une fois que vous avez commencé, vous voulez mettre un MCU partout.
  4. Apprenez à utiliser l'émulateur. La plupart des SDK sont livrés avec un émulateur que vous pouvez utiliser pour tester vos idées avant de les engager dans PROM.
  5. Trouvez-vous un premier projet simple et intéressant. Je dois souligner le SIMPLE là. Si vous essayez de contrôler votre four à micro-ondes immédiatement à l'aide d'une télécommande, soyez prêt pour une longue période d'apprentissage.

Eh bien, espérons que cela vous aide! Si vous voulez plus d'informations, je suis dans le coin, juste siffler! :)

2

Découvrez de Physical Computing par Dan O'Sullivan: http://itp.nyu.edu/~dbo3/physical/physical.html Il a également des liens vers Basic Stamp, BX24, base Atom et PIC "Références rapides". Arduino est une excellente plate-forme avec une grande communauté de soutien. Je le recommande.

31

Je serais certainement seconder la suggestion Arduino. Ils sont bon marché, il y a plusieurs fournisseurs puisque le matériel est open source (bien que le nom ne soit pas), l'IDE est gratuit, vous les programmez en C, et ils sont faciles à connecter à peu près n'importe quoi. La carte comporte 12 broches d'E/S numériques (dont deux doubles comme broches de communication série) et six broches d'E/S de convertisseur A/N 12 bits (qui peuvent également être configurées comme broches numériques). Il peut gérer la modulation de largeur d'impulsion (PWM) pour le contrôle du moteur et du servo, les interruptions, les interfaces I2C, et la plupart des cartes peuvent fonctionner de manière autonome ou à partir du port USB. La communication avec l'ordinateur est gérée par un pilote USB série FTDI.

En plus de Sparkfun.com, consultez aussi le www.adafruit.com pour quelques petites cartes USB "Boarduino" bon marché et plusieurs protections de prototypage pour l'Arduino pleine grandeur.

Le site principal Arduino (Arduino.cc) contient à peu près toutes les références et tous les tutoriels dont vous avez besoin pour commencer.

Voici le "Hello, World!" de la programmation Arduino comme un exemple de la facilité. Le programme clignote une LED fixée à la broche numérique 13:

int ledPin = 13;     // LED connected to digital pin 13 

void setup() 
{ 
    pinMode(ledPin, OUTPUT);  // sets the digital pin as output 
} 

void loop() 
{ 
    digitalWrite(ledPin, HIGH); // sets the LED on 
    delay(1000);     // waits for a second 
    digitalWrite(ledPin, LOW); // sets the LED off 
    delay(1000);     // waits for a second 
} 

En principe, chaque programme Arduino a une fonction setup() qui fonctionne lorsque l'alimentation est appliquée ou de la carte est remise à zéro et une fonction de boucle() qui fonctionne toujours. Bien sûr, vous disposez également de minuteries et de fonctions d'interruption, ou vous pouvez utiliser la boucle() pour interroger les entrées, puis appeler d'autres fonctions.L'IDE Arduino se trouve au-dessus de GCC et utilise les mêmes bibliothèques et inclut celles que vous utiliseriez si vous écriviez un programme barebones pour le microcontrôleur Atmega. Cela signifie (a) qu'il cache les parties dures aussi longtemps que vous le voulez (bootloaders, fusibles, etc.), (b) vous pouvez accéder aux parties internes du programme si vous le souhaitez, et (c) vous pouvez utiliser un grand choix de bibliothèques qui sont là pour cette famille de microcontrôleurs.

14

J'ai récemment commencé à apprendre la programmation du microcontrôleur à l'aide de l'Arduino. J'ai acheté le Arduino Starter Pack de adafruit.com et ai traversé leur introductory tutorials. Leur kit est livré avec quelques éléments électroniques de base (LED, boutons, photorésistance) qui vous donnent des choses à expérimenter dès le départ.

Si vous connaissez déjà C/C++, vous pourrez commencer à créer des projets utiles et intéressants en quelques heures. L'Arduino est également génial car une fois que vous vous familiarisez avec lui, vous pouvez étendre à l'écriture C brut sur l'un des Atmel AVR line of microcontrollers avec facilité.

Je recommande également The Electronics Goldmine où vous pouvez acheter des assortiments de produits électroniques pour pas cher pour obtenir un bon ensemble de démarrage pour travailler.

+0

Merci pour la référence du pack Arduino Starter. J'ai regardé leur vidéo, ça a l'air plutôt intéressant. Le seul inconvénient est le prix, mais ils doivent encore faire de l'argent je suppose. Merci! – IvRRimUm

0

Sur une note latérale:
Si vous ne voulez pas vous salir les mains à souder beaucoup de choses ou ne sont pas électriquement enclins à le faire (comme moi), essayez de regarder dans PLC's.
Ce sont des contrôleurs matériels industriels avec des modules pour presque toutes les tâches telles que E/S numériques, E/S analogiques, contrôleurs de moteur pas à pas, E/S série, Ethernet, etc. Vous pouvez les programmer de différentes manières, assembleur, graphique et un éditeur de texte avec un code ressemblant à un mélange de Pascal et de Basic. Ils ont un multitâche intégré et fonctionnent généralement plutôt bien, mais ils sont un peu plus chers qu'un microcontrôleur ordinaire. Je recommande toujours Wago et leur contrôleur 750-841.

3

Ceci est probablement exagéré pour ce que vous essayez de faire, mais la programmation d'un système basé FPGA peut être amusant. Le langage VHDL ressemble plus au câblage des circuits qu'à l'écriture du code C. Un tableau Nexys-2 peut être acheté pour 130 $.

2

Un autre vote pour l'Arduino qui est très cool. Avec une carte Arduino, un capteur de température à un fil et Hyperterminal, vous pouvez commencer à enregistrer des données sur le monde qui vous entoure. Hook up Processing et vous pouvez enregistrer les données, les représenter graphiquement, les analyser dans Excel, peu importe. Soigné.

3

Tout ce dont vous avez besoin pour le démarrage dans Arduino et l'électronique peut être trouvé ici: http://www.smileymicros.com. Si je me souviens bien, l'auteur du livre a/avait une colonne pour les débutants Arduino dans l'un des magazines électroniques. En plus de cela, en général, vous devriez apprendre I2C, SPI, 1wire et essayer d'interfacer les capteurs avec de telles interfaces. Lisez beaucoup de fiches techniques de ces capteurs et essayez de tout comprendre en eux. Posez des questions lorsque coincé. Apprenez MODBUS (RTU/ASCII/TCP) ou un protocole similaire qui peut ouvrir votre appareil au monde une fois que vous l'avez intégré dans l'appareil. Apprenez l'électronique générale et essayez d'interfacer les relais, les triacs, les moteurs pas à pas, les servos, ce qui est tiré et tiré, ce qui est source et coulée, comment dessiner des schémas et connecter les pilotes de base à votre MCU.

2

Si vous êtes un passionné de l'électronique, vous pouvez construire votre propre système de développement. Ça pourrait être plus compliqué mais c'est beaucoup plus amusant.

Voir ici un système simple de développement pour microncontrollers de PIC16F628A, y compris des schémas complets et PCB: http://www.bobtech.ro/proiecte/microcontrolere/1-bobdemo-sistem-pentru-dezvoltare-aplicatii-cu-microcontroler

Caractéristiques:

  • 12 E/S avec boutons-poussoirs pour les entrées et les LED pour les sorties
  • interface port série RS232 pour PC
  • capteur de télécommande infrarouge
  • bord connecteur de programmation ICSP
  • en option embarquée batterie de 9V (à des fins de démonstration)
  • embarqué + 5V alimentation pour microcontrôleur et des périphériques externes

Pour la programmation, vous pouvez utiliser BobProg - ICSP PIC programmer
Suivez le lien pour les schémas de programmeur et PCB .

Logiciel:

  • (gratuit) MPLAB IDE de Microchip pour le développement en C ou ASM langue
  • (gratuit) IC-Prog flash du logiciel de programmation à utiliser pour le ICSP programmeur
Questions connexes