LogClock & Cuckoo

De Wiki LOGre
Aller à : navigation, rechercher


Encore un projet néo-ringard : le LOGreCuckoo

Actuellement indisponible, le LOGre Cuckoo est en mise à jour.

LOGre Cuckoo - un coucou web 3.0 -

Genèse

Dans la tonne de vieilleries données au LOGre, figuraient deux énormes vumètres (un Voltmètre et un Ampèremètre) et toujours de nombreux vumètres Pekly de tailles plus raisonnables. Ayant déjà le GalvaCuckoo à la maison, il fallait trouver un lieu d'accueil pour ces vumètres destinés à la casse. J'ai donc décidé d'offrir une (autre) horloge au LOGre qui possède déjà une JIX Clock. Combat des technologies : le 19ème siècle contre le 21ème !!

Donc les deux gros galvanomètres seront dédiés aux heures et minutes, que faire d'original pour afficher les secondes ? L'idée retenue est de simuler le mieux possible la rotation d'une trotteuse d'une montre. Ce fut rapidement fait en installant deux galva en tête-bêche, l'un ayant une aiguille tournant dans le sens horaire de 0 à 30 secondes, et l'autre la tête en bas, prenant le relais à la trentième seconde avec une aiguille allant de 30 à 60 secondes !

Une fois l'heure affichée, que pouvait-on faire ? j'ai donc repris l'idée du coucou suisse, agrémenté du carillon de Westminster à midi et de BigBen à minuit. J'ai rajout un carillon de vieille horloge à la demie heure.Et comme j'avais un lecteur de fichiers mp3, je complète les fonctions avec divers modes de diffusion de musique d'ambiance (séquentiel sur un répertoire de 150 morceaux, accès direct à un morceau, jouer Joyeux Anniversaire).

Version finale


Côté avec haut parleur


Un Coucou web 3.0

Pas de bouton de mise à l'heure, pas de boutons pour choisir un mode, régler un volume ... Tout se fait via le web !

Le cœur du coucou est un chip ESP8266 (fournisseur WeMos), qui gère le mouvements des aiguilles des vu-mètres, offre un serveur web, dispose d'un client UDP, intègre le protocole zeroconf 'bonjour'), et un client NTP.

En conséquence, le LOGreCuckoo se connecte automatiquement au réseau wifi du LOGre (via le WifiMAnager), puis synchronise l'horloge temps réel avec un serveur du NIST (aux USA) pour récupérer l'heure exacte et offre un serveur web pour recevoir les commandes des utilisateurs du LOGal.

Cherry on the cake : le soft du LOGreCuckoo est modifiable via le wifi !! Merci à Oliv de m'avoir fait découvrir le mode OTA (Over The Air) pour modifier le programme sans connexion USB.

L'horloge et son soft sont donc un projet ouvert, disponible à tous pour être amélioré, pour autant qu'on ne le laisse pas dans un état pire que celui que je livre aujourd'hui.

Matériel nécessaire

  • un ESP8266 WeMos  : 3,50 € chez AliExpress
  • une horloge temps réel Dallas Semiconductor DS1307 (sauvegardée par batterie) : 0,76 € chez AliExpress
  • un module de lecture de fichiers audio (FN-M16P) : 1,95 € chez AliExpress
  • une carte SD 4GB : 1,78 € chez AliExpress
  • quelques composants : résistances, potentiomètres, diode, switch : 0 € (récupération)

Soit une horloge pour moins de 10 € !!

Transformation des galvanomètres

Petit rappel grâce à wikipedia:

Un galvanomètre à cadre mobile, est constitué d'une bobine montée sur pivot, baignant dans le champ magnétique d'un aimant fixe. S ur cette bobine est fixée l'aiguille de visualisation et un ressort chargé de rappeler l'équipage mobile dans la position indiquant le zéro. La bobine de faible impédance est branchée en série dans le circuit dans lequel circule le courant à mesurer (ou le courant de commande dans mon cas). Le courant, en traversant la bobine, induit dans celle-ci un champ électromagnétique, ce qui provoque un pivotement par répulsion des champs magnétiques. Plus le courant est intense plus la bobine bascule. Il ne fonctionne qu'en courant continu.

Dans le stock donné, je trouve des voltmètres et ampèremètres, donc il faut les adapter pour les faire fonctionner avec les sorties PWM de l'Arduino.

