Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2026:ciprian.popescu0411:dice [2026/05/16 18:19]
andrei.cotiga [Hardware Design]
pm:prj2026:ciprian.popescu0411:dice [2026/05/23 18:43] (current)
andrei.cotiga [Hardware Design]
Line 18: Line 18:
 Lista de piese (Bill of Materials): Lista de piese (Bill of Materials):
  
-    ​* Placă ESP32-CAM (cu cameră OV2640): Microcontroller-ul central care gestionează logica jocului, face pozele și procesează imaginea ​pentru ​a număra punctele.   +* Placă ESP32-CAM (cu cameră OV2640): Microcontroller-ul central care gestionează logica jocului, face pozele și comunică prin Wi-Fi cu scriptul Python ​pentru ​procesarea imaginilor.   
-    * Servomotor SG90: Acționează mecanic paharul pentru a amesteca zarurile fizice la comanda microcontroller-ului. ​  +* Servomotor SG90: Acționează mecanic paharul pentru a amesteca zarurile fizice ​prin mișcări scurte și agresive ​la comanda microcontroller-ului. ​  
-    * Ecran LCD 1602 cu modul I2C: Afișează instrucțiunile,​ punctajul ​detectat ​și mesajul cu câștigătorul jocului. ​  +* Ecran LCD 2004 (sau 1602cu modul I2C: Afișează ​meniurile, rândul jucătorilor, ​instrucțiunile ​defilante, punctajul și mesajul cu câștigătorul jocului. ​  
-    Modul Programator FTDI (CP2102/​CH340):​ Folosit ​doar pentru a încărca codul de pe PC pe placa ESP32-CAM. ​  + 
-    * Modul alimentare Breadboard (MB102): Asigură curent stabil (5V) pentru componentevital pentru ​prevenirea resetărilor atunci când motorul ​și camera funcționează simultan  +2 x Module ​Programator FTDI (CP2102/​CH340):​ 
-    * Sursă alimentare externăAlimentator ​de perete ​(9V-12Vsau o baterie de 9V cu adaptor, necesar ​pentru a alimenta modulul MB102  +    * **Programatorul 1:** Folosit pentru a încărca codul, pentru ​comunicația serială și pentru a alimenta partea logică (ESP32-CAM și LCD)
-    * Butoane: 2 bucăți ce permit Jucătorului 1 și Jucătorului 2 să "dea cu zarul" ​și să interacționeze ​cu sistemul.   +    * **Programatorul 2:** Transformat exclusiv în sursă ​de curent ​(conectat la un alt port USB) pentru a susține consumul ridicat al servomotorului
-    * Rezistoare 10kΩ: 2 bucăți folosite ca rezistențe de pull-down pentru butoane, ​care previn ​declanșările false cauzate de zgomotul electromagnetic. ​  +* Butoane ​tactile: 2 bucăți ce permit Jucătorului 1 și Jucătorului 2 să aleagă modul de joc și să declanșeze "​aruncarea" ​cu zarul.   
-    * Condensator electrolitic (ex. 470µF sau 1000µF, 10V+): Pus în paralel cu servo-ul pentru a absorbi șocurile de curent la pornirea mișcării mecanice. ​  +* Rezistoare 10kΩ: 2 bucăți folosite ca rezistențe de pull-down pentru butoane, ​prevenind ​declanșările false cauzate de zgomotul electromagnetic. ​  
-    * Condensator electrolitic (ex. 100µF, 10V+): Pus pe pinii de alimentare ai ESP32-CAM pentru a garanta stabilitatea camerei în momentul capturii. ​  +* Breadboard: Placa de bază utilizată pentru ​rutarea separată a celor două surse de alimentare și conectarea tuturor firelor. ​  
-    ​* Breadboard: Placa de bază utilizată pentru conectarea tuturor firelor ​și prototiparea circuitului fără lipire.   +* Set fire Dupont: Mamă-Mamă,​ Tată-Tată,​ Tată-Mamă,​ utilizate pentru realizarea tuturor conexiunilor electrice. ​  
-    * Set fire Dupont: Mamă-Mamă,​ Tată-Tată,​ Tată-Mamă,​ utilizate pentru realizarea tuturor conexiunilor electrice ​între componente.   +* Pahar de plastic mic + 2 zaruri: ​Ansamblul ​mecanic ​fizic în care se desfășoară jocul.
-    * Pahar de plastic mic + 2 zaruri: ​1 set folosit pentru partea ​mecanică și fizică a jocului.+
  
 Conexiunile hardware ale proiectului sunt următoarele:​ Conexiunile hardware ale proiectului sunt următoarele:​
  
 ^ Componenta ^ Pin componenta ^ Conectare ^ ^ Componenta ^ Pin componenta ^ Conectare ^
-| Programator FTDI CP2104 ​| 5V / VCC | Bara 5V (roșie) breadboard | +| Programator FTDI 1 (Logică) ​| 5V / VCC | Bara 5V #1 (roșie ​- circuit logic) breadboard | 
-| Programator FTDI CP2104 ​| GND | Bara GND (albastră) breadboard | +| Programator FTDI 1 (Logică) ​| GND | Bara GND (albastră - comună) breadboard | 
-| Programator FTDI CP2104 ​| TX | U0R (RX) microcontroller | +| Programator FTDI 1 (Logică) ​| TX | U0R (RX) microcontroller | 
-| Programator FTDI CP2104 ​| RX | U0T (TX) microcontroller |+| Programator FTDI 1 (Logică) ​| RX | U0T (TX) microcontroller |
  
 ^ Componenta ^ Pin componenta ^ Conectare ^ ^ Componenta ^ Pin componenta ^ Conectare ^
-| ESP32-CAM | 5V | Bara 5V (roșie) breadboard | +| Programator FTDI 2 (Putere Motor) | 5V / VCC | Bara 5V #2 (separată!) breadboard | 
-| ESP32-CAM | GND | Bara GND (albastră) breadboard | +| Programator FTDI 2 (Putere Motor) | GND | Bara GND (albastră - comună) breadboard | 
-| ESP32-CAM | 3.3V | Bara 3.3V secundară ​breadboard (pentru ​butoane) |+ 
 +^ Componenta ^ Pin componenta ^ Conectare ^ 
 +| ESP32-CAM | 5V | Bara 5V #1 (circuit logic) breadboard | 
 +| ESP32-CAM | GND | Bara GND (albastră - comună) breadboard | 
 +| ESP32-CAM | 3.3V | Bara 3.3V breadboard (pentru ​alimentarea butoanelor) |
  
 ^ Componenta ^ Pin componenta ^ Conectare ^ ^ Componenta ^ Pin componenta ^ Conectare ^
Line 51: Line 54:
 | Buton Jucator 2 | Pin semnal (diagonala) | IO12 microcontroller | | Buton Jucator 2 | Pin semnal (diagonala) | IO12 microcontroller |
 | Rezistoare 10kΩ | Capat 1 | Pin semnal buton (IO2, respectiv IO12) | | Rezistoare 10kΩ | Capat 1 | Pin semnal buton (IO2, respectiv IO12) |
-| Rezistoare 10kΩ | Capat 2 | GND breadboard |+| Rezistoare 10kΩ | Capat 2 | Bara GND (albastră - comună) ​breadboard |
  
 ^ Componenta ^ Pin componenta ^ Conectare ^ ^ Componenta ^ Pin componenta ^ Conectare ^
-| Ecran LCD 1602 I2C | GND | GND breadboard | +| Ecran LCD I2C | GND | Bara GND (albastră - comună) ​breadboard | 
-| Ecran LCD 1602 I2C | VCC | 5V (roșie) breadboard | +| Ecran LCD I2C | VCC | Bara 5V #1 (circuit logic) breadboard | 
-| Ecran LCD 1602 I2C | SDA | IO15 microcontroller (Pin remapat) | +| Ecran LCD I2C | SDA | IO15 microcontroller (Pin remapat) | 
-| Ecran LCD 1602 I2C | SCL | IO14 microcontroller (Pin remapat) |+| Ecran LCD I2C | SCL | IO14 microcontroller (Pin remapat) |
  
 ^ Componenta ^ Pin componenta ^ Conectare ^ ^ Componenta ^ Pin componenta ^ Conectare ^
-| Servomotor SG90 | GND (Fir Maro/Negru) | GND breadboard | +| Servomotor SG90 | GND (Fir Maro/Negru) | Bara GND (albastră - comună) ​breadboard | 
-| Servomotor SG90 | VCC (Fir Roșu/​Mijlociu)| 5V (roșiebreadboard ​|+| Servomotor SG90 | VCC (Fir Roșu/​Mijlociu)| ​Bara 5V #2 (circuit putere - Programator 2) |
 | Servomotor SG90 | Semnal (Fir Portocaliu) | IO13 microcontroller | | Servomotor SG90 | Semnal (Fir Portocaliu) | IO13 microcontroller |
  
 ^ Componenta ^ Pin componenta ^ Conectare ^ ^ Componenta ^ Pin componenta ^ Conectare ^
-| Camera ​OV3660 3MP | Panglica FPC (24 pini) | Conector FPC dedicat pe placa ESP32-CAM | +| Camera ​OV2640 ​| Panglica FPC (24 pini) | Conector FPC dedicat pe placa ESP32-CAM |
-Descrierea Arhitecturii Hardware+
  
-Deoarece placa ESP32-CAM nu dispune de o mufă USB integrată, alimentarea întregului sistem ​și scrierea codului se realizează prin intermediul modulului ​FTDI (CP2104)Pentru a preveni căderile de tensiune (brownouts) cauzate de consumul ridicat al componentelor mecanice ​și de iluminarebreadboard-ul este utilizat pentru ​o distribuție duală a alimentării:+Deoarece placa ESP32-CAM nu dispune de o mufă USB integrată ​pentru alimentare ​și programare, s-a optat inițial pentru utilizarea unui modul FTDI. Totuși, dinamica proiectului a impus regândire a distribuției de curent. Servomotorul SG90, configurat să execute mișcări violente și bruște de 120 de grade pentru ​amesteca eficient zarurile în paharul de plastic, generează vârfuri masive de consum de curent (aprox. 1 Amper la fiecare inversare de sens).
  
-    ​Șina de 5V: Primește curent direct ​de la modulul FTDI și alimentează în paralel placa ESP32-CAM, lumina de fundal a ecranului LCD 1602 și servomotorul SG90+Pentru a preveni fenomenul de "​brownout"​ (resetarea plăcii din cauza lipsei de curent), arhitectura breadboard-ului a fost împărțită într-un sistem hibrid cu două circuite ​de 5V izolate, susținute ​de două porturi USB distincte, dar având masa (GND) comună: 
- +- Circuitul Logic (Programatorul 1): Alimentează microcontroller-ul ​ESP32-CAM, ​senzorul camerei și lumina de fundal a ecranului LCD. 
-    - Șina de 3.3V: Este alimentată de la ieșirea stabilizată a plăcii ESP32-CAM și este folosită exclusiv pentru logica butoanelor ​tactile.+- Circuitul de Forță (Programatorul 2): Este dedicat exclusiv alimentării servomotorului SG90. 
 +- Șina de 3.3V: Este alimentată de la ieșirea stabilizată a plăcii ESP32-CAM și este folosită exclusiv pentru logica butoanelor.
  
 Butoanele tactile sunt configurate hardware în modul Pull-down, folosind rezistoare externe de 10kΩ conectate între pinii de semnal și masă (GND). Astfel, în stare de repaus, microcontroller-ul citește un semnal stabil de LOW (0V), iar la apăsarea butonului circuitul se închide pe diagonală, trimițând un semnal de HIGH (3.3V) către pinii IO2 și IO12. Butoanele tactile sunt configurate hardware în modul Pull-down, folosind rezistoare externe de 10kΩ conectate între pinii de semnal și masă (GND). Astfel, în stare de repaus, microcontroller-ul citește un semnal stabil de LOW (0V), iar la apăsarea butonului circuitul se închide pe diagonală, trimițând un semnal de HIGH (3.3V) către pinii IO2 și IO12.
  
-Pentru afișajul interfeței utilizatorului și a scorului, a fost integrat un Ecran LCD 1602 cu modul I2C (PCF8574). Deoarece pinii I2C standard ai ESP32 (21 și 22) sunt rezervați intern de modulul camerei, comunicarea I2C a fost remapată software către pinii liberi IO14 (SCL) și IO15 (SDA).+Pentru afișajul interfeței utilizatorului și a meniurilor, a fost integrat un Ecran LCD cu modul I2C (PCF8574). Deoarece pinii I2C standard ai ESP32 (21 și 22) sunt rezervați intern de modulul camerei, comunicarea I2C a fost remapată software către pinii liberi IO14 (SCL) și IO15 (SDA).
  
-Mecanismul de amestecare a zarurilor este acționat de un Servomotor ​SG90, controlat prin semnal PWM pe pinul IO13. Modulul camerei ​OV3660 ​este conectat direct pe placa de dezvoltare prin interfața sa dedicată (FPC) și este configurat software pentru a servi ca IP web camera, fiind responsabil de capturarea imaginilor cu zarurile stabilizate după încheierea cursei servomotorului, imagini care sunt ulterior ​prelucrate de un script extern Python pentru ​detectarea ​punctajului. +Mecanismul de amestecare a zarurilor este acționat de servomotorul ​SG90, controlat prin semnal PWM pe pinul IO13. Paharul de plastic este atașat mecanic de brațul motorului. Modulul camerei ​OV2640 ​este conectat direct pe placa de dezvoltare prin interfața sa dedicată (FPC) și este orientat către interiorul bazei mecanismului, fiind responsabil de capturarea imaginilor cu zarurile stabilizate după încheierea cursei servomotorului. Imaginile ​sunt ulterior ​transmise prin Wi-Fi către ​un script extern Python ​care folosește algoritmi de Computer Vision ​pentru ​calcularea ​punctajului ​obținut de fiecare jucător
-{{:​pm:​prj2026:​ciprian.popescu0411:​pozazar.jpeg?​600|}} + 
-{{:​pm:​prj2026:​ciprian.popescu0411:​pozazar2.jpeg?​600|}}+{{:​pm:​prj2026:​ciprian.popescu0411:​pozahardwaredces.jpeg?​600|}}
  
 ===== Software Design ===== ===== Software Design =====
  
 +  * Demo joc: https://​www.youtube.com/​watch?​v=VLBmq61MyY0
 +  * github: https://​github.com/​cotigamihnea/​diceandroll
  
-<​note ​tip+Proiectul este structurat într-o arhitectură de tip Client-Server și folosește două medii de dezvoltare ​distincte: PlatformIO ​(C++pentru logica hardware și controlul microcontroller-ului ESP32-CAMșPython pentru procesarea de imagine ​(Computer Visionrulată ​pe PC.
-Descrierea codului aplicaţiei (firmware):​ +
-  * mediu de dezvoltare (if any(e.g. AVR StudioCodeVisionAVR) +
-  * librării ş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 +
-</​note>​+
  
-===== Rezultate Obţinute =====+=== 1. Componenta Microcontroller (PlatformIO / C++) === 
 + 
 +Codul pentru placa ESP32-CAM a fost dezvoltat în PlatformIO, folosind framework-ul Arduino. Acesta rulează un server web HTTP care acceptă comenzi, controlează interfața fizică (butoanele tactile și ecranul LCD 20x4 via I2C) și generează semnale PWM pentru servomotor. De asemenea, implementează o mașină de stări pentru gestionarea celor două moduri de joc (Free Roll și Barbut). 
 + 
 +Functii principale implementate:​ 
 + 
 +^ Functie ^ Rol ^ 
 +| setup() | Inițializează pinii pentru butoane, pornește comunicația I2C pentru ecranul LCD, configurează semnalul PWM pentru servomotor, inițializează camera OV2640, se conectează la rețeaua Wi-Fi și pornește serverul web. | 
 +| loop() | Reprezintă bucla principală a sistemului. Citește non-stop starea butoanelor (incluzând logica de debouncing și detectarea dublu-click-ului pentru funcția de "​Back"​),​ gestionează stările jocului și ascultă cererile HTTP venite de la scriptul Python. | 
 +| afiseazaMeniuPrincipal() | Curăță ecranul LCD și desenează interfața inițială de selecție a modului de joc (1. Free Roll / 2. Barbut). | 
 +| ruleazaScroll(String text) | Implementează o funcție non-blocking (fără delay) care preia un string lung și îl defilează continuu de la dreapta la stânga pe ultimul rând al ecranului LCD (stil marquee). | 
 +| scuturaPahar(int jucator) | Blochează input-urile noi, afișează pe ecran jucătorul curent și trimite o secvență de comenzi rapide și agresive către servomotor pentru a amesteca zarurile fizice. La final, trece sistemul în starea de așteptare procesare AI. | 
 + 
 +Biblioteci folosite: 
 + 
 +^ Biblioteca ^ Rol ^ 
 +| Arduino.h | Funcții de bază ale framework-ului Arduino (GPIO, millis, delay, manipulare string-uri). | 
 +| esp_camera.h | Driver-ul oficial Espressif pentru configurarea și capturarea de cadre (framebuffer) folosind senzorul camerei OV2640. | 
 +| WiFi.h | Gestionarea conexiunii wireless și crearea serverului web local (clasa WiFiServer). | 
 +| Wire.h | Implementarea protocolului de comunicare I2C necesar pentru ecranul LCD. | 
 +| LiquidCrystal_I2C.h | Controlul ecranului LCD 2004 (afișare text, gestionare cursoare, iluminare de fundal). | 
 +| ESP32Servo.h | Generarea de semnale PWM hardware compatibile cu arhitectura ESP32 pentru controlul precis al servomotorului SG90. | 
 + 
 +=== 2. Componenta Inteligență Artificială (Python) === 
 + 
 +Partea de recunoaștere vizuală este scrisă în Python și rulează pe un PC conectat la aceeași rețea Wi-Fi. Scriptul acționează ca un "​creier extern":​ interoghează constant ESP32-ul pentru a afla când s-au aruncat zarurile, descarcă fotografia, numără punctele negre și trimite scorul (sau verdictul meciului) înapoi către plăcuță. 
 + 
 +Functii principale implementate:​ 
 + 
 +^ Functie ^ Rol ^ 
 +| numara_puncte_zaruri() | Reprezintă inima algoritmului AI. Execută un request în gol pentru a goli memoria buffer a camerei (Stale Frame Flush), descarcă o imagine nouă, aplică filtre de preprocesare (Grayscale, Median Blur, Normalize) și folosește Blob Detection pentru a număra punctele zarurilor de pe masă. | 
 +| Bucla Principala (while True) | Logica principală de arbitraj. Interoghează la fiecare 0.5 secunde ruta "/​status"​ a ESP32-ului. În funcție de modul de joc detectat (Free Roll sau Barbut), alocă punctele jucătorilor,​ decide câștigătorul în meciurile de tip 1vs1 și formulează request-uri HTTP pe ruta "/​update"​ pentru a debloca ecranul plăcuței cu noile date. | 
 + 
 +Biblioteci folosite: 
 + 
 +^ Biblioteca ^ Rol ^ 
 +| cv2 (OpenCV) | Bibliotecă avansată de Computer Vision. Folosită pentru transformări de imagine, eliminarea zgomotului, îmbunătățirea contrastului și detectarea formelor circulare (SimpleBlobDetector). | 
 +| numpy | Manipularea rapidă a array-urilor de date necesară pentru a converti fluxul de biți descărcat prin HTTP într-o matrice de pixeli procesabilă de OpenCV. | 
 +| requests | Realizarea de cereri HTTP (GET) către serverul ESP32 pentru obținerea statusului, descărcarea fotografiilor JPEG și trimiterea scorurilor. | 
 +| time | Gestionarea pauzelor (sleep) pentru a permite zarurilor fizice să se stabilizeze înainte de capturarea imaginii și pentru a preveni supraîncărcarea serverului Wi-Fi cu cereri. | 
 +===== Rezultate Obținute ===== 
 + 
 +Sistemul propus îndeplinește obiectivul principal de a automatiza complet aruncarea și arbitrarea unui joc cu zaruri, integrând cu succes acționarea mecanică, comunicarea IoT și viziunea artificială (Computer Vision). 
 + 
 +Rezultatele principale:​ 
 + 
 +    * problema resetărilor bruște (brownouts) ale plăcuței ESP32-CAM a fost eliminată complet prin proiectarea unei arhitecturi hardware cu alimentare duală (izolarea circuitului de forță al motorului de cel logic). 
 + 
 +    * algoritmul de Blob Detection din Python recunoaște zarurile cu o precizie ridicată, fiind imun la zgomot vizual (umbre, praf) datorită filtrelor de preprocesare (Blur, Normalizare) și calibrării stricte a parametrilor de formă și arie. 
 + 
 +    * problema memoriei tampon hardware a camerei OV2640 (livrarea unui "stale frame" din trecut) a fost rezolvată elegant printr-o tehnică software de golire a buffer-ului înainte de captura finală. 
 + 
 +    * interfața LCD 20x4 este interactivă și curată, oferind navigare prin dublu-click,​ animații de text defilant (marquee) și actualizări în timp real ale scorului. 
 + 
 +    * logica de arbitraj funcționează perfect în ambele moduri de joc (Free Roll și Barbut), gestionând automat rândul jucătorilor și decizia finală fără intervenție umană. 
 + 
 +Limitări așteptate:​ 
 + 
 +    * sensibilitate la iluminarea ambientală extremă; deși algoritmul normalizează contrastul, o schimbare drastică a luminii din cameră poate necesita recalibrarea camerei sau a scriptului Python. 
 + 
 +    * latență inerentă a fluxului de joc (aprox. 4-5 secunde pe aruncare) cauzată de timpii necesari pentru scuturarea mecanică completă, stabilizarea fizică a zarurilor și transferul imaginii prin protocol HTTP.
  
-<note tip> 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. 
-</​note>​ 
  
 ===== Concluzii ===== ===== Concluzii =====
  
-===== Download =====+Acest proiect demonstrează o soluție practică și creativă de îmbinare a sistemelor integrate (embedded) cu algoritmii de analiză a imaginilor rulați pe o arhitectură externă. Delegarea sarcinii complexe de procesare video către un PC (Python/​OpenCV) permite sistemului ESP32-CAM să ruleze rapid și fără blocaje, ocupându-se exclusiv de sarcinile de timp real: achiziția datelor, controlul motorului, citirea butoanelor și actualizarea display-ului.
  
-<note warning>​ +Dezvoltarea interfeței duale hardware-software a transformat un simplu cititor de puncte într-o consolă interactivă de barbutrezultând ​un sistem robust care poate constitui oricând baza pentru automatizarea altor board games sau proiecte ​de robotică vizuală.
-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**. 
-</​note>​ 
  
-===== Jurnal ===== 
  
-<note tip> 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. 
-</​note>​ 
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +=== Resurse Hardware === 
-Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** ​ş**Resurse Hardware**. + 
-</note>+    * ESP32-CAM & AI-Thinker: Documentația oficială și pinout-ul modulului ESP32-CAM pentru maparea corectă a conexiunilor și a alimentării duale. (https://​docs.ai-thinker.com/​en/​esp32-cam) 
 + 
 +    ​Modul I2C PCF8574 (LCD): Datasheet-ul expander-ului I/O pentru a înțelege adresarea (ex. 0x27) și remaparea pinilor SDA/SCL pe microcontroller. 
 + 
 +=== Resurse Software ​=== 
 + 
 +Cod Arduino 
 + 
 +    ​Arduino Core for ESP32: Referința oficială Espressif pentru funcțiile de bază (WiFi, WebServer, GPIO, Timers). (https://​docs.espressif.com/​projects/​arduino-esp32/​) 
 + 
 +    ​Biblioteca LiquidCrystal_I2C:​ Documentația bibliotecii folosite pentru afișarea textului static șimplementarea funcției custom de defilare (marquee) pe LCD-ul 2004(https://​github.com/​johnrickman/​LiquidCrystal_I2C) 
 + 
 +Cod Python
  
 +    * OpenCV (Python): Documentația modulului cv2, în mod specific secțiunea despre preprocesarea imaginilor (cv2.medianBlur,​ cv2.normalize) și configurarea algoritmului cv2.SimpleBlobDetector_Params pentru recunoașterea punctelor zarurilor. (https://​docs.opencv.org/​)
  
 +    * Python Requests: Documentația pentru manipularea cererilor HTTP (GET) și gestionarea timeout-urilor în comunicarea Client-Server. (https://​requests.readthedocs.io/​)
pm/prj2026/ciprian.popescu0411/dice.1778944765.txt.gz · Last modified: 2026/05/16 18:19 by andrei.cotiga
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