LOCODUINO

Aide
Forum de discussion
Dépôt GIT Locoduino
Flux RSS

dimanche 23 juin 2024

Visiteurs connectés : 58

Débuter en Arduino sans Arduino ! (2)

Le simulateur Wokwi

.
Par : Christian

DIFFICULTÉ :

Dans le premier article de la série, nous avons décrit le simulateur d’Arduino appelé Tinkercad. Dans cet article, nous allons décrire le simulateur Wokwi. Ces deux simulateurs sont complémentaires ; certains montages sont réalisables avec l’un et pas avec l’autre, aussi il est bon de connaître et d’utiliser les deux simulateurs en fonction de ses besoins.

<

Article mis à jour le 9 décembre 2023 pour indiquer comment changer la valeur d’une résistance avec le nouveau menu contextuel.

Présentation de Wokwi

Tout comme Tinkercad, Wokwi est un simulateur d’Arduino accessible directement en ligne par une page internet. Vous pouvez créer un montage électronique conçu autour d’un microcontrôleur ou d’une carte à base de microcontrôleur, comme les cartes Arduino ou ESP dont on parle tant sur LOCODUINO. Et bien évidemment, vous pouvez écrire un programme qui fera fonctionner le microcontrôleur ou la carte. Si vous avez lu le premier article, vous avez compris que ces simulateurs permettent de mettre au point un montage sans avoir à attendre de recevoir les composants électroniques, solution idéale pour un débutant qui veut se lancer sans avoir à investir dans du matériel tant qu’il n’est pas certain que ça lui plaira.

Avantages et inconvénients de Wokwi

L’argumentaire est pratiquement le même que celui développé pour Tinkercad, avec quelques petites différences. À la fin de l’article, nous ferons une comparaison des deux simulateurs.

Parmi les avantages de Wokwi, voici ce qui a retenu notre attention :

  • Il n’y a rien à installer sur l’ordinateur, ni logiciel, ni driver.
  • Possibilité de choisir la langue de l’interface.
  • Les projets développés sont accessibles depuis n’importe où. Lors des journées pluvieuses de vos vacances, vous pouvez faire de l’Arduino sans avoir à emporter du matériel.
  • Il n’y a aucun composant électronique à acheter puisque les projets ne sont que virtuels ; une fois votre montage au point, vous pourrez le refaire avec de vrais composants.
  • Il n’y a aucun risque de détruire un composant ou une carte, ce qui est plutôt un bon argument quand on débute (voir tout de même l’avertissement ci-dessous).
  • Vous pouvez partager vos projets grâce à un lien que vous pouvez générer.
  • Quand on veut écrire le programme, les fonctions setup et loop sont proposées et il n’y a plus qu’à les compléter, exactement comme le fait l’IDE d’Arduino.
  • Contrairement à Tinkercad, il est possible d’utiliser toutes les bibliothèques accessibles avec le « Gestionnaire de bibliothèques » d’Arduino.

Parmi les inconvénients de Wokwi, voici ce qui nous dérange un peu :

  • La documentation du simulateur n’est qu’en anglais, allemand, portugais et chinois.
  • Vos projets sont stockés dans le cloud, donc sont-ils vraiment confidentiels ?
  • Les composants électroniques sont limités en nombre et parfois, même des composants simples ne sont pas proposés (optocoupleurs par exemple). Néanmoins, la liste des composants proposés est assez riche et permet tout de même de réaliser les exemples d’Arduino (servomoteur, écran à cristaux liquides, etc.).
  • Aucune possibilité de créer un montage qui utilise deux microcontrôleurs ou deux cartes Arduino.
  • Aucune possibilité d’avoir une alimentation en courant séparée proposant d’autres valeurs de tension que celle du montage.
Wokwi, tout comme Tinkercad, n’est qu’un simulateur et à ce titre ne calcule pas forcément tous les courants qui circulent dans les composants électroniques. Un montage qui ne respecterait pas les règles de l’art pourrait fonctionner sur ces simulateurs alors que dans la réalité, les composants seraient surchargés et finiraient par rendre l’âme. Il est donc indispensable de respecter les règles de l’art, comme par exemple, utiliser des résistances pour limiter les courants ou bien amplifier les courants trop faibles pour certains périphériques, et veiller à ne pas créer de courts-circuits dans les alimentations. Vous pouvez acquérir des connaissances en électronique en consultant le cours d’électronique de LOCODUINO.

