Je voulais surprendre ma femme pour Noël. Elle est rousse, fan de Harry Potter et aussi mère; tout cela m'a inspiré pour créer la montre Weasley. J'ai eu l'idée en février, j'ai donc eu 10 mois pour développer et créer le projet.
Pour les personnes qui ne connaissent pas Harry Potter et la famille Weasley, j'expliquerai que la famille de sorciers Weasley a une horloge magique qui n'indique pas l'heure, mais l'emplacement des membres de la famille, chacun ayant sa propre flèche. Voici un extrait de Harry Potter et la coupe de feu (J. Rowling, 2000):
, . . , , – - . , . , , . «», «», «», « », «», «», «»; , «12», « ». «», , , «».
«, !» – , . , «» « », «» , , .
Il a fallu quelques travaux de recherche pour transformer les horloges magiques en vraies horloges. J'ai beaucoup d'expérience en programmation, mais je n'ai commencé que récemment à écrire du code qui déplace quelque chose dans le monde physique. En 2018, j'ai commencé à diriger notre club de robotique FRC local de FIRST et j'ai découvert le monde des moteurs et des encodeurs. Organigramme de
mise à jour des données de la montre Weasley: les
utilisateurs de smartphones ont l'application Life360 en cours d'exécution -> L'
application suit la position et la vitesse des utilisateurs ->
HA suit les utilisateurs et calcule l'état de la montre. Envoie des mises à jour via le protocole MQTT au Raspberry Pi ->
Un processus weasleyclockd spécial est en cours d'exécution sur le Raspberry Pi, qui surveille le flux MQTT et contrôle les servos d'horloge ->
Toute intégration IoT suffisamment avancée est indiscernable de la magie.J'ai
divisé le projet avec l'horloge en plusieurs sous-projets avec lesquels on pouvait déjà travailler, et j'ai commencé par suivre l'emplacement. Au début, j'ai utilisé l'application mobile Find My Phone d'Apple, car tous les membres de ma famille immédiate utilisent des iPhones. Mais ensuite, je suis passé à Life360, car leur API s'est avérée plus conviviale pour les tiers et m'a permis d'ajouter les parents de ma femme qui vivent avec nous et utilisent des téléphones Android. Avant même de commencer la construction et la programmation, j'ai dû les convaincre tous d'installer Life360 et de l'utiliser. Heureusement, tout le monde était d'accord. Ma femme l'a fait pour des raisons de sécurité, sans jamais apprendre mon plan secret pour faire une surprise compliquée pour Noël.
Le défi suivant était la création d'une montre à plusieurs aiguilles. J'ai naïvement supposé que de telles choses existaient, et je n'aurais qu'à acheter quelque chose comme ça et à entasser mes propres contrôleurs de moteur là-dedans. J'ai fini par utiliser des tubes en laiton concentriques provenant de magasins de loisirs. J'ai attaché des engrenages aux tuyaux avec des pinces de ServoCity.com.
Pour tourner les flèches, j'ai décidé d'utiliser des servo-winchs avec possibilité de tours multiples. J'ai acheté à Adafruit et j'ai soudé une carte d'extension Raspberry Pi Servo HAT à 16 canaux et j'ai commencé le prototypage. Et à ce moment-là, j'ai été submergé d'excitation en réalisant que tout allait fonctionner.
Ensuite, j'avais besoin d'un programme qui convertit les données de localisation brutes en états spécifiques de l'horloge Weasley. J'ai décidé de faire du système d'automatisation Home Assistant un intermédiaire entre les données de localisation de Life360 et le comptage de l'état de la montre. Cela a compliqué le système dans son ensemble, mais m'a permis de transférer le fardeau de l'intégration Life360 (et des changements potentiels d'API dans le futur) sur les épaules de Home Assistant. Le suivi des hotspots WiFi spécifiques des personnes me permet de localiser plus précisément leur emplacement dans la maison. Lorsque, par exemple, le téléphone d'une personne se connecte à un routeur routier, le système sait que la personne est dans le «jardin».
Panneau de l'assistant domestique
Après avoir écrit les règles de Home Assistant, j'ai obtenu un panneau de contrôle, où tous les états de l'horloge Weasley étaient répertoriés. Maintenant, je n'avais plus qu'à utiliser ces données pour déplacer les aiguilles de l'horloge.
Home Assistant est un projet domotique open source axé sur le stockage et la gestion locaux. Cela contraste avec la plupart des systèmes d'automatisation IoT qui nécessitent une connexion Internet et stockent vos données dans le cloud.
Étant donné que les états de l'horloge étaient déjà calculés sur le Home Assistant lui-même, et que le Raspberry Pi et les servocommandes se tenaient dans l'horloge, je devais trouver comment transférer des données de Home Assistant vers l'horloge Weasley. J'ai choisi le protocole MQTTpopulaire pour l'utilisation de l'IoT et bien pris en charge dans Home Assistant. J'ai ajouté l'automatisation à Home Assistant pour envoyer des messages MQTT chaque fois que l'état de la montre change. Du côté de l' auditeur , j'ai écrit un démon Python, weasleyclockd , qui écoute le flux d'événements MQTT et déplace les flèches en conséquence.
J'ai ajouté des informations sur le cadran de la montre afin qu'il y ait plus de données que simplement «à la maison» ou «perdu». Dans les secteurs «perdu» et «en route», la position des flèches par rapport aux valeurs indiquées est proportionnelle à la distance de la maison de la personne. Vous pouvez comprendre en un coup d'œil si une personne est proche de chez elle, ou dans le magasin le plus proche, ou à une centaine de kilomètres.
Pour faciliter la lecture, les flèches sont décalées pour éviter les encombrements dans des secteurs tels que la «maison». Le secteur de la maison est divisé en deux parties - la maison principale et le deuxième bâtiment, l'atelier.
Dans le projet, une partie importante est occupée par le dessin du cadran. J'ai trouvé une belle affiche d'horloge Weasley de Minalima . Cet auteur a dessiné plusieurs des dessins officiels des films Harry Potter.
En fabriquant cette montre, j'ai essayé d'imaginer ce que devrait être leur boîtier. J'ai réalisé qu'il valait mieux réutiliser une horloge ancienne. Ou vous auriez pu faire le cas vous-même, mais je n'avais aucune expérience en tant qu'ébéniste. En principe, c'était possible, mais je savais que les résultats de mon premier emploi ne me conviendraient pas. L'horloge de cheminée que j'ai vue dans les magasins d'antiquités locaux à Snohomish, Washington, était trop petite pour le mécanisme et le cadran de l'horloge. Et puis la chance m'a souri.
Ma femme et moi sommes allés à Whidbey Island et avons erré dans le Good Cheer Thrift Store à Langley. Ils ont vendu une horloge grand-père, dont la taille, à première vue, convenait à la fois au mécanisme et au cadran. Cependant, je n'étais pas du tout prêt à les acheter. Je n'avais pas avec moi les dimensions du cadran et du mouvement. Et avec moi était ma femme, à qui cette surprise était destinée. Alors je me suis juste souvenu de ce moment, et j'ai décidé que j'avais vraiment besoin d'acheter une telle horloge
à la maison, armé de toutes les mesures, j'ai commencé à fouiller eBay à la recherche d'une horloge grand-père. Ce n'était pas une tâche facile. Les heures de travail coûtaient cher. Personne ne voulait les envoyer. Dès que j'ai trouvé une montre convenable, il s'est avéré qu'elle était vendue en auto-ramassage depuis la Floride.
Trois mois plus tard, ma femme et moi avons décidé avec toute la famille de retourner à Whidbey Island. Nous avons dîné à nouveau à Langley, et je me suis rapidement précipité dans ce magasin. L'horloge grand-père était toujours là! Ils ont même été réduits à 165 $. Une si heureuse coïncidence ne pouvait être négligée, alors j'ai demandé à ma femme de ne pas poser de questions, car tout cela faisait partie de la surprise. J'ai acheté une montre et nous l'avons chargée dans une fourgonnette Honda Odyssey déjà bloquée. Maintenant, elle comprenait déjà que quelque chose était prévu.
Il s'est avéré encore plus difficile que le boîtier de la montre de comprendre comment fabriquer les aiguilles. Au départ, je voulais soit les imprimer en 3D, soit les découper en laiton. J'ai la chance d'avoir chez moi quelques-uns de mes propres experts en la matière. Voir les superbes flèches imprimées sur les accessoires imprimables, J'ai opté pour l'impression 3D. Notre fils Alex vient de terminer son cours avancé de CAO au lycée et a réussi son examen de certification Solidworks avec d'excellentes notes. Je l'ai chargé avec des flèches et ils sont sortis très bien. Mon beau-père Ron était en charge de l'impression 3D. Il travaille avec une imprimante 3D dans notre équipe de robotique, et sert d'expert local sur le sujet. Pour finir les flèches, je les ai peintes avec de la peinture métallique et j'ai ajouté du noir pour le contraste.
Mouvements familiaux pendant la journée
Distance de la maison
Je voulais vraiment me vanter des capacités de la montre, mais au milieu de l'auto-isolement, personne n'est allé loin de chez moi. Pour résoudre ce problème, j'ai écrit un programme qui envoie des séquences enregistrées de messages MQTT. Je pourrais simuler des événements et faire bouger les aiguilles de l'horloge comme si les gens allaient et venaient.
Horloge terminée
Mettez-la dans la cuisine
En fin de compte, j'ai réussi à garder tout le projet secret. Mais je n'ai pas eu le temps avec lui pour Noël. Par conséquent, pendant les vacances, je devais faire une démonstration de l'horloge dans un état statique non fonctionnel. J'ai réussi à apporter le vernis extérieur, et ma femme a été surprise et ravie.
Deux mois supplémentaires ont été consacrés au travail de finition final - impression des composants sur une imprimante 3D, installation du mécanisme, impression et peinture des flèches et réglage du logiciel.
Le projet semble être terminé, mais je souhaite apporter quelques améliorations supplémentaires. Je prévois d'assembler une horloge à six ou sept aiguilles et d'automatiser la sonnerie de l'horloge.
Pour paraphraser Arthur Clarke: "Toute intégration IoT suffisamment avancée est indiscernable de la magie."
Dans la deuxième génération de montres Weasley, j'aimerais changer ce qui suit:
- Concevez et imprimez des engrenages qui s'accrochent directement aux tiges en laiton.
- Utilisez des moteurs avec encodeurs.
- Coupez les flèches dans le laiton pour faire de la place pour plus de flèches.
Liens vers mon journal de développement, mes photos et mes programmes:
- Projet d'horloge Weasley sur Github
- weasleyclockd , un programme de contrôle.
- Le projet d' horloge frappante Weasley .
- Assemblage d'album photo .
- Construire le journal .
- Discussion sur HackerNews .