Utilisation de solénoïdes et d’un capteur sonore pour animer des aimants avec Blockly Arduino

L’objectif de cet article est de montrer les tests que j’ai réalisés pour essayer d’animer une chaînette avec deux solénoïdes.
La chaînette est constituée de billes aimantées en néodyme de 3 mm achetées chez Banggood (6,50 € les 216 billes).

Billes aimantées en néodyme. Elles se mettent très facilement sous la forme d’une longue chaînette de 65 cm de longueur. Ces billes sont vendues 5,40 chez Banngood (source : banggood.com)

Les solénoïdes ont été achetés chez Bangood (3,40 € chacun).

Solénoïde vendu 3,40 € chez Banggood (source banggood.com)

Après quelques essais rapides, il semble que ces solénoïdes peuvent interagir de manière assez efficace avec la chaînette en néodyme en plaçant les 2 solénoïdes sous la chaînette pendue verticalement (un seul solénoïde peut éventuellement suffire).
L’interaction est suffisante même avec une tension d’alimentation de 5V seulement. J’ai en effet limité la tension d’alimentation à 5 V car avec la tension de 12 V spécifiées pour ces solénoïdes ils chauffent beaucoup. En plus le courant pour 2 solénoïdes est nettement inférieur au 500 mA maximum fourni par l’alimentation en USB d’une carte Arduino.
Pour contrôler l’alimentation des solénoïdes, j’ai utilisé une interface de puissance TB6612FNG achetée 2,80 € chez Bangood.


Pour mon test, je me suis contenté de contrôler 2 états pour chaque solénoïde : alimentation dans le sens + ou alimentation dans le sens – (+5V ou -5V). J’ai choisi d’alimenter les deux solénoïdes en même temps avec des tensions opposées.
J’ai choisi de contrôler l’état des solénoïdes à partir d’un capteur sonore. J’ai utilisé le capteur sonore de chez Grove à 6,50 € chez Gotronic.

capteur sonore de chez Grove à 6,50 € chez Gotronic. Il possède un gain réglable par potentiomètre et fournit une tension analogique redressée image du noveau sonore (source : gotronic.fr)

Dans mon programme (voir ci-dessous) dès que le niveau sonore dépasse un seuil je change d’état. J’ai ajouté un hystérésis et des temporisations pour stabiliser un peu le fonctionnement. Le contrôle à partir d’une musique n’est pas simple : inertie mécanique, rythme de la musique souvent trop rapide, seuils délicats à régler, …
Je donne le lien vers mon programme de test réalisé avec Blockly Arduino (fichier .xml à ouvrir avec Blockly Arduino).
Lien vers un article présentant le logiciel de programmation Blockly Arduino.

Capture Prog principal interface TB6612FNG + capteur sonore V4

Programme principal réalisé avec Blockly Arduino pour contrôler les deux solénoïdes nommés A et B ici. Ils sont alimentés avec une interface TB6612FNG (2 ponts en H). Le niveau sonore est capté par un capteur sonore Grove (Source : LP2I)

Vidéo d’un essai d’animation d’une chaînette en néodyme à l’aide de 2 solénoïdes contrôlés par une carte Arduino et d’un capteur sonore.
Vidéo réalisée par D. Pers le 02/04/2016.
Musique : SYLVER & JOHN MILES

 

Matériel pour enseigner les Sciences de l’Ingénieur

Je rédige actuellement un article de synthèse sur le matériel que j’utilise pour enseigner la Technologie au collège. Le choix de ce matériel s’est fait en tenant compte des contraintes nouvelles pour moi de cet enseignement au collège, mais il s’est aussi fait en prenant en compte mon expérience au lycée (près de vingt an au LP2I) et ma volonté d’essayer d’utiliser les mêmes outils matériels et logiciels au collège et au lycée, quand cela se justifie. Il a été fréquent pour moi de constater qu’un outil trouvé pour un besoin au collège était utilisable au lycée, et réciproquement. J’ai donc décidé de publier ici l’article que j’ai rédigé pour mon blog de la Technologie au collège Jean Macé (à Châtellerault) en essayant de faire les dans les jours qui viennent les modifications et les ajouts liés aux spécificités de l’enseignement des Sciences de l’Ingénieur au lycée.

 