Malgré cela, Wokwi reste un outil idéal pour débuter avec Arduino et est utilisable même par des gens confirmés ; personnellement, je l’ai utilisé dans de nombreux montages publiés par LR-Presse ou par LOCODUINO.

Accès à Wokwi

Ouvrez votre navigateur internet et rendez-vous à l’adresse https://wokwi.com/ pour utiliser Wokwi, il vous suffit d’une adresse mail valide. Lorsque vous voulez utiliser Wokwi, cliquez sur le bouton Sign in (Sign up) en haut à droite, puis choisissez l’option EMAIL (Figure 1) pour entrer votre adresse email.

Figure 1
Figure 1

Entrez votre adresse et faites « Continue ». Un lien d’utilisation est envoyé à cette adresse et il vous suffit de cliquer dessus pour accéder à vos projets (Figure 2).

Figure 2
Figure 2

La déconnexion se fait en cliquant sur le petit personnage en haut à droite, puis « Logout » (Figure 3A).

Figure 3A
Figure 3A

La figure 3A montre qu’on peut également utiliser ce menu pour changer la langue de travail avec l’option "Language" : 16 langues sont proposées. Si on choisit le français, les menus sont affichés en français comme le montre la figure 3B. Ce choix est maintenant associé à votre adresse mail et vous le retrouverez à chaque session de travail. Dans la suite de cet article, je continuerai à décrire l’interface en anglais tout en donnant la traduction française qui s’affiche si vous avez choisi cette langue.

Figure 3B
Figure 3B

Présentation de l’interface Wokwi

L’interface est assez conviviale hormis la façon de modifier la valeur d’un composant. Nous allons donc nous contenter de ne décrire que l’essentiel. Pour commencer un projet, il faut cliquer sur « + NEW PROJECT ». Une nouvelle fenêtre s’ouvre pour vous proposer un choix de composants à microcontrôleur (Figure 4).

Figure 4
Figure 4

Comme vous pouvez le constater, le choix est bien plus vaste qu’avec Tinkercad et il est possible d’utiliser des cartes Arduino, ESP, Nucleo, Raspberry, etc. Hélas, seul le microcontrôleur ATtiny85 est proposé alors qu’un ATtiny84 serait bien utile avec son nombre de sorties plus élevées.

Pour continuer la description de Wokwi, je choisis une carte Arduino Uno. La figure 5 montre alors l’interface de travail.

Figure 5
Figure 5

La partie gauche est réservée à votre programme (software), la partie droite à votre montage (hardware). Comme vous le constatez, les fonctions setup et loop sont proposées vides comme avec l’IDE. Vous pouvez bien-sûr les sélectionner pour les supprimer afin de faire un copier-coller d’un programme récupéré d’une autre source (voir à ce sujet l’article Comment utiliser Arduino sans apprendre à programmer ?).

L’onglet appelé « diagram.json » donne la description du montage électronique avec les connexions entre composants. C’est dans cet onglet qu’on peut changer les caractéristiques d’un composant (valeur de résistance, couleur de LED) mais il existe une façon plus simple de faire dont nous en reparlerons un peu plus loin. La figure 6 montre cet onglet et pour l’instant, il n’y a pas grand-chose puisque seule la carte Uno constitue le montage et elle n’est reliée à rien.

Figure 6
Figure 6

L’onglet d’à côté permet d’installer les bibliothèques requises par le programme de votre montage, comme le montre la figure 7. Nous y reviendrons en temps utile.

Figure 7
Figure 7

Enfin, le petit triangle à droite nous donne aussi quelques possibilités supplémentaires de travail (Figure 8).

Figure 8
Figure 8

La partie droite de l’espace de travail va vous permettre de construire votre montage à partir des composants proposés. On trouve trois boutons : le vert permet de démarrer la simulation du fonctionnement de votre montage lorsque celui-ci est terminé avec le programme écrit, le bleu permet d’ajouter un composant électronique, le gris permet d’autres options, comme par exemple passer en plein écran (Full screen ou Plein écran) comme le montre la figure 9.

Figure 9
Figure 9

