lundi, novembre 25, 2024

Créer un éclairage d’aquarium DIY avec Arduino

Les plantes d’aquarium ont besoin de lumière pour créer de l’énergie via la photosynthèse, tandis que de nombreux poissons bénéficient d’un cycle lumineux régulier, mais comment leur fournir un éclairage artificiel avec les outils électroniques de bricolage dont vous disposez déjà ? Construisons un système d’éclairage d’aquarium DIY à l’aide d’un Arduino, d’une horloge en temps réel et d’une bande LED.

Utiliser une lumière LED pour aquarium


huy-phan-nJrSZM_OaJg-unsplash

Avant de commencer, il convient de noter que les LED que nous utilisons dans ce projet ne sont pas des LED à spectre complet qui imitent la lumière du jour. Cela signifie qu’ils ne fournissent pas toutes les longueurs d’onde lumineuses bénéfiques pour les plantes, ce qui les rend inadaptés aux plantes d’aquarium ayant de gros besoins en lumière et gaspille une petite quantité d’énergie produite par les LED.

Cela dit, pour les aquariums plantés nécessitant peu de lumière, un éclairage LED comme celui-ci peut être un excellent choix qui offre une croissance plus rapide et plus saine des plantes sans le coût associé à de nombreux produits d’éclairage d’aquarium ; vous n’obtiendrez tout simplement pas la même puissance.

Ce ne sont pas seulement les plantes de votre aquarium qui bénéficient de l’éclairage LED : de nombreuses espèces de poissons bénéficient d’un cycle lumineux régulier qui imite le jour et la nuit pour préserver leur rythme circadien, leur permettant de se reposer, de chercher de la nourriture et d’être actifs comme ils le feraient. être à l’état sauvage.

Pour construire un système d’éclairage LED qui alimente un cycle jour-nuit pour les poissons et les plantes de votre aquarium, nous utiliserons un Arduino, une horloge en temps réel (RTC) et une bande LED, comme cela peut être utilisé pour un large variété de projets d’éclairage LED Arduino.

UTILISEZ LA VIDÉO DU JOUR

De quoi avez-vous besoin?


pièces d'éclairage d'aquarium

Vous n’avez besoin que d’une poignée de pièces pour terminer cette construction :

  • 1x microcontrôleur Arduino avec broches SDA/SCL (Uno, Leonardo, Micro, etc. ; nous utilisons un Pro Micro)
  • 1 module RTC DS3231
  • 1x bande LED NeoPixel RGB WS2812/WS2812B avec indice de protection IP65 ou supérieur (nous utilisons une bande WS2812 de 60 LED de 1 mètre qui a été scellée avec du silicium ; vous pouvez bénéficier de l’utilisation de plus de LED si vous avez un réservoir de plus de 20 gallons)
  • 1x adaptateur d’alimentation 12v AC à DC avec connecteur à barillet femelle
  • 1x condensateur 1000uF (optionnel)
  • Assortiment de fils et pièces thermorétractables
  • Superglue/ruban adhésif double face
  • Filament d’imprimante 3D (optionnel)

Vous aurez également besoin de quelques outils pour mener à bien ce projet.

  • Un fer à souder
  • Coupe-fils/dénudeurs
  • Un pistolet thermique
  • Une imprimante 3D (facultatif)

Câblage de la configuration de la lumière LED de votre aquarium DIY


circuit complet de lumière d'aquarium

Le câblage de votre éclairage d’aquarium DIY est simple, avec seulement quelques connexions à faire avant de pouvoir commencer à coder votre projet. Le schéma ci-dessus montre toutes les connexions que vous devez établir, mais nous les avons détaillées dans les sections ci-dessous.

Câblage de l’horloge en temps réel


circuit rtc de lumière d'aquarium

Le DS3231 RTC dans ce projet agit comme une minuterie pour l’éclairage LED de notre aquarium. Ce module a quatre broches que nous utiliserons : SCL, SDA, VCC et GND, qui peuvent toutes être directement câblées à notre Arduino Pro Micro.

  • SCL à 3 sur Arduino
  • SDA à 2 sur Arduino
  • VCC à 5V sur Arduino
  • GND à GND sur Arduino

Câblage de la bande LED


circuit de bande led lumière d'aquarium

