Table des matières:

LaserKitty !! : 7 étapes (avec photos)
LaserKitty !! : 7 étapes (avec photos)

Vidéo: LaserKitty !! : 7 étapes (avec photos)

Vidéo: LaserKitty !! : 7 étapes (avec photos)
Vidéo: Ages 1 - 100 Fight For $500,000 2024, Novembre
Anonim
Image
Image
Obtenez vos affaires
Obtenez vos affaires

C'est une vérité universellement reconnue qu'un seul chat en possession de la bonne fortune doit avoir besoin d'un jouet laser. Comme pour les messieurs célibataires en manque de futures épouses, certaines précautions doivent être observées. Mais n'est-ce pas vrai pour tout ce qui vaut vraiment la peine d'être possédé ?

Si vous avez des inquiétudes concernant les animaux domestiques et la sécurité laser, passez à la fin de ce Instructable avant de commenter. Si vous avez des inquiétudes au sujet d'une future épouse, ou même actuelle, vous devrez probablement chercher ailleurs.

Maintenant, vous pouvez vous rendre dans votre animalerie locale et acheter un pointeur laser, et peut-être même un engin qui ajoute une automatisation rudimentaire. Vous économiseriez de l'argent et pourriez le retourner si cela ne fonctionnait pas. Ou vous pouvez construire quelque chose vous-même. Il existe déjà de nombreux exemples, mais voici ma contribution au canon. Il comporte:

  • Contrôle total du smartphone
  • Modes manuel, automatique et programmé
  • Interface d'application personnalisée
  • État du système synchronisé entre plusieurs clients Web
  • État du système reflété sur LaserKitty !! lui-même
  • Restrictions de plage de panoramique et d'inclinaison configurables
  • Durées et fréquences des sessions de jeu configurables
  • Fenêtres de lecture configurables
  • Page de configuration avec un aperçu des paramètres actuels
  • Synchronisation de l'heure NTP
  • Gestionnaire WiFi pour une configuration facile sur de nouveaux réseaux
  • Générateur de sons pour jouer le thème Mission Impossible avant chaque session de jeu: votre chat appréciera ou non l'ironie.
  • Notifications pushbullet sur tous vos appareils lorsqu'une nouvelle session de jeu démarre
  • Position d'accueil configurable pour que le temps de jeu se termine au bol de nourriture ou au jouet stationnaire
  • Tous les paramètres stockés dans l'EEPROM ne sont donc pas perdus en cas de panne de courant
  • Et beaucoup plus! Eh bien, pas vraiment, c'est à peu près tout.

Étape 1: Obtenez vos affaires

C'est ce que j'ai utilisé:

  • Un mini ensemble panoramique et inclinaison. Ce n'est certainement pas le moins cher que vous puissiez trouver et il nécessite quelques modifications pour nos besoins. Je l'ai choisi parce qu'il a l'air un peu plus cool que les assemblages en plastique du sous-sol. En prime inattendue, sa conception permet un moyen très simple de monter le laser. Il est livré avec quelques micro servos, mais je vous recommande fortement d'en acheter plusieurs supplémentaires à des fins de remplacement. Vous aurez besoin d'au moins un servo supplémentaire (un servo cassé est parfait).
  • Un enclos. Cela me fait mal de payer 8 $ pour une boîte en plastique et vous pourriez certainement trouver quelque chose de convenable pour moins cher. Quelque chose à propos de la taille de l'enceinte liée est à peu près juste.
  • Une carte de développement basée sur ESP8266. J'ai utilisé le NodeMCU. Il n'est pas exagéré de dire que j'aime ces choses. Facile à utiliser dans l'IDE Arduino et beaucoup de mémoire flash pour vos pages Web. Aussi bon marché et, d'après mon expérience, très difficile à faire frire.
  • Un mini-laser. Dix pour 6 $, y compris Amazon Prime. Vous plaisantez j'espère?? Maintenant, je dois juste trouver quoi faire avec les neuf autres.
  • Un buzzer passif pour les tonalités.
  • Un relais à deux canaux. Je les utilise pour allumer et éteindre les servos et le laser. Vous pourrez peut-être éliminer ce composant comme je l'expliquerai plus tard.
  • Alimentation 5VDC. J'espère que vous en aurez un qui traîne à partir d'un gadget oublié depuis longtemps, mais sinon quelque chose de bon marché et de joyeux qui peut produire environ 1A de 5VDC est ce dont vous avez besoin.
  • Consommables divers tels que résistances, LED, fil de raccordement, thermorétractable, soudure, colle chaude. L'habituel. J'ai également utilisé une prise cylindrique pour l'alimentation 5VDC entrante de ma collection embarrassante de cartes d'imitation Arduino détruites.
  • Dernier point, mais non le moindre, un décalque en vinyle pour cette touche finale fantaisiste.

