Table des matières:

L'ultime mangeoire à poisson automatique DIY : Niveau 2 : 10 étapes (avec photos)
L'ultime mangeoire à poisson automatique DIY : Niveau 2 : 10 étapes (avec photos)

Vidéo: L'ultime mangeoire à poisson automatique DIY : Niveau 2 : 10 étapes (avec photos)

Vidéo: L'ultime mangeoire à poisson automatique DIY : Niveau 2 : 10 étapes (avec photos)
Vidéo: Elle Était Coincée Donc Ce Policier L'aide 2024, Juillet
Anonim
L'ultime mangeoire à poisson automatique bricolage: niveau 2
L'ultime mangeoire à poisson automatique bricolage: niveau 2

Le chargeur de niveau 2 est un grand pas en avant par rapport au niveau 1. Cette version utilise un module wifi ESP8266 pour synchroniser l'horloge de l'arduino afin de contrôler le calendrier d'alimentation et l'éclairage du réservoir.

Étape 1: Ce dont vous aurez besoin:

Tout dans le niveau 1 sauf la minuterie d'éclairage

  • ESP8266-01
  • Programmateur FTDI (pour programmer l'ESP8266)
  • Fer à souder
  • Ruban LED 5V RGBW (SK6812 IP 65, blanc lumière du jour, j'ai utilisé celui-ci)
  • La bande lumineuse doit être étanche, car l'eau s'évapore du réservoir et se condense sur le couvercle du réservoir et s'allume.
  • Alimentation 5V (j'ai utilisé celle-ci, l'arduino NE PEUT PAS alimenter toutes les lumières tout seul.).
  • N'hésitez pas à utiliser n'importe quelle alimentation 5V que vous voulez, assurez-vous simplement qu'elle fournit suffisamment de puissance pour alimenter toutes les lumières.
  • Régulateur de tension 3.3V
  • L'ESP8266 fonctionne à 3,3 V, c'est pourquoi tout le reste est à 5 V, il est plus facile de descendre de 5 à 3,3 que de descendre de 12 à 3,3
  • Résistances (1kOhm x2, 2kOhm x2 (ou 1kOhm x4), 10kOhm x1)
  • super colle
  • Colle chaude
  • Pièces imprimées en 3D x8 (fichiers STL fournis)
  • Pinces à dénuder (je recommande ces choses utiles)
  • Planche à pain (pour prototyper des choses)
  • Protoboard/Carte de projet (pour l'assemblage final)
  • Câble d'alimentation standard à 3 broches pour ordinateur.
  • (facultatif) Moteur de vibration pour téléphone portable (pour agiter la trémie) (j'en ai utilisé un)
  • Installez ces bibliothèques arduino:
  • ESP8266WiFi.h
  • WiFiUdp.h
  • TimeLib.h
  • Dusk2Dawn.h
  • Adafruit_NeoPixel.h
  • Patience.

Étape 2: Comment ça marche

L'ESP8266 obtient l'heure Unix d'un serveur NIST et la transmet à l'arduino. L'arduino utilise ensuite cette heure pour déterminer le lever et le coucher du soleil locaux et synchroniser son horloge interne pour déterminer combien de minutes se sont écoulées depuis minuit. En utilisant ce temps écoulé depuis minuit, l'arduino définit la couleur des lumières et sait quand activer le chargeur, qui est le même mécanisme que le libérateur de niveau 1. Les paramètres par défaut du code arduino que j'ai écrit ont les lumières réglées sur un cycle jour/nuit qui peut être contrôlé à la seconde près pour des fondus en douceur et sont synchronisés avec le lever et le coucher du soleil de votre emplacement. L'arduino se réinitialise également une fois par jour pour se resynchroniser avec le serveur NIST et s'assurer qu'il n'y a pas de débordement de la minuterie

Étape 3: Programmation de l'ESP8266

Programmation de l'ESP8266
Programmation de l'ESP8266

D'accord, donc l'ESP8266 est un bâtard à programmer.

Ce n'est pas compatible avec la planche à pain et si vous avez des câbles de raccordement femelles, je vous recommande de les utiliser. Si votre ESP8266 est venu sans aucun firmware installé comme le mien, vous devrez flasher le firmware. Utilisez le programmeur FTDI pour ce faire, il existe de nombreuses instructions sur la façon de le faire ailleurs, mais j'ai fourni un schéma de câblage pour plus de commodité. ASSUREZ-VOUS que le programmeur FTDI fournit 3,3 V ! 5V fera frire votre ESP8266. Dans mon schéma, l'orange connecté entre GPI01 et GND ne doit être fait que lors du flashage du firmware de l'ESP8266. GPI01 doit rester déconnecté lors du téléchargement du code arduino réel sur le module.

Ensuite, vous devrez télécharger le code réel de l'ESP8266. Utilisez le programmeur FTDI cette fois avec l'IDE Arduino. Vous devrez également télécharger et installer toutes les bibliothèques utilisées. Les paramètres utilisés pour télécharger le code avec arduino 1.8 sont dans la partie commentée au début. ASSUREZ-VOUS de mettre à jour le code avec votre réseau wifi et votre mot de passe.

Étape 4: Connectez l'ESP8266 à l'Arduino

Connectez l'ESP8266 à l'Arduino
Connectez l'ESP8266 à l'Arduino
Connectez l'ESP8266 à l'Arduino
Connectez l'ESP8266 à l'Arduino

Une fois le code téléchargé, vous pouvez déconnecter le programmeur FTDI et connecter l'ESP8266 comme indiqué sur le schéma. Les résistances sont utilisées comme diviseurs de tension pour s'assurer que l'arduino ne pompe pas 5 V dans les broches de communication et de réinitialisation de l'ESP8266. Faites cette étape sur une planche à pain pour le débogage, nous la mettrons sur la proto-carte plus tard.

Une fois que l'ESP8266 est tout branché, vous devriez voir une lumière bleue clignoter lorsqu'il est connecté à l'alimentation, après quelques secondes plus tard, il devrait obtenir l'heure Unix d'Internet et l'envoyer à l'arduino, puis il a une boucle vide vide () dans lequel il se trouve jusqu'à ce qu'il soit réinitialisé, tout comme le chargeur de niveau 1.

Pour vous assurer que l'ESP8266 fonctionne, vous devrez télécharger le code de l'étape suivante sur l'arduino et ouvrir le moniteur série.

Étape 5: Téléchargement du code Arduino et dépannage

Téléchargement du code Arduino et dépannage
Téléchargement du code Arduino et dépannage

Téléchargez maintenant le code sur l'arduino nano, ouvrez le moniteur série, vous devriez voir quelque chose comme l'exemple ci-dessus. L'arduino se réinitialise lorsque vous ouvrez le moniteur série, de sorte que l'ESP8266 sera réinitialisé en même temps. le moniteur série commencera à compter les secondes à partir de minuit le 1er janvier 1970, jusqu'à ce que l'ESP8266 lui envoie l'heure Unix actuelle. Lorsque cela se produit, vous devriez voir ceci:

Cela peut prendre 3 à 15 secondes pour que cela fonctionne, alors soyez patient. J'ai rarement vu cela prendre plus de 10 secondes, mais donnez-lui 15 secondes avant de commencer le dépannage.

Si votre ESP8266 n'envoie pas l'heure à l'arduino, essayez ces étapes:

· Assurez-vous que tout est câblé EXACTEMENT comme il est censé le faire

· Vérifiez que vous avez mis le SSID et le mot de passe du wifi correct dans l'ESP8266, sinon vous devrez le reconnecter au programmeur FTDI pour télécharger les informations correctes, puis le reconnecter à l'arduino. (un SSID ou un mot de passe super long peut causer des problèmes, mais mon réseau wifi a plus de 20 caractères dans les deux champs, donc la plupart des réseaux domestiques devraient convenir)

· Vérifiez la page d'administration de votre routeur (si vous le pouvez) pour un appareil connecté qui n'apparaît que lorsque l'ESP8266 est allumé. Pour vous assurer qu'il reste allumé pendant que vous vérifiez cela (l'arduino le désactive), reconnectez le fil menant à la broche de réinitialisation de l'ESP8266 directement à 3,3 V, en le maintenant HAUT, l'ESP8266 restera allumé. Assurez-vous de l'annuler après avoir vérifié.

Étape 6: personnalisation du code Arduino

Une fois que votre ESP8266 est connecté et envoie l'heure à l'arduino, l'arduino programmé compte simplement l'heure et affiche quelques autres informations de débogage, comme le lever et le coucher du soleil. Nous pouvons personnaliser certaines de ces valeurs dans le code de l'arduino, le reste est simplement là pour que je puisse déboguer l'ensemble du système.

Pour mieux comprendre comment l'arduino calcule le lever et le coucher du soleil, lisez la documentation sur la bibliothèque Dusk2Dawn. Vous devrez entrer votre latitude et longitude (si vous changez le nom de votre emplacement, assurez-vous qu'il est changé partout dans le code !) Dusk2Dawn utilise vos coordonnées GPS (que vous pouvez trouver sur google maps) et l'heure locale, pour déterminer quand le soleil se lève et se couche en minutes à partir de minuit. La variable minfromMid est la minute actuelle depuis minuit et est comparée au lever du soleil, au coucher du soleil, aux heures d'alimentation et au crépuscule pour dire à l'arduino quand faire quoi faire. Assurez-vous également de mettre à jour votre fuseau horaire, la valeur par défaut est EST.

Une fois votre emplacement défini, définissez l'heure du crépuscule pour indiquer à l'arduino combien de temps vous souhaitez que le crépuscule dure. Cela contrôle la durée de la période entre le jour et la nuit, et est donné en minutes. La valeur par défaut est de 90 minutes, de sorte que les lumières RGBW s'estomperont du jour à la nuit ou dans l'autre sens pendant ce laps de temps.

Ensuite, définissez les heures d'alimentation que vous souhaitez. Les heures d'alimentation réelles sont définies dans la méthode getTime() pour maintenir les tétées synchronisées avec le jour/la nuit. Si vous souhaitez plutôt que vos poissons soient nourris à la même heure chaque jour, commentez les paramètres relatifs et utilisez les paramètres initiaux au début du code. N'oubliez pas que ces heures sont en minutes à partir de minuit. L'utilisation d'heures d'alimentation initiales codées en dur pourrait interférer avec l'éclairage si l'heure d'alimentation atterrit pendant le fondu entre le crépuscule et la lumière du jour (au lever et au coucher du soleil). La valeur par défaut du code est de 15 minutes avant et après le coucher et le lever du soleil, respectivement. Des heures de repas supplémentaires peuvent être ajoutées si vous le souhaitez.

Ensuite, définissez l'heure à laquelle vous souhaitez que l'arduino se réinitialise. Cela garantit qu'aucune temporisation ne déborde et ne resynchronise l'horloge. Je recommande que cela se produise à la mi-journée, lorsque vous êtes absent, car le processus de réinitialisation provoque la pleine luminosité des lumières. Dans la journée, ce ne sera pas un problème pour le poisson, mais la nuit ou le matin/soir, le flash de lumière pourrait déranger votre poisson ou gâcher l'apparence de l'aquarium pendant quelques secondes pendant que vous en profitez.

Enfin, vérifiez le nombre de LED dans la bande que vous avez, ma bande en a 60, mais vous devez mettre à jour cette valeur dans le code de configuration pour le nombre de LED que vous utilisez.

Étape 7: L'éclairage

L'éclairage
L'éclairage

Branchez votre bande LED si vous ne l'avez pas déjà fait.

Alimentation (rouge) à 5V, masse (blanc) à la masse, signal (vert) à la broche 6 (ou tout ce que vous avez défini). Une fois l'arduino réinitialisé, les lumières seront à pleine luminosité jusqu'à ce que l'ESP8266 envoie l'heure à l'arduino et détermine où il se trouve dans le cycle d'éclairage. Il est préférable de l'installer le soir ou la nuit, car le changement de lumière sera plus drastique. Si les lumières ne changent pas dans les 30 secondes, réinitialisez l'arduino. Mon code de réinitialisation devrait fonctionner, mais je ne suis pas un programmeur de métier, il peut donc encore y avoir quelques bogues ici ou là. Vous pouvez tester que la réinitialisation fonctionne en réglant le temps de réinitialisation sur une minute après avoir retéléchargé le code et en attendant (la seconde de réinitialisation est aléatoire, la réinitialisation peut donc prendre 1 à 2 minutes). Vous pouvez faire la même astuce plus tard pour s'assurer que le servo fonctionne en changeant le temps d'alimentation. Assurez-vous simplement de modifier ces heures avant de le laisser fonctionner.

Le programme d'éclairage par défaut est assez simple:

La nuit, toutes les lumières sont éteintes sauf le bleu, qui est à son réglage le plus bas (2/255). Au fur et à mesure que l'heure approche du lever du soleil, le bleu augmente jusqu'à sa pleine intensité (255), qu'il atteint au début du crépuscule. Au crépuscule, le rouge et le vert montent de 255. Au lever du soleil, le rouge, le bleu et le vert sont tous à 255, mais la lumière du jour est blanche, donc au cours des 2 minutes suivantes, le rouge, le bleu et le vert s'estompent et le blanc s'estompe in. Tout le reste de la journée, le blanc est à pleine intensité, jusqu'à 2 minutes avant le coucher du soleil, quand il s'estompe et est remplacé par le rouge, le bleu et le vert à nouveau. Au coucher du soleil, l'éclairage rentre au crépuscule, sauf cette fois le rouge et le vert commencent à pleine intensité et s'estompent, laissant le bleu à pleine intensité lorsque la nuit arrive. À partir de là, le bleu s'estompe lentement jusqu'à sa valeur la plus basse, qu'il atteint à minuit.

Un autre code existe à la fin du croquis arduino pour d'autres modes d'éclairage, alors n'hésitez pas à jouer avec les mathématiques pour que l'éclairage s'estompe différemment ou pour changer les couleurs au cours de différentes périodes de la journée. N'oubliez pas que les calculs sont effectués au format flottant, mais que les valeurs de couleur doivent être des entiers, une conversion est donc nécessaire entre les deux avec tout nouveau calcul d'éclairage que vous implémentez.

Étape 8: Impression des pièces

Si vous n'avez pas encore imprimé les pièces pour ce niveau, faites-le. Le boîtier est à peu près de la même taille qu'une unité de filtre de taille moyenne, et il m'a fallu toute la nuit pour imprimer. Nettoyez les pièces, insérez le diviseur de cloison, avec la rainure vers le haut et le bord arrondi vers l'extérieur. Le servo est installé de la même manière qu'au niveau 1, et si vous remplacez un système de niveau 1, la trémie, le couvercle et la roue d'alimentation sont identiques, vous n'aurez donc pas à les réimprimer s'ils fonctionnent.

Le dossier.zip contient deux ensembles de fichiers STL, un pour le servomoteur SM22 d'origine que j'ai utilisé et un autre pour le servomoteur SG90 beaucoup plus courant. Les deux contiennent les fichiers Fusion 360 si vous souhaitez/devez modifier l'une des pièces. Les STL SM22 s'emboîtent parfaitement, car ce sont celles que j'ai utilisées. Je n'ai pas imprimé ni testé les pièces du SG90.

Pour les matériaux, je recommande d'utiliser un plastique alimentaire. J'ai utilisé Raptor PLA de makergeeks, qui se décline dans une tonne de couleurs et est super résistant après l'avoir recuit pendant 10 minutes. Cela peut être fait en faisant bouillir les pièces, ce que je vous recommande de faire uniquement pour la roue si elle ne convient pas tout à fait, car le recuit rétrécira les pièces d'environ 0,3 %.

J'ai imprimé le boîtier sur le côté (avec le dessus tourné vers le côté et le côté ouvert vers le haut) Cela utilise beaucoup moins de matériel de support que les autres orientations. La trémie peut être imprimée à l'envers pour éviter tout matériau de support dessus. Le couvercle de la trémie doit également être imprimé à l'envers, mais le grand couvercle doit être imprimé à l'endroit.

Il y a aussi une pièce « butée » pour fournir un support au fond du boîtier. Après avoir laissé la mangeoire en place pendant quelques semaines, j'ai remarqué qu'elle avait commencé à s'affaisser et à se plier sous le poids de l'alimentation, ce qui affectait la capacité de la trémie à alimenter la roue. Il suffit de coller 1-2 butées au bas du boîtier pour que tout reste à niveau.

Étape 9: Assemblage

Assemblée
Assemblée
Assemblée
Assemblée
Assemblée
Assemblée
Assemblée
Assemblée

Utilisez un protoboard pour tout connecter. J'ai utilisé des fils de liaison, donc je n'ai pas eu à souder autant, mais c'est là que vous souderez le plus. Tant que les connexions sont toutes les mêmes, le système fonctionnera comme sur la maquette. J'ai soudé ensemble des broches d'en-tête pour créer des "rails" d'alimentation pour la terre, 5 V, 3,3 V, ainsi que des ports de signal pour les signaux servo et non alimentés de 3,3 V à l'ESP8266 (RX, CH_PD et RST). J'ai orienté toutes les broches vers le bas du protoboard, avec les composants sur le dessus.

Une fois le protoboard terminé, insérez-le dans la cavité supérieure du boîtier et connectez le servomoteur. Les câbles d'éclairage sortent par l'encoche du couvercle du boîtier, et l'alimentation s'insère dans la cavité inférieure. La cavité inférieure est arrondie et présente une légère pente pour évacuer toute eau qui parvient d'une manière ou d'une autre à pénétrer dans le boîtier à l'écart de l'électronique. Connectez les bornes positive et négative de l'alimentation au système et ajoutez le couvercle latéral.

Si vous ne l'avez pas déjà fait pour votre alimentation, coupez l'extrémité du câble d'alimentation qui ne se branche pas au mur et dénudez suffisamment les fils pour pouvoir les mettre dans les bonnes bornes de l'alimentation. Si vous avez des extrémités à sertir que vous pouvez mettre sur les extrémités, je suggère de les utiliser, sinon le cuivre nu ira bien, assurez-vous simplement que rien ne court-circuite ! N'OUBLIEZ PAS que cela sera branché sur l'alimentation murale de votre maison, SOYEZ SÉCURISÉ ET NE TRAVAILLEZ JAMAIS AVEC LE SYSTÈME BRANCHÉ.

Ensuite, la bande lumineuse doit être ajoutée au réservoir. Retirez le couvercle de votre réservoir et séchez-le complètement. Assurez-vous que la surface du couvercle est propre et sèche avant d'ajouter les lumières. La bande que j'ai reçue a un support adhésif, cela ne fonctionnera pas pour fixer la bande lumineuse mais cela fonctionnera pour les placer le long du bord du couvercle (ou à l'endroit où vous les placez) Mon couvercle de réservoir était de la bonne taille pour ma bande, donc je n'ai pas eu à rallonger les fils. Assurez-vous simplement que tous les fils exposés sont recouverts de matériaux imperméables avant de remettre le couvercle sur le réservoir. J'ai utilisé de la colle chaude pour couvrir les extrémités, mais cela peut ne pas fonctionner à long terme. Une fois que les lumières sont disposées comme vous les aimez, collez-les en place. J'ai dû utiliser de la colle supplémentaire dans les coins car la bande LED s'est soulevée là-haut. Laissez la colle sécher quelques minutes avant de remettre le couvercle sur le réservoir, juste pour être sûr que rien ne coule. Une fois le couvercle remis en place, connectez simplement les fils à l'arduino.

L'ensemble d'alimentation est exactement le même que l'alimentation de niveau 1. Le servo s'insère dans sa cavité avec la roue d'alimentation collée dessus. La poche de la roue d'alimentation doit pointer vers la trémie lorsque le servo est en position 0 (et tourner vers le réservoir en position 180). Si vous utilisez le moteur de vibration en option, soudez-y des fils conducteurs et insérez-le dans la trémie, il y a une cavité dans la cavité du servo pour cela. Envoyez les fils conducteurs du moteur par le même chemin que les fils servo et connectez-les à la terre et à la broche du moteur sur l'arduino. Collez à chaud la trémie à la base.

Une fois que tout est connecté, vous pouvez brancher l'alimentation dans le mur. L'arduino devrait suivre sa séquence de démarrage et les lumières changeront quand il en aura le temps. Sinon, réinitialisez la carte jusqu'à ce qu'elle obtienne l'heure. J'ai collé le couvercle du boîtier en place mais j'ai laissé le couvercle latéral décollé pour pouvoir accéder à l'arduino pour le réinitialiser ou le reprogrammer.

Toutes nos félicitations! Votre mangeoire à poissons de niveau 2 est terminée ! Émerveillez-vous devant le joli éclairage et sa capacité à nourrir vos poissons lorsque vous êtes absent ! Assurez-vous de surveiller le système au cours des prochains jours pour vous assurer que tout fonctionne correctement et que vos poissons sont bien nourris.

Étape 10: Choses à surveiller au début:

Choses à surveiller au début
Choses à surveiller au début
Choses à surveiller au début
Choses à surveiller au début
Choses à surveiller au début
Choses à surveiller au début

Lorsque j'ai configuré le mien pour la première fois, j'ai accidentellement câblé le servo sur la mauvaise broche de signal, de sorte que les poissons n'ont pas été nourris pendant plusieurs jours jusqu'à ce que je réalise l'erreur (je les avais alimentés manuellement la nuit en réponse à la prochaine erreur). Essayez de régler les heures de repas au moment où vous êtes le plus susceptible d'être dans les parages pour confirmer que vos poissons ont été nourris.

Une autre erreur à surveiller est la réinitialisation. Si, par exemple, vous arrivez à la maison après le coucher du soleil et que votre réservoir est toujours allumé pendant la journée, il y a de fortes chances que la fonction de réinitialisation ait échoué et que l'arduino n'ait jamais eu l'heure de l'ESP8266. Cela signifie également que vos poissons n'ont pas été nourris depuis l'heure de réinitialisation, vous devriez donc probablement les nourrir vous-même en appuyant sur le bouton de réinitialisation de l'arduino. Je suis sûr à 99% d'avoir éliminé cela, mais le codage n'est pas mon métier, alors assurez-vous d'y faire attention.

Assurez-vous également de vérifier la nourriture dans la trémie toutes les semaines ou toutes les deux semaines, remplissez-la au besoin et assurez-vous que rien ne va mal.

Si vous partez en vacances, assurez-vous de faire un changement d'eau et d'autres entretiens de base du réservoir avant de partir. La mangeoire garantit uniquement que la nourriture et l'éclairage ne seront pas la fin de votre poisson si vous êtes parti trop longtemps. Vous ne devriez plus jamais avoir à utiliser les mangeoires de vacances !

Conseillé: