Je suis un étudiant en informatique et je suis désireux d'étendre mes connaissances sur la programmation intégrée et le génie électrique.
J'ai lu ici que l'utilisation d'outils comme le microcontrôleur Arduino est un bon moyen de commencer.
Je suis principalement un programmeur Java et Python, mais j'ai de l'expérience en C ++. De plus, j'ai joué avec ArchLinux.
Un petit projet que je voudrais faire est de contrôler certaines ampoules via Wi-Fi sur mon Arduino / Pi.
D'après ce que j'ai lu, le Pi et l'Arduino sont destinés aux étudiants, mais je ne vois pas ce qui convient le mieux à quelqu'un comme moi qui veut comprendre le fonctionnement des ordinateurs au bas niveau.
En tant que débutant, je vais rencontrer de nombreuses questions, donc une communauté importante et utile (dont j’entends dire que le Pi a été doté) est un avantage considérable.
Alors lequel est le plus approprié pour un débutant autodidacte: Arduino ou Raspberry Pi?
Merci d'avance.
Modifier:
De vos nombreuses bonnes réponses et de ces articles intéressants, je suis venu à la suivante
Conclusions
Je choisis Arduino comme point d’entrée dans la programmation intégrée car c’est un système plus simple que le Pi et qui me permet de travailler plus près du métal.
Il est utile d’approfondir les choses: j’étudierai peut-être plus tard les microcontrôleurs AVR ou mbed pour en apprendre davantage sur les détails de bas niveau de l’informatique.
Les deux appareils me permettent de programmer sans système d'exploitation, ce que je veux (au début).
J'ai également trouvé des projets qui utilisent un Pi pour contrôler un Arduino. Je trouve cela intriguant car les deux appareils sont assez abordables et j'aime utiliser la puissance de Linux qui peut fonctionner sur le Pi.
De plus, j'ai trouvé ce livre qui devrait m'aider à en apprendre plus sur le génie électrique lors de mes expériences avec Arduino.
Il semble difficile de faire mon projet d'ampoule avec l'Arduino. Mais ça va. Je suis sûr que je peux penser à d’autres projets motivants ou trouver de l’inspiration ici ou ici .
Merci à tous pour vos réponses.
la source
Réponses:
Si vous voulez vraiment "comprendre le fonctionnement des ordinateurs à bas niveau", alors on pourrait dire que ni Arduino ni Raspberry Pi ne conviennent. Ces deux plates-formes (leur matériel et leurs logiciels) sont spécifiquement conçues pour masquer les détails de bas niveau afin de faciliter la tâche des personnes ne se souciant pas de ces détails pour atteindre leurs objectifs de niveau supérieur en créant des applications incorporées.
Au lieu de cela, je vous recommanderais de choisir une famille de CPU ayant une architecture de jeu d'instructions relativement "propre" et d'apprendre à la programmer en langage assembleur. Par exemple, j'ai beaucoup codé au début sur un mini-ordinateur PDP-11, qui possède (enfin, avait) une architecture 16 bits très propre. On me dit que la famille TI MSP430 est très similaire. Sur les familles 8 bits modernes, on pourrait affirmer qu'AVR est un peu plus propre que PIC. Ou vous pouvez aller à la vieille école et regarder le M68K ou même le Z80.
Cela dépend donc vraiment de vos objectifs: voulez-vous créer des applications intégrées ou voulez-vous étudier les processeurs eux-mêmes?
Si vous souhaitez commencer par le premier, puis passer plus tard au dernier, vous devriez peut-être commencer par Arduino maintenant, puis migrer vers la programmation du processeur AVR sous-jacent à un niveau inférieur plus tard.
Je fais cette recommandation en partie à cause de la nature simple de l'application que vous avez suggérée et en partie à cause de la voie de migration. Il est beaucoup plus difficile de migrer vers la programmation de bas niveau sur le Pi. Il est basé sur un SoC complexe qui nécessite pas mal "d'infrastructure" logicielle juste pour le mettre en route. Avec l'AVR, vous pouvez facilement programmer jusqu'au "métal nu" si vous le souhaitez.
la source
Un Arduino peut être utilisé avec le Arduino SDE, qui fournit certaines fonctionnalités de manière "cachée", mais il peut également être utilisé avec un assembleur ordinaire, C ou C ++ (et probablement avec beaucoup d’autres langages, mais cela semble être le cas). moins fréquent). Il existe une grande variété de cartes add-one disponibles appelées boucliers. La plupart des logiciels de support technique s'intègrent à l'Arduino SDE. La combinaison de plusieurs boucliers peut être délicate. Ethernet est possible, mais cela étend les capacités. La pile hôte USB est AFAIK au-delà de ses capacités.
L’Arduino original contient une puce AVR, mais il existe des alternatives basées sur les puces PIC et LPC (ARM).
Le Raspberry Pi est conçu pour être un ordinateur à carte unique fonctionnant sous Linux réduit. En tant que tel, il peut être programmé dans une grande variété de langages (de l'assembleur à Python, et tout le reste, en C et C ++). Il peut s'agir d'un hôte USB, il ne devrait donc pas y avoir de problème pour ajouter une clé USB WiFi. Le Pi PCB possède un connecteur IO sur lequel certaines broches sont disponibles et vous pouvez accéder à ces broches depuis votre application Linux, mais cela semble un peu maladroit.
Bien qu'il n'ait pas été conçu pour être utilisé de cette manière, la programmation du nu metal Raspberry Pi (= sans système d'exploitation) ne pose aucun problème. Vous avez maintenant un accès direct et rapide aux broches d'E / S, mais vous ne pouvez plus exécuter les pilotes Liunux. Il sera donc difficile d'ajouter du WiFi. Pour autant que je sache, il n’existe pas encore autant d’extensions matérielles (avec les bibliothèques de logiciels correspondantes) pour le RaPi que pour l’Arduino, mais j’ai le sentiment que cela pourrait changer.
Dans l'ensemble, je dirais que vous ne pouvez pas vous tromper, mais si vous voulez vraiment le WiFi, je recommanderais RaPi avec Linux.
la source
À mon avis, cela revient à ceci: voulez-vous programmer dans un système d'exploitation ou sur le matériel lui-même (en quelque sorte, créer votre propre système d'exploitation)?
Avec un RaspberryPi, vous utiliserez quasiment Debian Linux. C'est bien et Linux est vraiment utile. Si vous apprenez cela, vous pourrez passer à d'autres ordinateurs, serveurs, etc. Vous programmerez probablement à nouveau en Python si vous le connaissez bien, car il est agréable et facile à faire sur le Pi.
Si, par contre, vous voulez savoir ce que ça fait de programmer quelque chose de vraiment minuscule, bon marché et à faible consommation d'énergie, essayez l'Arduino. Tout votre code fonctionne sur cette petite puce, vous pouvez même le retirer du tableau (s'il s'agit d'un DIP) et le placer sur une planche à pain et constater par vous-même à quel point le matériel nécessaire au bon fonctionnement d'un petit ordinateur de base est insuffisant. C'était assez incroyable pour moi au moins. Tout ce que vous écrivez fonctionnera sur cette puce, de sorte que l'ensemble de son "système d'exploitation" sera votre petite boucle d'exécution. Il est bon de commencer à utiliser l'IDE / langage Arduino, mais il sera très utile de connaître plus tard le C / C ++. Si vous vous y intéressez vraiment à ce moment-là, vous pourrez facilement utiliser vos compétences C sur d'autres micros tels que les puces ARM Cortex M ou les MSP430 de TI pour une consommation d'énergie vraiment faible.
Je vous suggérerais d'aller vers Arduino si vous vous souciez davantage d'apprendre l'EE et les langages intégrés, principalement en raison de la facilité avec laquelle vous créez vos propres circuits pour la partie EE. Vous ne pouvez pas très facilement retirer la puce du Raspberry Pi de votre propre carte ou endommager le matériel beaucoup; c'est aussi à peu près un système Linux. Il suffit de lancer une machine virtuelle à ce stade et d’apprendre Linux là-bas.
la source
Ce qui est approprié dépend vraiment des détails de la tâche.
Si vous avez besoin du wifi, vous constaterez probablement que le Raspberry Pi est une solution plus rentable, car vous pouvez utiliser un dongle wifi bon marché.
Cependant, le pi a une certaine complexité - du côté logiciel, bien que vous ayez une certaine expérience de la configuration sous Linux et de ses limitations d’alimentation électrique - quelques dongles wifi fonctionneront directement; autour des polyfuses.
Sur le chemin Arduino, à moins d’obtenir un adaptateur wifi implémentant une pile réseau complète et simulant un canal série, vous allez finir par utiliser une grande partie de votre mémoire disponible pour la mise en réseau. les gens le font, mais cela peut être difficile.
D’avis, aucune des deux plates-formes n’est vraiment idéale pour cette tâche - le pi s’avère être un peu plus jouet avec ses limitations en puissance, son support de carte SD en surplomb et sa documentation dissimulée qu’il serait idéal comme bloc de construction intégré, et l'Arduino a peu de ressources embarquées pour son prix. Cela dit, il n’ya pas beaucoup d’alternatives très populaires qui soient supérieures, bien qu’il existe une longue histoire de piratage des E / S numériques sur des routeurs wifi basés sur Linux, et certaines d’entre elles sont compétitives et bon marché à l’heure actuelle.
la source
Je recommanderais le processeur mbed. Il a un bon équilibre d'abstraction de haut niveau (pour commencer) en C ++ et vous pouvez ensuite descendre en C et commencer à travailler avec un niveau inférieur.
Une fois que vous avez maîtrisé les interruptions, la synchronisation et la lecture des informations (analogiques et numériques), vous pouvez passer à un simple PIC. J'aime le 16F886, cela vous donnera une bien meilleure idée de ce qui se passe réellement au niveau du registre. Utilisez le compilateur Hi-Tech C comme point de départ. Il n'est pas nécessaire de passer à l'assemblage à moins que vous ne le souhaitiez vraiment.
Avec le PIC, vous pouvez vous préoccuper de la consommation d’énergie, de la taille du programme, de la mémoire et des délais.
De là, vous pouvez revenir à un processeur plus gros, comme mbed ou arduino, en sachant que vous avez une meilleure idée de ce qui se passe à l'intérieur.
la source
J'ai commencé avec Arduino et quand j'ai compris comment ça marche, je suis passé à Pic et on peut dire que ça a réussi. J'ai fait des projets flashy avec Arduino, et c'est facile parce que sur le Web, vous avez beaucoup d'exemples de code. Raspberry Pi est encore en croissance et il n’ya pas beaucoup d’aide comme Arduino. Donc, à mon avis, je vous recommande de commencer par Arduino et, lorsque vous atteignez un niveau, passez à un microcontrôleur.
la source