Puis-je programmer pour Arduino sans avoir un vrai tableau?

204

J'aimerais commencer le développement de certains projets Arduino de base, mais je ne possède pas encore de carte Arduino. Est-il possible d'écrire mon code et de l'émuler / de le tester à l'aide d'un ordinateur de bureau afin qu'après mon tableau, je n'ai plus qu'à télécharger et exécuter mon projet dessus?

totymedli
la source
1
Cela m'intéresse aussi, avez-vous trouvé celui qui fonctionne bien avec l' IDE Arduino ? c'est-à-dire qu'il est détecté par l'EDI comme s'il s'agissait d'un tableau, avec toutes ses fonctionnalités.
rraallvv

Réponses:

127

Il existe toute une série de simulateurs Arduino, dont beaucoup sont gratuits et certains produits payants.

  • L' environnement de développement CodeBlocks Arduino comprend un simulateur Arduino gratuit, toujours en cours de développement mais fonctionnel.
  • Simuino simule les broches Arduino Uno et Mega. Ce n'est pas un simulateur réaliste, mais cela fonctionne.
  • Le simulateur Arduino basé sur Python est une autre option, qui fonctionne bien avec l'IDE officiel
  • Le simulateur Virtronics pour Arduino semble prometteur, mais je ne vois pas pourquoi je payerais 14,99 $ pour cela, alors que je pourrais acheter un ou plusieurs clones Arduino réels à ce prix.

Si vous effectuez une recherche, de nombreux autres simulateurs Arduino sont disponibles. De nouveaux simulateurs sont annoncés, voire cofinancés, tout le temps.

Anindo Ghosh
la source
10
notez que ce ne sont pas des émulateurs mais des simulateurs . La différence la plus importante est qu’il n’exécute pas le code sur une machine virtuelle AVR (comme ce que fait qemu ), mais lie les fonctions Arduino au code natif. Donc, fondamentalement, ils ne pourront pas exécuter de commandes AVR natives et le comportement d’enregistrement / minuterie ne sera pas le même que sur du matériel AVR réel. Voyez la différence bien expliquée dans cette réponse . Il est cependant théoriquement possible d'émuler le code Arduino Due avec qemu .
Zmo
5
Vous "ne voyez pas pourquoi [quelqu'un] paierait 14,99 $ pour cela, alors que [quelqu'un] pourrait acheter un ou plusieurs clones Arduino réels à ce prix"? Je peux vous dire pourquoi: parce que le matériel ne dispose pas d'un débogueur intégré avec les fonctionnalités pouvant être fournies par un simulateur.
R. Martinho Fernandes
8
Le simulateur Arduino a piqué mon intérêt, mais ne semble malheureusement pas avoir de fichiers le concernant sur le site sourceforge. Est-ce que quelque chose me manque ou est-ce devenu obsolète depuis que vous avez écrit votre réponse?
Greenonline
Comme indiqué dans le commentaire ci-dessus, le site de forge source du simulateur arduino ne contient aucun fichier. Existe-t-il un site Web ou existe-t-il un autre simulateur qui fonctionne bien sous mac, avec IDE officiel?
gordanvij
4
Simuino est terrible, peu professionnelle et inutile. Ils n'ont aucune idée de comment coder. Arduino Simulator n'a pas de communiqués. CodeBlocks est uniquement sous Windows. Le simulateur pour Arduino n'est pas open-source.
dhchdhd
81

J'aime utiliser circuits.io aka TinkerCAD pour cela.

Il est basé sur le cloud et présente quelques fonctionnalités intéressantes, notamment la conception de circuits imprimés et la collaboration.

IMO, la simulation et les capacités Arduino sont impressionnantes et intuitives.

Akellyirl
la source
3
Il est très agréable et propre et ses fonctionnalités de base sont vraiment impressionnantes, faciles à utiliser et puissantes. Cependant, de nombreuses parties communes (y compris les capteurs LCD et de température) ne sont pas encore prises en charge. Je doute que vous puissiez tester autre chose que des designs très basiques à ce stade. J'espère que cela s'améliorera avec le temps.
Suma
Je l'ai essayé rapidement et l'ai trouvé très impressionnant pour un produit gratuit. Je ne connais pas ses limites en termes de réalisme de la simulation, mais l'éditeur est très sympathique et il suffit de placer une led dans le code approprié, créé automatiquement, avec le code pin correct et une boucle clignotante!
Heltonbiker
même mon choix serait 123d mais mon seul reproche à propos de ce site est qu'ils n'ajoutent pas de nouveaux composants. Ce serait vraiment bien s'ils pouvaient avoir de nouveaux composants sur leur liste
KD.
2
La partie laboratoires électroniques du site circuits.io a été transférée sur tinkercad.com , où vous pouvez la trouver sous circuits .
SiggyF
1
Je l'ai édité et mis à jour les liens.
sa_leinad
40