Cette option fait disparaître la partie gauche de l’espace de travail : pour la faire réapparaître, il suffit de sélectionner l’option « Exit full screen ou Sortir du plein écran » du bouton gris.

Nous allons ajouter une LED à notre carte Uno ; pour cela, on clique sur le bouton bleu « Add a new part ou Ajouter un nouveau composant ». Une fenêtre contextuelle s’ouvre pour proposer des composants classés par catégorie (Figure 10). Choisissons la LED en cliquant dessus, tout en remarquant la ligne avec la loupe qui permet d’entrer le nom d’un composant (ou sa référence) pour le trouver plus facilement (s’il existe).

Figure 10
Figure 10

Une LED rouge est apparue sur notre espace de travail. Un glisser-déposer [1] permet de la mettre où on veut par rapport aux autres composants. En cliquant sur la LED, on fait apparaître un menu contextuel qui permet de changer la couleur, ou de l’orienter différemment par effet miroir ou par rotation, comme le montre la figure 11. On peut utiliser la corbeille si on veut supprimer le composant et la croix située à droite pour refermer le menu contextuel. Le point d’interrogation situé près du composant, permet d’accéder à la documentation de Wokwi. Pour repérer les électrodes de la LED, il suffit de mettre le curseur de la souris dessus pour voir apparaître A pour l’anode et C pour la cathode.

Figure 11
Figure 11

Ajoutons une résistance pour limiter le courant dans la LED. La résistance qui apparaît est une résistance de 1000 Ω située horizontalement, qu’on peut déposer où on veut par un glisser-déposer. Si on clique sur la résistance, un menu contextuel apparaît permettant de changer sa valeur et l’unité pour la valeur. Ce menu permet aussi de changer l’orientation, de supprimer la résistance et d’accéder à la documentation de Wokwi avec le point d’interrogation (figure 12).

Figure 12
Figure 12

Une fois un composant sélectionné, un appui sur la touche R du clavier oriente le composant différemment (rotation de 90°) et un glisser-déposer permet de le mettre où on veut. Un appui sur la touche « Suppr » permet de supprimer le composant sélectionné. La figure 13 montre la carte Uno, la LED et la résistance et le fichier « diagram.json » où on voit où est stockée la valeur de la résistance (en surlignage bleu).

Figure 13
Figure 13

Changeons cette valeur pour mettre 330 ; cette fois, notre résistance est bien celle qu’on veut comme le montre la figure 14. Changer la valeur d’une résistance est plus facile avec le menu contextuel, mais si on veut changer la valeur de nombreuses résistances, la modification du fichier « diagram.json » est plus rapide.

Figure 14
Figure 14

Il faut maintenant raccorder les différents composants entre eux. Pour cela, on met le curseur de la souris sur la sortie 13 de la carte Uno, on clique dessus et on clique sur la broche de la résistance : un fil relie la résistance à la carte Uno (Figure 15).

Figure 15
Figure 15

Relions maintenant la sortie GND de la carte Uno à la cathode de la LED. On clique sur la sortie GND puis sur la cathode de la LED : un fil établit la liaison et comme on est parti d’une sortie GND, il est automatiquement de couleur noire (il aurait été rouge si on était parti de la sortie délivrant le 5 V). Relions maintenant l’autre broche de la résistance à l’anode de la LED. Pour changer la couleur d’un fil, il suffit de cliquer sur le fil et de choisir la couleur dans le menu contextuel. Idem si on veut le supprimer. Chaque connexion est notée dans le fichier « diagram.json » (Figure 16).

Figure 16
Figure 16

En cliquant sur un fil, on fait apparaître des points violets qu’on peut déplacer (avec un glisser-déposer) pour créer des coudes à notre fil (Figure 17). On peut aussi, quand on crée une connexion, cliquer à chaque fois qu’on veut créer un coude pour rejoindre un autre composant ; d’ailleurs, les fils ont tendance à aller chercher d’eux-mêmes les connexions possibles. C’est en manipulant que vous obtiendrez les réflexes, mais une fois de plus, l’interface est très conviviale.

Figure 17
Figure 17

Importation du programme

