mardi 29 décembre 2015

La suite ...

Bon ... après cette flopée d'articles de lancement, on va retourner dans le code et les composants ...

Au programme :
(oui, j'ai un tas de vieux machins dans mes cartons ...)

Ding dong ...

Jusqu'à présent, tous les articles que j'ai écrit n'étaient qu'un résumé des épisodes précédents.
J'ai zappé pas mal d'épisodes (j'y reviendrai peut être quand je les ressortirai du placard), mais ce qui m'a finalement décidé à me lancer dans ce blog, c'était la réalisation sur laquelle je planche depuis un bon moment, et qui s'est enfin terminée aujourd'hui.

Il y a quelques mois, la sonnette de ma porte d'entrée s'est mise à ne plus fonctionner. Après vérification, les piles étaient nazes alors qu'elles n'étaient là que depuis quelques semaines.

Du coup, je me suis lancé dans la réalisation de ma propre sonnette de porte, musicale, à base d'ATtiny, puisqu'il parait que ça consomme rien.

J'en ai ch... pendant je sais pas combien de soirées, pour arriver à un résultat qui semble pas mal, même si je suis frustré sur un point.

Tout l'historique est détaillé sur Google Drive, et les sources sont sur GitHub, mais en résumé :

Le premier proto qui commençait à ressembler à quelque chose, c'était ça:

Mais le volume sonore était pas suffisant.

J'ai alors essayé la librairie toneAC mais dès que je voulais réduire le volume (pour avoir des notes accentuées) le son était affreusement déformé.

J'ai finalement fait un mix entre la solution que j'avais tentée au début et celle de toneAC, avec un paquet de transistors entre le tiny et le haut parleur.
Le résultat était ce que je voulais en qualité, mais le volume était très bas, sans que je comprenne pourquoi.

Finalement, un composant "pont en H" a résolu ce dernier problème, mais je ne sais toujours pas pourquoi la version "maison" ne marchait pas.

Bref, ce montage :
avec ce code m'a permis d'arriver à cette platine :

dans cette boite :

Le tout est monté sur ma porte depuis ce matin ... y'a plus qu'à voir combien de temps tient la pile ...

l'AT Tiny

Après avoir pas mal fouiné dans les mécanismes des timers, interruptions et autre ADC, je suis tombé sur des articles qui parlait de l'ATtiny, qui est un micro controleur similaire à celui qu'on trouve dans les Arduino, mais en plus petit, et moins cher.
Ça permet aussi de faire des montages sans toute la mécanique autour pour le port série, l'alimentation ... donc de consommer beaucoup moins.

Pour s'en servir, il faut déjà de quoi le programmer, et pour ça, y'a des "how to" sur internet pour utiliser un Arduino comme programmateur de Tiny.

Mon premier proto de programmateur était sur breadboard pour vérifier si ça marche :
Sur la breadboard de droite, le Tiny est planqué au milieu des câbles ...

Ce qui est particulièrement pénible, c'est qu'il faut déplacer le Tiny après  chaque upload pour tester le résultat.
Une version soudée du programmateur permet déjà d'avoir moins de fils partout, tout en permettant de l'utiliser comme un "shield arduino" :
On place le tiny à droite pour le programmer, et à gauche pour tester : le + et le - sont cablés, le reste la seconde rangée de connecteurs permet s'y mettre des cables.

Bon ok, mais à quoi ça sert un Tiny ? c'est l'objet du prochain article ...

Les guirlandes

Version 2014

Lors de l'année scolaire 2014-2015, j'ai co-animé un "club robotique" dans un collège.
Le titre est pompeux, l'idée étant d'aborder des notions de base de la programmation et de les mettre en pratique sur des vrais objets pour que ça soit plus ludique.
Là aussi, les idées, y'en a plein, mais la réalisation demande du temps.

L'un des chantiers auxquels on s'est attaqué a été la simulation, puis la réalisation "en vrai", d'une guirlande multicolore, à base d'arduino et de "LED strip" (passé de 22 à 16€ entre temps ..)

Pour la simulation, on a utilisé Scratch : voila le résultat
Pour la version "en vrai", je me suis attaqué à un convertisseur de "projet scratch" vers "C arduino".
Le résultat n'est pas très montrable, et de toutes façons périmé, mais ça marchait pas mal.

De mon coté, pour tester tout ça, je m'étais acheté la même "LED strip" et j'y ai ajouté une guirlande "classique", pour arriver à une déco de noël plutôt sympa :

Le code est sur GitHub

Version 2015

En parallèle de tout ça, l'autre animateur du club collège a pas mal potassé MakeBlock. On y croise notamment MBlock : un fork de Scratch qui permet de controler leur carte, ou un Arduino classique, mais aussi de convertir un projet MBlock en code Arduino (c'est pour ça que je disais que mon convertisseur n'était plus d'actualité).
On a donc reprit l'idée de la guirlande pour l'année scolaire 2015-2016, mais avec MBlock, et en ce payant le luxe d'utiliser un Yun afin de controler la guirlande via le wifi :

l'IDE Arduino, c'est bien, mais ...

L'idée initiale

Quand on passe ses journées de boulot à coder et qu'on a quelques années d'usage intensif d'Emacs puis d'Éclipse, l'environnement de développement Arduino, c'est bien gentil, mais on s'y sent un peu à l'étroit ...

Un autre point un peu pénible, c'est la console série, et le fait qu'elle dégage à chaque upload du code.

Du coup, je me suis assez rapidement penché sur la possibilité d'éditer et compiler depuis Éclipse mais aussi de dialoguer avec le port série de façon un peu plus confortable.

Le résultat est assez fouilli, et il faudrait y faire le ménage, mais si ça botte des gens, voila quelques explications.

Éclipse

Déjà, une petite copie d'écran, pour prouver que ça existe en vrai :-)
  • À gauche, les projets avec les fichiers sources
  • Au milieu le source de mon projet de sonnette (j'y reviendrai ...)
  • À droite, les constantes, variables et fonctions qui y sont définies, pour naviguer dans le code
  • En bas, le résultat d'une compilation.
On a la coloration syntaxique, l'autocomplétion, et on peut préciser la cible (Uno, Mega, Tiny ...) afin de mettre en valeur le code selon les "define".
Bref, un vrai IDE quoi :-)

La console série

À coté de ça, je me suis lancé dans un projet "ArdDude", qui contient de quoi appeler "avrdude" (l'outil pour uploader un code vers l'arduino) et une console série.
L'intérêt, c'est qu'on peut lui passer en argument un binaire à surveiller : dès que ce fichier est modifié, on lance l'upload et on reconnecte le port série.
Ainsi, dès qu'on lance une compilation depuis Éclipse, le résultat est envoyé à l'arduino, et le console redevient disponible juste après.
En plus, la console permet d'afficher/saisir de l'hexa et d'avoir un historique de la saisie.

Comment ça marche

Pour compiler en dehors de l'IDE Arduino, j'avais commencé par créer un projet "ArduinoCore" qui contenait les "includes" de l'environnement arduino, et des Makefiles en conséquence.
Depuis, j'ai refondu tout ça afin de l'intégrer à mon projet ArdDude
L'intéret, c'est qu'arddude doit utiliser des classes de l'environnement Arduino pour déterminer certaines choses. Les même classes permettent de parcourir les fichiers de config qui précisent comment effectuer chaque étape de compilation.
C'est donc dans ce projet qu'il y a des Makefile pour gérer toute cette tambouille.

Pour créer un projet Éclipse qui utilise tout ça, le mode d'emploi est ici

Hope this helps ...

Un an plus tard ...

Ce qui est sympa avec l'arduino, c'est que ça donne plein d'idées. Mais ça donne pas forcement plus de temps pour les réaliser :-(

Quand on est une quiche en électronique et qu'on a un certain nombre de choses à faire à coté, les idées mettent beaucoup de temps à passer au stade de réalisation, même comme simple prototype.

Bref, c'est à peu près un an plus tard que j'ai réussi à faire un premier proto de "air banner" ou "persistance of vision" :

Alors bon .. on était très très loin de ce qu'on trouve sur youtube, mais là encore, l'idée c'était d'apprendre.

Si vraiment vous voulez en savoir plus, voila le résumé de l'histoire, une vidéo (affreuse car l'effet stroboscopique rend le truc incompréhensible), les sources et le schéma

