O cutie de depozitare care se poate deschide fie prin interactiunea cu senzorul de miscare, fie prin apasarea unui buton pe o telecomanda cu infrarosu. Cutia se inchide automat dupa 5 secunde, finalizarea actiunii fiind semnalata printr-un sunet scos de un difuzor.
Componente folosite:
Diagrama proiectului facuta in TinkerCAD:
Cutia aleasa a fost cumparata de la IKEA. Pe partea frontala am dat 3 gauri cu bormasina: 2 pentru senzorul ultrasonic de distanta, si una pentru difuzor:
Receptorul IR a fost plasat pe capac, pe partea fata-stanga a acestuia:
Servomotorul a fost lipit cu banda izoliera de peretele din spate al cutiei. Pentru a deschide cutia, au fost folosite doua aripioare, una in prelungirea celeilalte:
Inauntrul cutiei, majoritatea cablurilor au fost lipite de margine folosind banda izoliera, fiind scoase din cutie printr-o alta gaura data in peretele din spate al acesteia:
In partea din spate am lipit un breadboard mic, care imi va permite sa conectez terminalele de GND si VCC la pinii de GND si 5V de pe placa Arduino:
Pentru partea de software, am folosit 3 librarii disponibile pentru descarcare din IDE-ul Arduino: “Servo” pentru servomotor, “IRremote” pentru modulul IR si “SR04” pentru senzorul ultrasonic.
In cadrul programului exista 4 functii. Prima este de translatare a semnalului venit dinspre telecomanda IR, semnal ce are o valoare hexadecimala. De asemenea, tot aici sunt initializate si butoanele folosite (CH pentru modul autonom, + si - pentru deschiderea sau inchiderea manuala a cutiei).
void translateIR(){ switch(results.value){ case 0xFF629D: //butonul CH de pe telecomanda, va fi folosit pentru modul autonom autonomousMode(); break; case 0xFFA857: //butonul + de pe telecomanda, va fi folosit pentru deschiderea manuala manualOverrideOpen(); break; case 0xFFE01F: //butonul - de pe telecomanda, va fi folosit pentru inchiderea manuala manualOverrideClose(); break; default: Serial.println("Button not found"); } }
A doua functie este cea fundamentala a proiectului, intrucat instruceaza cutia sa se deschida, sa astepte un interval de timp, sa scoata un sunet de avertizare si apoi sa se inchida.
void autonomousMode(){ Serial.println("Autonomous mode"); //servo-ul va deschide usor capacul for(position = 0; position <= 115; position++){ servoMotor.write(position); delay(15); } delay(8000); //timp de asteptate: 8 secunde //sunet de avertizare digitalWrite(activeBuzzer, HIGH); delay(1); digitalWrite(activeBuzzer, LOW); //timp de asteptare: 2 secunde delay(2000); //servo-ul inchide capacul servoMotor.write(20); Serial.println("Autonomous mode ended"); }
Ultimele 2 functii au ca scop override-ul manual al utilizatorului, acesta avand posibilitatea sa deschida si sa inchida cutia manual.
void manualOverrideOpen(){ Serial.println("Manual open"); //sunet de avertizare digitalWrite(activeBuzzer, HIGH); delay(1); digitalWrite(activeBuzzer, LOW); delay(1000); //servo-ul va deschide usor capacul for(int position = 0; position <= 115; position++){ servoMotor.write(position); delay(15); } //sunet de avertizare digitalWrite(activeBuzzer, HIGH); delay(1); digitalWrite(activeBuzzer, LOW); delay(1); Serial.println("Manual open ended"); } void manualOverrideClose(){ Serial.println("Manual close"); //sunet de avertizare digitalWrite(activeBuzzer, HIGH); delay(1); digitalWrite(activeBuzzer, LOW); delay(1000); //servo-ul inchide capacul servoMotor.write(20); //sunet de avertizare digitalWrite(activeBuzzer, HIGH); delay(1); digitalWrite(activeBuzzer, LOW); delay(1); Serial.println("Manual close ended"); }
Tot codul poate fi descarcat din sectiunea “Download”.
Am realizat o cutie de depozitare activata automat prin aproprierea mainii sau prin apasarea unui buton pe o telecomanda, cutie ce poate fi folosita pe post de “vallet tray” (o tava/cutie in care sunt depozitate lucruri precum portofel, chei etc.). Un upgrade potrivit ar fi inlocuirea placutei Arduino Uno cu un modul ESP32, care este mult mai mic si permite utilizarea prin intermediul unui smartphone (conectat la servicii de tipul Homebridge sau HomeAssistant).
O asemenea cutie isi poate gasi locul in viata de zi cu zi a oricarui individ, avand un loc special unde sa-si poata depozita lucrurile de valoare. In cadrul proiectului am intampinat mai multe dificultati peste care am trecut si din care am avut ce sa invat :).
Codul + librariile deja descarcate: cod_storage_box.zip
5 mai 2023 - crearea paginii
16 mai 2023 - procurarea tuturor materialelor necesare
18 mai 2023 - proiectarea si constructia hardware-ului
25 mai 2023 - partea software terminata in proportie de 90%, modulul IR mai trebuie debugguit
26 mai 2023 - partea softwate este terminata si testata
Resurse software:
Servomotor
IR Reciever
Senzor de Distanta