This is an old revision of the document!


Apostol Rares

331CA

RC Car with camera

Introducere

Proiectul meu consta in construirea unei masini cu telecomanda controlata de la distanta prin intermediul unei aplicatii Android, folosind Wi-Fi.

Masina va putea fi controlata în timp real din aplicatie, permitand deplasarea inainte și inapoi, precum și virarea stanga-dreapta printr-un volan implementat in aplicatie. Desi ar fi fost mai usor ca masina sa vireze doar din niste sageti, am dorit un control precis, bazat pe volan.

Un alt aspect important al proiectului este integrarea unei camere video montate pe masina. Aceasta va transmite video către aplicatia Android. Utilizatorul va putea astfel controla masina chiar si in afara campului vizual. Am folosit un ESP32 CAM pentru camera.

Comunicarea dintre aplicatie si masina se va face printr-o retea Wi-Fi locala. Pentru asta, un ESP8266 va fi pornit in mod access-point, iar celelalte dispozitive se vor conecta la aceasta retea.

Descriere generală

Un ESP8266 va fi pornit in mod AP cu o adresa IP statica, iar dispozitivul Android si ESP32-CAM(cel din urma tot cu o adresa IP statica, pentru usurinta) se vor conecta la aceasta retea. Telefonul va trimite date de control catre ESP8266, care va actiona asupra motoarelor. De asemenea, telefonul va accesa si pagina web pe care transmite ESP32-ul, si o va afisa in aplicatie, printr-un WebView.

Hardware Design

Piese:

  • ESP32-CAM
  • ESP8266
  • Driver motor L9110s
  • Modul USB to serial HT42B534 (pentru programarea ESP-ului)
  • 2 x Suport baterii 4 x R6
  • Micro Servomotor SG90 180°
  • 2 x Motor DC 3V-6V cu reductor 1:48
  • Masina lego
  • Intrerupator

Schema electrica:

Utilizare PINI :

  • ESP8266
    • D7, D6 - pini PWM pentru controlul unui motor
    • D2, D1 - pini PWM pentru controlul celui de-al doilea motor
    • D0 - pini PWM pentru controlul servomotorului
    • Vin - alimentare dintr-un set de baterii dedicat pentru microcontrolere.
    • Gnd - conectat la un gnd comun pentru toate dispozitivele, esential pentru PWM.
  • ESP32-CAM
    • Am vrut ca acest microcontroller sa se ocupe numai de camera, deci singurii pini utilizati sunt Vin si GND.
    • Pentru programarea acestui microcontroller, trebuie folosit convertorul HT42B534: se conecteaza RX de pe conector la U0T, TX la U0R, pinul IO0 trebuie conectat la ground, si se alimenteaza prin convertor,prin USB-C. Dupa incarcarea codului, se scoate alimentarea, si firul de la IO0 la ground.
  • L9110s - driver pentru motoare
    • pentru ca un microcontroller nu poate furniza destul curent pentru doua motoare, a fost necesara utilizarea unui driver de motoare.
    • M1(A), M1(B) - pini pentru puterea si sensul unui motor
    • M2(A), M2(B) - pini pentru puterea si sensul celuilalt motor
    • Vin - alimentat din baterie de 6V.
    • Gnd - comun cu celelalte componente
  • Servomotor SG90
    • S - pin pentru semnalul PWM
    • Vin - alimentat la 6V
    • Gnd - comun cu celelalte componente

Software Design

Flow program:

  • Se deschide ESP8266 in mod AP, cu o adresa IP statica.
  • Aplicatia Android va trimite comenzi prin UDP la ESP8266, pe portul 8888. Pentru a nu trimite mesaje degeaba, se trimit doar atunci cand se schimba o valoare(de ex se apasa pe acceleratie)
  • ESP8266 proceseaza comenzile, si controleaza servo-motorul si cele doua motoare. Pentru a primi mesajele, am folosit AsyncUDP, ca sa nu se blocheze cat timp proceseaza pachetele.
  • ESP32 se va conecta la reteaua ESP8266, si va fi accesata camera prin intermediul aplicatiei de pe telefon.

Program ESP8266:

  • Am folosit VsCode, PlatformIO.
  • ESPAsyncUDP.h, ESP8266WiFi.h, Servo.h

Program ESP32:

  • Am folosit tot VsCode si PlatformIO, dar am utilizat un exemplu de cod din acest repo

Program Android:

  • Android Studio, Kotlin si Jetpack Compose

Rezultate Obţinute

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

Concluzii

Download

Jurnal

Hardware-ul este aproape gata: mai trebuie conectate firele de la driver la motoare, dar vreau sa le lipesc. Am testat sistemul de servo directie. Pentru ca esp-ul nu are usb, a trebuit sa folosesc un convertor, si a durat ceva pana sa ma prind cum sa programez microcontrollerul. Din cauza asta, o sa astept pana cand codul este gata ca sa lipesc firele si sa fac designul final.

Camera trebuia sa fie OV2640 dar a venit altceva m( Camera primita e rhyx-m21-45, care merge foarte prost.

Video servodirectie aici

Update 1: cumva am stricat ESP32-ul, nu mai merge:). Aveam acasa un esp8266, o sa continui proiectul cu el, dar nu are camera. Am mai adaugat in plus in software: volan(se poate controla precis servomotorul), pedale de acceleratie si frana, si un slider de unde se alege viteza. Nu am pus inca rotile, dar toate piesele functioneaza.

Control motor

Ambele motoare

Control servo

Update 2: am reusit sa pornesc ESP32-ul. Pentru ca am scris deja codul pentru controlul motoarelor pe esp8266, o sa continui cu ambele: esp32 pentru camera, esp8266 pentru motoare.

Bibliografie/Resurse

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

Export to PDF

pm/prj2025/eradu/rares.apostol3011.1748076111.txt.gz · Last modified: 2025/05/24 11:41 by rares.apostol3011
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