Iluminare automatizata pentru acvariu cu Arduino Nano si C++

Ca mulți dintre voi, am și eu un acvariu în cameră cu câțiva pești. Este un acvariu mic în care trăiesc în medie 10 peștișori cărora le dau de mâncare o data pe zi și le lăsam aprinsă lumina de dimineață de la 8 până seara pe la ora 22 sau poate o uitam aprinsă și o stingea unul din părinți mai târziu. Am înțeles că lumina în acvariu trebuie să stea aprinsă 8 ore, în rest acvariul va mai primi ceva lumină naturală de afară în funcție de sezon, deci cele minim 14 ore de lumină artificială depășea mult limita recomandată. Așa că m-am gândit să fac un dispozitiv automat care să aprindă și să stingă automat lumina acvariului fără ca eu sau părinții mei să mai intervenim.

Ce am folosit in proiect:

  • 1 x Arduino Nano (microcontroller în care am încărcat codul scris în C++)
  • 1 x Modul RTC DS3231 (ține minte cât e ceasul)
  • 1 x Releu (căruia îi dăm comandă ca să pornească sau să oprească lumina, ca unui întrerupător)
ZCoder.ro – Auto-Illumin8er – dispozitivul creat de mine

Suplimentar, am construit la imprimanta 3D o carcasă pentru componentele de mai sus ca să fie ferite de apa, având în vedere că urmează să stea în apropierea acvariului.

ZCoder.ro – Carcasa 3D pentru dispozitiv

Pasul următor a fost să tai firele de alimentare de la modulul de lumină al acvariului și să le conectez la releu. Am făcut o schemă în Fritzing pentru a vă veni mai ușor să înțelegeți exact ce am făcut:

ZCoder.ro – Schema desenata in Fritzing

La final, vă pun și codul scris de mine in C++ în Arduino IDE pentru cei care sunt interesați să reproducă dispozitivul creat de mine 🙂 V-am atașat și imaginea cu Arduino IDE în care se vede codul scris de mine și faptul că a fost compilat fără erori:

ZCoder.ro – Codul scris in Arduino IDE compilat fara erori

Iată codul scris de mine ce trebuie încărcat în Arduino Nano prin Arduino IDE (*Free to copy and use for educational purposes):

/**
* Auth: Sebastian Chetroni
* Light relay ¯\_(ツ)_/¯
* Free to copy and use for educational purposes
*/
#include 
#include 
RTC_DS3231 rtc;

void setup() {
  Serial.begin(9600);
  Wire.begin();
  rtc.begin();
  rtc.adjust(DateTime(F(__DATE__),F(__TIME__)));
  pinMode(2, OUTPUT);
}

void loop() {
  DateTime now = rtc.now();
  if(now.hour()>10 && now.hour()<18) digitalWrite(2, HIGH);
  else                               digitalWrite(2, LOW);
  delay(60000);
}
Ma numesc Sebastian, am 10 ani si sunt pasionat de: programare in Python, C++, Raspberry Pi, citit, astronomie, astrofizica, chimie, sport, fotografie si Xbox. Ma gasesti si pe: Instagram, Youtube, Facebook
Comments

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *