This shows you the differences between two versions of the page.
|
pm:prj2026:vlad.radulescu2901:ioan_stefan.greere [2026/05/08 21:41] ioan_stefan.greere [Descriere generală] |
pm:prj2026:vlad.radulescu2901:ioan_stefan.greere [2026/05/16 16:52] (current) ioan_stefan.greere [Imagini ale montajului și teste hardware] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== ColorTrack - Color Quality Logger ====== | + | ====== ColorTrack - Sistem embedded de detecție și scanare a culorilor ====== |
| - | **Sistem embedded pentru verificarea culorii și jurnalizarea detecțiilor** | + | **Sistem embedded pentru identificarea culorilor, control vizual prin LED RGB și scanare automată cu motor pas cu pas** |
| <note> | <note> | ||
| Line 10: | Line 10: | ||
| ===== Introducere ===== | ===== Introducere ===== | ||
| - | **ColorTrack** este un sistem embedded bazat pe **microcontrollerul ATmega328P**, proiectat pentru verificarea culorii unor obiecte, etichete sau ambalaje în cadrul unui proces simplu de control al calității. | + | **ColorTrack** este un sistem embedded bazat pe microcontrollerul **ATmega328P**, proiectat pentru detecția și căutarea automată a culorilor. Proiectul pornește de la un scenariu practic de control al calității, în care culoarea unui obiect, a unei etichete sau a unei mostre trebuie verificată rapid și consecvent. |
| - | Ideea proiectului pornește de la un scenariu practic în care culoarea unui obiect trebuie verificată rapid și consecvent. De exemplu, într-un proces de producție sau sortare, anumite piese pot trebui identificate ca fiind roșii, verzi sau albastre, iar rezultatele verificărilor și numarul exemplarelor trebuie păstrate pentru consultare ulterioară. Astfel, ColorTrack poate fi privit ca un prototip de sistem de control al calității la scară redusă, în care culoarea unui obiect este verificată automat, iar rezultatul este salvat pentru trasabilitate. | + | Sistemul poate funcționa în două moduri. Primul mod permite detectarea punctuală a culorii unui obiect plasat în fața senzorului. Rezultatul este afișat pe LCD, transmis prin interfața serială și semnalizat printr-un LED RGB. În acest mod, LED-ul RGB nu indică doar una dintre culorile principale, ci folosește PWM software pentru a aproxima nuanța detectată de senzor. |
| - | Față de un detector simplu de culoare, proiectul adaugă o componentă de jurnalizare. Fiecare detecție este înregistrată într-un fișier de pe cardul microSD, împreună cu momentul măsurării de la apăsarea butonului de start și valorile citite de la senzor. Astfel, dispozitivul poate fi folosit nu doar pentru afișarea instantanee a culorii, ci și pentru păstrarea unui istoric al verificărilor. | + | Al doilea mod permite căutarea automată a unei culori țintă. Utilizatorul selectează culoarea dorită prin interfața serială, iar sistemul rotește o platformă cu ajutorul unui motor pas cu pas. La fiecare pas, senzorul verifică culoarea detectată. Când culoarea țintă este găsită, motorul se oprește, rezultatul este afișat pe LCD, LED-ul RGB se aprinde corespunzător, iar platforma este rotită înapoi în poziția inițială. |
| Scopul proiectului este realizarea unui sistem capabil să: | Scopul proiectului este realizarea unui sistem capabil să: | ||
| - | * detecteze culoarea dominantă a unui obiect; | + | |
| - | * afișeze rezultatul pe un ecran LCD; | + | * detecteze culoarea dominantă a unui obiect folosind senzorul TCS230; |
| - | * semnalizeze culoarea detectată printr-un LED RGB; | + | * afișeze starea sistemului și rezultatele pe un LCD 1602 cu interfață I2C; |
| - | * transmită informații prin interfața serială pentru debugging; | + | * aproximeze nuanța detectată prin LED RGB controlat cu PWM software; |
| - | * salveze fiecare detecție pe un card microSD; | + | * permită alegerea modului de funcționare prin USART; |
| - | * permită consultarea ulterioară a istoricului de verificări. | + | * controleze un motor pas cu pas prin driver ULN2003; |
| + | * caute automat o culoare țintă pe o platformă rotativă; | ||
| + | * folosească întreruperea externă INT0 pentru pornirea detecției sau scanării; | ||
| + | * păstreze modulul microSD conectat pentru o posibilă extensie de jurnalizare. | ||
| ===== Descriere generală ===== | ===== Descriere generală ===== | ||
| - | **ColorTrack** funcționează ca un sistem simplu de verificare a culorii unui obiect. Utilizatorul plasează obiectul în fața senzorului de culoare și pornește procesul de detecție folosind un buton. Microcontrollerul citește semnalul furnizat de senzor, determină culoarea dominantă și afișează rezultatul pe LCD. | + | ColorTrack funcționează ca un sistem de inspecție și scanare a culorilor. Utilizatorul interacționează cu sistemul prin interfața serială, alegând unul dintre cele două moduri de funcționare. |
| - | În paralel, sistemul aprinde LED-ul corespunzător culorii detectate și transmite informații prin interfața serială. Pentru păstrarea istoricului verificărilor, fiecare detecție este salvată într-un fișier pe cardul microSD. | + | **Modul 1 - Detecție simplă** |
| - | Datele salvate pe cardul microSD pot avea un format de tip CSV: | + | În acest mod, utilizatorul trimite comanda `1` prin USART. Sistemul intră în modul de detecție simplă și aprinde LED-ul RGB în alb, indicând faptul că așteaptă o comandă de start. Detecția propriu-zisă se face doar după apăsarea butonului. După citirea senzorului TCS230, microcontrollerul determină culoarea dominantă, afișează rezultatul pe LCD și controlează LED-ul RGB prin PWM software pentru a aproxima nuanța detectată. |
| - | <code> | + | **Modul 2 - Căutare culoare** |
| - | timp_ms,culoare,red,green,blue | + | |
| - | 1532,ROSU,34,72,81 | + | |
| - | 8120,VERDE,70,28,64 | + | |
| - | 12450,ALBASTRU,91,78,29 | + | |
| - | </code> | + | |
| - | {{ :pm:prj2026:vlad.radulescu2901:schemabloc.png?700 |}} | + | În acest mod, utilizatorul trimite comanda `2` prin USART, apoi alege culoarea țintă folosind una dintre comenzile `R`, `G` sau `B`. După apăsarea butonului, motorul pas cu pas rotește platforma în pași succesivi. La fiecare interval de pași, senzorul TCS230 citește culoarea curentă. Dacă este detectată culoarea țintă, motorul se oprește, rezultatul este afișat pe LCD, LED-ul RGB indică vizual culoarea găsită, iar motorul revine în poziția inițială. |
| **Modulele principale ale sistemului sunt:** | **Modulele principale ale sistemului sunt:** | ||
| Line 45: | Line 43: | ||
| * microcontrollerul ATmega328P - coordonează întregul sistem; | * microcontrollerul ATmega328P - coordonează întregul sistem; | ||
| * senzorul TCS230 - detectează culoarea obiectului; | * senzorul TCS230 - detectează culoarea obiectului; | ||
| - | * LCD-ul 1602 I2C/TWI - afișează culoarea detectată și starea sistemului; | + | * LCD-ul 1602 I2C - afișează starea sistemului și rezultatul; |
| - | * LED-ul RGB - oferă feedback vizual rapid; | + | * LED-ul RGB - oferă feedback vizual și aproximare de nuanță prin PWM software; |
| - | * modulul microSD - salvează istoricul detecțiilor; | + | * butonul de start - declanșează detecția sau scanarea, folosind întreruperea externă INT0; |
| - | * butonul de start - pornește procesul de verificare; | + | * driverul ULN2003 - controlează motorul pas cu pas; |
| - | * interfața serială - permite afișarea informațiilor pentru debugging și monitorizare. | + | * motorul pas cu pas 28BYJ-48 - rotește platforma de scanare; |
| + | * interfața USART - permite alegerea modului de funcționare și a culorii țintă; | ||
| + | * modulul microSD - conectat hardware prin SPI, păstrat pentru o extensie ulterioară de jurnalizare. | ||
| **Fluxul general de funcționare este următorul:** | **Fluxul general de funcționare este următorul:** | ||
| - sistemul este alimentat și inițializează modulele hardware; | - sistemul este alimentat și inițializează modulele hardware; | ||
| - | - utilizatorul apasă butonul de start; | + | - LCD-ul afișează meniul principal; |
| - | - obiectul este plasat în fața senzorului de culoare; | + | - utilizatorul selectează modul de funcționare prin USART; |
| - | - senzorul furnizează valorile corespunzătoare componentelor de culoare; | + | - în modul 1, utilizatorul apasă butonul, iar sistemul face o detecție simplă; |
| - | - microcontrollerul determină culoarea dominantă; | + | - în modul 2, utilizatorul alege culoarea țintă, apoi apasă butonul pentru pornirea scanării; |
| - | - rezultatul este afișat pe LCD; | + | - motorul rotește platforma și sistemul citește periodic senzorul; |
| - | - LED-ul corespunzător este aprins; | + | - dacă este găsită culoarea dorită, motorul se oprește; |
| - | - datele sunt trimise prin interfața serială; | + | - LED-ul RGB și LCD-ul afișează rezultatul; |
| - | - detecția este salvată pe cardul microSD. | + | - motorul revine în poziția inițială. |
| + | |||
| + | {{ :pm:prj2026:vlad.radulescu2901:schema_bloc_color.png?800 |}} | ||
| ===== Hardware Design ===== | ===== Hardware Design ===== | ||
| - | **Componente folosite** | + | ==== Stadiul actual al implementării hardware ==== |
| + | |||
| + | În stadiul actual, au fost conectate și testate principalele componente hardware ale proiectului. LCD-ul 1602 cu interfață I2C afișează mesaje de stare, senzorul TCS230 este folosit pentru citirea componentelor de culoare, LED-ul RGB oferă feedback vizual, iar motorul pas cu pas este controlat prin driverul ULN2003. | ||
| + | |||
| + | Sistemul permite selectarea modului de funcționare prin USART. Butonul conectat pe pinul INT0 este folosit pentru declanșarea detecției sau a scanării. În modul de scanare, motorul rotește platforma până la găsirea culorii țintă sau până la parcurgerea limitei de rotație. Pentru protejarea machetei, după scanare motorul revine în poziția inițială prin rotirea inversă cu același număr de pași. | ||
| + | |||
| + | Modulul microSD este păstrat conectat la pinii SPI ai microcontrollerului, însă funcția de scriere pe card nu este inclusă în varianta curentă stabilă a proiectului. Acesta rămâne o extensie posibilă pentru jurnalizarea detecțiilor. | ||
| + | |||
| + | ==== Componente folosite ==== | ||
| ^ Componentă ^ Cantitate ^ Scop ^ | ^ Componentă ^ Cantitate ^ Scop ^ | ||
| - | | Microcontroller ATmega328P | 1 | Unitatea centrală a proiectului; coordonează citirea senzorului, afișarea rezultatului și salvarea datelor. | | + | | ATmega328P-XMINI | 1 | Placa de dezvoltare folosită ca unitate centrală a proiectului. | |
| - | | Senzor de culoare TCS230 | 1 | Detectează culoarea obiectului prin măsurarea componentelor roșu, verde și albastru. | | + | | Senzor de culoare TCS230 | 1 | Detectează culoarea obiectului prin semnal digital cu frecvență dependentă de lumină. | |
| - | | LCD 1602 cu interfață I2C | 1 | Afișează culoarea detectată și starea sistemului. | | + | | LCD 1602 I2C | 1 | Afișează meniul, modul curent, culoarea detectată și starea scanării. | |
| - | | Modul microSD | 1 | Permite conectarea cardului microSD la microcontroller prin SPI. | | + | | LED RGB catod comun | 1 | Oferă feedback vizual; în modul 1 este controlat prin PWM software. | |
| - | | Card microSD | 1 | Stochează fișierul de log cu istoricul detecțiilor. | | + | | Rezistențe 220Ω | 3 | Limitează curentul prin canalele LED-ului RGB. | |
| - | | LED RGB | 1 | Semnalizează vizual culoarea detectată folosind canalele roșu, verde și albastru. | | + | | Buton | 1 | Declanșează detecția sau scanarea folosind întreruperea externă INT0. | |
| - | | Rezistențe pentru LED | 3 | Limitează curentul prin cele trei canale ale LED-ului RGB. | | + | | Driver ULN2003 | 1 | Permite controlul motorului pas cu pas din pini digitali ai microcontrollerului. | |
| - | | Buton | 1 | Declanșează procesul de detecție a culorii. | | + | | Motor pas cu pas 28BYJ-48 | 1 | Rotește platforma de scanare în modul de căutare culoare. | |
| - | | Breadboard | 1 | Permite realizarea și testarea montajului fără lipire. | | + | | Modul microSD | 1 | Modul conectat prin SPI, păstrat pentru extensie de jurnalizare. | |
| - | | Fire jumper | mai multe | Realizează conexiunile dintre microcontroller și modulele proiectului. | | + | | Card microSD | 1 | Suport de stocare planificat pentru salvarea viitoare a detecțiilor. | |
| - | | Sursă de alimentare | 1 | Alimentează microcontrollerul și modulele conectate. | | + | | Breadboard / fire jumper | - | Realizează conexiunile dintre placa de dezvoltare și module. | |
| + | | Sursă de alimentare 5V | 1 | Alimentează placa și modulele conectate. | | ||
| + | |||
| + | ==== Conectarea pinilor ==== | ||
| + | |||
| + | ^ Componentă ^ Pin componentă ^ Pin ATmega328P-XMINI ^ Pin microcontroller ^ Rol ^ | ||
| + | | LCD 1602 I2C | SDA | A4 | PC4 | Linie de date I2C/TWI | | ||
| + | | LCD 1602 I2C | SCL | A5 | PC5 | Linie de ceas I2C/TWI | | ||
| + | | LCD 1602 I2C | VCC | 5V | - | Alimentare | | ||
| + | | LCD 1602 I2C | GND | GND | - | Masă comună | | ||
| + | | TCS230 | S0 | 5V | - | Scalare frecvență fixată hardware | | ||
| + | | TCS230 | S1 | GND | - | Scalare frecvență fixată hardware | | ||
| + | | TCS230 | S2 | A0 | PC0 | Selectare filtru culoare | | ||
| + | | TCS230 | S3 | A1 | PC1 | Selectare filtru culoare | | ||
| + | | TCS230 | OUT | D8 | PB0 | Semnal digital de ieșire de la senzor | | ||
| + | | TCS230 | VCC | 5V | - | Alimentare | | ||
| + | | TCS230 | GND | GND | - | Masă comună | | ||
| + | | LED RGB | R | D6 | PD6 | Control canal roșu prin rezistență 220Ω | | ||
| + | | LED RGB | G | D5 | PD5 | Control canal verde prin rezistență 220Ω | | ||
| + | | LED RGB | B | D3 | PD3 | Control canal albastru prin rezistență 220Ω | | ||
| + | | LED RGB | Catod comun | GND | - | Masă comună | | ||
| + | | Buton start | pin 1 | D2 | PD2 / INT0 | Declanșare prin întrerupere externă | | ||
| + | | Buton start | pin 2 | GND | - | Apăsare = nivel logic LOW | | ||
| + | | ULN2003 | IN1 | A2 | PC2 | Control fază motor | | ||
| + | | ULN2003 | IN2 | A3 | PC3 | Control fază motor | | ||
| + | | ULN2003 | IN3 | D9 | PB1 | Control fază motor | | ||
| + | | ULN2003 | IN4 | D4 | PD4 | Control fază motor | | ||
| + | | ULN2003 | VCC | 5V | - | Alimentare driver/motor | | ||
| + | | ULN2003 | GND | GND | - | Masă comună | | ||
| + | | USART | RX | D0 | PD0 | Recepție comenzi din terminal | | ||
| + | | USART | TX | D1 | PD1 | Transmitere mesaje către terminal | | ||
| + | | microSD | CS | D10 | PB2 | Selectare dispozitiv SPI | | ||
| + | | microSD | MOSI | D11 | PB3 | Linie SPI Master Out Slave In | | ||
| + | | microSD | MISO | D12 | PB4 | Linie SPI Master In Slave Out | | ||
| + | | microSD | SCK | D13 | PB5 | Ceas SPI | | ||
| + | | microSD | VCC | 5V | - | Alimentare modul microSD | | ||
| + | | microSD | GND | GND | - | Masă comună | | ||
| + | |||
| + | Pinii A4 și A5 au fost aleși pentru LCD deoarece aceștia corespund interfeței hardware I2C/TWI a microcontrollerului. Pinii D10-D13 au fost rezervați pentru modulul microSD, deoarece aceștia corespund interfeței SPI hardware. | ||
| + | |||
| + | Butonul a fost conectat la D2 deoarece acest pin poate fi folosit ca întrerupere externă INT0. Astfel, apăsarea butonului poate declanșa rapid o acțiune, fără a fi necesară verificarea continuă a stării butonului în bucla principală. | ||
| + | |||
| + | Motorul pas cu pas este controlat prin patru pini digitali conectați la intrările IN1-IN4 ale driverului ULN2003. Driverul este necesar deoarece pinii microcontrollerului nu pot furniza direct curentul necesar pentru alimentarea bobinelor motorului. | ||
| + | |||
| + | Pinii S0 și S1 ai senzorului TCS230 au fost fixați hardware la 5V, respectiv GND. Această configurație setează scalarea frecvenței de ieșire la aproximativ 20%, valoare potrivită pentru măsurarea cu microcontrollerul. Pinii S2 și S3 rămân controlați software pentru selectarea filtrului de culoare. | ||
| ==== Senzor de culoare TCS230 ==== | ==== Senzor de culoare TCS230 ==== | ||
| - | Senzorul de culoare este folosit pentru determinarea culorii dominante a obiectului plasat în fața sa. Acesta are pini pentru selectarea filtrului de culoare și un pin de ieșire pe care se obține un semnal digital dependent de culoarea detectată. | + | Senzorul TCS230 este folosit pentru determinarea culorii dominante. Acesta nu transmite direct valori RGB în intervalul 0-255, ci generează un semnal digital pe pinul OUT. Frecvența acestui semnal depinde de intensitatea luminii detectate prin filtrul selectat. |
| - | În cadrul proiectului, senzorul va fi folosit pentru citirea componentelor roșu, verde și albastru. Pe baza valorilor obținute, microcontrollerul va decide culoarea dominantă a obiectului verificat. | + | Pinii S2 și S3 sunt folosiți pentru selectarea filtrului roșu, verde sau albastru. Microcontrollerul selectează pe rând fiecare filtru și măsoară semnalul de ieșire folosind Timer1. Valorile obținute sunt valori brute de timp/frecvență, nu valori RGB standard. În cod, o valoare mai mică indică o frecvență mai mare, deci o componentă de culoare mai intensă. |
| ==== LCD 1602 I2C/TWI ==== | ==== LCD 1602 I2C/TWI ==== | ||
| - | LCD-ul este folosit pentru afișarea rezultatului detecției și a stării sistemului. Utilizarea interfeței I2C/TWI reduce numărul de pini necesari pentru conectarea ecranului la microcontroller. | + | LCD-ul este folosit pentru afișarea meniului, a modului curent și a rezultatelor. Utilizarea interfeței I2C reduce numărul de pini necesari, fiind folosite doar liniile SDA și SCL. |
| - | Pe LCD pot fi afișate mesaje precum: | + | Exemple de mesaje afișate: |
| <code> | <code> | ||
| ColorTrack | ColorTrack | ||
| - | Asteptare... | + | USART: 1 sau 2 |
| </code> | </code> | ||
| - | sau: | + | <code> |
| + | Mod 1: detectie | ||
| + | Apasa buton | ||
| + | </code> | ||
| <code> | <code> | ||
| - | Culoare: | + | ALBASTRU gasit |
| - | ROSU | + | Pas: 2048 |
| </code> | </code> | ||
| - | ==== Modul microSD ==== | + | ==== LED RGB și PWM software ==== |
| - | Modulul microSD este folosit pentru salvarea istoricului detecțiilor. Comunicarea cu microcontrollerul se realizează prin SPI. | + | LED-ul RGB este folosit pentru feedback vizual. În modul de detecție simplă, valorile brute citite de la senzor sunt transformate într-o aproximare de intensitate pentru fiecare canal RGB. Controlul LED-ului se face prin PWM software, folosind o întrerupere periodică generată cu Timer2. |
| - | Cardul microSD permite păstrarea unui fișier de log care poate fi analizat ulterior pe calculator. Acest lucru este important pentru partea de trasabilitate a proiectului, deoarece fiecare verificare poate fi salvată. | + | Această metodă nu reproduce perfect culoarea obiectului, deoarece senzorul nu oferă valori RGB calibrate, însă permite afișarea unei nuanțe aproximative și face rezultatul mai intuitiv pentru utilizator. |
| - | Fișierul de log poate conține: | + | În modul de căutare, LED-ul rămâne aprins în alb cât timp sistemul scanează. După găsirea culorii țintă, LED-ul se aprinde în culoarea corespunzătoare. |
| - | * timpul scurs de la pornirea sistemului; | + | |
| - | * culoarea detectată; | + | |
| - | * valorile citite de la senzor; | + | |
| - | * eventual un identificator al detecției. | + | |
| - | ==== LED RGB ==== | + | ==== Buton de start ==== |
| - | LED-ul RGB este folosit pentru semnalizarea vizuală a rezultatului. Pentru fiecare culoare detectată, sistemul aprinde LED-ul in culoarea corespunzătoare: | + | Butonul este folosit pentru declanșarea acțiunii curente. După alegerea modului prin USART, utilizatorul apasă butonul pentru a începe detecția sau scanarea. |
| - | Acest feedback vizual permite utilizatorului să observe rapid rezultatul verificării, fără a urmări permanent LCD-ul sau terminalul serial. | + | |
| - | ==== Buton de start ==== | + | Butonul este conectat la pinul D2/PD2, care are funcția INT0. În cod este activat pull-up-ul intern, deci butonul conectează pinul la GND în momentul apăsării. |
| - | Butonul este folosit pentru declanșarea procesului de verificare. Utilizatorul poate plasa obiectul în fața senzorului și apoi poate porni citirea prin apăsarea butonului. | + | ==== Driver ULN2003 și motor pas cu pas ==== |
| - | Această abordare este utilă pentru controlul calității, deoarece fiecare detecție este declanșată explicit și poate fi salvată ca intrare separată în jurnal. | + | Motorul pas cu pas 28BYJ-48 este controlat prin driverul ULN2003. Microcontrollerul comandă intrările IN1-IN4 ale driverului, iar acesta alimentează bobinele motorului. |
| - | ==== Interfață serială ==== | + | Motorul este folosit în modul de căutare culoare. Sistemul rotește platforma în pași succesivi, citește culoarea cu senzorul TCS230 și se oprește când detectează culoarea țintă. Pentru a proteja macheta și pentru a evita înfășurarea firelor, după scanare motorul se rotește înapoi cu același număr de pași parcurși. |
| - | Interfața serială este folosită pentru debugging și monitorizare. Prin aceasta se pot transmite către calculator informații despre starea sistemului, valorile citite de la senzor și culoarea detectată. | + | ==== Modul microSD ==== |
| + | |||
| + | Modulul microSD este conectat la interfața SPI hardware a microcontrollerului. În varianta curentă stabilă, cardul nu este folosit pentru salvare de date, dar a fost păstrat conectat pentru o extensie ulterioară a proiectului. | ||
| + | |||
| + | Funcția planificată pentru acest modul este salvarea detecțiilor într-un fișier de tip CSV, care ar putea conține timpul detecției, culoarea detectată și valorile brute citite de la senzor. | ||
| + | |||
| + | ==== Interfață USART ==== | ||
| + | |||
| + | Interfața USART este folosită pentru alegerea modului de funcționare și pentru afișarea mesajelor de debugging. Utilizatorul poate trimite următoarele comenzi: | ||
| + | |||
| + | <code> | ||
| + | 1 - Modul detectie simpla | ||
| + | 2 - Modul cautare culoare | ||
| + | M - Afisare meniu | ||
| + | </code> | ||
| + | |||
| + | În modul 2, după trimiterea comenzii `2`, utilizatorul trimite culoarea țintă: | ||
| + | |||
| + | <code> | ||
| + | R - rosu | ||
| + | G - verde | ||
| + | B - albastru | ||
| + | </code> | ||
| ==== Alimentare ==== | ==== Alimentare ==== | ||
| - | Sistemul este alimentat de la o sursă externă sau prin intermediul plăcii de dezvoltare folosite. Modulele trebuie alimentate conform specificațiilor lor, având grijă în special la modulul microSD, deoarece cardurile microSD funcționează la 3.3V. | + | Sistemul este alimentat la 5V prin placa de dezvoltare. Toate modulele au masă comună. Driverul ULN2003 și motorul pas cu pas pot consuma mai mult curent decât celelalte module, motiv pentru care alimentarea trebuie verificată în timpul funcționării. Dacă apar resetări ale plăcii, motorul poate fi alimentat dintr-o sursă separată de 5V, cu condiția ca GND-ul sursei externe să fie comun cu GND-ul plăcii. |
| + | |||
| + | ==== Schema electrică ==== | ||
| + | |||
| + | Schema electrică a fost realizată în EasyEDA. Aceasta prezintă conexiunile dintre placa ATmega328P-XMINI și modulele externe folosite: senzorul TCS230, LCD-ul I2C, LED-ul RGB, butonul de start, driverul ULN2003 cu motor pas cu pas și modulul microSD. | ||
| + | |||
| + | {{ :pm:prj2026:vlad.radulescu2901:schema_electrica_color.png?800 |}} | ||
| + | |||
| + | În schemă, modulele externe sunt reprezentate ca blocuri cu pini, deoarece acestea sunt module prefabricate. Scopul schemei este evidențierea conexiunilor dintre placa de dezvoltare și componentele folosite. | ||
| + | |||
| + | ==== Imagini ale montajului și teste hardware ==== | ||
| + | |||
| + | În imagine se observă montajul integrat al proiectului: placa ATmega328P-XMINI, LCD-ul 1602 I2C, senzorul TCS230, LED-ul RGB, driverul ULN2003 cu motor pas cu pas, butonul de start și modulul microSD conectat fizic. LCD-ul este alimentat și afișează mesaje, iar LED-ul RGB este aprins, ceea ce demonstrează funcționarea componentelor de afișare/feedback vizual. | ||
| + | |||
| + | {{ :pm:prj2026:vlad.radulescu2901:color_hardware.jpeg?700 |}} | ||
| ===== Software Design ===== | ===== Software Design ===== | ||
| - | Această secțiune va fi completată în etapa dedicată implementării software. | + | Această secțiune va fi completată în detaliu în etapa dedicată implementării software. |
| - | Pentru moment, aplicația este gândită ca un firmware modular, care va controla perifericele microcontrollerului și va coordona procesul de detecție, afișare și jurnalizare. | + | În stadiul actual, firmware-ul permite testarea integrată a componentelor principale: LCD, senzor de culoare, LED RGB cu PWM software, buton cu întrerupere externă, USART și motor pas cu pas. |
| - | Mediul de dezvoltare planificat: | + | Mediul de dezvoltare folosit: |
| + | * PlatformIO; | ||
| * avr-gcc; | * avr-gcc; | ||
| - | * avr-libc; | + | * avr-libc. |
| - | Module software planificate: | + | Module software utilizate sau planificate: |
| * modul pentru inițializarea și controlul pinilor GPIO; | * modul pentru inițializarea și controlul pinilor GPIO; | ||
| - | * modul pentru citirea senzorului de culoare; | + | * modul pentru citirea senzorului TCS230; |
| * modul pentru afișarea mesajelor pe LCD prin I2C/TWI; | * modul pentru afișarea mesajelor pe LCD prin I2C/TWI; | ||
| - | * modul pentru comunicația SPI cu cardul microSD; | + | * modul pentru controlul LED-ului RGB prin PWM software; |
| - | * modul pentru transmiterea mesajelor prin interfața serială; | + | * modul pentru controlul motorului pas cu pas prin driver ULN2003; |
| - | * modul pentru gestionarea stărilor sistemului; | + | * modul pentru pornirea acțiunilor folosind întreruperea externă INT0; |
| - | * modul pentru salvarea detecțiilor într-un fișier de log. | + | * modul pentru comunicarea cu utilizatorul prin USART; |
| + | * modul pentru comunicația SPI cu cardul microSD, planificat pentru extindere ulterioară. | ||
| - | Logica aplicației va fi organizată în jurul unor stări principale: | + | Logica aplicației este organizată în jurul următoarelor stări: |
| - | * așteptare; | + | * meniu principal; |
| - | * detecție; | + | * selectare mod prin USART; |
| + | * așteptare apăsare buton; | ||
| + | * detecție simplă; | ||
| + | * alegere culoare țintă; | ||
| + | * scanare cu motor; | ||
| * afișare rezultat; | * afișare rezultat; | ||
| - | * salvare pe cardul microSD; | + | * revenire la poziția inițială. |
| - | * tratare erori. | + | |
| - | + | ||
| - | Detaliile de implementare, structura codului, funcțiile folosite și eventualele biblioteci externe vor fi documentate în milestone-ul dedicat părții software. | + | |
| ===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
| - | Această secțiune va fi completată după realizarea montajului și testarea sistemului. | + | Până în acest moment au fost obținute următoarele rezultate: |
| - | Rezultatele urmărite sunt: | + | * LCD-ul 1602 I2C a fost testat cu succes și afișează mesaje de stare; |
| + | * LED-ul RGB funcționează și poate fi controlat prin PWM software; | ||
| + | * senzorul TCS230 este integrat în procesul de detecție a culorii; | ||
| + | * butonul de start declanșează acțiunea curentă folosind întreruperea externă INT0; | ||
| + | * interfața USART permite alegerea modului de funcționare; | ||
| + | * motorul pas cu pas 28BYJ-48 este controlat prin driverul ULN2003; | ||
| + | * sistemul poate funcționa în modul de detecție simplă; | ||
| + | * sistemul poate funcționa în modul de scanare și se oprește când găsește culoarea țintă; | ||
| + | * după scanare, motorul revine în poziția inițială; | ||
| + | * modulul microSD este conectat fizic, dar funcția de jurnalizare este păstrată ca extensie ulterioară. | ||
| - | * detectarea corectă a culorilor principale; | + | Exemplu de mesaj afișat pe LCD în meniul principal: |
| - | * afișarea rezultatului pe LCD; | + | |
| - | * aprinderea LED-ului corespunzător culorii detectate; | + | |
| - | * transmiterea datelor prin interfața serială; | + | |
| - | * salvarea detecțiilor într-un fișier pe cardul microSD; | + | |
| - | * obținerea unui jurnal de verificări care poate fi analizat ulterior. | + | |
| - | Exemplu de rezultat așteptat pe LCD: | + | <code> |
| + | ColorTrack | ||
| + | USART: 1 sau 2 | ||
| + | </code> | ||
| + | |||
| + | Exemplu pentru modul 1: | ||
| <code> | <code> | ||
| - | Culoare: | + | Mod 1: detectie |
| - | VERDE | + | Apasa buton |
| </code> | </code> | ||
| - | Exemplu de rezultat așteptat în fișierul de log: | + | Exemplu pentru modul 2: |
| <code> | <code> | ||
| - | timp_ms,culoare,red,green,blue | + | Mod 2: cautare |
| - | 1532,ROSU,34,72,81 | + | Tinta: R/G/B |
| - | 8120,VERDE,70,28,64 | + | |
| - | 12450,ALBASTRU,91,78,29 | + | |
| </code> | </code> | ||
| - | * Vor fi adăugate poze cu montajul final, schema electrică și exemple de fișiere generate pe cardul microSD. | + | Exemplu de rezultat la detectarea culorii țintă: |
| + | |||
| + | <code> | ||
| + | ALBASTRU gasit | ||
| + | Pas: 2048 | ||
| + | </code> | ||
| ===== Concluzii ===== | ===== Concluzii ===== | ||
| - | ColorTrack propune un sistem embedded pentru verificarea culorii unor obiecte și salvarea rezultatelor într-un jurnal de detecții. Proiectul are o utilitate practică în zona de control al calității la scară redusă, unde culoarea unui obiect poate fi un criteriu de validare sau sortare. | + | ColorTrack propune un sistem embedded pentru detecția și scanarea automată a culorilor. Proiectul are o utilitate practică în zona de control al calității la scară redusă, unde culoarea unui obiect poate fi un criteriu de validare, sortare sau identificare. |
| - | Prin acest proiect sunt integrate mai multe componente hardware și protocoale de comunicație. Senzorul de culoare furnizează informațiile necesare pentru identificarea obiectului, LCD-ul și LED-urile oferă feedback utilizatorului, iar modulul microSD permite salvarea rezultatelor pentru analiză ulterioară. | + | În stadiul actual, proiectul integrează citirea unui senzor de culoare, afișarea rezultatului pe LCD, feedback prin LED RGB, selectarea modului prin USART, pornirea prin buton cu întrerupere externă și controlul unui motor pas cu pas. Prin adăugarea motorului, sistemul nu mai este doar un detector static de culoare, ci poate scana o platformă până la identificarea culorii dorite. |
| - | Un avantaj important al proiectului este faptul că rezultatele nu sunt doar afișate temporar, ci sunt păstrate într-un fișier. Astfel, sistemul poate fi folosit pentru trasabilitate, verificări repetate și analiză ulterioară. | + | Un element suplimentar al proiectului este controlul LED-ului RGB prin PWM software, care permite aproximarea vizuală a nuanței detectate în modul de detecție simplă. |
| - | + | ||
| - | * Sectiunea aceasta se va completa ulterior. | + | |
| + | Modulul microSD a fost păstrat în schema hardware pentru extinderea ulterioară a proiectului cu funcție de jurnalizare, însă funcționalitatea stabilă curentă este detecția, scanarea și afișarea rezultatelor. | ||
| ===== Download ===== | ===== Download ===== | ||
| Line 220: | Line 322: | ||
| * poze cu montajul; | * poze cu montajul; | ||
| * fișier README; | * fișier README; | ||
| - | * eventual un exemplu de fișier de log generat pe cardul microSD. | + | * eventual fișiere auxiliare pentru testare. |
| ===== Jurnal ===== | ===== Jurnal ===== | ||
| Line 230: | Line 332: | ||
| ==== Săptămâna 2 ==== | ==== Săptămâna 2 ==== | ||
| - | Am stabilit componentele principale ale sistemului: microcontroller ATmega328P, senzor de culoare TCS230, LCD 1602 I2C, LED RGB, modul microSD si am comandat piesele necesare. | + | Am stabilit componentele principale ale sistemului: ATmega328P-XMINI, senzor TCS230, LCD 1602 I2C, LED RGB, modul microSD și buton de start. |
| ==== Săptămâna 3 ==== | ==== Săptămâna 3 ==== | ||
| - | Am definit utilitatea practică a proiectului și am realizat schema bloc a sistemului si documentatia. | + | Am definit utilitatea practică a proiectului și am realizat schema bloc inițială. Am testat LCD-ul și LED-ul RGB. |
| + | |||
| + | ==== Săptămâna 4 ==== | ||
| + | |||
| + | Am integrat senzorul TCS230 și am realizat citirea culorilor folosind semnalul de frecvență al senzorului. Am testat detectarea culorilor principale. Am conectat motorul pas cu pas 28BYJ-48 prin driverul ULN2003 și am testat rotirea în ambele sensuri. Am modificat proiectul pentru a avea două moduri de funcționare selectabile prin USART: detecție simplă și scanare automată. Am adăugat revenirea motorului în poziția inițială după scanare. Am adăugat PWM software pentru controlul LED-ului RGB, astfel încât în modul de detecție simplă LED-ul să aproximeze nuanța detectată de senzor. | ||
| - | * Mai departe se va completa sectiunea pe parcurs. | + | * Sectiunea se va completa pe parcurs |
| ===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
| Line 245: | Line 351: | ||
| * Datasheet TCS230 Color Sensor; | * Datasheet TCS230 Color Sensor; | ||
| * Documentație LCD 1602 cu interfață I2C; | * Documentație LCD 1602 cu interfață I2C; | ||
| + | * Documentație driver ULN2003; | ||
| + | * Documentație motor pas cu pas 28BYJ-48; | ||
| * Documentație modul microSD; | * Documentație modul microSD; | ||
| * Documentație protocol SPI; | * Documentație protocol SPI; | ||
| Line 254: | Line 362: | ||
| * Documentație avr-gcc; | * Documentație avr-gcc; | ||
| * Documentație avr-libc; | * Documentație avr-libc; | ||
| - | * Exemple pentru comunicație SPI pe AVR; | + | * Documentație PlatformIO; |
| * Exemple pentru comunicație I2C/TWI pe AVR; | * Exemple pentru comunicație I2C/TWI pe AVR; | ||
| * Exemple pentru comunicație USART pe AVR; | * Exemple pentru comunicație USART pe AVR; | ||
| - | * Documentație pentru lucrul cu sisteme de fișiere FAT/FAT32 pe card SD. | + | * Exemple pentru controlul motoarelor pas cu pas; |
| + | * Exemple pentru implementarea PWM software pe microcontrollere AVR. | ||
| <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||