C'est en fait très simple, il faut trouver la bonne valeur de la résistance interne à insérer avant la bobine pour que la valeur 255 (Vcc) de l'analogWrite soit au maximum de l'échelle. Je perce le corps du galva et insère (colle) un micro potentiomètre de 47kohms qui sera réglé in situ.

Restait à imprimer les écrans gradués en H, Mn et Secondes. Merci à Pekly, il y avait des écrans nativement gradués en 15 graduations (donc pour les heures) et en 300 pour les 60 minutes. Avec Pixelmator (photoshop pour Mac), ce fut très simple. Quant à celui des secondes, il était déjà gradué de 0 à 60, il ne restait qu’à imprimer les valeurs et l’unité de mesure !!


Migration d'une horloge de base vers un coucou suisse.

Par rapport à mon premier projet, j'ai opté pour un module mp3 plus petit (FN-M16P Embedded MP3 Audio Module), pilotable via une liaison série pilotée utilisant la librairie DFRobotDFPlayerMini.hde http://www.dfrobot.com. Le module est assez fragile, toutes les commandes doivent être testées, car tout ne fonctionne pas as designed.

Horloge temps réel

Module RTC à base de DS1307 et fonctionnant sur BUS I2C. Avec l'utilisation de la bibliothèque adaptée (Wire.h) et les exemples du playground Arduino, pas de problèmes particuliers. Utilisation de la libraire RtcDS1307.h . Dans le version utilisé, j'ai corrigé un bug pour le set de l'heure dans le RTC.

Fonctionnement

A la première mise sous tension dans un environnement nouveau, le wifi manager du Cuckoo le transforme en point d'accès. Il est donc visible avec le SSID "logre-coucou". Une fois connecté au point d'accès, le wifi manager propose la liste des SSID disponibles (dont le réseau wifi officiel du lieu) et des boutons pour choisir quelle action faire. Il suffit de choisir le SSID du LOGal et de rentrer le mot de passe. Si la fenêtre ne s'ouvre pas, l'URL est 192.168.4.1

L'ESP8266 passe en mode client et se connecte au réseau local.

Il n'y a pas de console, donc pour connaitre l'adresse IP sur le réseau hôte, il faut utiliser un scanner d'adresses IP ou attendre quelques secondes que le Cuckoo soit accessible via son nom de host : logre-coucou.local

Le Cuckoo a continué son cycle de démarrage et l'aiguille des heures affiche différents états (heures) à chaque étape.

Une fois que le cycle de démarrage est fini, le coucou sonne l'heure ronde du moment puis le tictac de l'horloge devient audible !!

  • A chaque heure, le coucou chante autant de fois que l'heure ( feature indispensable pour les non voyants)
  • A midi, c’est le carillon de Westminster (1 fois)
  • A minuit, sonnent les 12 coups de BigBen
  • A chaque demie heure, carillon d'horloge comtoise.

Petite singularité d'affichage, l’horloge va de 1 AM à 13:59 heures et de 2PM à 0:59 AM !! C’est ma norme d'affichage !!

Commandes via le web

On peut piloter le Cuckoo depuis le web:

*    http://logre-coucou.local/   réponse = A que Coucou est vivant!
*    http://logre-coucou.local/mp3?t=yy avec yy = numéro de la piste (< 150) 
*    http://logre-coucou.local/vol?v=xx avec xx : volume 0 à 30 
*    http://logre-coucou.local/loop  joue toutes les pistes séquentiellement
*    http://logre-coucou.local/stop  stop la musique et relance le coucou et tictac
*    http://logre-coucou.local/anniv joue HappyBirthday de Stevie Wonder lors d'un anniversaire

Evolution

Le Cuckoo est cèdé au LOGre, ainsi il devient un projet pour tous. Il peut être amélioré avec de nouvelles fonctionnalités par tout membre du LOGre. Il est accessible via l'IDE Arduino. Dans le menu 'outils', le port de connexion indique 'logre-coucou at 192.168.0.xxx '

Schéma de connexion

Schéma-cuckoo.png

Code Arduino livré

C'est la version 1.0, restent quelques améliorations, simplifications à faire. L'important est que ça marche et que j'ai pris un grand plaisir à le faire.

 code en phase de mise à jour