1. Besoins et contraintes

Malgré mon âge (50 ans), cela ne fait que deux ans et demi que j’enseigne la Technologie au collège. J’ai passé beaucoup de temps à chercher et choisir des moyens matériels et logiciels pour permettre à mes élèves de travailler sur les différentes fonctions d’un système pluritechnique, que ce soit au niveau de la chaîne d’information ou de la chaîne d’énergie : capteurs, interfaces de dialogue (boutons, Leds, écrans, …), cartes électroniques pour le traitement programmé de l’information, interfaces de communication (liaisons séries, Bluetooth, …), alimentations (y compris solaires), interfaces de puissance, actionneurs (moteurs, éclairage, …), différents mécanismes (poulies, courroies, engrenages, …), et autres matériels divers (appareils de mesures), …

Exemple simplifié de la chaîne d’information et d’énergie d’un robot aspirateur (Source : Collège Jean Macé)

Les contraintes pour choisir des nouveaux moyens matériels et logiciels sont nombreuses : budget extrêmement réduit, manque de temps pour développer des activités nouvelles, aspects pédagogiques délicats avec des classes hétérogènes, évolution des objectifs avec les nouveaux programmes liés à la réforme, aspects techniques parfois complexes pour le professeur, problèmes d’incompatibilités entre le matériel existant dans l’établissement et le nouveau matériel envisagé, …

L’objectif de cet article est de partager mon expérience personnelle dans cette délicate démarche d’ingénierie pédagogique (comme dirait mon collègue Dominique Bellec).

Continuer la lecture

Utilisation d’un module audio, le DFPlayer Mini mp3 de DFRobot, avec Blockly Arduino

 

Je poursuis mon travail de création de nouveaux blocs pour Blockly Arduino pour utiliser un module audio mp3, un afficheur graphique OLED I2C, des modules Leds RGB avec liaison série, … Ces blocs seront bientôt disponibles en ligne ici :

http://www.technologiescollege.fr/blockly@rduino/?lang=fr&card=dfrobot_romeo

Je commence par présenter ici mes tests d’un module audio, le DFPlayer Mini mp3 de DFRobot.
Wiki dédié à ce module audio par DFRobot :
http://www.dfrobot.com/wiki/index.php/DFPlayer_Mini_SKU:DFR0299

Module audio DFPlayer disponible chez Gotronic :
http://www.gotronic.fr/art-module-mp3-dfr0299-22404.htm

Ou chez Banggood à un prix très intéressant :
http://www.banggood.com/DFPlayer-Mini-MP3-Player-Module-For-Arduino-p-969191.html
encore plus intéressant par 5 chez Banggood :
http://www.banggood.com/5Pcs-DFPlayer-Mini-MP3-Player-Module-For-Arduino-p-981365.html
3,24 € le module le module audio (à partir de 5 modules), sans frais de port chez Banggood (pub), livré sous 10 jours ouvrés !

Module audio DFPlayer Mini MP3 de DFRobot. Très intéressant pour générer du son à partir d’une carte microSD embarquée et d’une carte Arduino, surtout avec les nouveaux blocs de Blockly Arduino (Source : banggood.com)

Module audio DFPlayer Mini MP3 de DFRobot : un lecteur mp3 basé sur un DSP et un ampli audio mono 3W. (Source : banggood.com)

Ce module audio est vraiment petit et ne nécessite aucun composant externe. On intègre facilement une fonction audio à un robot. (Source : dfrobot.com)

C’est un tout petit module facile à mettre en œuvre. Il nécessite juste 3 ou 4 fils : le 5V, la masse (Gnd), une sortie digitale pour gérer une liaison série (transmission de commandes telles que le numéro du fichier mp3 à lire dans la carte microSD embarquée sur le module), et éventuellement une entrée digitale pour savoir quand le module à fini de lire le fichier mp3.

