This is an old revision of the document!


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

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

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.1716806804.txt.gz · Last modified: 2024/05/27 13:46 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