This is an old revision of the document!


Detecție și identificare de obiecte folosind ESP32-CAM

Introducere

Proiectul folosește modulul ESP32-CAM pentru a construi un sistem de recunoaștere a imaginilor, capabil să identifice diverse obiecte în timp real. Modulul camera captează imaginea, iar un model de inteligență artificială antrenat pe platforma Edge Impulse o analizează și afișează rezultatul, adică obiectul detectat împreună cu procentul de încredere pe un ecran OLED. Pe lângă afișaj, am adăugat și un servomotor care rotește brațul cu 90° pentru a ridica sau coborî poarta, în funcție de obiectul identificat.

Scopul proiectului este să demonstreze că inteligența artificială nu are nevoie de servere puternice pentru a funcționa. Prin edge computing, algoritmii de IA rulează direct pe dispozitive mici și low-power, cum ar fi microcontrollerele, procesând datele local, fără a le trimite în cloud. Astfel, sistemul este rapid, independent de internet și ieftin.

Sunt pasionată de inteligența artificială și am vrut să construiesc ceva care să combine IA cu microcontrollerele. Provocarea principală este atât găsirea celui mai bun model care să clasifice corect obiectele, cât și optimizarea acestuia pentru a încăpea în memoria limitată a ESP32-CAM.

Proiectul are aplicații practice variate. Într-un supermarket, de exemplu, poate identifica automat produsul pus pe cântar, eliminând nevoia de a căuta manual codul acestuia și accelerând procesul pentru toți clienții. Pentru persoanele nevăzătoare, este deosebit de util deoarece nu mai trebuie să caute un cod pe un ecran pe care nu îl pot vedea. Mai departe, sistemul poate fi adaptat pentru inventariere și sortare automată în depozite sau clasificarea fructelor și legumelor în agricultură.

Descriere generală

Module hardware:

  • ESP32-CAM — microcontrollerul principal al proiectului. Captează imaginea prin camera integrată, rulează modelul AI și controlează toate celelalte componente.
  • Servomotor SG90 — conectat la pinul GPIO16 al ESP32-CAM. Primește semnal PWM de la ESP32-CAM și rotește brațul cu 90° pentru a ridica sau coborî poarta, în funcție de obiectul identificat de modelul AI.
  • Buzzer — conectat la un pin GPIO al ESP32-CAM. Primește semnal de la ESP32-CAM și emite un sunet diferit în funcție de obiectul identificat.
  • FTDI Programmer — conectat prin UART la ESP32-CAM. Are dublu rol: încarcă codul pe microcontroller și îl alimentează cu 5V prin USB de la PC.

Module software:

  • Edge Impulse — platforma online unde este antrenat modelul de recunoaștere a obiectelor. Datele de antrenare sunt imagini capturate chiar cu ESP32-CAM, iar modelul rezultat este exportat ca librărie Arduino.
  • Modelul AI — exportat din Edge Impulse și instalat direct pe ESP32-CAM ca librărie. Analizează fiecare cadru capturat de cameră și returnează obiectul detectat împreună cu scorul de încredere.
  • Arduino IDE — mediul de programare folosit pentru a scrie codul care leagă toate componentele: camera, modelul AI, ecranul OLED și buzzerul.

Hardware Design

Listă de piese:

  • ESP32-CAM - microcontroller principal cu cameră integrată și modul WiFi/Bluetooth
  • USB to Serial Converter - convertor FTDI FT232RL folosit pentru programarea ESP32-CAM și alimentarea acestuia prin USB
  • Breadboard - placă de prototipare pentru conectarea componentelor fără lipire
  • 0.96” OLED Display - ecran SSD1306 conectat prin I2C care afișează obiectul detectat și procentul de încredere
  • Modul Nano micro servo motor SG90 - servomotor de 9g controlat prin PWM pe GPIO16, folosit pentru acționarea porții mecanice
  • Fire de legătură - fire jumper pentru realizarea conexiunilor între componente pe breadboard
  • Obiecte pentru antrenare - obiecte fizice fotografiate și folosite pentru antrenarea modelului AI în Edge Impulse

Demonstrație funcționare

Schemă electrică

Schema electrică prezintă sistemul complet al proiectului ESP32-CAM Object Detection, realizată în KiCad 10.0.3. Aceasta include patru componente principale: microcontrollerul ESP32-WROOM-32 în centrul schemei, display-ul OLED conectat prin I2C , convertorul USB-Serial FT232RL conectat prin UART pentru programare și alimentare la 5V, și servomotorul SG90 alimentat separat din baterii 4xAA la 6V. Firele verzi indică conexiunile de semnal și alimentare între componente, iar simbolurile de alimentare (+3.3V, +5V, +6V, GND) sunt distribuite corespunzător fiecărei componente în funcție de tensiunea necesară.

Pin FTDI Semnal Conectat la De ce?
VCC Alimentare ESP32 5V Furnizează 5V prin USB de la laptop către ESP32
GND Masă ESP32 GND Referință comună de tensiune
TX Transmisie ESP32 U0R FTDI trimite date, ESP32 primește - încărcare cod
RX Recepție ESP32 U0T ESP32 trimite date, FTDI primește - Serial Monitor
Pin ESP32 Semnal Conectat la De ce?
5V Alimentare FTDI VCC Primește alimentare 5V prin USB
GND Masă FTDI GND + Baterii GND + OLED GND Masă comună pentru toate componentele
3.3V Alimentare OLED VCC 3.3V pentru OLED
GPIO0 Boot mode GND Conectat la GND, mod programare. Deconectat, rulare normală
GPIO14 I2C SCL OLED SCL Clock I2C pentru OLED
GPIO15 I2C SDA OLED SDA Date I2C pentru OLED
GPIO16 PWM Servo semnal Generează semnal PWM
Pin OLED Semnal Conectat la De ce?
GND Masă ESP32 GND Referință comună
VCC Alimentare ESP32 3.3V OLED funcționează la 3.3V
SCL I2C clock ESP32 GPIO14 Primește clock-ul I2C de la ESP32
SDA I2C date ESP32 GPIO15 Primește datele de afișat de la ESP32
Pin Servo Culoare fir Conectat la De ce?
VCC Roșu Baterii +6V Alimentare separată baterii
GND Maro/Negru Baterii GND + ESP32 GND Masă comună
Semnal Portocaliu ESP32 GPIO16 Primește semnal PWM

Software Design

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
  • librării şi surse 3rd-party (e.g. Procyon AVRlib)
  • algoritmi şi structuri pe care plănuiţi să le implementaţi
  • (etapa 3) surse şi funcţii implementate

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2026/ciprian.popescu0411/sara.tutuianu.1778974945.txt.gz · Last modified: 2026/05/17 02:42 by sara.tutuianu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0