Avec les nouveaux blocs proposés dans Blockly Arduino le câblage par défaut est le suivant. Connecter la broche Rx du module audio à la broche 11 de la carte Arduino (liaison série logicielle pour envoyer des commandes comme la lecture d’un fichier audio stocké sur la carte micro SD en donnant le numéro du fichier). Connecter la broche Busy du module audio à la broche 12 de la carte Arduino pour éventuellement attendre la fin de la lecture en cours. (Source : dfrobot.com)

Avec les nouveaux blocs proposés dans Blockly Arduino le câblage par défaut est le suivant. Connecter la broche Rx du module audio à la broche 11 de la carte Arduino (liaison série logicielle pour envoyer des commandes comme la lecture d’un fichier audio stocké sur la carte micro SD en donnant le numéro du fichier). Connecter la broche Busy du module audio à la broche 12 de la carte Arduino pour éventuellement attendre la fin de la lecture en cours.

Les fichiers mp3 doivent être enregistrés sur la carte micro SD dans un dossier à la racine nommé “mp3”.
Le nom de chaque fichier mp3 doit commencer par un nombre :
0001 Exemple1.mp3
0002 Exemple2.mp3
Pas d’accent dans le nom des fichiers.

Je teste actuellement les nouveaux blocs que j’ai créés pour Blockly Arduino, notamment ceux pour piloter ce module audio DFPlayer Mini MP3 de DFRobot à partir de la bibliothèque fournie par DFRobot :

Lien pour le téléchargement de la librairie à installer impérativement dans le logiciel Arduino :

Librairie DFPlayer library V2.0.

Exemple de programme de test du module audio MP3 avec les 3 nouveaux blocs de Blockly Arduino :

Exemple de programme de test du module audio MP3 avec les 3 nouveaux blocs de Blockly Arduino (Source : Collège Jean Macé)

Exemple de programme de test du module audio MP3 avec les 3 nouveaux blocs de Blockly Arduino (Source : Collège Jean Macé)

 

Utilisation de modules Led RGB WS2812B avec Blockly Arduino

Je poursuis mon travail de création de nouveaux blocs pour Blockly Arduino pour utiliser un module audio mp3, un afficheur graphique OLED I2C, des modules Leds RGB avec liaison série, … Ces blocs seront bientôt disponibles en ligne ici :

http://www.technologiescollege.fr/blockly@rduino/?lang=fr&card=dfrobot_romeo

Je présente ici mes tests du module Led RGB WS2812B disponible à un prix très intéressant :
0,26 € la Led RGB (à partir de 3 lots de 10), sans frais de port chez Banggood (pub), livré sous 10 jours ouvrés !

http://www.banggood.com/10Pcs-DC-5V-3MM-x-10MM-WS2812B-SMD-LED-Board-Built-in-IC-WS2812-p-958213.html

Module Led RGB WS2812B. Puissance max = 0,3W environ (3×18 mA max sous 5V). Taille réelle = 10 mm. (Source : ebay.fr/itm)

Côté soudure du module Led RGB WS2812B. Le connecter sur la gauche à une carte Arduino avec 3 fils : 5V, Gnd et une sortie digitale pour envoyer les données en série (couleur sous forme de 3×8 bits). A gauche on peut facilement relier le module à d’autres modules pour transmettre l’alimentation et la liaison série. La couleur de chaque module peut être pilotée de manière indépendante en envoyant le numéro du module par la liaison série. (Source : ebay.fr/itm)

