Table of Contents

Dispenser automat de medicamente

Introducere

În viața de zi cu zi, sarcinile simple pot deveni poveri copleșitoare pentru anumite persoane, mai ales pentru cele care se confruntă cu probleme de sănătate sau cu limitări cognitive. Administrarea medicamentelor la ore fixe, o rutină banală pentru unii, devine pentru bolnavi o provocare constantă, o luptă tăcută cu timpul. Această dificultate este resimțită cu atât mai acut de pacienții care suferă de afecțiuni precum boala Alzheimer, unde uitarea administrării tratamentului poate avea consecințe grave.

Pornind de la această nevoie reală, proiectul propus urmărește realizarea unui dispenser automat de pastile. Acesta va fi capabil să depoziteze pastilele și să le elibereze automat la orele programate. Pentru a asigura notificarea eficientă a utilizatorului, dispozitivul va utiliza semnalizare vizuală prin LED-uri și semnalizare auditivă printr-un buzzer. Scopul acestui proiect este de a oferi un sprijin esențial pacienților care trebuie să urmeze tratamente medicamentoase stricte, reducând astfel riscul uitării sau al administrării incorecte.

Descriere generală

Lista de componente:

Descriere componente:

Interactiunea dintre componente

1) Utilizatorul introduce ora de administrare si setarile folosind tastatura matriceala. Acesta poate alege daca medicamentele sunt administrate o singura data sau zilnic recurent.

2) Arduino Uno preia inputul si il salveaza, folosind modulul RTC pentru a verifica constant ora curenta.

3) La ora programata:

  1. LED-ul se aprinde pentru a capta atentia vizuala.
  2. Buzzerul emite un sunet pentru a alertare sonora.
  3. Pe LCD este afisat un mesaj de notificare.

4) Eliberare automata:

  1. Arduino calculeaza ce compartiment corespunde orei programate.
  2. Trimite semnal catre servomotor, care roteste containerul la pozitia corecta (ex: 0, 90, 180, 270).
  3. Se deschide slotul corespunzator si pastila poate fi luata.

Schema bloc

Hardware Design

Componente

Nr. crt. Componentă Cantitate Link / Datasheet
1 Arduino UNO R3 ATmega328P 1 [Link](https://www.optimusdigital.ro/ro/placi-avr/4561-placa-de-dezvoltare-compatibila-cu-arduino-uno-r3-atmega328p-atmega16u2-cablu-50-cm.html?search_query=Placa+de+Dezvoltare+Compatibila+cu+Arduino+UNO+R3+%28ATmega328p+++ATmega16u2%29+++Cablu+50+cm&results=1)
2 Servomotor SG92R 9g 2.5 kg.cm, 4.8 V 1 [Link](https://www.optimusdigital.ro/ro/motoare-servomotoare/5706-servomotor-sg92r-9g-25-kgcm-48-v.html?search_query=Servomotor+SG92R+9g+2.5+kg.cm%2C+4.8+V&results=1)
3 Tastatura matriceala 4×4 cu conector pin de tip mama 1 [Link](https://www.optimusdigital.ro/ro/senzori-senzori-de-atingere/470-tastatura-matriceala-4x4-cu-conector-pin-de-tip-mama.html?search_query=Tastatura+matriceala+4x4+cu+conector+pin+de+tip+mama&results=1)
4 LCD 1602 cu Interfata I2C si Backlight Albastru 1 [Link](https://www.optimusdigital.ro/ro/optoelectronice-lcd-uri/2894-lcd-cu-interfata-i2c-si-backlight-albastru.html?search_query=LCD+1602+cu+Interfata+I2C+si+Backlight+Albastru&results=2)
5 Modul cu Ceas în Timp Real DS3231 1 [Link](https://www.optimusdigital.ro/ro/altele/1102-modul-cu-ceas-in-timp-real-ds3231.html?search_query=Modul+cu+Ceas+in+Timp+Real+DS3231&results=3)
6 Breadboard HQ (400 Points) 1 [Link](https://www.optimusdigital.ro/ro/altele/1102-modul-cu-ceas-in-timp-real-ds3231.html?search_query=Modul+cu+Ceas+in+Timp+Real+DS3231&results=3)
7 LED Roșu de 3 mm cu Lentile Difuze 1 [Link](https://www.optimusdigital.ro/ro/optoelectronice-led-uri/696-led-rou-de-3-mm-cu-lentile-difuze.html?search_query=LED+Ro%C8%99u+de+3+mm+cu+Lentile+Difuze&results=2)
8 Buzzer Activ de 5 V 1 [Link](https://www.optimusdigital.ro/ro/audio-buzzere/633-buzzer-activ-de-5-v.html?search_query=Buzzer+Activ+de+5+V&results=18)
9 Buton 6x6x6 1 [Link](https://www.optimusdigital.ro/ro/butoane-i-comutatoare/1119-buton-6x6x6.html?search_query=Buton+6x6x6&results=1)

Schema electrica

Software Design

Stadiu actual al implementarii software

Proiectul este complet funcțional și a fost testat integral în condiții reale. Interfața permite programarea a până la 3 compartimente, fiecare cu ora și minut de activare, cu opțiune de repetare. Se utilizează un ecran LCD I2C pentru afișare, o tastatură 4×4 pentru introducerea datelor, și un modul RTC DS3231 pentru timp real. Sistemul deschide automat compartimentul potrivit folosind un servomotor, și oferă feedback sonor și vizual prin buzzer și LED.

Mediu de dezvoltare utilizat:

Librarii si software extern:

1. Wire.h

2. LiquidCrystal_I2C.h

3. Servo.h

4. Keypad.h

5. RTClib.h

Algoritmi si concepte folosite:

FSM (Finite State Machine) pentru logica de interactiune:

Starea ASTEPTARE

Aceasta este starea implicita, in care dispozitivul:

Starea INTRO_HHMM

In aceasta stare:

Starea INTRO_RECURENTA

Loop-ul principal:

Debouncing software pentru tastatura si buton:

Manipulare directa a registrelor (PORTC, PINC, DDRC) pentru:

Programare cu RTC:

Servo control secvential:

Structuri de date:

struct Programare {
  int ora;
  int minut;
  bool recurent;
};

Este folosit pentru a stoca programarile fiecarui compartiment. Vectorul :

Programare compartimente[3];

reprezinta cele 3 compartimente ale sistemului.

Notiuni preluate din laboratoare:

Rezultate Obţinute

DEMO: [Link](https://www.youtube.com/watch?v=778pTGQ6WSM&ab_channel=AlexandraElena)

Github: [Link](https://github.com/alexandra200312/Dispenser_medicamente)

Concluzii

A fost un proiect solicitant. Am constientizat ca am nevoie neaparat de o surubelnita in casa.

Download

dispenser_de_pastile.zip

Jurnal

Bibliografie/Resurse