Il existe de nombreuses options dans le monde des simulateurs électroniques, mais circuits.io, alias TinkerCAD, est probablement le plus polyvalent du marché.

  • Vous pouvez composer votre circuit sur une planche à pain virtuelle qui ressemble à la réalité.
  • Vous pouvez réellement regarder une LED clignoter ou appuyer sur un bouton pendant la simulation en temps réel plutôt que de vous débattre avec des formes d'onde abstraites.
  • Vous pouvez combiner des appareils numériques tels qu'une minuterie 555 ou des registres à décalage avec des composants analogiques (interactifs) tels que des résistances et des voyants.
  • Vous pouvez programmer un Arduino et simuler le microcontrôleur en même temps que votre circuit analogique.
  • Vous pouvez déboguer un Arduino: lorsque le simulateur atteint votre point d'arrêt, la simulation est suspendue et vous pouvez facilement vérifier chaque variable de votre code et chaque tension ou courant de votre circuit.
  • Vous pouvez utiliser et observer différents protocoles de communication tels que UART, I2C et SPI.
  • Vous pouvez mettre en pause la simulation au milieu d'une séquence I2C en insérant un point d'arrêt dans le code du pilote (par exemple, routine de service d'interruption pour les événements I2C).
  • C'est gratuit!

Exemple

Ceci est un exemple de circuit comportant une télécommande IR et un écran LCD.

Avertissement: Nous sommes les fabricants de 123D Circuits

Circuits 123D
la source
1
Comment joue-t-il avec l' IDE Arduino ? serait-il disponible pour flasher, déboguer, etc.?
Rraallvv
14

Sachez qu'aucun simulateur ne reproduira des situations réelles. Le forum Arduino a publié de nombreux articles sur les problèmes de code ou d’électronique, qui se révèlent être quelque chose de subtil, tels que:

  • Problèmes de timing
  • Conditions de course (événements liés / dépendants ne se produisant pas toujours dans le même ordre)
  • Niveaux de tension, par exemple. broches d'entrée flottantes
  • Moteurs d'attaque qui chutent suffisamment la tension Arduino pour la réinitialiser
  • Ne pas avoir de condensateurs de découplage
  • Les broches d'entrée sont dans un état "non défini" (par exemple, 2,5V sur une broche où 2 V ou moins est BAS, et 3 V ou plus est HAUT)
  • Problèmes avec les gestionnaires d'interruption, tels que des variables non déclarées volatiles
  • Pointes de tension dues à l'absence de diodes de retour sur les moteurs
  • Le processeur réinitialise une fois plus de 10 voyants allumés, car la consommation actuelle dépasse la quantité fournie par le matériel.
  • Les gestionnaires d’interruption prenant 10 µS traitent une interruption lorsque 9 µS seulement sont disponibles.

De par leur nature, les simulateurs ne peuvent pas reproduire tout cela. Même s’ils le pouvaient, envisageriez-vous d’activer l’option «insérer du bruit aléatoire provenant des moteurs»?


Pour vous préparer à l’arrivée du tableau, téléchargez l’EDI et lancez la programmation. Vous pouvez obtenir des bibliothèques installées, écrire du code sans erreurs de syntaxe, les organiser parfaitement et être globalement prêtes pour le grand jour lorsque le matériel est entre vos mains.


Amusez-vous et profitez de l'expérience avec votre Arduino!

Nick Gammon
la source
13

Vous pouvez utiliser Yenka (gratuit pour un usage domestique) pour simuler des cartes Arduino, PIX, PIXACE et autres avec des E / S numériques, analogiques et série. Il fournit de nombreux composants et exemples de projets.

Capture d'écran:

Simulation de Yenka Arduino

niutech
la source
Peut-il être programmé, débogué à partir de l' IDE Arduino ?
Rraallvv
12

Oui, vous pouvez essayer d’utiliser Proteus ISIS pour simuler votre code ...

Pour une émulation complète de Arduino, il existe un programme de shareware appelé VBB (Virtual BreadBoard) , je l’ai essayé aussi et c’était bien.

Edit: Vous pouvez consulter mon tutoriel détaillé ici sur la façon de simuler sur Proteus ISIS

Ahmed Hamdy
la source
9

Je crois que ce site Web contient une liste d'émulateurs et de simulateurs ainsi que leur prix et leur disponibilité.

Mise à jour:

Comme certains utilisateurs ont mentionné la présence de liens cassés sur ce site Web, voici une sélection d'émulateurs que j'ai trouvés. Notez que certaines descriptions peuvent avoir été extraites du lien mentionné:

  • Emulino : est un logiciel Linux open source en développement précoce qui émule des MCU spécifiques à Arduino.

  • Emulare : est un émulateur matériel à usage général. Son objectif est de fournir une interface centrale permettant de créer des simulations électroniques pour le développement de logiciels embarqués. Emulare se concentre actuellement sur la gamme de microcontrôleurs ATMega (Arduino UNO dispose du processeur ATMega).

  • SimAVR : est un nouveau simulateur AVR pour Linux ou toute plate-forme utilisant avr-gcc. Le simulateur charge directement les fichiers ELF. Il existe même un moyen de spécifier des paramètres de simulation directement dans le code émulé à l'aide d'une section .elf. Il prend en charge l’émulation de nombreux processeurs ATMega et mentionne qu’il est facile d’en ajouter de nouveaux.

  • Amtel Studio : Cela ne semble pas mentionner le terme émulation, mais c'est un IDE sophistiqué pour déboguer votre code pour de nombreuses plateformes spécialement Arduino. Atmel Studio 7 permet d'importer en un clic des projets créés dans l'environnement de développement Arduino. Votre esquisse, y compris les bibliothèques auxquelles elle fait référence, sera importée dans Studio 7 en tant que projet C ++. Une fois importé, vous pouvez exploiter toutes les fonctionnalités de Studio 7 pour affiner et déboguer votre conception. Atmel Studio 7 prend entièrement en charge le puissant débogueur intégré sur la carte Arduino Zero. Pour les autres cartes Arduino, des adaptateurs de blindage exposant les connecteurs de débogage sont disponibles, ou passez à l'une des nombreuses cartes Xplained-Mini / PRO disponibles pour tirer pleinement parti de l'écosystème Atmel HW.

Vous pouvez toujours utiliser des simulateurs tels que EasyEDA pour tester votre code et, dans la plupart des cas, l'exécuter sur l'appareil. Notez toutefois que, compte tenu de la nature des composants électroniques, vous devrez peut-être utiliser des résistances externes, des condensateurs, etc. pour obtenir les résultats escomptés.

Aaron Azhari
la source
Link répond seulement que ce n'est pas une bonne chose ici car ils seront inutiles lorsque le site lié tombera en panne. Veuillez rédiger un résumé et vous assurer également que votre réponse ajoute de la valeur et ne se limite pas à répéter celles que nous avons déjà.
Totymedli
Je suis d'accord avec @totymedli - si ce lien disparaît, la réponse devient inutile. Veuillez résumer, au moins, les émulateurs mentionnés et le prix actuel. Vous pouvez commencer les lignes avec un astérisque pour créer des points, si cela vous aide.
Nick Gammon
7

Virtualbreadboard a une nouvelle édition VBB4Arduino 'Two Arduino' qui comprend à la fois un émulateur JVM Arduino ET un simulateur de jeu d'instructions AVR avec des exemples qui couvrent la quasi-totalité des exemples de distribution Arduino et un ensemble de périphériques - écrans LCD, WS2812 Neo LEDS, moteurs, serveurs , Analyseur logique et plus.

http://www.virtualbreadboard.com

Disclaimer: Je suis l'auteur de Virtual Breadboard

James Caska
la source
6

Essayez Simulator pour Arduino - c’est le meilleur, mais nous sommes biaisés car nous faisons partie de l’équipe de développement. Tout le monde ne veut pas payer 19,99 $, bien que près de 5 000 utilisateurs d’Arduino en aient eu ces dernières années. Il existe une version gratuite de Simulator for Arduino qui dure 45 jours ou 100 charges d’esquisse et 200 lignes maximum. Essayez ceci et achetez ensuite si vous pouvez vous le permettre et / ou si cela semble en valoir la peine.

S'il y a quelque chose qui ne va pas ou qui pourrait être amélioré, dites-le-nous - tout le monde le sait et le fait, c'est pourquoi Simulator for Arduino a été construit à 99% sur la base d'idées d'utilisateurs et de rapports de bugs.

En outre, Proteus est le seul autre programme que nous avons essayé et dont la qualité est proche. Il s’agit d’un studio de conception de circuits imprimés complet qui semble très coûteux - c’est-à-dire bien plus que 20 $. Et nous prévoyons d'ignorer la demande récente d'un utilisateur d'augmenter le prix à 200 $.

Virtronics
la source
5

Vous pouvez par exemple utiliser mon simulateur. Il est particulièrement adapté aux applications de type API, où le multitâche est obtenu par une évaluation cyclique des objets de type circuit interconnectés: minuteries, marqueurs, verrous, oneshots et registres. Vous pouvez également l'utiliser pour simuler votre système contrôlé, comme le montrent les exemples du téléchargement. Il a des capacités de visualisation modestes, peut dessiner des tableaux de bord, et vous permet d'accéder à toutes les variables et de les modifier en temps réel pendant une simulation en cours. Aussi, vous pouvez geler le temps. Lorsque vous êtes satisfait du comportement de votre contrôle, il génère le code C à télécharger sur un Arduino réel.

https://pypi.python.org/pypi/SimPyLC

Jacques de Hooge
la source
1

un moyen de pouvoir écrire mon code et de l'émuler / le tester à l'aide d'un ordinateur de bureau

Si vous voulez parler de "tests unitaires" avec un ordinateur de bureau, je peux vous proposer une bibliothèque que j'ai écrite et qui s'appelle arduino_ci .

Il n'offre pas d'émulation. Vous exprimeriez vos tests en code. Par exemple, voici un test extrait de la documentation de référence qui valide les données écrites sur un port:

unittest(pin_history)
{
  GodmodeState* state = GODMODE();
  int myPin = 3;
  state->reset();            // pin will start LOW
  digitalWrite(myPin, HIGH);
  digitalWrite(myPin, LOW);
  digitalWrite(myPin, LOW);
  digitalWrite(myPin, HIGH);
  digitalWrite(myPin, HIGH);

  // pin history is queued in case we want to analyze it later.
  // we expect 6 values in that queue.
  assertEqual(6, state->digitalPin[1].size());
  bool expected[6] = {LOW, HIGH, LOW, LOW, HIGH, HIGH};
  bool actual[6];

  // convert history queue into an array so we can verify it.
  // we expect to find 6 values: the 5 we set, plus the initial LOW
  // and this is where/how we assert that
  int numMoved = state->digitalPin[myPin].toArray(actual, 6);
  assertEqual(6, numMoved);

  // verify each element
  for (int i = 0; i < 6; ++i) {
    assertEqual(expected[i], actual[i]);
  }
}

En pratique, vous n'appelleriez probablement pas les digitalWritefonctions directement. Vous appelleriez une fonction dans votre bibliothèque, puis vérifiez que "l'état du monde" (représenté ici par la GODMODEconstruction) correspond à ce que vous attendiez de votre bibliothèque.

Ian
la source
0

Oui, vous le pouvez et assez facilement. Il existe une merveilleuse simulation en ligne (totalement gratuite) appelée TinkerCAD . Il offre une excellente simulation de carte d’appareil, avec des composants tels que des transistors, des LED, des circuits intégrés et Arduino. Vous pouvez programmer l'Arduino et tout exécuter dans une simulation en direct comprenant des entrées interactives (boutons-poussoirs, commutateurs DIP, etc.).


[Éditer: le texte suivant fait référence à une fonctionnalité qui a été déplacée vers Circuits.io , à savoir Eagle PCB ]

Ce n'est pas tout. Il comprend également, dans un onglet séparé, des schémas pour votre circuit et un autre onglet pour la conception de circuits imprimés de votre circuit de carte mère! Ou bien, vous pouvez créer vos schémas à partir de zéro et votre circuit imprimé à partir de là.

Vous pouvez avoir vos conceptions de circuit faites et vous pouvez les acheter. Vous pouvez faire tout cela dans circuits.io, et vous ne risquez pas de gâcher votre Arduino. Il comporte également des indicateurs d’avertissement dans la simulation (par exemple, si vous n’avez pas utilisé suffisamment de résistance sur une LED ou sur un CI).

I. Golsby
la source