C’est un petit module très facile à mettre en œuvre. Il nécessite juste 3 fils, comme d’habitude : le 5V, la masse (Gnd), et une sortie digitale pour gérer une liaison série (transmission de la couleur sous forme de 3×8 bits pour les coordonnées RGB). Le courant d’alimentation des Leds est régulé à 3×18 mA maxi par chaque module RGB. On peut très facilement chaîner des modules en conservant la possibilité d’alimenter et de piloter chaque module de manière indépendante à partir des 3 fils connectés au premier module. Avec juste 5 modules chaînés, l’effet wouah est garanti auprès des élèves. Il est à noté que Banggood livre généralement ces modules sous forme de 10 modules à dégrapper. On obtient très facilement deux bandes de 5 avec les sorties en face des entrée (ce qui n’est pas le cas sur la photo sur leur site).

Les modules sont livrés sous forme de grappes facilement dégrappables. Généralement les sorties sont orientées face aux entrées, ce qui n’ets pas le cas sur cette image. (Source : banggood.com)

Je teste actuellement les nouveaux blocs que j’ai créés pour Blockly Arduino, notamment deux nouveaux blocs pour piloter ces modules Led RGB à partir de la bibliothèque fournie par Adafruit qu’il faut installer au préalable dans le logiciel Arduino :

https://www.adafruit.com/products/1655

Extrait d'un programme de test de deux nouveaux blocs pour piloter ces modules Led RGB WS2812B (Source : Collège Jean macé)

Extrait d’un programme de test de deux nouveaux blocs pour piloter ces modules Led RGB WS2812B (Source : Collège Jean macé)

A suivre (en cours de rédaction) !

Blockly Arduino : l’esprit d’Ardublock, sans ses inconvénients !

Mise à jour du 07/09/2016

Cet article date d’il y a huit mois déjà. Il a été vu près de 6 000 fois déjà !
Depuis, Blockly Arduino a bien évolué, grâce notamment au travail remarquable de Sébastien Canet. Même cet été, il n’a pas compté ses heures pour que nous puissions commencer cette année scolaire avec un outil adapté à nos besoins. Il a mis en ligne la version 2.1 le 31/08/2016. Parmi les nouveautés, il y a la possibilité d’uploader en local le programme généré par Blockly Arduino. Le plugin Codebender n’est plus nécessaire.

Pour cette année scolaire 2016/2017 j’ai pour objectif de créer des tutoriels et des exemples utilisables en classe, que je ne manquerai pas de publier dans ce blog.
Je remercie d’avance tous ceux qui accepterons de partager leur travail sur Blockly Arduino pour aider tous ceux qui cherchent de l’aide pour utiliser cet outil. Sans le partage, Blockly Arduino n’existerait pas.
Vous pouvez me contacter à l’adresse suivante :
daniel.pers@ac-poitiers.fr

L’article qui suit n’a pas encore été mis à jour pour tenir compte des évolutions de Blockly Arduino. Merci de votre compréhension.

 

1. Une nouvelle interface graphique développée par Google

Le MIT et Google ont développé Scratch et AppInventor qui ont révolutionné l’enseignement des bases de la programmation. Ces logiciels étaient basés initialement sur une interface graphique très novatrice appelée Openblocs où on assemble des blocs pour générer du code. Openblocs est une application Java qui peut poser problème. Elle est utilisé aussi par Ardublock.

Google a ensuite développé Blockly, sorti en 2013, qui est un outil logiciel avec là encore une interface graphique pour programmer à partir de blocs et générer automatiquement du code. Blockly a été conçu pour être facilement intégrable à des logiciels pédagogiques de programmation graphique. Blockly est aussi conçu pour pouvoir être très configurable et s’adapter aux besoins pédagogiques : on peut facilement créer ses propres blocs, et définir le code qui doit être généré. Blockly est en javascript, il peut donc facilement être intégré à une application web multiplate-forme comme AppInventor 2 (en 2013).

Blockly est libre et est à l’origine aujourd’hui de nombreux logiciels de programmation graphique. Blockly est intéressant pour l’enseignement de l’algorithmie en Mathématiques conformément aux nouveaux programmes du collège comme le montre Patrick Raffinat dans son article : http://revue.sesamath.net/spip.php?article811