Mes débuts ...

Je me suis fait offrir un Arduino pour les 40 balais ... J'ai passé pas mal de temps de découvrir les bases, surtout coté électronique.

Ma première réalisation (au delà des variantes de "blink") était un métronome.

Voila une explication que  j'avais partagée à l'époque (fin 2011) :
Les 5 loupiottes en croix permettent de battre la mesure à 2, 3 ou 4 temps et de marquer les croches avec la led centrale
Les 3 boutons à gauche permettent de ralentir/accélérer le tempo et changer de mode (2, 3, 4 temps; binaire, ternaire)
Bref, un gadget complètement inutile dans l'état (il fait plus mad max que chopin ...), mais au moins j'ai appris plein de trucs
 Le résultat :

Le code était planqué dans un coin, je viens de le poser sur GitHub

C'est parti ...

Depuis le temps que je me dis qu'il faudrait que je mette dans un coin d'internet l'état de mes cogitations intenses et arduinesques ... je me lance.

En plus, une de mes connaissances m'a dit "tu devrais faire un blog, j'suis sur que ça intéresserait des gens". Et moi, naïf comme je suis, j'ai eu la prétention de le croire ...

Bref, quelques infos en vrac histoire de savoir où vous êtes tombés :
  • Qui suis-je ?
    Je suis informaticien. Plus précisement développeur, depuis ... un certain nombre d'années (genre à avoir fait de l'assembleur sur Z80 pour vous situer l'époque)
  • Pourquoi ce blog ?
    Je me suis mis à bricoler sur Arduino il y a quelques temps, mais comme je débute en électronique, y'a un paquet de trucs sur lesquels j'ai du mal. Alors quand j'arrive à faire un truc qui marche, j'ai envie de le hurler au cyber_monde :-)
  • Pourquoi ce titre ?
    Parce que je bricole dans un "bureau" qui est en fait un placard aménagé (celui de la photo) et que mon surnom, c'est Pif, depuis ... longtemps.
Voila ... les présentations sont faites.
Je ne vais surement pas passer mes nuits sur ce blog, il sera mis à jour de façon très aléatoire.

Je vais commencer par quelques articles histoire de rassembler mes expériences des quelques années précédentes et on verra au fil des autres réalisations.

À suivre ...