Donc voilà. Vous cherchez environ 50 $ en tout. Vous pourriez le faire pour moins cher, mais votre chaton ne mérite-t-il pas le meilleur ?

Étape 2: Outils et ressources

Outils et ressources
Outils et ressources

Rien de spécial du côté des outils ici. Juste un fer à souder décent, un multimètre, une perceuse et des outils à main de base. Une alimentation de banc est bien pour expérimenter avec le laser mais pas indispensable.

Ce projet exploite vraiment les capacités de l'ESP8266 et en particulier du NodeMCU. Si vous commencez tout juste avec l'ESP8266, je n'ai pas trouvé de meilleure ressource à guichet unique que cette chose. En dehors de cela, il s'agit de rechercher sur Google des réponses aux problèmes qui se sont posés en cours de route.

Étape 3: préparer le boîtier

Préparer l'enceinte
Préparer l'enceinte
Préparer l'enceinte
Préparer l'enceinte

Comme je l'ai peut-être déjà mentionné, payer 8 $ pour un boîtier en plastique semble scandaleux. Ce qui est encore pire, c'est de gâcher la chose en mettant un trou au mauvais endroit. Donc, avant d'avoir dans votre boîte avec la perceuse et/ou tout autre générateur de chaos à votre disposition, considérez les erreurs que j'ai commises.

  • Tout d'abord, vous devez penser à l'endroit où toutes les choses s'adapteront. La bonne nouvelle est que le boîtier que je suggère a beaucoup d'espace, même avec le câblage très désordonné que vous voyez ici. Vous pourrez peut-être même vous en tirer avec un boîtier plus petit, surtout si vous supprimez les relais.
  • Le plus important est l'endroit où vous monterez l'ensemble panoramique et inclinaison dans le couvercle. Ma première tentative est montrée ici. J'ai pensé que je le placerais artistiquement hors du centre et un peu en retrait pour plus de stabilité. Mauvaise idée! Vous avez besoin de l'assemblage aussi près que raisonnablement possible du côté du couvercle afin que le boîtier lui-même n'interfère pas avec le faisceau à des angles d'inclinaison élevés. De plus, je pense que l'arrangement idéal serait de monter le laser panoramique perpendiculairement au côté court plutôt que, comme je l'ai fait, le côté long. Je l'ai fait dans l'autre sens pour des raisons purement esthétiques même s'il y a un peu plus de potentiel d'interférence.
  • Comme vous pouvez le voir, le NodeMCU est monté sur Perfboard et aurait facilement pu être positionné de manière à ce que son connecteur micro USB soit accessible depuis une fente sur le côté ou à l'arrière. Cela faciliterait les mises à jour logicielles (pas besoin d'enlever le couvercle). Mon idée initiale était d'utiliser la bibliothèque Over-The-Air (OTA) pour les mises à jour et vous verrez que mon code inclut cette fonctionnalité, bien qu'elle soit commentée. Le problème était que le générateur de sons et l'OTA ne jouaient pas bien ensemble (le NodeMCU se réinitialisait à plusieurs reprises au milieu de la chanson). Ce problème est probablement réparable, mais je n'ai jamais réussi à mettre à jour SPIFFS autrement que via USB, donc avoir accès au connecteur USB aurait été bien. Au moment où j'ai compris tout cela, j'avais monté le NodeMCU sur le Perfboard d'une manière qui signifiait que faire sortir le connecteur de la boîte n'était pas possible sans beaucoup de faffing. Tant pis.
  • Si je devais refaire le projet, j'alignerais la LED RVB avec la LED rouge "sous tension". (Le but de la LED RVB est d'indiquer dans quel mode se trouve LaserKitty!! sans avoir à regarder l'application.)