Revenons à l’onglet « sketch.ino » : soit nous écrivons le programme en complétant les fonctions déjà présentes, soit nous importons un programme trouvé sur un autre site (Locoduino par exemple). Pour cela, on sélectionne les fonctions déjà existantes (Figure 18) et on appuie sur la touche « Suppr » du clavier.

Figure 18
Figure 18

Il ne reste que la première ligne du programme qui est vide (Figure 19). C’est ici qu’il faut coller le programme récupéré, par exemple le programme « Blink » des exemples de l’IDE d’Arduino afin de faire clignoter la LED que nous avons connectée à la carte Uno.

Figure 19
Figure 19

Simulation du fonctionnement du montage

Nous avons terminé notre montage et écrit notre programme ; il est temps de voir s’il fonctionne. Pour cela, il suffit d’appuyer sur le bouton vert « Start the simulation ou Démarrer la simulation ». S’il n’y a pas d’erreur dans votre programme, le montage se met à fonctionner : la LED clignote. Le bouton bleu est devenu gris et sert à arrêter la simulation « Stop the simulation ou Stopper la simulation ». Un troisième bouton permet de mettre en pause cette simulation, ce qui fait apparaître l’état des broches de la carte ou du microcontrôleur. Enfin, un compteur à droite affiche le temps qui s’écoule (Figure 20).

Figure 20
Figure 20

Si le programme comporte des erreurs, la simulation ne pourra avoir lieu et un avertissement est affiché. Par exemple, si on change LED_BUILTIN (connue du simulateur) par LED_BUILT non déclaré auparavant, la simulation échoue comme le montre la figure 21. Le message affiché peut suggérer une correction possible, comme ici mettre LED_BUILTIN à la place de LED_BUILT.

Figure 21
Figure 21

Comme on le voit, Wokwi est un outil très puissant pour mettre au point des montages d’électronique programmable. Une fois que la simulation fonctionne, ou peut sauvegarder son montage avec « SAVE ou SAUVEGARDER » et lui donner un nom. Le montage apparaît alors dans la liste de vos projets avec le nom que vous lui avez donné.

Une option intéressante pour ne pas perdre un projet est de le sauvegarder avec l’option "Télécharger le projet en ZIP" (petite flèche vers le bas à côté de la case Sauvegarder). Le fichier ZIP qui apparaît dans les téléchargements, une fois son contenu extrait, vous donne le contenu des différents onglets de votre projet (sketch.ino, diagram.json, libraries.txt et wokwi-project.txt) que vous pouvez stocker sur le disque dur de votre ordinateur ; il suffit alors d’ouvrir un nouveau projet dans Wokwi et de recopier dans l’onglet diagram.json le contenu adéquat pour voir votre montage se reconstituer tout seul. Le programme peut alors être restauré avec le contenu de sketch.ino pour que le montage redevienne fonctionnel (pensez à restaurer les bibliothèques nécessaires s’il y en a). Cette précaution peut vous éviter bien des déboires et ce fichier ZIP vous permet de partager facilement vos projets avec vos amis sans les mettre à la disposition du public.

Les bibliothèques

La figure 22 montre un montage avec un servomoteur ; le programme est une copie de « Sweep », un programme donné dans les exemples dans l’IDE.

Figure 22
Figure 22

Pour que le montage fonctionne, il faut importer la bibliothèque Servo de l’IDE dans le simulateur Wokwi. Pour cela, on clique sur l’onglet « Library Manager » puis sur le bouton ‘+’ (« Add a new library »). Tapez « Servo » sur la ligne de recherche, puis sélectionnez la bibliothèque Servo dans la liste alphabétique déroulante (Figure 23).

Figure 23
Figure 23

Cette fois, la bibliothèque Servo est installée comme le montre la figure 24 ; un nouvel onglet « libraries.txt » est apparu.

Figure 24
Figure 24

Cette fois, la simulation peut fonctionner et le servomoteur fait un va-et-vient comme un balai d’essui-glace. Avec Wokwi, vous pouvez installer toutes les bibliothèques qui sont reconnues par le Gestionnaire de bibliothèques de l’IDE (par exemple la bibliothèque LightEffect que j’ai écrite pour LOCODUINO).

Comment partager ses montages ?

