Table of Contents

Masina Funky De Petreceri

Nume: Huzum Petrisor

Grupa: 331CB

Introducere

Proiectul este o masinuta cu telecomanda, dar telecomanda nu e o telecomanda fizica, ci o pagina web care ruleaza direct in browserul telefonului. Te conectezi la WiFi-ul masinii, deschizi Safari si ai pe ecran un joystick, butoane pentru lumini, semnalizatoare, girofare si claxon, plus un camp unde scrii orice text si masina il spune cu voce tare prin difuzorul ei (text-to-speech sintetizat local).

Ideea a pornit de la mai multe lucruri puse cap la cap. In primul rand, voiam sa fac ceva care sa nu fie inca o jucarie de pus pe raft dupa prezentare, ci ceva cu care sa ma joc efectiv. In al doilea rand, mi s-a parut interesant sa scap de telecomanda dedicata si sa folosesc telefonul, fiindca oricine poate sa il scoata din buzunar si sa controleze masina fara sa instaleze nimic. In final, partea de sonorizare cu TTS face din proiect ceva amuzant la petreceri, de unde si numele.

Utilitatea practica e mai mult de partea entertainment-ului, dar pe partea tehnica acopera o gama larga de subiecte din curs si laboratoare: UART pentru comunicatie intre microcontrollere, PWM pentru motoare si lumini, intreruperi pentru semnalizatoare si girofare, audio prin PWM pentru claxon si voce, plus integrarea unui modul WiFi extern.

Descriere generala

Sistemul are doua microcontrollere care lucreaza impreuna. ATmega328P-ul de pe placa Xplained Mini este creierul masinii: controleaza motoarele prin PWM hardware, gestioneaza luminile (faruri, stop-uri, semnalizatoare, girofare) printr-o masina de stari rulata pe intreruperi de timer, citeste eventualii senzori si redirectioneaza audio-ul catre difuzor. ESP32-ul are rolul de “punte” intre telefon si masina: ruleaza in mod Access Point, serveste pagina web statica si o conexiune WebSocket prin care primeste comenzile de la telefon. Comenzile primite sunt traduse intr-un protocol text simplu si trimise catre ATmega prin UART.

Pentru audio sunt doua moduri. Pentru claxon si fraze pre-inregistrate, ESP32 trimite un sample WAV stocat in memorie catre ATmega, care il reda prin PWM pe Timer2 filtrat printr-un RC trecere-jos si amplificat de un PAM8403. Pentru text-to-speech, ESP32 sintetizeaza local cu libraria ESP8266SAM (un port al sintetizatorului SAM din 1982), iar audio-ul rezultat trece pe acelasi lant. Voce robotica intentionata, cu vibe Speak & Spell.

Schema bloc:

Schema bloc

Schema de mai sus reprezinta arhitectura initiala, planificata in faza de documentare. E posibil ca pe parcursul implementarii sa modific anumite alegeri (modul de alimentare, librariile folosite pentru ESP32, formatul protocolului UART), in functie de ce probleme apar la testare. Modificarile finale vor fi reflectate in versiunile actualizate ale schemei si in sectiunea de Software Design.

Hardware Design

Lista de piese

Pinout ATmega328P

Schema arata alocarea pinilor pentru toate perifericele. Toate cele 3 timere ale ATmega-ului sunt folosite: Timer0 pentru cele doua motoare (PWM hardware pe OC0A si OC0B), Timer1 pentru lumini fata-spate (faruri pe OC1A, stop-uri pe OC1B), iar Timer2 pentru audio (PWM rapid pe OC2A, filtrat printr-un RC trecere-jos). Semnalizatoarele si girofarele functioneaza pe software timing dintr-un singur ISR de 10ms care multiplexeaza toate clipirile.

Mentiune importanta: pinout-ul de mai sus reflecta planul initial. E foarte probabil sa il modific pe parcurs, fie din motive practice (conflicte intre periferice care nu erau evidente la inceput, alocari de timer mai bune pentru audio sau motoare), fie pentru ca apar componente extra (senzori, OLED) care cer pini suplimentari. Voi actualiza schema si tabelul pinilor cand sunt sigur de varianta finala.

Cateva puncte importante de hardware care apar in schema:

Schema electrica

(in lucru)

Software Design

Mediu de dezvoltare:

Librarii planificate pentru ESP32:

Pe partea de ATmega nu folosesc librarii externe, totul scris pe registre conform laboratoarelor 0-6.

Flux comenzi

Diagrama arata drumul unei comenzi de la apasarea unui buton in webapp pana la actiunea fizica (motor, LED, difuzor) si telemetria de raspuns. Latenta totala simtita de utilizator este sub 100ms in conditii normale de WiFi.

Protocol UART

Comenzile circula intre ESP32 si ATmega ca text simplu, terminat cu newline. Format ales pentru ca e usor de debug-uit cu un terminal serial conectat in paralel.

Comenzi de la ESP32 catre ATmega:

Telemetrie de la ATmega catre ESP32:

Reguli de safety in firmware:

Rezultate Obtinute

(sectiune completata la final)

Concluzii

(sectiune completata la final)

Download

(arhiva cu sursele se va incarca aici la final)

Jurnal

Bibliografie/Resurse