Pour programmer des cartes électroniques Arduino, j’utilise Ardublock depuis 2013 car c’est le logiciel qui correspondait le mieux à mes besoins en Technologie au collège mais aussi au lycée en Sciences de l’Ingénieur. Malheureusement Ardublock intègre Openblocs et non Blockly.

 

2. Intégration de Blocly avec Arduino par des enseignants

Parmi les nombreuses applications pédagogiques de Blockly, il y a Blockly Arduino développé depuis 2014 par Sébastien Canet, professeur formateur de Technologie de l’académie de Nantes. Blockly Arduino permet donc de programmer graphiquement avec des blocs et de générer du code pour Arduino, en langage C. La compilation du langage C en code exécutable par une carte Arduino est réalisée par le logiciel Arduino ou par un plugin du navigateur (CodeBender). La version actuelle de Blockly Arduino est opérationnelle et est très intéressante sur le plan pédagogique. Elle apporte de nombreux avantages par rapport à Ardublock, dont le développeur s’est inspiré.

Blockly Arduino est une application web qui ne nécessite donc aucune installation (pas besoin de droits administrateur non plus) et qui fonctionne sur toutes les plate-formes (PC, Mac, Androïd, …).

Exemple de programme simple avec Blockly Arduino utilisant un capteur de collision (logique), un capteur de vide (optique et analogique) , et un servomoteur à rotation continue. L’affichage se fait sur l’écran du PC via le câble USB.

Capteur collision ou vide + Servo rotation continue 150216.zip (version du 15/02/16)

Exemple de programme écrit avec Blockly Arduino. Il utilise un capteur de collision (logique), un capteur de vide (optique et analogique) , et un servomoteur à rotation continue (Source : Collège Jean Macé)

Exemple de programme écrit avec Blockly Arduino. Il utilise un capteur de collision (logique), un capteur de vide (optique et analogique) , et un servomoteur à rotation continue (Source : Collège Jean Macé)

5) Capteur colision ou vide + Servo rot continue 120515 (complet)

Le même programme fait avec Ardublock (Source : Collège Jean Macé)

Blockly Arduino est accessible à partir du lien suivant qu’il faut ouvrir avec Mozila Firefox (32 ou 64 bits) ou Google Chrome (32 bits uniquement) par exemple :

http://www.blockly.technologiescollege.fr/blockly@rduino/?lang=fr
Lien vers un tutoriel

Il est possible également de télécharger le site web de Blockly Arduino (moins de 10Mo) et de le lancer à partir du fichier index.html

Lien vers le logiciel pour un fonctionnement en local :

https://github.com/technologiescollege/Blockly-at-rduino

L’interface graphique de Blockly Arduino :

Menus, boîte à outils et espace de travail de Blockly Arduino (Source : Collège Jean Macé)

Menus (à gauche), boîte à outils (avec blocs “fonctions” ouverts, avec les fonctions utilisées) et l’espace de travail de Blockly Arduino avec un exemple de programme utilisant un capteur analogique et deux moteurs à courant continu. (Source : Collège Jean Macé)

Code Arduino généré par Blockly Arduino (Source : collège Jean Macé)

Code Arduino généré par Blockly Arduino (Source : collège Jean Macé)

Ne pas confondre Blockly Arduino avec Blockly Duino qui est une ancienne version.
Elle a inspiré le développement d’Ardublockly, qui est encore en version béta, mais qui devrait être intéressant également.
Voir une demo en ligne de l’interface d’Ardublockly ici : http://carlosperate.github.io/ardublockly/index.html
Pour une installation fonctionnelle (partiellement car en cours de développement) :
https://github.com/carlosperate/ardublockly
Mon premier essai d’Ardublockly m’a permis de voir notamment une fonction très intéressante, la possibilité de copier une partie d’un programme (sous forme de blocs) et de la coller dans le programme en cours. Cette fonction n’est pas visible dans la démo en ligne qui n’intègre pas les menus.

Continuer la lecture