Pour partager vos montages, il vous suffit de cliquer sur la case « SHARE ou PARTAGER » (voir la figure 24). Ceci génère un lien comme le montre la figure 25. Pour copier ce lien dans votre presse-papier, il suffit de cliquer sur la petite icône à droite du lien (« Copy to clipboard ou Copier dans le presse-papier »). Vous pouvez ensuite coller ce lien dans un mail afin de l’envoyer à qui vous voulez ; il suffira à votre correspondant de cliquer sur ce lien pour arriver directement à votre montage et l’essayer en cliquant sur le bouton vert de simulation.

Figure 25
Figure 25

Moniteur série ou traceur

Si votre programme utilise le moniteur série pour afficher des résultats, celui-ci s’ouvre sous le montage lorsque la simulation est lancée. On peut alors passer au traceur en cliquant sur l’icône concernée (celle en vert sombre sur la figure) comme le montre la figure 26 (ici, le calcul de la courbe du sinus par une carte Uno). Les deux autres icônes servent au moniteur série (autoscroll et effacement des données).

Figure 26
Figure 26
Emplacement du moniteur série ou du traceur (ici, la courbe du sinus calculée par une carte Uno)

Cas des montages à base de microcontrôleur

Le simulateur Wokwi alimente de lui-même les circuits intégrés et il n’est pas nécessaire d’ajouter une alimentation stabilisée de laboratoire comme c’était le cas pour Tinkercad. D’ailleurs ce type d’alimentation n’est pas proposé parmi les composants disponibles. C’est un peu troublant car le montage ne ressemble pas tout à fait à ce qu’il faudrait produire avec de vrais composants qui eux ont besoin d’être alimentés. Cela veut dire que lorsqu’on lance la simulation, les broches Vin et GND de chaque circuit intégré reçoivent les bonnes tensions d’alimentation. Les cartes à base de microcontrôleur (Arduino, ESP, etc.) sont aussi alimentées en mode simulation sans qu’on voie pour autant un câble USB se brancher comme c’était le cas pour Tinkercad.

Composants interactifs

Comme avec Tinkercad, vous pouvez interagir avec certains composants ; c’est le cas notamment des boutons poussoirs, des interrupteurs ou des potentiomètres. Pour modifier l’état d’un interrupteur, d’un switch ou d’un bouton poussoir, il suffit de cliquer dessus. Pour régler un potentiomètre, il suffit de faire un glisser-déposer sur le curseur pour le mettre dans la position voulue. Je vous laisse trouver comment utiliser un joystick : ce n’est pas très compliqué non plus. Pour voir cette interactivité, je vous propose de cliquer sur ce montage, reproduit par la figure 27, qui est un clignotant qu’on peut mettre en route avec le bouton poussoir vert, arrêter avec le bouton poussoir rouge et dont on peut régler la fréquence avec le potentiomètre (pensez à passer en mode simulation avant d’essayer). Le programme, assez simple à comprendre, utilise une interruption pour être certain qu’un appui sur le poussoir rouge est bien pris en compte ; autrement, l’utilisation des fonctions delay() obligerait à maintenir le poussoir enfoncé jusqu’à obtenir un résultat.

Figure 27
Figure 27
Un clignotant dont le fonctionnement est commandé par les poussoirs vert ou rouge et dont la fréquence est réglable avec le potentiomètre.

Comparaison Wokwi vs Tinkercad

Comme je l’ai dit, les deux simulateurs sont complémentaires et offrent des possibilités différentes qu’il faut savoir utiliser en fonction de ses besoins. Le principal regret que j’ai pour Wokwi, c’est qu’on ne peut pas créer de montage à deux microcontrôleurs (circuit intégré ou carte) alors que c’était possible avec Tinkercad. De même, il n’y a pas d’instrument de laboratoire (alimentation, oscilloscope, etc.) avec Wokwi excepté un analyseur logique à 8 canaux [2]. Le choix des cartes à base de microcontrôleur est par contre plus évolué chez Wokwi, quant aux composants électroniques, ils sont différents de ceux de Tinkercad (par exemple, on trouve chez Wokwi un écran OLED et pas chez Tinkercad qui propose néanmoins un plus grand choix de circuits intégrés). C’est donc sur la disponibilité des composants que le choix Wokwi vs Tinkercad se fait. Et aussi sur la possibilité d’importer des bibliothèques. Si Tinkercad se contente des bibliothèques de base d’Arduino, il est possible de charger toutes les bibliothèques du monde Arduino si elles sont prises en charge par le Gestionnaire de bibliothèque de l’IDE d’Arduino. Tinkercad et Wokwi proposent le français comme langue pour l’interface. Personnellement, je préfère le dessin des composants chez Wokwi mais c’est une affaire de goût qui n’a rien d’objectif. Tinkercad et Wokwi ne sont que des simulateurs qui ont parfois leurs limites ; bien que les composants existent, il arrive parfois qu’un montage ne fonctionne pas sur l’un et fonctionne sur l’autre, d’où l’intérêt de savoir les utiliser tous les deux.

