Table des matières:
- Étape 1: Configuration de vos téléphones pour envoyer leur emplacement à votre Pi (Partie I MQTT Broker)
- Étape 2: Configuration de vos téléphones pour envoyer leur emplacement à votre Pi (Part II Owntracks)
- Étape 3: Configuration du Raspberry Pi
- Étape 4: Installation de Node Red (obtention des messages du serveur MQTT vers votre script Python)
- Étape 5: déplacer réellement des servos avec Python sur le Pi
- Étape 6: Finalisation du logiciel - Téléphones aux servos
- Étape 7: Construire l'horloge physique - Partie I - les servos et l'essieu
- Étape 8: Les aiguilles de l'horloge
- Étape 9: Terminez
- Étape 10: choses que j'ai apprises et que je ferais mieux/différemment si je devais le refaire
- Étape 11: Extensions futures possibles… ?
Vidéo: Horloge de localisation 'Weasley' à 4 aiguilles : 11 étapes (avec photos)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:05
Alors, avec un Raspberry Pi qui tournait depuis un moment, je voulais trouver un beau projet qui me permettrait d'en tirer le meilleur parti. Je suis tombé sur ce grand Instructable Build Your Own Weasley Location Clock par ppeters0502 et j'ai pensé qu'il serait bon d'essayer.
L'horloge se compose essentiellement d'un Raspberry Pi qui contrôle les servos afin de faire tourner les aiguilles de l'horloge. Comme dans la maison de la famille Weasley dans les livres/films Harry Potter, chaque membre de la famille a sa propre main. Chaque main indique l'emplacement actuel de ce membre de la famille. L'horloge y parvient en recevant des messages des téléphones portables de la famille chaque fois qu'ils entrent ou sortent d'un rayon prédéfini.
Les principales différences avec le précédent Instructable étaient que je devais avoir 4 mains, pas 2 (sinon mes filles se seraient plaintes) et j'ai décidé de construire le cadre aussi, de ne pas réutiliser une vieille horloge. C'était parce que je craignais que l'espace ne soit un problème dans un boîtier d'horloge existant, avec la nécessité d'installer 4 servos, etc.
Cela a pris beaucoup plus de temps que prévu, mais surtout lorsque j'ai rencontré des problèmes délicats qui m'ont déconcerté et qui ne semblaient pas être couverts par le message d'origine. Rien contre l'Instructable d'origine, qui était généralement génial, mais quelques années s'étaient écoulées et les versions des choses avaient changé… etc. De plus, être au Royaume-Uni signifiait que certains des éléments impériaux/métriques causaient plus de défis que ce à quoi je m'attendais.
De plus, alors que je suis OK pour le codage, la fabrication physique de l'horloge m'a définitivement mis à rude épreuve et a nécessité des outils supplémentaires, ce qui m'a également quelque peu ralenti.
À la fin, j'inclurai une section sur « Les choses que je ferais différemment/mieux si je le faisais à nouveau… »
Fournitures:
L'une des choses qui m'a frappé, c'est que les composants coûteux étaient liés aux aiguilles de l'horloge. 4 mains est définitivement beaucoup plus cher que 2. J'ai décidé de mettre des coûts pour que vous ayez une idée. C'est la première fois que j'ajoute tout cela, et sans tenir compte des outils, je pense avoir dépensé environ 200 £. Plus quelques trucs que je n'ai pas utilisés (et que je n'ai pas inclus ci-dessous) plus le Pi, plus l'alimentation que j'avais déjà.
Pi etc
- Raspberry Pi - je ne me souviens plus combien cela coûtait à l'origine, mais c'était un modèle 2B. Je pense que si vous n'en avez pas déjà un, alors même un Pi Zero ferait probablement l'affaire. J'avais ajouté un dongle wifi et une carte SD avec Raspbian. Et j'avais un vieux chargeur de téléphone Android qui traînait.
- Servohat Adafruit pour le Pi - 16 £
- Alimentation électrique pour le Servohat - J'ai vraiment eu du mal à trouver car tous les sites Web venaient de pointer vers le site adafruit qui recommande alors évidemment une alimentation électrique américaine. Ensuite, j'ai réalisé que j'avais une ancienne alimentation à tension variable avec des embouts interchangeables, alors je l'ai utilisée. Mais celui des États-Unis est de 8 $, donc c'est la bonne approximation.
- Étui pour le Pi, afin que je puisse ensuite l'attacher au cadre de l'horloge. 5 £
Servos et engrenages
Ici, je cite le prix pour les 4, alors divisez si vous voulez moins de mains (en additionnant cela fait ~ 40 £ PAR MAIN = 160 £:-o
- 4 x servos - j'ai utilisé ceux recommandés par ppeters0502 - trouvés sur ebay pour ~ 15 £ chacun = 60 £ - j'ai recherché le texte suivant "GWS-Digital-Servo-Sail-Winch-S125-1T-2BB-360-degree " mais parfois ils étaient indisponibles
- 4 x tubes en laiton qui s'emboîtent exactement les uns dans les autres - ~ 3 £ chacun. J'en ai 1 de 1/4", 7/32", 3/16", 5/32" = 11 £
- 4 x pinces qui se fixent sur les tubes en laiton pour vous permettre de fixer des engrenages. ~ 7 £ chacun = 28 £. Je les ai obtenus d'ActiveRobots qui passe des commandes régulières de Servocity aux États-Unis, ce qui vous permet d'éviter les expéditions internationales. Ils peuvent également obtenir tout ce que vous pouvez trouver sur le site américain principal de Servocity. C'était très pratique pour les 2 articles suivants
- 4 x engrenages en acétyle 0,770" pour le montage sur les moyeux de serrage. ~ 6 £ chacun = 24 £
- 4 x engrenages en acétyle montés sur cannelures en acétyle pour le montage sur les servos. ~ 6,50 £ chacun = 26 £
- 1 x paquet d'écrous hexagonaux aux engrenages attachés aux écrous de serrage = 2,60 £
- 1 clé hexagonale 7/64" (clé allen) car tout ce qui vient des États-Unis est impérial, donc les centaines de clés allen que j'ai déjà sont inutiles = 1 £
Pour la construction physique
Ici, j'ai surtout utilisé des chutes de trucs sur lesquels j'avais menti
- 2 x carrés de contreplaqué pour la plaque "face" et "arrière"
- J'ai ensuite découpé des cylindres de 4x10cm dans une ancienne rampe d'escalier que j'avais, afin de relier le dos à la face
- Quelques blocs pour monter les servos au bon décalage - juste des chutes de bois tendre que j'ai coupées à la bonne taille.
- Vis assorties. de très petit (pour attacher le boîtier Pi au cadre) à moyen (pour attacher le cadre ensemble)
- Tôle d'acier doux de 0,75 mm d'environ 50 cm x 20 cm (pour découper les mains). C'est la seule chose que j'ai achetée ~ 9 £ chez Wickes
Outils
Certaines choses que j'avais et certaines que j'ai empruntées ou achetées
- Fer à souder + soudure électrique - pour attacher les connecteurs à l'Adafruit Hat & Pi.
- Scie sauteuse - pour découper la forme approximative des mains
- Percer. juste une perceuse sans fil 18V normale
- Forets - Gardez à l'esprit que vous AUREZ besoin de forets impériaux pour faire des trous qui correspondent aux tubes en laiton. J'ai réussi à en emprunter.
- scie à métaux - pour couper les tubes en laiton. Ne faites pas ce que j'ai fait et dépensez 3 £ pour le coupe-tube, cela fonctionne par pression et signifie que l'intérieur des tubes devient un peu plus petit. de sorte que le tube de la taille suivante ne passe pas à travers
- Meuleuse d'établi - Je n'en avais pas, mais un ami l'avait fait et cela facilitait BEAUCOUP le façonnage des mains. Jusque-là, je n'utilisais que des fichiers. Je n'en achèterais pas un juste pour ce projet, mais pour les mains en métal, c'était génial.
- J'ai acheté des limes à pointe de diamant assorties (très petites). utile pour les mains et les tubes environ 15 £
- papier de verre rugueux et lisse
- quelques petites pinces maintiennent les choses en place lors du perçage.
- un vice pour la même raison.
Étape 1: Configuration de vos téléphones pour envoyer leur emplacement à votre Pi (Partie I MQTT Broker)
Ce bit est très bien décrit par ppeters0502 dans son excellent Weasley Clock Instructable. Curieusement, bien que reflétant peut-être des compétences différentes, il a commencé par la construction, puis est passé au logiciel, je l'ai fait dans l'autre sens. Alors, j'ai commencé avec le téléphone… attendez, non, j'ai commencé avec le courtier MQTT, qui est l'étape 6 de son Instructable. Je vais omettre tous les morceaux qu'il fait très bien et juste ajouter quelques morceaux que je pourrais ajouter. J'ai emprunté la route CloudMQTT qu'il a mentionnée.
MAIS au moment où j'écrivais ceci, j'ai vérifié le lien vers les plans et j'ai constaté qu'il n'y avait plus de plan gratuit ! Ils l'ont retiré, pour ce qui semble être des motifs raisonnables. c'est-à-dire que les gens créeraient une instance gratuite et ne l'utiliseraient jamais. Je n'ai pas remarqué car les instances actuelles peuvent continuer. Donc je ne changerai pas. Mais cela rend les instructions un peu redondantes. Il semble y avoir 3 options.
- Payez les 5 $ par mois pour Cloud MQTT (mais cela semble cher pour l'horloge sur une base continue).
- Allez sur la route Mosquitto on Pi comme décrit dans le premier Instructable. Je ne peux pas commenter cela, mais cela pourrait être une bonne option.
- Il suffit de rechercher sur Google "courtier cloud MQTT gratuit" et il semble qu'il y en ait d'autres.
Ainsi, en supposant que vous ayez un courtier MQTT fonctionnel, s'il ressemble à celui de CloudMQTT, un serveur, un utilisateur, un mot de passe et un port seront affichés. Vous aurez besoin de tous ces éléments pour configurer vos téléphones afin d'envoyer au courtier vos emplacements/mouvements.
Étape 2: Configuration de vos téléphones pour envoyer leur emplacement à votre Pi (Part II Owntracks)
Ceci est également très bien couvert dans l'original Instructable, aux étapes 7 (Android), 8 (iOS) et 9 (configuration des régions).
Je n'avais que des appareils iOS, donc je n'ai pas essayé l'étape 7.
Qu'est-ce que j'ajouterais à ces instructions ?
- Dans la configuration, il y a aussi les champs TrackerID et DeviceID. Ceux-ci devraient vous permettre de vous identifier au sein de votre famille. Par exemple. Je les avais respectivement comme R et RPhone. Cela signifie que vous pouvez passer à l'horloge quel Servo et donc quelle aiguille tourner.
- Les régions sont le nom des emplacements que vous souhaitez suivre.
- Chaque région est définie par un Nom, une Latitude, une Longitude et un Rayon.
-
Parce que je voulais avoir un certain nombre d'emplacements dans une section sur mon horloge, j'ai utilisé une convention de nommage, qui s'est avérée très utile. D'autres méthodes sont possibles mais cela a fonctionné pour moi.
- Par exemple, pour la section FAMILLE de l'horloge, je voulais avoir mes parents et frères et sœurs et les parents et frères et sœurs de ma femme. Par conséquent, j'avais des emplacements comme "Family Tom", "Family Dick", Family Harry" & "Family Parents R". Cela signifiait que la prochaine étape pouvait savoir quoi passer à l'horloge.
- Gardez à l'esprit que les gens peuvent avoir des emplacements différents. Mais tant qu'ils sont cohérents avec la convention de nommage, ça va. Par exemple. mon travail serait différent de la région de travail de ma femme et appelé différemment. mais tant qu'ils commencent tous les deux à "Travailler", tout va bien.
- Vous voulez que le mode soit défini sur « Significant » sur l'écran Cartes. Cela signifie que vous ne recevez (la plupart du temps) des messages que lorsque vous entrez ou quittez des régions. Cela semble être la version mise à jour de la note marquée IMPORTANT: à la fin de l'étape 8 dans l'original Instructable.
- Comme mentionné dans l'original Instructable, l'utilisation de Google Maps est un excellent moyen de connaître la latitude/longueur de quelque part. J'ai trouvé plus efficace de le faire en vrac, en découvrant toutes les latitudes/longueurs de mon emplacement, puis je les ai collées dans Notes (sur mon Mac) et avec la synchronisation dans le cloud, cela signifiait qu'elles apparaissaient comme par magie sur mon iPhone dans Notes et je pouvais les copier/coller dans Owntracks. Cela signifiait également que je pouvais envoyer le fichier sur les téléphones de ma famille et que nous avions tous des emplacements cohérents.
- Les emplacements proches les uns des autres peuvent causer des problèmes. Mon frère habite à 2 rues de là, et au début mon téléphone n'arrêtait pas de penser que j'étais à la fois dans la région de sa maison et à la maison. Finalement, j'ai dû mettre une logique supplémentaire dans Node Red pour attraper et ignorer ce qui se passait.
Étape 3: Configuration du Raspberry Pi
Donc ici, je suppose que vous avez une base Pi configurée et en wifi. J'utilisais Raspbian mais cela ne devrait pas avoir d'importance. Utilisez les instructions sur raspberrypi.org pour tout configurer.
Notez qu'un Pi a des ports pour l'affichage sur un moniteur et un clavier/souris, etc. MAIS évidemment une fois que vous l'avez dans l'horloge, vous ne voulez rien de tout cela. Donc, la réponse, suggérée par quelqu'un sur le site Web Raspberry pi, je pense, était de configurer une connexion VNC. Cela vous permet de vous connecter à partir d'un autre appareil au Pi et de le contrôler également. Je le fais depuis mon Mac mais je l'ai aussi fait depuis un iPad. Je suggérerais d'utiliser quelque chose avec un clavier pour une facilité d'utilisation.
Je viens de découvrir qu'ils semblent avoir facilité les choses depuis que je me suis connecté… voir ici
Essentiellement, vous vous connectez et obtenez une fenêtre qui est l'interface Pi standard.
Ainsi, vous avez une fenêtre sur votre Pi depuis votre ordinateur portable ou votre ordinateur.
Vous devez maintenant connecter les servos.
Vous devez d'abord effectuer une soudure assez basique pour placer le chapeau adafruit sur le Pi. C'est un peu compliqué, mais malgré le fait de ne pas avoir soudé depuis une trentaine d'années, c'était bien. Comme toujours, j'ai trouvé une vidéo YouTube utile pour me guider, ce qui m'a été d'une grande aide.
Alors que le chapeau peut faire fonctionner 16 servos, je n'en ai eu besoin que de 4 et je n'ai donc pris la peine de souder que le premier jeu de 4 broches.
Ensuite, les servos poussent simplement sur les broches. J'en ai d'abord fait un pour vérifier que je pouvais réellement faire bouger le servo.
C'est là que j'ai heurté mon premier grand barrage routier. J'avais un script python très basique pour déplacer les servos et littéralement rien ne s'est passé. J'ai passé environ une semaine à essayer de nouveaux scripts, etc., puis de la fumée a commencé à apparaître sur le chapeau. En éteignant tout, j'ai vérifié le schéma. C'était un composant qui protège contre l'inversion de polarité. Parce que j'avais une source d'alimentation multi-pointes et multi-tensions, j'avais raté le fait que vous pouviez avoir la sortie CC dans les deux sens en inversant la pointe. Je m'étais trompé (50:50 chance) et je viens de brûler mon premier chapeau d'adafruit
:-(Donc un léger retard car j'en ai acheté un neuf, re-soudé et corrigé la panne. BEAUCOUP mieux.
Ensuite, je devais trouver comment déplacer les servos au bon point sur l'horloge. Cela viendra à l'étape 5, mais ce que j'ai fait, n'ayant pas construit l'horloge réelle, a été de visser légèrement les servos sur un morceau de bois au hasard et de coller du ruban adhésif avec une flèche dessus, comme sur la photo. Cela a donné un retour très visuel sur ce que je codais.
Étape 4: Installation de Node Red (obtention des messages du serveur MQTT vers votre script Python)
Node-RED est un programme que vous installez sur le Pi, qui vous donne une interface visuelle (sur votre navigateur) pour recevoir des messages de votre serveur MQTT et l'utiliser pour transmettre les informations correctes à votre script python (couvert à l'étape suivante (Étape 5). J'ai à peu près utilisé les instructions de ppeters0502 à l'étape 5. Il y a une logique dans ces flux, et une logique supplémentaire dans le python, et vous pouvez en avoir plus ou moins dans chacun, selon vos préférences. Fondamentalement, vous devez faire ce qui suit
- Avoir des nœuds de réception pour les messages MQTT - ceux-ci sont violet clair et j'en ai eu 1 par membre de la famille
- Faites correspondre cela au servo que vous souhaitez déplacer (numéroté 0, 1, 2, 3)
- Déterminez si vous entrez ou sortez d'un rayon sur OwnTracks
-
Déterminez l'emplacement vers lequel le servo doit pointer
Il y avait quelques exceptions aux règles de base que je devais intégrer
- Réglez correctement l'angle
J'ai fait faire les 4 premiers à Node-RED et j'ai gardé le Python relativement simple.
Vous pouvez voir le flux de base ici, et tous les flux peuvent être exportés au format ici, ce qui signifie que vous pouvez importer ce flux de base dans votre Node-RED puis l'adapter. Notez que j'ai supprimé toutes les connexions des nœuds violets afin que vous ne puissiez pas accéder à mon instance MQTT. J'ai également supprimé tous les nœuds de test car ils contiennent des données réelles… vous devrez peut-être changer ce type de fichier en flow.json afin de l'importer dans votre Node-RED, mais Instructables ne m'a pas laissé télécharger cela.
Les nœuds verts sont des nœuds de débogage qui affichent ensuite la sortie dans la fenêtre de débogage à droite de l'écran (peut nécessiter une expansion - trouvez la flèche à mi-hauteur sur la droite)
Le premier bit à faire est le bit "Live - pour le débogage uniquement". Cela vérifie que vous pouvez recevoir les messages MQTT et voir ce qu'ils contiennent. json est juste une version plus structurée des messages qui vous permet de sortir les données plus facilement. Dans ce flux, en direct, je connecte ensuite les nœuds violets en haut à gauche au nœud json à leur droite.
Nœuds de test
Une fois que vous savez à quoi ressembleront les messages en direct, il devient très ennuyeux de devoir sortir de chez vous et faire le trajet aller-retour, juste pour déclencher un événement. Une fois que vous avez fait cela, vous pouvez copier le message dans un déclencheur TEST, puis cliquer dessus pour simuler l'événement. Vous pouvez également modifier les données, pour prétendre être pour différents emplacements (assurez-vous qu'elles correspondent exactement aux noms d'emplacement dans Owntracks).
Vous pouvez voir dans le flux que les cas de test vont tous dans un nœud séparé, puis cela va dans le nœud json. C'est purement pour ranger l'écran.
Je ne saurais trop insister sur l'utilité de ces nœuds, et le sont toujours.
Appeler Python
Alors j'ai frappé le prochain barrage routier. Celui-ci a pris BEAUCOUP de recherches sur Google dans les forums, etc. Mon flux fonctionnerait parfaitement, mais il ne déclencherait pas mon script python. Je n'ai pas pu résoudre cela, mais je vais vous épargner les jurons, etc. Juste pour dire que, comme le souligne la deuxième capture d'écran, vous devez spécifier python3, car apparemment Node-RED suppose python2, sauf si vous le spécifiez.
2 complications supplémentaires - uniquement si nécessaire
J'ai ensuite eu un certain nombre de défis où la logique ne fonctionnait pas tout à fait. Tout d'abord, Owntracks est devenu un peu bizarre et, comme mon frère habite à 2 rues de là, il a souvent dit que j'étais à 2 endroits à la fois, ou que j'allais constamment de l'un à l'autre. La seule façon de contourner cela était d'ajouter une condition pour arrêter les faux positifs. S'il prétendait que j'étais chez lui, alors j'ai traversé et vérifié la longitude/latitude réelle dans le message et l'ai annulé s'il disait que j'étais réellement à la maison.
L'autre problème était que, lorsque je promenais mon chien, je ne pouvais pas vraiment obtenir un bon rayon. Je marche habituellement dans la même zone, alors ici, j'ai dit "si j'entre dans cette zone, je promène définitivement le chien, et je le ferai jusqu'à ce que je rentre à la maison". cela signifiait qu'il ne passerait pas au pub que je passe sur le chemin du retour, ou à divers autres endroits locaux qui pourraient se déclencher lors d'une promenade de chien. Pour ce faire, je devais configurer des variables de contexte persistantes (recherchez-les sur Node-RED. Voir capture d'écran. Ces variables persistent jusqu'à ce que Node-RED soit redémarré et je peux donc dire Si lors d'une promenade de chien, définissez la variable de contexte à "Chien". Ensuite, ignorez TOUT le reste à moins que je "Entre" chez moi.
La dernière capture d'écran est celle de mon flux final actuel, à toutes les exceptions, juste pour votre intérêt.
Étape 5: déplacer réellement des servos avec Python sur le Pi
Une courte diversion dans les servos. Je ne connaissais rien aux servos, mais il y a beaucoup d'informations en ligne. Ceux que j'ai utilisés sont des servos continus qui peuvent tourner sur 360 degrés et en douceur. L'autre type principal sont les servomoteurs pas à pas qui se déplacent par morceaux (pas) et ne vont apparemment que jusqu'à environ 180 degrés (clairement pas utile ici). L'avantage des servos pas à pas est que vous pouvez simplement mettre un angle et ils se déplacent jusqu'à ce point et s'arrêtent. Toute la documentation que j'ai trouvée dit que les servos continus fonctionnent en recevant une vitesse et un temps pour maintenir cette vitesse (par exemple, la pleine vitesse pendant 1 s) et ils finissent là où ils finissent, mais c'est par rapport à leur point de départ. Après de nombreuses tentatives, je n'ai pas réussi à faire fonctionner cela, mais j'ai découvert, à l'aide du banc d'essai, que les servos revenaient systématiquement au même point avec le même angle. Ce qui est beaucoup plus facile, alors je viens de le faire. Il y a peut-être des inconvénients que je ne connais pas, mais cela fonctionne pour moi. Notez cependant que chaque servo est unique et que vous devez donc avoir un ensemble unique d'angles pour chaque servo. J'ai trouvé plus simple d'avoir un script python de "calibration", où je pouvais régler les servos sur des angles à tour de rôle, en les affinant jusqu'à ce qu'ils aient tous l'air corrects. Ceci est le premier script joint. Vous venez de commenter les servos que vous ne testez pas, vous vous concentrez sur un, puis ajustez les valeurs selon vos besoins. REMARQUE: l'étalonnage pour le banc d'essai est simple et grossier et prêt. Vous devrez recalibrer lorsque l'horloge sera assemblée, car les engrenages, etc. changeront tout. Ensuite, le deuxième script est assez basique. Il fait ce qui suit
- Importer quelques bibliothèques
- déplacer les variables provenant de Node-RED vers les variables du script
- mappe les angles déterminés par le script d'étalonnage aux emplacements sur l'horloge.
- vérifiez que l'emplacement est bien trouvé dans la liste, et sinon passez à "Péril"
- écrire ce qui a été fait dans un fichier journal
- déplacer le servo requis à l'angle requis
- Empêche un servo de « bourdonner » *
3 choses à noter.
Le fichier journal est super utile pour le débogage. Cela signifie que vous pouvez consulter le débogage Node-RED d'un message, puis voir ce qui s'est passé dans le script. la sortie ressemble à ceci. Les 3 premiers sont moi qui promène le chien, puis l'enfant 1 quittant la maison et arrivant à l'école. Remarque pour vérifier l'heure sur le Pi. Il peut être par défaut UTC et ne pas autoriser les changements d'heure d'été/d'hiver. Par exemple. les horaires ci-dessous sont à 1 heure.
2020-12-07_05:36:03 Who = 0, loc = Travelling, detail = Home, Angle = 10, index = 8
2020-12-07_05:36:04 Qui = 0, loc = Chien, détail = Astons, Angle = 86,5, indice = 10
2020-12-07_06:07:49 Qui = 0, loc = Domicile, détail = entrant, Angle = 75, indice = 0
2020-12-07_06:23:53 Who = 2, loc = Travelling, detail = Home, Angle = 19, index = 8
2020-12-07_06:30:48 Qui = 2, loc = École, détail = N, Angle = 60,5, indice = 2
Servo-bourdonnement
L'un des servos (0) n'arrêtait pas de bourdonner après la fin du script. Comme vous pouvez l'imaginer, c'est super ennuyeux d'avoir dans notre cuisine. J'ai trouvé un fil quelque part qui mentionnait le réglage de l'angle du servo sur « aucun », ce qui le met en quelque sorte au ralenti. Cela a fonctionné à merveille et peut être vu dans le script à la fin.
Horaires
Gardez à l'esprit à quel point une main est basse pour balayer 24 heures sur 24. Vous pouvez voir dans le script qu'il y a une ligne time.sleep(4) juste avant de régler le servo pour arrêter le bourdonnement. C'est parce que vous devez permettre à la main d'atteindre sa destination avant de la mettre en veille. Sinon ça s'arrête tout simplement. Ceci est également important lors du calibrage, car vous effectuez plusieurs mouvements dans le script. Je le mettrais en marche pour qu'il se déplace successivement vers les 12 emplacements, afin de pouvoir tous les revérifier. mais vous avez besoin d'un peu de temps entre les deux.
Étape 6: Finalisation du logiciel - Téléphones aux servos
Une fois que vous avez configuré le banc d'essai et les scripts, vous pouvez l'exécuter "en direct" pendant un moment et voir comment cela fonctionne en temps réel. C'est là que j'ai trouvé les exceptions que je devais ajouter dans mon flux Node-RED.
Vous pouvez facilement déconnecter et connecter les membres de la famille dans le flux Node-RED si vous souhaitez vous concentrer sur un seul. Par exemple, si deux problèmes posent problème mais que vous souhaitez en résoudre un à la fois. Sinon, gardez à l'esprit que vous continuerez à recevoir des messages de tous les téléphones connectés.
J'ai mentionné le problème avec les promenades de chiens et la maison de mon frère étant assez proche. J'ai eu 2 autres défis.
Tout d'abord, les emplacements dans d'autres emplacements. Ma femme suivait un cours dans un collège à Londres. Nous voulions que cela s'enregistre comme 'École', mais c'est aussi à 'London'. Nous devions donc réutiliser le contexte pour dire que si vous quittiez cette « école », passez à « Londres » et non à « Voyager ».
Deuxièmement, les conditions de course. Comme mentionné, la maison de mon frère est à 2 rues et également à proximité de notre pub/restaurant préféré. Cela signifie que parfois 2 signaux sont reçus en même temps, ou très proches l'un de l'autre. Cela peut créer une « condition de course » où vous obtenez des résultats différents en fonction de la logique la plus rapide, conduisant à des résultats imprévisibles. Afin de contrer cela, j'ai fait en sorte que tous les messages « entrants » aient un délai de 1 s dans la logique, ce qui semblait résoudre le problème. Il existe peut-être des moyens meilleurs et plus élégants de résoudre ce problème, mais cela semblait fonctionner.
Étape 7: Construire l'horloge physique - Partie I - les servos et l'essieu
Maintenant, le morceau dont j'étais le moins confiant, c'est pourquoi je l'ai laissé durer. Je voulais un visage de taille décente et une construction facile. J'étais également nerveux à l'idée d'avoir physiquement 2 servos autour de l'axe central. Cela signifiait qu'après avoir regardé brièvement sur ebay pour les vieilles horloges comme dans l'instructable que je suivais, j'ai décidé de me donner plus de chances en le construisant moi-même.
- J'ai eu 2 grands carrés (~30cm) de contreplaqué que j'avais qui traînaient (environ 9mm d'épaisseur).
- Ensuite, j'ai coupé un vieux rail de rampe en sections de 4x10 cm et j'ai vissé les plaques avant et arrière ensemble.
- Après avoir marqué le trou central, je l'ai percé pour qu'il soit de la même taille que le plus grand tube en laiton.
- Ensuite, je l'ai peint avec de la peinture blanche brillante normale.
- Après quelques expérimentations, j'ai réalisé que je ne pourrais probablement pas obtenir 4 servos autour du même axe s'ils étaient tous fixés à la plaque arrière (ou avant). J'avais donc besoin d'avoir 3 + 1 ou 2 + 2, sur chaque assiette. J'ai fini avec 3 à l'arrière et 1 à l'avant.
- J'ai calculé les décalages requis sur un morceau de papier, puis j'ai coupé les tubes en laiton pour qu'ils correspondent. Notez que le tube le plus épais est le plus court et que le plus fin doit aller jusqu'à la plaque arrière. (J'ai en fait enfoncé le plus petit dans un trou que j'ai partiellement percé dans la plaque arrière, mais pas complètement pour que l'axe ne recule pas).
- Pour les tubes, j'ai acheté un coupe-tube, mais cela utilise une pression pour les couper et cela signifie que vous ne pouvez pas faire entrer le plus petit tube à l'intérieur. J'ai donc utilisé une scie à métaux et j'ai ensuite dû faire pas mal de classement pour les faire fonctionner. Les limes à pointe de diamant étaient ici d'une valeur inestimable.
- Ensuite, j'ai fait correspondre le diagramme aux décalages réels pour les pinces et les pignons *.
- Une fois que j'avais les décalages, je savais à quelle hauteur faire les blocs pour monter les servos. J'ai cassé quelques blocs en les sciant trop finement et en perçant le trou pour laisser sortir le fil.
- Puis vint la partie délicate de l'endroit où placer les blocs afin qu'ils rencontrent exactement les rouages de l'essieu. J'ai vissé un bloc, puis j'ai pu faire pivoter le servo pour rencontrer l'axe, puis visser le deuxième bloc à l'autre extrémité du servo. J'ai également découvert que je devais couper un peu certains blocs pour éviter d'accrocher d'autres rouages. Cela a pris un certain temps.
- Une fois tout cela fait, j'ai récupéré mon boîtier Raspberry Pi, j'y ai percé deux trous et je l'ai vissé sur la plaque avant. Ensuite, je pourrais ajouter le Pi, fermer les plaques avant et arrière (après avoir connecté les servos au pi (en se souvenant quel servo était pour quel membre de la famille) et me tourner vers les mains…
* Ici, j'ai trouvé le plus gros problème, que je n'ai pas encore complètement résolu. Les tubes en laiton étaient 1/4", 7/32", 3/16", 5/32". Mais les pinces étaient métriques (sauf une qui était de 1/4 "). En convertissant les tubes en métrique, ils mesuraient 6,35 mm, 5,56 mm, 4,76 mm 3,97 mm. Les pinces restantes avaient un alésage de 4 mm, 5 mm et 6 mm. Les 2 plus petits et le le plus grand est bien. mais il est clair que le 0,44 mm est trop long pour la pince, j'ai donc dû le rembourrer avec du papier. J'ai essayé plusieurs fois et cela fonctionne bien pendant un certain temps, puis se desserre à nouveau. Donc le 2ème plus grand la main ne fonctionne pas correctement. C'était bien pendant environ 6 mois, donc le temps passé à bien faire cela était du temps bien investi. Mais si je le faisais à nouveau, j'aurais peut-être augmenté ou diminué d'une taille, avec un écart à essayer un meilleur ajustement de la pince au tube. Par exemple, optez pour 9/32", 1/4", (écart), 3/16", 5/32"
Étape 8: Les aiguilles de l'horloge
J'ai opté pour la tôle d'acier car je voulais quelque chose de rigide mais moins susceptible de se casser pendant que je le fabriquais. Être mince signifiait également que 4 mains était moins un problème.
- J'ai d'abord esquissé une forme.
- Ensuite, je l'ai transféré sur l'acier au-dessus d'un ruban de masquage.
- Ensuite, je les ai découpés très maladroitement avec ma scie sauteuse. Ils étaient et sont tous différents, mais cela ne me dérange pas.
- Puis un ami m'a suggéré d'emprunter son touret pour les façonner, et c'était génial. hautement recommandé. Sinon, le dépôt prend une éternité.
- Il y avait encore un peu de limage à faire puis de ponçage pour s'assurer qu'il n'y a pas d'arêtes vives et aussi une belle finition.
- J'ai dû percer des trous pour faire correspondre les tubes en laiton respectifs (utiliser des tubes coupés pour vérifier, pas ceux montés sur l'horloge).
- J'ai trouvé que les trous nécessitaient un peu de limage pour les mettre sur les tubes, mais une fois en place, ils étaient serrés et n'avaient pas besoin de colle. L'exception était la main avant pour laquelle je voulais avoir une 'couverture'. J'ai donc découpé un morceau d'acier (principalement) rond, après avoir percé le trou et l'avoir obtenu à la bonne taille, et l'ai collé à l'avant. vous pouvez le voir sur la dernière photo. Parfois, la main avant aurait besoin d'un peu de colle pour la fixer, mais après quelques faux départs, les mains fonctionnent très bien.
- J'avais rejeté l'idée des photos (car les enfants se plaignaient vite de nos photos de date) alors je me suis contenté de peindre des initiales avec de la peinture acrylique.
Étape 9: Terminez
Tout fonctionne vraiment bien. Les mains sont parfois un peu décalées, selon d'où elles viennent, mais en fait cela n'a pas d'importance car chaque emplacement est une section pas seulement une ligne.
Parfois, bizarrement, mon téléphone refuse de reconnaître que je suis à la maison. Je suis clairement dans le rayon Owntracks lorsqu'il est affiché sur la carte, et même lorsque la précision est bonne… Je ne sais pas pourquoi. ne semble pas affliger le reste de ma famille. mais le montage est le même. Cela signifie que Owntracks n'envoie jamais de message et que je reste bloqué dans « Voyager ». Mais cela finit généralement par s'arranger.
Cela a été super utile d'avoir dans notre cuisine, surtout pour savoir quand les filles rentrent de l'école ou de la maison de leurs amis, et donc quand préparer de la nourriture/du thé pour elles.
Encore une fois, un grand merci à @ppeters0502 pour les bonnes instructions à suivre. Espérons que ceux-ci puissent ajouter quelque chose autour de la fabrication d'une horloge à 4 aiguilles.
Étape 10: choses que j'ai apprises et que je ferais mieux/différemment si je devais le refaire
- Les constructions physiques nécessitent des essais et des erreurs. Il n'y a aucun moyen de prédire les problèmes d'espace, il suffit de plonger et d'essayer.
- Pour le code, les problèmes de googler sont essentiels
- Commencez de base et construisez. Les servos sur le bois du banc d'essai signifiaient que je pouvais en faire fonctionner la plupart sans la construction physique
- J'ai peut-être eu les mains découpées au laser sur une machine CNC. Mais je ne savais pas où se trouvait le local, et j'aime la façon dont l'acier doux fonctionnait (c'était bon marché et le touret rendait les choses beaucoup plus faciles)
- un moteur pas à pas peut être possible si vous utilisez l'engrenage pour obtenir un tour de 360. mais il se peut que vous deviez alors avoir les servos trop près de l'axe central
- Il existe 2 types de servos (Futaba & HiTech). Assurez-vous d'avoir coché cette option car ils ont un nombre différent de dents sur la spline. Et j'ai acheté les mauvais au départ…
- Ne branchez pas le chapeau avec la mauvaise polarité;-)
- Google et Stack Overflow sont vos amis en cas de blocage. Mais vous devez utiliser de bons termes de recherche…
- Le banc d'essai est en fait un moyen d'obtenir beaucoup plus facilement une version plus simple et moins chère. La plupart des complications liées à la construction proviennent du fait que les mains doivent tourner autour du même axe. Si vous faites des compromis là-dessus, tout est beaucoup plus facile. Et je pense que 4 peut être la limite de l'essieu simple à moins que l'arbre ne s'allonge beaucoup. Vous pourriez, je suppose, en avoir 3 sur la plaque avant et trois sur la plaque arrière si la tige était plus longue…
Étape 11: Extensions futures possibles… ?
Les idées que j'avais sur les prochaines étapes sont les suivantes.
- J'aimerais transformer un vieil iPad en cadran d'horloge. c'est-à-dire faire une horloge numérique. Peut-être basé sur un navigateur ou une application. Comme une horloge physique est essentiellement sans état (c'est-à-dire qu'elle ne sait pas où elle se trouve actuellement, sauf en raison du fait que les aiguilles sont dans une position physique), j'aurais besoin d'un stockage persistant de données. Node Red peut écrire sur le système de fichiers local, donc je le ferais probablement.
- Si je le faisais, j'aimerais pouvoir le voir de l'extérieur de la maison. Mais ensuite, nous devons vraiment régler la sécurité. Parce que l'accès au sein du même réseau wifi est une chose, l'accès depuis Internet en est une autre. Je n'ai actuellement aucune idée de la meilleure façon de procéder, mais je soupçonne qu'un abonnement MQTT allant dans l'autre sens pourrait fonctionner (pi publie l'état actuel et les périphériques externes s'y abonnent)…?
- J'aimerais bien une main pour 'Abroad'. mais cela pourrait être complexe d'un point de vue OwnTracks. Peut-être pourriez-vous simplement utiliser long/lat combiné avec d'énormes rayons ?
Conseillé:
Tête de mannequin de localisation sonore avec Kinect : 9 étapes (avec photos)
Tête de mannequin de localisation sonore avec Kinect : rencontrez Margaret, un mannequin de test pour un système de surveillance de la fatigue du conducteur. Elle a récemment pris sa retraite de ses fonctions et a trouvé le chemin de notre espace de bureau, et a depuis attiré l'attention de ceux qui pensent qu'elle est «effrayante». Dans l'intérêt de la justice, j'ai
[15min] Horloge Weasley / Indicateur qui est à la maison - Basé sur TR-064 (bêta) : 4 étapes (avec photos)
[15min] Indicateur Weasley Clock / Who Is Home - Basé sur TR-064 (beta) : MISE À JOUR : Voir l'étape 3.Longue histoire (TL; DR ci-dessous) : Il y a quelque temps, j'ai écrit un petit script bash sur mon ordinateur qui rechercher sur le réseau des appareils enregistrés et comparer leurs noms d'hôtes à une liste de noms associés. Chaque fois qu'un appareil enregistre
Quelqu'un m'aime Horloge de localisation : 6 étapes (avec photos)
Horloge de localisation de quelqu'un qui m'aime : Avec des êtres chers à l'étranger ou hors de l'État, rien ne dit que je pense mieux à vous que de toujours savoir quelle heure il est pour eux ! Mes beaux-parents à la retraite se préparaient à servir une mission d'église à Berlin, en Allemagne et ma femme a proposé le g
Comment donner à une horloge murale des aiguilles lumineuses et des marqueurs d'intervalle de temps : 14 étapes (avec photos)
Comment donner à une horloge murale des aiguilles lumineuses et des marqueurs d'intervalle de temps : Nous voulions une horloge murale de chambre avec des aiguilles lumineuses et un affichage d'intervalles de cinq minutes et quart d'heure. Il devait être lisible sans effort depuis le lit et la luminosité devait durer toute la nuit. La peinture lumineuse utilisée sur les horloges modernes a tendance à
Horloge personnalisée avec aiguilles photo : 5 étapes (avec photos)
Horloge personnalisée avec aiguilles photo : Certaines personnes sont des observateurs d'horloge. Désormais, tout le monde peut être l'horloge. D'autres projets personnalisent le cadran de l'horloge. Celui-ci personnalise les aiguilles de l'horloge. Il a l'air cher, mais coûte moins de 5 dollars et environ 30 minutes par horloge. Parfait pour Chr