Il y a quelques jours, j'ai décidé de faire l'essai d'Arduino Create. Il s'agit en gros de la version en ligne de l'IDE Arduino: ça vous permet de programmer votre carte à partir de n'importe quel ordinateur sans qu'il soit nécessaire d'installer l'IDE sur l'ordinateur en question. De plus, un espace de stockage permet de conserver vos sketches pour que ces derniers soient également accessibles à partir de n'importe quel ordinateur. Les lecteurs attentifs se souviendront peut-être de mon court article sur Codebender, qui est un outil similaire (ou encore de mbed et MPLAB XPress, qui permettent de programmer respectivement les cartes STM32 Nucleo et les microcontrôleurs PIC).
1) On accède au site d'Arduino Create.
2) On ouvre un compte sur arduino.cc, si on n'en a pas déjà un. S'il vous arrive de publier des questions ou des commentaires sur le forum d'arduino.cc, vous avez déjà ce compte. Sinon, il s'agit de créer un compte, c'est gratuit (bouton "SIGN IN" en haut à droite de la page).
3) J'ignore si ce sera toujours comme ça, mais lorsque vous cliquez sur le bouton "Arduino Web Editor", on vous propose d'inscrire votre nom d'utilisateur et votre adresse email: vous recevrez une invitation (en anglais) par email dans les heures suivantes.
4) Lorsque vous recevez l'email d'invitation, vous cliquez sur le bouton "Join Now!" de cet email pour pouvoir enfin avoir accès à l'outil.
5) Ça nous envoie à un très long texte (toujours en anglais) énumérant les conditions d'utilisation du site. Il faut bien sûr cliquer sur le bouton "Agree".
6) ...ce qui nous retourne à l'écran initial, celui où on demandait de recevoir une invitation par email!
J'en suis là. Je suis coincé dans une boucle infinie dans laquelle ma seule option semble consister à demander qu'on m'envoie l'invitation que j'ai déjà reçue!
Il y a bien une adresse email permettant de signaler les problèmes de connexion (j'ai envoyé un message à cette adresse, bien entendu).
Je suis bien conscient que je suis victime d'une erreur temporaire qui sera probablement rapidement corrigée, mais...entre nous...pourquoi l'inscription à Arduino Create est-elle si compliquée?
Petite mise à jour (3 août 2016): Problème finalement résolu. On m'avait envoyé par erreur une invitation qui avait déjà été utilisée par quelqu'un d'autre. J'aurai donc bientôt l'occasion de vous parler d'Arduino Create d'une façon un peu plus positive.
Yves Pelletier (Twitter, Facebook)
dimanche 31 juillet 2016
jeudi 23 juin 2016
Fabrication d'un anémomètre (Arduino)
L'anémomètre
J'ai construit un anémomètre à coupelles rudimentaire constitué de 3 petits bols de plastique (de forme vaguement hémisphérique) fixés à l'extrémité de 3 légères tiges de bois. L'extrémité opposée des tiges de bois est fixée à un axe de rotation: quelque chose qui tourne facilement (dans mon cas: un ventilateur d'ordinateur n'ayant plus de pales).
Visez la légèreté: celui que j'ai fabriqué ne réagit pas du tout si la brise est trop légère.
Le capteur: un interrupteur reed
L'intérêt de notre montage d'un point de vue électronique, c'est qu'il comportera un capteur nous permettant de déterminer automatiquement la vitesse de rotation. J'aurais pu compter les tours au moyen d'un système optique (un duo LED infrarouge/phototransistor, par exemple). J'ai toutefois opté pour un capteur magnétique (qui demeure immobile), alors qu'un aimant est fixé à une des tiges de l'anémomètre.
Si j'avais eu besoin de mesurer avec précision le champ magnétique causé par l'aimant, j'aurais utilisé comme capteur un magnétomètre numérique (comme le HMC5883L) ou un capteur analogique à effet Hall (comme l'Allegro A1302). Mais pour compter les tours effectués par l'anémomètre, je n'ai besoin que de détecter la présence (ou l'absence) d'un champ magnétique: c'est pourquoi j'ai choisi d'utiliser un interrupteur reed.
L'interrupteur reed est constitué de deux lames conductrices qui entrent en contact uniquement lorsqu'elle se trouvent à l'intérieur d'un champ magnétique suffisamment intense (donc à proximité d'un aimant).
Pas d'aimant à proximité: l'interrupteur reed ne laisse pas circuler le courant
Aimant à proximité: l'interrupteur reed laisse circuler le courant
Ces deux contacts se trouvent à l'intérieur d'un petit tube en verre TRÈS FRAGILE: je m'étais procuré un lot de 5 interrupteurs reed, et j'en ai cassé 3 lors de la réalisation de ce projet!
Le circuit
On branche l'interrupteur reed à l'Arduino de la même façon qu'on brancherait un bouton poussoir. Lorsque l'aimant (qui est fixé à une des tiges de l'anémomètre) passe au-dessus de l'interrupteur reed, la pin 8 de l'Arduino sera soumise à un niveau logique HAUT (5 V), alors qu'elle sera soumise à un niveau logique BAS (0 V) le reste du temps.
Une LED branchée à la pin 13 de l'Arduino (ou simplement la LED qui se trouve déjà sur la carte) s'allumera à chaque passage de l'aimant, ce qui nous aidera à vérifier que tout fonctionne correctement.
Calcul de la vitesse
Le temps écoulé entre deux passages successifs de l'aimant représente la période de révolution de l'anémomètre.
On peu ensuite calculer la vitesse des coupelles; puisqu'elles sont en mouvement circulaire, elle parcourent une distance égale à la circonférence pendant une durée correspondant à la période:
vitesse des coupoles = (2 * pi * rayon)/période
...où le rayon est mesuré de l'axe de rotation jusqu'au centre des coupelles (c'était 15 cm dans mon cas).
S'agit-il de la vitesse du vent? Oui, dans l'hypothèse où les coupelles se déplacent aussi vite que le vent, mais ce n'est malheureusement pas le cas.
Pour obtenir la véritable vitesse du vent, il faut ensuite multiplier le résultat par une fonction d'étalonnage qui dépend de la forme et des dimensions de l'anémomètre et de sa vitesse de rotation! Pour trouver cette fonction, il faudrait donc mesurer le vent au même endroit et au même moment au moyen d'un anémomètre commercial correctement calibré, et produire une courbe de calibration.
Sinon, tout ce que nous mesurons représente une limite inférieure: nous savons que le vent va au moins aussi vite que les coupelles, dont nous connaissons la vitesse.
Un sketch
Voici un sketch qui affiche dans le moniteur série la période de rotation et la vitesse des coupoles.
Pour une utilisation sur une longue période, il sera utile d'emmagasiner nos données, par exemple sur une carte SD, ou grâce à un service en ligne.
Yves Pelletier (Twitter, Facebook)
mardi 14 juin 2016
Récepteur radio FM RDA5807 et Arduino
Aujourd'hui, nous allons "fabriquer" un récepteur radio FM. Pourquoi j'écris "fabriquer" avec des guillemets? Parce que, plutôt que construire notre circuit à partir de composants individuels (transistors, condensateurs, etc), nous allons utiliser un module RDA5807 spécialement conçu à cette fin: le défi consiste donc à envoyer des instructions à ce module au moyen d'un microcontrôleur.
Breakout RDA5807
Le circuit intégré RDA5807 constitue à lui seul un récepteur radio presque complet: il s'agit de l'alimenter, de lui envoyer des instructions par le protocole i2C (pour sélectionner la fréquence de réception, changer le volume, booster les basses,etc) et d'y brancher un casque d'écoute et une antenne, et voilà: votre récepteur FM est fonctionnel.
Il s'agit d'un circuit intégré prenant la forme d'un petit carré dont les côtés mesurent environ 3 mm: pas question de souder ça moi-même! En échange d'une poignée de petite monnaie, je me suis procuré sur eBay un breakout comportant déjà le circuit intégré ainsi qu'un quartz de 33 MHz. Attention: ce breakout (portant la mention "RRD-102 ver 2.01"), également de forme carrée, ne mesure que 1 cm de côté. Ses 10 connecteurs sont trop rapprochés pour pouvoir être directement utilisés sur une breadboard, et vous devrez donc faire preuve d'une certaine dextérité pour effectuer les soudures nécessaires (en ce qui me concerne, ce fut l'étape la plus compliquée de tout le projet).
Connexions
Le breakout est tellement petit qu'il ne comporte même pas l'espace nécessaire à l'identification de ses connecteurs. Un peu de recherche nous permet d'obtenir les informations suivantes:
Bibliothèque Radio
Matthias Hertel a conçu une bibliothèque qui facilite l'utilisation des principaux modules de réception FM: en plus du RDA5807, la bibliothèque supporte également le TEA5767, le SI4703 et le SI4705. Télécharger la bibliothèque.
Une fois la bibliothèque installée, on peu faire un test rapide de notre module radio (et de nos délicates soudures!) en utilisant l'exemple "Test RDA5807M" fourni avec la bibliothèque.
Avant de télécharger le sketch dans votre carte Arduino, prenez soin de remplacer la fréquence de 8930 (89,30 MHz) par une fréquence correspondant à une station de radio facile à capter là où vous êtes.
Le sketch est très simple, mais il permet de constater comment sélectionner la fréquence de réception (setBandFrequency), régler le volume (setVolume), mettre en sourdine (setMute), etc.
Dans mon cas, ce fut la réception parfaite, dès le premier essai.
D'autres exemples fournis avec la bibliothèque permettent de fabriquer des récepteurs plus sophistiqués, avec affichage LCD, etc.
Yves Pelletier (Twitter, Facebook)
Breakout RDA5807
Le circuit intégré RDA5807 constitue à lui seul un récepteur radio presque complet: il s'agit de l'alimenter, de lui envoyer des instructions par le protocole i2C (pour sélectionner la fréquence de réception, changer le volume, booster les basses,etc) et d'y brancher un casque d'écoute et une antenne, et voilà: votre récepteur FM est fonctionnel.
Il s'agit d'un circuit intégré prenant la forme d'un petit carré dont les côtés mesurent environ 3 mm: pas question de souder ça moi-même! En échange d'une poignée de petite monnaie, je me suis procuré sur eBay un breakout comportant déjà le circuit intégré ainsi qu'un quartz de 33 MHz. Attention: ce breakout (portant la mention "RRD-102 ver 2.01"), également de forme carrée, ne mesure que 1 cm de côté. Ses 10 connecteurs sont trop rapprochés pour pouvoir être directement utilisés sur une breadboard, et vous devrez donc faire preuve d'une certaine dextérité pour effectuer les soudures nécessaires (en ce qui me concerne, ce fut l'étape la plus compliquée de tout le projet).
Connexions
Le breakout est tellement petit qu'il ne comporte même pas l'espace nécessaire à l'identification de ses connecteurs. Un peu de recherche nous permet d'obtenir les informations suivantes:
- SDA (Serial Data) s'occupe de l'échange de données avec le microcontrôleur, par le protocole i2c: nous la branchons à la pin A4 de l'Arduino Uno (si vous utilisez un autre modèle d'Arduino, comme le Mega ou le Leonardo, vérifiez quel est le numéro de la pin pour la communication i2c).
- SCK (Serial Clock) assure la bonne synchronisation pendant la communication i2c: nous la branchons à la pin A5 de l'Arduino Uno (encore une fois, ça peut être une autre pin si votre Arduino n'est pas un Uno).
- NC (Not connected): Apparemment, les connecteurs 3, 4 et 9 ne servent à rien!
- Vcc: Pour alimenter notre module, ce connecteur doit être branché à la sortie 3,3 V de l'Arduino.
- GND est branché au GND de l'Arduino.
- LOUT est la sortie audio du côté gauche. Vous pouvez y brancher un casque d'écoute de 32 Ω sans autre amplification.
- ROUT est la sortie audio du côté droit.
- ANT sert à brancher une antenne. Je n'y a rien branché, et la réception était excellente, malgré tout.
Bibliothèque Radio
Matthias Hertel a conçu une bibliothèque qui facilite l'utilisation des principaux modules de réception FM: en plus du RDA5807, la bibliothèque supporte également le TEA5767, le SI4703 et le SI4705. Télécharger la bibliothèque.
Une fois la bibliothèque installée, on peu faire un test rapide de notre module radio (et de nos délicates soudures!) en utilisant l'exemple "Test RDA5807M" fourni avec la bibliothèque.
Avant de télécharger le sketch dans votre carte Arduino, prenez soin de remplacer la fréquence de 8930 (89,30 MHz) par une fréquence correspondant à une station de radio facile à capter là où vous êtes.
Le sketch est très simple, mais il permet de constater comment sélectionner la fréquence de réception (setBandFrequency), régler le volume (setVolume), mettre en sourdine (setMute), etc.
Dans mon cas, ce fut la réception parfaite, dès le premier essai.
D'autres exemples fournis avec la bibliothèque permettent de fabriquer des récepteurs plus sophistiqués, avec affichage LCD, etc.
Yves Pelletier (Twitter, Facebook)
Inscription à :
Articles (Atom)