Le câblage de votre bande LED est plus compliqué que le RTC, car les LED sont susceptibles d’être à une certaine distance de l’Arduino et vous devez utiliser un adaptateur secteur séparé pour obtenir la pleine luminosité de vos LED. Le schéma ci-dessus montre comment vous pouvez connecter votre bande LED NeoPixel à votre Arduino et à la source d’alimentation pour obtenir les meilleurs résultats.


  • DIN vers broche numérique 7 sur Arduino
  • GND à GND sur Arduino et borne de source d’alimentation négative (-)
  • VCC/5V+/12V à la borne d’alimentation positive (+)
  • Il est fortement recommandé d’utiliser un condensateur de 1000 uF sur les bornes de source d’alimentation négative (-) et positive (+) pour éviter d’endommager vos LED.

En plus de connecter notre bande LED à notre source d’alimentation Arduino et 12V, nous allons également modifier notre clone NeoPixel pour créer trois bandes LED plus petites qui seront connectées en chaîne avec un long câble. Nous utiliserons pour cela un câble triple conducteur isolé, ainsi qu’un thermorétractable pour sceller les joints. Notre bande LED est livrée avec des connecteurs JST à chaque extrémité, nous offrant un moyen pratique de détacher la bande de notre Arduino.

Codage de vos lumières NeoPixel d’aquarium Arduino DIY

L’élément de codage de ce projet est plus compliqué que le câblage. Vous pouvez commencer avec un projet Arduino vide de base, car nous n’aurons besoin de rien en dehors des fonctions qui l’accompagnent.

Ajout des bibliothèques

Avant d’ajouter du code, nous devons installer certaines bibliothèques, et toutes se trouvent dans le gestionnaire de bibliothèques Arduino IDE.

  • Fil.h : Cette bibliothèque est livrée avec l’IDE Arduino et vous permet de communiquer avec des composants I2C, comme notre RTC.
  • Adafruit_NeoPixel.h : Cette bibliothèque ajoute des fonctions/classes pour contrôler les LED NeoPixel, mais elle fonctionne aussi bien avec notre bande LED WS2812 habituelle.
  • RTClib.h : Cette bibliothèque nous permet de contrôler notre module DS3231 RTC.
#include <Adafruit_NeoPixel.h> //LED Strip library
#include <Wire.h>
#include <RTClib.h> //RTC Library

Ajout de variables globales (facultatif)

Nous avons ajouté des variables globales à notre code afin de pouvoir modifier le comportement de notre éclairage avec des boutons et d’autres entrées dans de futurs projets. Ce n’est pas essentiel, mais cela facilitera la modification de votre code lorsque vous devrez apporter des modifications. Nous avons ajouté des variables pour la luminosité et la teinte des LED, ainsi qu’une variable pour stocker la couleur de notre bande LED.


Déclaration et initialisation des objets bande LED/RTC

Ensuite, nous devons déclarer notre bande LED et notre RTC en tant qu’objets pouvant être utilisés par notre Arduino, puis les initialiser dans notre boucle de configuration.

Nos bandes de LED peuvent être déclarées en définissant d’abord la broche utilisée et en définissant le nombre de LED sur la bande, mais vous pouvez ensuite utiliser les lignes ci-dessous pour faire la déclaration elle-même.

#define LED_PIN 7 // Sets our LED strip to pin 7
#define LED_COUNT 60 // Sets the NeoPixel LED count
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); //Declares our LED strip object

Le RTC est plus facile à déclarer et il vous suffit d’utiliser la ligne ci-dessous pour le faire fonctionner ; tous les paramètres importants sont appliqués par défaut.

RTC_DS3231 rtc;

Une fois cette opération terminée, il nous suffit d’initialiser notre RTC en utilisant le code suivant dans notre classe de configuration.

 Serial.begin(57600); //Begins our serial connection

#ifndef ESP8266
while (!Serial); // Wait for serial port to connect
#endif

if (! rtc.begin())
Serial.println("Couldn't find RTC");
Serial.flush();
while (1) delay(10);
//This tests to make sure that our RTC is connected

Construire la boucle de minuterie

Il est maintenant temps de construire la boucle principale pour les bandes LED de votre aquarium. Ceci est géré dans la boucle principale fournie avec votre projet Arduino vide, ce qui signifie qu’il fonctionnera en continu.