Conclusion

Les simulateurs d’Arduino peuvent vous permettre de découvrir le monde des cartes à base de microcontrôleur gratuitement et en toute sécurité, sans risquer de cramer des composants. Mais ils permettent aussi de mettre au point un montage parfois plus sophistiqué. Personnellement, je les utilise beaucoup avant de fabriquer un prototype avec de vrais composants. Je vous invite à en faire autant, et à découvrir par vous-même quel sera votre simulateur préféré. J’ai une petite préférence pour Wokwi, mais certains de mes montages ont besoin de Tinkercad alors j’y reviens et je pense que c’est nécessaire de savoir utiliser les deux. Et même si on ne pratique pas régulièrement ces deux logiciels, leur convivialité est telle que les réflexes reviennent très vite. Avec ces deux simulateurs, vous n’avez plus aucune excuse pour ne pas vous aventurer dans le monde d’Arduino.

[1Pointez le curseur de la souris sur l’objet à déplacer, faites un clic gauche en maintenant le bouton de souris enfoncé et déplacez l’objet ; pour le déposer, relâchez le bouton de souris.

[2Voir à ce sujet la partie "Logic Analyser Guide" de la doc du simulateur Wokwi, car cet analyseur permet de voir différents signaux présents sur certaines broches, ce qui facilite le déboguage d’un montage. De plus, cet analyseur génère un fichier lisible dans GTKWave pour analyse.

2 Messages

Réagissez à « Débuter en Arduino sans Arduino ! (2) »

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Rubrique « Atelier »

LOCODUINO, l’Arduino pour le train miniature

Conférence sur Arduino faite à Trainsmania (avril 2017)

LOCODUINO raconté sur la chaîne Aiguillages

Où et comment demander de l’aide ?

Programmer vos Arduino avec un fichier hexadécimal

Du sketch à l’exécutable

Comment utiliser Arduino sans apprendre à programmer ?

Salade de broches

Que peut-on alimenter avec un Arduino

Utiliser les composants CMS

Comment réussir son projet Arduino

LOCODUINO à Fédérail 2017

Démarrer en électronique

Monter une bibliothèque !

Entrées numériques et résistance pull-up (2)

Entrées numériques et résistance pull-up (1)

La compilation d’un projet Arduino

Installer une bibliothèque

Les entrées sorties de l’Arduino

Faire de jolis schémas avec Fritzing

Comment alimenter l’Arduino sans ordinateur ?

Les derniers articles

LOCODUINO raconté sur la chaîne Aiguillages


Dominique

Débuter en Arduino sans Arduino ! (2)


Christian

Où et comment demander de l’aide ?


Christian, Dominique, Jean-Luc, msport, Thierry

Débuter en Arduino sans Arduino ! (1)


Christian

Comment utiliser Arduino sans apprendre à programmer ?


Christian

Programmer vos Arduino avec un fichier hexadécimal


Christian

Du sketch à l’exécutable


Christian

Salade de broches


Thierry

Que peut-on alimenter avec un Arduino


Jean-Luc

La compilation d’un projet Arduino


Thierry

Les articles les plus lus

Les entrées sorties de l’Arduino

Comment alimenter l’Arduino sans ordinateur ?

Entrées numériques et résistance pull-up (1)

Que peut-on alimenter avec un Arduino

Faire de jolis schémas avec Fritzing

Conférence sur Arduino faite à Trainsmania (avril 2017)

Utiliser les composants CMS

Démarrer en électronique

Comment utiliser Arduino sans apprendre à programmer ?

Débuter en Arduino sans Arduino ! (1)