This shows you the differences between two versions of the page.
pm:prj2025:rnedelcu:iulian.popa3007 [2025/05/27 21:11] iulian.popa3007 [Descriere generală] |
pm:prj2025:rnedelcu:iulian.popa3007 [2025/05/28 02:07] (current) iulian.popa3007 [Descriere generală] |
||
---|---|---|---|
Line 5: | Line 5: | ||
Proiectul "Mașinută Căutătoare de Comori" reprezintă o extensie a unei platforme robotice existente cu funcționalități avansate de detectare și interacțiune cu mediul înconjurător. Scopul principal este transformarea unui kit preconceput într-un sistem inteligent personalizat care poate identifica și colecta obiecte bazate pe culoare. | Proiectul "Mașinută Căutătoare de Comori" reprezintă o extensie a unei platforme robotice existente cu funcționalități avansate de detectare și interacțiune cu mediul înconjurător. Scopul principal este transformarea unui kit preconceput într-un sistem inteligent personalizat care poate identifica și colecta obiecte bazate pe culoare. | ||
- | Ideea de la care am pornit a fost de a îmbunătăți o mașinută cu funcții predefinite (evitare obstacole, urmărire linie, anti-cădere, transport automat) și de a adăuga un element de joc interactiv care să o transforme într-un sistem personalizat și mai complex. | + | Ideea de la care am pornit a fost de a îmbunătăți o mașinută cu funcția predefinita de urmărire linie și de a adăuga un element de joc interactiv care să o transforme într-un sistem personalizat și mai complex. |
- | Acest proiect este util atât pentru dezvoltarea personală, oferindu-mi posibilitatea de a aprofunda cunoștințele despre diferite protocoale de comunicație (GPIO, UART, I2C, SPI) și integrarea senzorilor, cât și pentru comunitate, demonstrând cum se poate transforma un kit comercial într-un sistem personalizat cu funcționalități extinse. | + | Acest proiect este util atât pentru dezvoltarea personală, oferindu-mi posibilitatea de a aprofunda cunoștințele despre diferite protocoale de comunicație (GPIO, UART, I2C) și integrarea senzorilor, cât și pentru comunitate, demonstrând cum se poate transforma un kit comercial într-un sistem personalizat cu funcționalități extinse. |
</note> | </note> | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
Line 18: | Line 18: | ||
**Protocoale de Comunicație** | **Protocoale de Comunicație** | ||
- | - GPIO: Control motoare, senzori digitali, LED-uri, buzzer | + | - GPIO: Control motoare, LED-uri, speaker |
- | - I2C: Comunicare cu senzorul de culoare TCS34725 și ecranul OLED | + | - I2C: Comunicare cu senzorul de culoare TCS34725 și ecranul OLED, precum si relatie master-slave intre Marble Pico, respectiv Arduino Uno |
- | - UART: Comunicare cu DFPlayer Mini și modulul Bluetooth opțional | + | - UART: Comunicare cu DFPlayer Mini și modulul Bluetooth |
- | - SPI: Interfațare cu cardul microSD pentru stocarea datelor | + | - PWM: Control viteză motoare |
- | + | ||
- | - PWM: Control viteză motoare și poziționare servo | + | |
**Modulele Sistemului** | **Modulele Sistemului** | ||
** | ** | ||
- | Modulul de Control:** Microcontroller STM32/Arduino care gestionează toate operațiunile, procesează datele și implementează algoritmii de decizie. | + | Modulul de Control:** |
+ | |||
+ | - Microcontroller Arduino care gestionează miscarile masinii, conexiunea Bluetooth cu aplicatia mobila | ||
+ | |||
+ | - Microcontroller Marble Pico pentru gestionarea Arduino (prin master-slave) la gasirea unei "comori" si al restului componentelor | ||
**Modulul de Senzori** | **Modulul de Senzori** | ||
Line 37: | Line 39: | ||
- Senzor culoare pentru identificarea "comorilor" | - Senzor culoare pentru identificarea "comorilor" | ||
- | - Senzori IR pentru urmărirea liniei | + | - Senzori IR pentru urmărirea liniei (hartii) |
- | + | ||
- | - Senzor ultrasonic pentru evitarea obstacolelor | + | |
- | + | ||
- | - Senzori anti-cădere și encodere pentru măsurarea vitezei | + | |
**Modulul de Acționare** | **Modulul de Acționare** | ||
- | - Motoare DC, driver L298N, și servo pentru colectarea obiectelor, plus LED-uri pentru semnalizare vizuală. | + | - Motoare DC plus LED-uri pentru semnalizare vizuală. |
- | - Modulul de Feedback | + | - Modul convertor de tensiune de la 5V la 3.3V |
- Ecran OLED și DFPlayer Mini pentru afișarea parametrilor și notificări audio. | - Ecran OLED și DFPlayer Mini pentru afișarea parametrilor și notificări audio. | ||
- | |||
- | **Modulul de Stocare**: Card microSD pentru jurnalizarea parametrilor și evenimentelor din timpul funcționării. | ||
**Funcționare** | **Funcționare** | ||
- | Mașinuta urmărește fie o linie predefinită, fie este controlată manual, detectând și alarmând utilizatorul in cazul găsirii unor obiecte de culori specifice ("comori"). Sistemul oferă feedback vizual și auditiv și poate înregistra parametri de funcționare pentru analiză ulterioară. | + | Folosind o aplicatie mobila, mașinuta poate fi controlată manual, insa poate intra in modul Hunting in care fie merge inainte in continuu, fie urmareste un traseu cu linie neagra, detectând și alarmând utilizatorul in cazul găsirii unor obiecte de culori specifice ("comori", eu am ales de culoare neagra). Sistemul oferă feedback vizual și auditiv intr-un mod pe care nu il voi dezvalui inca ;). |
</note> | </note> | ||
Line 66: | Line 62: | ||
- Kit mașinută robotică (bază, motoare, roți) | - Kit mașinută robotică (bază, motoare, roți) | ||
- | - Microcontroller (compatibil Arduino/STM32) | + | - Microcontrollere (Arduino Uno, Marble Pico) |
- Senzor de culoare TCS34725 | - Senzor de culoare TCS34725 | ||
Line 76: | Line 72: | ||
- Card microSD | - Card microSD | ||
- | - Cititor card SD cu interfață SPI | + | - Speaker 2W 32 Ohm |
- Senzori IR pentru urmărirea liniei | - Senzori IR pentru urmărirea liniei | ||
- | |||
- | - Senzor ultrasonic pentru evitarea obstacolelor | ||
- Baterii și regulator de tensiune | - Baterii și regulator de tensiune | ||
- Cabluri și componente electronice auxiliare | - Cabluri și componente electronice auxiliare | ||
- | |||
- | ** | ||
- | Schemele detaliate vor fi adăugate în etapele ulterioare ale proiectului, dar vor include:** | ||
- | |||
- | - Conectarea microcontroller-ului la motoare prin drivere | ||
- | |||
- | - Interfațarea senzorului de culoare prin I2C | ||
- | |||
- | - Conectarea ecranului OLED prin I2C | ||
- | |||
- | - Conectarea modulului DFPlayer Mini prin UART | ||
- | |||
- | - Interfațarea cardului SD prin SPI | ||
{{:pm:prj2025:rnedelcu:20250513_111107.jpg?600|}} | {{:pm:prj2025:rnedelcu:20250513_111107.jpg?600|}} | ||
Line 106: | Line 87: | ||
<note tip> | <note tip> | ||
- | **Mediu de dezvoltare:** Arduino IDE sau STM32CubeIDE (în funcție de microcontrollerul ales) | + | **Mediu de dezvoltare:** Arduino IDE, Flutter |
**Librării planificate:** | **Librării planificate:** | ||
Line 116: | Line 97: | ||
- DFRobotDFPlayerMini pentru modulul audio | - DFRobotDFPlayerMini pentru modulul audio | ||
- | - SD pentru interfațarea cu cardul SD | + | - Raspberry Pi Pico RP2040 |
+ | |||
+ | - Librarii predefinite in kit-ul masinii | ||
**Algoritmi și structuri planificate:** | **Algoritmi și structuri planificate:** | ||
Line 126: | Line 109: | ||
- Compararea cu valorile predefinite pentru identificarea "comorilor" | - Compararea cu valorile predefinite pentru identificarea "comorilor" | ||
- | - Luarea deciziei de colectare | + | - Declansarea comportamentului de alertare |
Line 138: | Line 121: | ||
**Interfață utilizator:** | **Interfață utilizator:** | ||
- | - Afișarea parametrilor pe ecranul OLED | + | - Afișarea parametrilor si a mesajelor de feedback pe ecranul OLED |
- Generarea de feedback audio pentru evenimente specifice (gasire obiect, cautare obiect etc.) | - Generarea de feedback audio pentru evenimente specifice (gasire obiect, cautare obiect etc.) | ||
- | |||
**Mașină de stare pentru modurile de funcționare:** | **Mașină de stare pentru modurile de funcționare:** | ||
Line 149: | Line 132: | ||
- Raportare statistici | - Raportare statistici | ||
- | </note> | ||
- | ===== Rezultate Obţinute ===== | + | **Proces de interpretare a comenzilor primite prin bluetooth de la o aplicatie mobila:** |
- | <note tip> | + | - Dezvoltarea unei aplicatii de Android care permite conectarea prin adresa MAC a modulului si trimiterea de caractere encodate |
- | ** Această secțiune va fi completată pe măsură ce proiectul avansează, documentând:** | + | catre microcontroller |
+ | |||
+ | - Folosirea unei librarii externe de interpretare a caracterelor encodate venite ca input | ||
+ | |||
+ | - Executarea unei functii (deplasare, schimbare viteza, schimbarea modului) in functie de aceste caractere | ||
+ | |||
+ | **Realizarea conexiunii master-slave intre Marble Pico, respectiv Arduino:** | ||
- | - Funcționalitățile implementate cu succes | + | - Trimiterea de comenzi din Marble Pico la adresa Arduino prin I2C de executare a functiilor din codul slave |
- | - Performanța sistemului în diverse scenarii | + | |
- | - Probleme întâmpinate și soluțiile aplicate | + | |
</note> | </note> | ||
- | ===== Concluzii ===== | + | ===== Rezultate Obţinute ===== |
<note tip> | <note tip> | ||
- | **Această secțiune va fi completată la finalizarea proiectului, incluzând:** | + | Am implementat aproape in totalitate tot ce am mentionat la Software Design. |
- | - Evaluarea obiectivelor îndeplinite | + | Reusesc prin intermediul aplicatiei mobile sa ma conectez la microcontroller, iar masinuta raspunde pozitiv la comenzile pe care i le dau prin intermediul acesteia (se deplaseaza, isi schimba viteza, poate intra in modul hunting) |
- | - Lecții învățate în timpul implementării | + | |
- | - Direcții viitoare de dezvoltare | + | Ecranul OLED functioneaza bine, afiseaza informatiile care trebuie, iar led-urile raspund la schimbarile de stare oferite din codul Marble Pico. |
+ | Senzorul de culoare are downside-ul de a lumina slabut, iar pentru a detecta un obiect de culoarea care trebuie, masinuta, mai precis led-ul senzorului, trebuie sa fie foarte aproape de acesta. Cu toate acestea, am reusit sa il calibrez in asa fel incat sa detecteze cum trebuie rosu si sa genereze comportamentul de alerta al masinii. | ||
+ | |||
+ | Cea mai mare problema pe care am intampinat-o si pe care nu am mai avut timp sa o rezolv este redarea sunetului. Am folosit initial un dfplayer cumparat dintr-o parte, am conectat pinii unde trebuie, iar la diagnosticare primeam mereu eroare de citire a cardului sd. dupa asta, am folosit un dfplayer cumparat din alta parte si a functionat cu fix aceeasi configuratie (am dovada video). pe masura ce am mai adaugat functii insa, dfplayer-ul s-a oprit din functionare si nu am reusit sa imi dau seama care e problema. Am inceput sa primesc aceleasi mesaje de eroare ca la primul dfplayer. Am comandat unul nou prea tarziu si nu am mai avut cand sa il testez (nu a ajuns pana la ziua de prezentare). | ||
</note> | </note> | ||
+ | |||
===== Download ===== | ===== Download ===== | ||
<note tip> | <note tip> | ||
- | **Fișierele proiectului vor fi disponibile după implementare, incluzând:** | + | **Cod pentru Arduino Uno** |
- | - Codurile sursă cu documentație | + | https://drive.google.com/file/d/1uDA5Elq3zFg71mTdAhzrtgXJGqO79v4O/view?usp=sharing |
- | - Scheme detaliate ale circuitelor | + | |
- | - Fișier README cu instrucțiuni de utilizare | + | **Cod pentru Marble Pico** |
- | - ChangeLog pentru a urmări evoluția proiectului | + | |
+ | https://drive.google.com/file/d/1J-Zo0cVsG1i93x4mLlZHQvctaU53GlMD/view?usp=sharing | ||
+ | |||
+ | **README** | ||
+ | |||
+ | https://drive.google.com/file/d/1DFzQl-jZ2bUoNoqddRgVWwXMsvUDopd5/view?usp=sharing | ||
+ | |||
+ | **Cod aplicatie mobila** | ||
+ | |||
+ | https://github.com/IulySquadyt/flutter-car-remote-app.git | ||
</note> | </note> | ||
- | ===== Jurnal ===== | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
<note> | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | **Resurse Hardware** |
+ | |||
+ | - Datasheet Marble Pico: https://github.com/GroundStudio/GroundStudio_Marble_Pico/blob/main/Documentation/REV0.0.3/Datasheet%20GroundStudio%20Marble%20Pico%20REV%201.1.pdf | ||
+ | |||
+ | - Datasheet TCS34725: https://cdn-shop.adafruit.com/datasheets/TCS34725.pdf | ||
+ | |||
+ | - Datasheet DFPlayer Mini: https://picaxe.com/docs/spe033.pdf | ||
+ | |||
+ | - Datasheet HC-05: https://components101.com/sites/default/files/component_datasheet/HC-05%20Datasheet.pdf | ||
+ | |||
+ | - Datasheet KY-033: https://download.kamami.pl/p587610-KY-033-Joy-IT.pdf | ||
+ | |||
+ | **Resurse Software** | ||
+ | |||
+ | - I2C Bus Specification: https://www.nxp.com/docs/en/user-guide/UM10204.pdf | ||
+ | |||
+ | - Arduino I2C Slave Implementation Guide: https://deepbluembedded.com/arduino-i2c-slave/ | ||
+ | |||
+ | - Adafruit_SSD1306 Library Documentation: https://adafruit.github.io/Adafruit_SSD1306/html/class_adafruit___s_s_d1306.html | ||
+ | |||
+ | - Adafruit_TCS34725 Library Documentation: http://adafruit.github.io/Adafruit_TCS34725/html/class_adafruit___t_c_s34725.html | ||
+ | |||
+ | - SoftwareSerial Library Documentation: https://docs.arduino.cc/learn/built-in-libraries/software-serial/ | ||
+ | |||
+ | - Wire Library Documentation: https://www.arduino.cc/en/Reference/wire | ||
</note> | </note> | ||