Nous commençons la boucle en vérifiant l’heure actuelle avec notre horloge en temps réel et en définissant une variable pour la stocker, en veillant à ce que la lumière du jour soit fournie pendant la journée. Une fois que nous avons un DateHeure variable pour jouer avec, nous pouvons affecter l’heure et la minute actuelles à des variables distinctes, ce qui nous permet de contrôler notre éclairage avec une grande précision.

 DateTime now = rtc.now(); //Collects the current time
int hh = now.hour(); //Applies the current our to a variable

Ensuite, nous avons utilisé une série de si déclarations pour déterminer s’il faut allumer nos lumières. Celles-ci si Vérifiez si l’heure actuelle est égale ou supérieure à 9 h et égale ou inférieure à 21 h, ce qui nous donne une fenêtre de 9 h à 21 h pour allumer nos lumières LED.

Si ces conditions sont remplies, coder dans le si définit la luminosité et la couleur de nos bandes LED sur les variables globales que nous avons définies précédemment, tout en utilisant un Afficher commande pour mettre à jour la bande LED. Si les conditions ne sont pas remplies, un autre La déclaration est utilisée pour régler la luminosité des LED sur 0, les éteignant efficacement pendant la nuit.

 strip.begin(); //Turns on the LED strip
strip.show(); //Shows the LED changes from each loop

if (hh <= 8) //If the time is equal or less than 8AM, the LED strip is cleared
strip.clear();

if ((hh > 8) && (hh < 21)) //If the time is between 9AM and 9PM, the LEDs turn on
strip.setBrightness(255);
strip.fill(yellowWhite, 0, 59);

if (hh >= 21) //If the time is equal or greater than 9PM, the LED strip is cleared
strip.clear();

Le code complet

#include //LED Strip library
#include
#include //RTC Library
#define LED_PIN 7 // Sets our LED strip to pin 7
#define LED_COUNT 60 // Sets the NeoPixel LED count
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); //Declares our LED strip object
uint32_t yellowWhite = strip.Color(255, 251, 201); //Creates a light color variable
RTC_DS3231 rtc; //Declares our RTC object
void setup()
Serial.begin(57600); //Begins our serial connection
#ifndef ESP8266
while (!Serial); // Wait for serial port to connect
#endif
if (! rtc.begin())
Serial.println("Couldn't find RTC");
Serial.flush();
while (1) delay(10);
//This tests to make sure that our RTC is connected

void loop()
DateTime now = rtc.now(); //Collects the current time
int hh = now.hour(); //Applies the current our to a variable
strip.begin(); //Turns on the LED strip
strip.show(); //Shows the LED changes from each loop
if (hh <= 8) //If the time is equal or less than 8AM, the LED strip is cleared
strip.clear();

if ((hh > 8) && (hh < 21)) //If the time is between 9AM and 9PM, the LEDs turn on
strip.setBrightness(255);
strip.fill(yellowWhite, 0, 59);

if (hh >= 21) //If the time is equal or greater than 9PM, the LED strip is cleared
strip.clear();

delay(1000); //Delay for stability


Installation de votre éclairage LED pour aquarium

Notre bande LED est livrée avec une bande adhésive pratique attachée, ce qui la rend incroyablement facile à fixer au capot/couvercle de notre réservoir. Le même résultat peut être obtenu avec du ruban adhésif double face ou de la superglue, mais vous devez faire attention à ce que l’adhésif que vous choisissez puisse survivre à l’accumulation de condensation. Vous pouvez également imprimer en 3D un support pour votre nouvelle lampe d’aquarium si votre réservoir n’a pas de couvercle, et un étui pour les autres composants que vous avez utilisés.

Lumières d’aquarium DIY Arduino

Les plantes d’aquarium et les poissons bénéficient d’un cycle d’éclairage régulier. Bien que notre lumière ne soit pas à spectre complet, elle fournit toujours une grande partie de la lumière bleue, de la lumière verte et de la lumière rouge dont vos plantes ont besoin. Ce qui est mieux, cependant, c’est que ce projet est incroyablement abordable, simple et amusant à entreprendre.


L'aquarium de l'animalerie
Les meilleurs accessoires pour réservoirs d’aquarium intelligents

Automatisez votre aquarium en investissant dans des accessoires intelligents qui réduiront le besoin d’intervention manuelle, gardant vos poissons en bonne santé et heureux.

Lire la suite


A propos de l’auteur

Source-133

- Advertisement -

Latest