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'une alimentation régulière. cycle de lumière, mais comment pouvez-vous leur fournir un éclairage artificiel avec les outils électroniques de bricolage que vous avez déjà avoir? 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

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, les rendant ne convient pas aux plantes d'aquarium ayant de gros besoins en lumière et gaspillant une petite quantité d'énergie produite par le 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 des plantes plus rapide et plus saine sans le coût associé à de nombreux éclairages d'aquarium des produits; vous n'obtiendrez tout simplement pas la même puissance.

instagram viewer

Les plantes de votre aquarium ne sont pas les seules à bénéficier 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 dans le 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 une grande variété de Projets d'éclairage LED Arduino.

De quoi avez-vous besoin?

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

  • 1 fois Microcontrôleur Arduino avec broches SDA/SCL (Uno, Leonardo, Micro, etc.; nous utilisons un Pro Micro)
  • 1 module RTC DS3231
  • 1 bande LED RGB NeoPixel 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 silicone; 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

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

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

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 toute la 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 le meilleur 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.
#inclure  //Bibliothèque de bandes LED
#inclure
#inclure //Bibliothèque RTC

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 // Définit notre bande LED sur la broche 7
#define LED_COUNT 60 // Définit le nombre de LED NeoPixel
Bande Adafruit_NeoPixel (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); // Déclare notre objet bande LED

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.

 Série.begin (57600); // Commence notre connexion série

#ifndef ESP8266
tandis que (!Série); // Attendre que le port série se connecte
#fin si

si (! rtc.begin()) {
Serial.println("Impossible de trouver RTC");
Serial.flush();
tandis que (1) retarde (10);
} // Ceci teste pour s'assurer que notre RTC est connecté

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(); // Collecte l'heure actuelle
int hh = now.hour(); //Applique le our actuel à une 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(); //Allume la bande LED
strip.show(); // Affiche les changements de LED de chaque boucle

if (hh <= 8) { //Si l'heure est égale ou inférieure à 8h00, la bande LED est effacée
strip.clear();
}
if ((hh > 8) && (hh < 21)) { //Si l'heure est entre 9h et 21h, les LED s'allument
strip.setBrightness (255);
strip.fill (jauneBlanc, 0, 59);
}

if (hh >= 21) { //Si l'heure est égale ou supérieure à 21h, la bande LED est effacée
strip.clear();
}

Le code complet

#include //Bibliothèque de bandes LED
#inclure
#include //Bibliothèque RTC
#define LED_PIN 7 // Définit notre bande LED sur la broche 7
#define LED_COUNT 60 // Définit le nombre de LED NeoPixel
Bande Adafruit_NeoPixel (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); // Déclare notre objet bande LED
uint32_t jauneBlanc = bande. Couleur (255, 251, 201); // Crée une variable de couleur claire
RTC_DS3231 rtc; // Déclare notre objet RTC
void setup() {
Série.begin (57600); // Commence notre connexion série
#ifndef ESP8266
tandis que (!Série); // Attendre que le port série se connecte
#fin si
si (! rtc.begin()) {
Serial.println("Impossible de trouver RTC");
Serial.flush();
tandis que (1) retarde (10);
} // Ceci teste pour s'assurer que notre RTC est connecté
}
boucle vide() {
DateTime now = rtc.now(); // Collecte l'heure actuelle
int hh = now.hour(); //Applique le our actuel à une variable
strip.begin(); //Allume la bande LED
strip.show(); // Affiche les changements de LED de chaque boucle
if (hh <= 8) { //Si l'heure est égale ou inférieure à 8h00, la bande LED est effacée
strip.clear();
}
if ((hh > 8) && (hh < 21)) { //Si l'heure est entre 9h et 21h, les LED s'allument
strip.setBrightness (255);
strip.fill (jauneBlanc, 0, 59);
}
if (hh >= 21) { //Si l'heure est égale ou supérieure à 21h, la bande LED est effacée
strip.clear();
}
retard (1000); //Délai de stabilité
}

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.

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

PartagerTweeterE-mail
Rubriques connexes
  • DIY
  • Arduino
  • Lumières LED
  • Maison intelligente
A propos de l'auteur
Samuel L. Garbet (33 articles publiés)

Samuel est un rédacteur technologique basé au Royaume-Uni, passionné par tout ce qui concerne le bricolage. Ayant démarré des entreprises dans les domaines du développement Web et de l'impression 3D, en plus d'avoir travaillé comme écrivain pendant de nombreuses années, Samuel offre un aperçu unique du monde de la technologie. Se concentrant principalement sur des projets de technologie de bricolage, il n'aime rien de plus que partager des idées amusantes et passionnantes que vous pouvez essayer à la maison. En dehors du travail, Samuel peut généralement être trouvé en train de faire du vélo, de jouer à des jeux vidéo sur PC ou de tenter désespérément de communiquer avec son crabe de compagnie.

Plus de Samuel L. Garbet

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Cliquez ici pour vous abonner