Multi-purpose Hub

Introducere

Am ales sa incorporez mai multe gadget-uri, precum ceas de birou, ventilator de birou, statie de incarcare, lampa etc. pentru a eficientiza spatiul de lucru, a oferi o optiuna de inlocuire a pieselor intr-un mod simplu, rapid si nu foarte costisitor.

Descriere generală

Principalele functionalitati din acest proiect sunt:

  • Ceas digital, cu urmatoarele functionalitati, ce se schimba prin apasarea butoanelor:
    • Stopper
    • Timmer
  • Ventilator de birou, cu un potentiometru ce mareste sau reduce viteza.
  • Wireless Charger

Schema

Hardware Design

Componente:

  • Arduino Uno 16U2 x1
  • Breadboard MB102 x1
  • Potentiometru RV09 x2
  • Ecran LCD 1602 x1
  • Buzzer 3-24V 100dB x1
  • Button x10
  • Modul incarcare acumulator Li TP4056 TypeC x1
  • Modul RTC DS3231 I2C x1
  • Timer IC NE555P, NE555 x1
  • QI wireless charging module x1
  • Table fan x1
  • LED RGB 5mm 4 pini x2

Schema Schema

Mai trebuia un ventilator de 5V

Schema

Software Design

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare: ArduinoIDE
  • librării şi surse 3rd-party: RTClib.h, LiquidCrystal_I2C.h, Wire.h

byte hour;
byte minute;
byte second;
byte day;
byte month;
int year;

Variabilele folosite pentru date

DS3231 rtc;
LiquidCrystal_I2C lcd(0x27, 16, 2);

Initializarea rtc si lcd

void setup() {
  Serial.begin(9600);
  // Inițializează comunicarea I2C
  Wire.begin();

  // Inițializează LCD
  lcd.begin(16, 2);
  lcd.init();
  lcd.backlight();
  lcd.clear();
  rtc.begin();
}

Functia de setup unde initializez comunicarea I2C si dau begin la lcd si rtc

void loop() {
// Obține data și ora curentă de la RTC
DateTime now = rtc.now();
second = now.second();
minute = now.minute();
hour = now.hour();
day = now.day();
month = now.month();
year = now.year();

Salvez anul, luna, ziua, ora, minutul si secunda in variabile cu ajutorul modulului RTC

second += 48;  // Corecție pentru secundă
if (second >= 60) {
  second -= 60;
  minute += 1;
}

minute += 33;  // Corecție pentru minut
if (minute >= 60) {
  minute -= 60;
  hour += 1;
}

hour += 12;  // Corecție pentru oră
if (hour >= 24) {
  hour -= 24;
}
int daysInMonth;
if (month == 2) {
  // Verifică dacă anul este bisect
  if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
    daysInMonth = 29;
  } else {
    daysInMonth = 28;
  }
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
  daysInMonth = 30;
} else {
  daysInMonth = 31;
}

if (day > daysInMonth) {
  day = 1;
  month += 1;
}

if (month > 12) {
  month = 1;
  year += 1;
}

Incerc sa corectez datele, apoi fac algoritmul pentru data si timp

// Afișează data și ora pe LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Data: ");
lcd.print(day, DEC);
lcd.print('/');
lcd.print(month, DEC);
lcd.print('/');
lcd.print(year, DEC);

lcd.setCursor(0, 1);
lcd.print("Ora: ");
lcd.print(hour, DEC);
lcd.print(':');
if (minute< 10) {
 lcd.print('0');  // Adaugă un 0 înaintea minutului dacă e mai mic de 10
}
lcd.print(minute, DEC);
lcd.print(':');
if (second< 10) {
 lcd.print('0');  // Adaugă un 0 înaintea secundei dacă e mai mică de 10
}
lcd.print(second, DEC);
//Așteaptă un pic înainte de a actualiza din nou
delay(1000);
}

Afisez pe ecranul lcd data si ora

Rezultate Obţinute

Un spatiu de lucru mai curat si mai aerisit, mai multe porturi usb libere pentru alte gadget-uri!

Concluzii

Acest proiect nu doar că mi-a aprofundat înțelegerea programării Arduino și a integrării hardware, dar a evidențiat și importanța organizării și modularității codului. Îmbunătățirile viitoare ar putea include un mic meniu unde sa selectezi functionalitati pentru ceas, un modul de incarcare mai puternic si un ventilator mai puternic.

Download

Cod sursă, biblioteci folosite si README (.zip):

mph_clock.zip

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2024/ccontasel/alexandru.neacsu02.txt · Last modified: 2024/05/27 14:05 by alexandru.neacsu02
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0