La seule partie légèrement délicate de la réalisation des trous est la partie rectangulaire pour le servo panoramique. J'ai utilisé une perceuse et une lime. Comme vous pouvez le voir lors de ma première tentative, il est difficile de le rendre exactement carré (ou rectangulaire, je suppose). Mais lorsque le servo est monté, vous ne pouvez pas vraiment le voir.

Vous aurez besoin de faire trois autres trous, ceux-ci doivent être placés à l'arrière de la boîte et sont utilisés pour la prise d'alimentation, le buzzer et le point d'entrée pour le servo d'inclinaison et le câblage laser. Tous ces trous peuvent être ronds et ne présentent aucune difficulté à réaliser avec juste une perceuse.

L'utilisation libérale de colle chaude sécurise tout en place (à l'exception du servo panoramique, qui est boulonné au couvercle à l'aide des languettes de montage du servo).

Étape 4: L'assemblage panoramique et inclinaison

L'assemblage panoramique et inclinaison
L'assemblage panoramique et inclinaison
L'assemblage panoramique et inclinaison
L'assemblage panoramique et inclinaison
L'assemblage panoramique et inclinaison
L'assemblage panoramique et inclinaison
L'assemblage panoramique et inclinaison
L'assemblage panoramique et inclinaison

Quand j'ai reçu l'ensemble panoramique et inclinaison, j'ai pensé que j'avais fait une autre grosse erreur. Assemblé comme indiqué, il ne s'agit pas du tout d'un mécanisme d'orientation et d'inclinaison, mais plutôt d'une conception d'inclinaison et de torsion - appropriée pour son utilisation prévue en tant que bras de robot. Cependant, un moment de réflexion calme m'a permis de voir qu'il pouvait effectivement être assemblé d'une manière différente pour obtenir le résultat souhaité. Mieux encore, l'emplacement d'origine du servo "twist" pourrait être utilisé comme support pour le laser.

Si vous examinez l'assemblage terminé sur ces images, vous en aurez l'idée. Vous vous retrouverez avec un petit bloc de métal qui n'est pas nécessaire dans cette conception.

Le flash d'inspiration que j'ai eu était d'utiliser l'emplacement d'origine du deuxième servo pour monter le laser. Mieux encore, si vous décapitez un servo duff et percez le support de bras cannelé, c'est l'emplacement de montage parfait pour le laser ! Ne sous-estimez pas l'effort nécessaire pour scier le servo. Il y a de la viande à ces petits pourrisseurs !

Après l'assemblage et l'installation dans le boîtier, ET AVANT D'APPLIQUER L'ALIMENTATION, assurez-vous qu'il fera un panoramique d'environ 180 degrés sur la face du boîtier. D'une manière ou d'une autre, après l'avoir installé avec succès, j'ai remonté le support panoramique de sorte que les têtes de boulons de la base se fixent contre le bit surélevé du servo où le bras est destiné à être monté. Le résultat a été que le servo a immédiatement dépouillé ses engrenages. Du côté positif, j'ai maintenant un autre servo duff à utiliser comme support laser.

Étape 5: câblez-le

Câblez-le
Câblez-le

Espérons que le croquis de Fritzing clarifie les choses. Quelques points à préciser davantage:

  • Comme discuté plus tard, je voulais rendre le laser aussi faible que possible tout en conservant une luminosité suffisante pour le rendre utilisable dans toutes les lumières intérieures, sauf la plus brillante. Avec un peu d'expérimentation, j'ai décidé de l'alimenter à partir d'une broche 3,3 VDC sur le Node MCU, en ajoutant une résistance de 22 Ohm en série pour faire bonne mesure. Avec cette configuration, il consomme environ 10 mA, donc en théorie, il pourrait être alimenté directement à partir d'une broche GPIO, mais j'ai trouvé cela trop faible, même sans résistance.
  • Le laser a une capacité très limitée à changer de foyer (collimation ?) que j'ai utilisé pour agrandir le point et ainsi disperser l'énergie laser
  • Ma première pensée a été d'allumer et d'éteindre les servos avec un transistor, mais cela a rendu les servos fous. Je suis sûr qu'il y a une bonne raison à cela, mais comme j'avais déjà quelques relais à portée de main, j'ai choisi la solution de facilité et totalement isolé l'alimentation des servos. Et comme les relais avaient deux canaux, j'ai pensé que je pourrais aussi bien changer le laser de cette façon (les fils violets sont le signal de contrôle du MCU). J'aime aussi le bruit de cliquetis mécanique que cette solution produit. Vous pouvez cependant en décider autrement. Non illustré, mais les relais sont alimentés directement à partir de l'alimentation 5VDC - le NodeMCU aurait peut-être pu alimenter directement un relais à deux canaux, mais il n'y avait aucune raison de le risquer. Si vous avez déjà utilisé ces relais, vous saurez que cela nécessite de retirer le cavalier entre JD-VCC et VCC.
  • La LED RGB a des résistances de limitation de courant de 220 Ohm sur le rouge et le vert et de 100 Ohm sur le bleu. La LED rouge "power on" a une résistance de 450 Ohm car elle est alimentée en 5VDC plutôt qu'en 3.3VDC. Ce ne sont que des valeurs approximatives pour obtenir beaucoup de luminosité et une longévité raisonnable.
  • Le buzzer est assez fort. Vous voudrez peut-être ajouter une résistance à la ligne de signal pour atténuer le volume. Les tonalités peuvent être complètement désactivées via le logiciel, mais quelque chose entre les deux pourrait être agréable.

Étape 6: le code

Le code
Le code
Le code
Le code
Le code
Le code
Le code
Le code

Malgré l'explication assez longue du côté matériel, 90% de l'effort ici est allé dans le code. Cela aurait été plus mais j'ai "emprunté" un excellent code pour le mouvement du laser en mode automatique à partir d'ici. Inutile de réinventer la roue. En fait, vous pouvez très bien décider de suivre ce projet plutôt que celui-ci, ou mélanger et assortir les aspects des deux. Certes, j'aime l'idée de fabriquer certains composants avec une imprimante 3D, mais je n'en ai pas.

Mon code (trouvé sur GitHub ici) est en trois parties principales. Il y a le croquis Arduino lui-même, des fichiers HTML avec un tas de Javascript pour le contenu de l'application et des fichiers CSS associés pour le style. J'ai utilisé ce projet pour en apprendre un peu plus sur tous ces éléments de programmation, en partant d'une base très faible surtout du côté de l'interface d'application. J'ai essayé de ranger un peu le code, mais mon objectif principal était de faire fonctionner la chose. Le code utilise des Websockets pour la communication bidirectionnelle entre le serveur NodeMCU et les clients connectés.

Le code Arduino est abondamment commenté, donc j'espère que vous le trouverez facile à suivre. Une fois que vous l'avez téléchargé depuis GitHub, collez le tout dans un dossier, téléchargez le croquis sur votre MCU, puis téléchargez le contenu du sous-dossier "data" dans SPIFFS.

