Je comprends Arduino: maintenant quoi?

18

D'accord, j'ai assez joué avec Arduino pour me sentir assez à l'aise avec. Tout ce qui est fait maintenant, c'est plus d'apprendre l'électronique que le côté Arduino.

Quelle est la prochaine étape de mon apprentissage? Arduino est un programmeur / contrôleur combiné, donc je suppose que je dois rompre ce lien et commencer à travailler avec une puce de contrôleur distincte du contrôleur, je suppose? Quelqu'un peut-il m'orienter dans la bonne direction?

Chris B. Behrens
la source
Vous avez un objectif ou un projet particulier en tête?
Je suis d'accord. Pour moi, il s'agit de faire des choses spécifiques. Arduino n'est qu'un outil comme tout le reste.
Dirk
Ce sur quoi je travaille en ce moment, c'est un réseau de LED multiplexé. Pas si difficile en Arduino, mais je veux me débarrasser des roues d'entraînement. Je veux dire, finalement, il y a une puce ATmega168 sur la carte Arduino. Si je pouvais comprendre comment travailler directement avec lui, je pense que cela satisferait ce que j'essaie de réaliser.
Chris B. Behrens
Vous êtes en fait assez direct sur la puce avec l'Arduino. Il n'a pas beaucoup de pilotes ou quoi que ce soit attaché aux broches. Les en-têtes y vont directement. Peut-être un breadboarduino?
AngryEE
@angryee - Je pense que Chris veut dire, programmer directement la puce ATmega, sans les bibliothèques Arduino IDE +, qui pourraient être considérées comme des roues d'entraînement.
J. Polfer

Réponses:

12

Je suis d'accord avec Joby - Arduino est génial mais je me sens toujours étouffé par le cadre avec lequel ils m'entourent. Je passerais à l'utilisation du C droit sur votre Arduino et créerais beaucoup de fonctionnalités de bibliothèque qu'ils fournissaient à partir de zéro. Je préfère généralement la profondeur avant l'étendue - ne commencez pas simplement sur une autre famille de microcontrôleurs en utilisant des cadres plus fournis. Apprenez un peu plus sur la façon d'implémenter vous-même certaines de ces fonctions.

Commencez avec un programme de travail et remplacez les appels de la bibliothèque Arduino par vos propres versions, une fonction à la fois. Vous en apprendrez beaucoup sur les registres de contrôle, le timing, les opérations sur les bits, etc. si vous ne les avez pas déjà. Lisez la fiche technique ATMega328 en profondeur - tout ce dont vous avez besoin est là.

Essayez un autre IDE comme AVR Studio ou Code :: Blocks. Apprenez la chaîne d'outils GCC. Essayez des techniques de codage plus avancées - tests unitaires, couverture, profilage, vérification des peluches / attelles. Mettez un RTOS sur l'Arduino.

Un programmeur / contrôleur combiné n'est pas un signe de faiblesse - c'est juste un choix de conception. La seule «faiblesse» qui pourrait en résulter est le manque de débogage en circuit. Achetez un AVR Dragon et vous le ferez lécher pour 50 $.

AngryEE
la source
9

Je pense que ce qu'il faut apprendre ensuite dépend de ce que vous voulez faire que l'Arduino ne peut pas faire. Autrement dit, je ne vois pas beaucoup d'intérêt à programmer une puce similaire pour faire les mêmes choses, mais avec des moyens plus difficiles.

Voici quelques faiblesses Arduino:

  • Threading, ce qui signifie exécuter deux sections de code entrelacées de sorte qu'elles semblent être exécutées en même temps
  • Internet haut débit ou bande passante moyenne, comme le streaming audio
  • Calcul sérieux ou tâches nécessitant un calcul rapide pour une réponse rapide
  • Tout ce qui est facilité par la présence d'un système de fichiers, comme l'enregistrement de données ou le traitement d'images

Je peux imaginer deux directions à suivre:

  1. Cartes embarquées plus puissantes avec de petits systèmes d'exploitation, comme le Beagleboard ou le Gumstix
  2. Extraire davantage de performances des petites puces Atmega à l'aide d'interruptions matérielles.

Je peux ajouter plus de détails si vous commentez quelle direction est la plus attrayante. (Le second est certainement moins cher.)

pingswept
la source
C'est drôle ... programmer une puce similaire pour faire les mêmes choses, mais avec des moyens plus difficiles, c'est exactement ce que j'ai en tête :). Un peu d'histoire - Je suis architecte logiciel avec de nombreuses années d'expérience. Le logiciel, le calcul, le système de fichiers ... c'est tout ce qui est facile pour moi. Ce dont j'ai vraiment besoin pour me cogner la tête, c'est l'électronique. La raison pour laquelle je cherche à aller au-delà d'Arduino est simplement que je veux pouvoir produire des appareils à usage unique qui n'ont pas la surcharge physique (et le prix) d'une carte Arduino. Je pense que d'après ce que vous avez dit, # 2 est ce que je recherche.
Chris B. Behrens
Wow ... ce commentaire sonnait vraiment égoïste. Je ne le pensais pas de cette façon ... de toute façon, je voulais juste dire que je veux me débarrasser des roues d'entraînement matériel qu'Arduino me donne. En particulier, je travaille sur un réseau de LED, similaire au LOLShield, bien que je pense que je vais le multiplexer à la place. Je peux le faire avec Arduino, mais sans lui, j'ai besoin d'une direction. TIA.
Chris B. Behrens
Ah, des trucs plus électroniques au lieu de trucs logiciels. Peut-être que vous obtiendriez une bonne expérience en matière d'interfaçage / enregistrement de données de capteur. Ce n'est pas glamour, mais pour interfacer les capteurs à votre carte, vous devez en savoir plus sur le matériel. L'Arduino n'a pas vraiment autant de roues d'entraînement matériel - certainement pas autant que de logiciels. Peut-être un robot qui incorpore plusieurs types de capteurs - ultrasons, distance IR, encodeur d'arbre, etc. Certainement possible juste avec l'Arduino et beaucoup plus de matériel.
AngryEE
7

Apprenez I2C, SPI, 1wire et essayez d'interfacer les capteurs avec de telles interfaces. Lisez beaucoup de fiches techniques de ces capteurs et essayez de tout comprendre. Posez des questions lorsque vous êtes 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, ce qui est tiré vers le haut et vers le bas, ce qui est source et descendant, comment dessiner des schémas et connecter des pilotes de base à votre MCU.

avra
la source
6

Pour commencer, vous souhaiterez peut-être passer d'Arduino en tant que plate-forme à AVR en tant que plate-forme. C'est-à-dire, apprendre à programmer / utiliser un microcontrôleur AVR vierge pour vos projets au lieu de l'Arduino. De cette façon, vous n'aurez pas à acheter une autre carte Arduino pour chaque projet que vous faites ou pour faire des projets avec des amis. C'est une étape assez simple (un Arduino est juste un microcontrôleur Atmel AVR conventionnel mais avec une carte et un chargeur de démarrage spéciaux), mais c'est un gros pour vendre / donner des projets à des amis. La chaîne d'outils est également similaire: vous utilisez avr-gcc ou avr-g ++ avec make en conjonction avec un utilitaire de programmation pour installer votre programme.

J. Polfer
la source
Il est assez simple de charger le chargeur de démarrage sur une puce et de souder votre propre carte si vous souhaitez donner un projet. Ou commandez un kit RBBB pour 12,50 $ ( goo.gl/0yqr ) pas besoin d'acheter une carte de 30 $ + pour chaque projet Arduino.
Davorak