En fait, grattez ça. Si vous souhaitez utiliser la fonction de notification Pushbullet, vous aurez d'abord besoin d'un jeton d'accès API disponible à partir d'ici. Il va dans la ligne 88 du code Arduino. Pushbullet fonctionne bien, mais si vous configurez un compte sur votre téléphone pour la première fois, vous devrez peut-être vous connecter, vous déconnecter, puis vous reconnecter avant que les notifications ne commencent à apparaître comme configuré dans les paramètres de votre téléphone.

Il y a trois pages Web: un écran de démarrage, l'interface d'application proprement dite et une page de configuration. Séparer le contenu de cette manière rend l'utilisation de l'interface beaucoup plus proche d'une application, notamment en raison des nombreuses options de configuration (la capture d'écran ne capture qu'une partie de ces options).

Une bizarrerie de faire en sorte que le NodeMCU serve plusieurs pages était que je devais mettre directement tous les fichiers image dans le dossier de données - je ne pouvais tout simplement pas le faire fonctionner s'ils étaient placés dans des sous-dossiers. J'ai inclus toutes les images que j'ai utilisées dans le référentiel GitHub afin que cela fonctionne immédiatement, mais vous souhaiterez sans doute les remplacer par vos propres images.

Étape 7: Touches finales et sécurité laser

Touches finales et sécurité laser
Touches finales et sécurité laser
Touches finales et sécurité laser
Touches finales et sécurité laser
Touches finales et sécurité laser
Touches finales et sécurité laser

Malgré son coût exorbitant de 8 $, le boîtier est plutôt utilitaire. Après avoir fouillé un peu sur Etsy, j'ai trouvé le graphique en vinyle que vous voyez sur le produit fini (et qui est reflété sur la page de l'application). Expédié du Royaume-Uni, c'était un peu cher mais ça en valait vraiment la peine - et vous en obtenez deux au cas où vous voudriez reproduire le projet. Lors de mon dernier épanouissement artistique, j'ai fait pivoter les petites "fossettes" dans les yeux du chat pour qu'il regarde la LED d'alimentation rouge vif, qui remplace le point laser. En fonction de votre appétit pour la fantaisie, vous pouvez ou non choisir d'aller plus loin.

Le fichier HTML de l'écran de démarrage comprend du code pour ajouter une icône à l'écran d'accueil de votre iPhone.

Enfin, je ne devrais pas ignorer les inquiétudes exprimées concernant l'utilisation d'un laser pour jouer avec les chats. Il y a deux objections principales:

  • Le laser pourrait aveugler ou endommager les yeux du chat
  • Jouer avec un point laser n'est finalement pas satisfaisant pour les chats car ils ne peuvent jamais l'attraper ou le "tuer"

Il y a beaucoup de bavures sur les interwaves sur les deux sujets, certains apparemment informés, d'autres moins. En fin de compte, vous devez prendre vos propres décisions pour savoir si ce projet, ou tout autre jouet laser, convient à votre chat. Ce que j'ai fait, c'est essayer de résoudre le premier problème en rendant le laser aussi faible que possible sans le rendre trop difficile à voir à des niveaux de lumière raisonnables. Assurez-vous également que tout chat utilisant l'appareil n'a pas tendance à regarder le laser lui-même plutôt que le point - surtout si vous avez l'intention d'utiliser le LaserKitty !! en mode Auto ou Programmé. L'un des objectifs de la fonction de notification Pushbullet est de l'utiliser avec une caméra de surveillance afin de vous rappeler de regarder votre chat jouer pendant votre absence.

Quant à la deuxième objection, j'ai inclus la possibilité de sauvegarder une "Position d'accueil" à laquelle le laser reviendra après les sessions de jeu programmées. Si vous le définissez pour qu'il pointe vers un jouet fixe ou le bol de nourriture de votre chaton, cela fournira, espérons-le, une certaine résolution. Bien que, avec les chats, qui sait vraiment ?

Conseillé: