This shows you the differences between two versions of the page.
pm:prj2025:iotelea:alexandra.lache0802 [2025/05/11 09:34] alexandra.lache0802 [Descriere generală] |
pm:prj2025:iotelea:alexandra.lache0802 [2025/05/26 21:55] (current) alexandra.lache0802 [Hardware Design] |
||
---|---|---|---|
Line 9: | Line 9: | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | {{ :pm:prj2025:iotelea:smartchessboard_diagrama_lache_alexandra.png?nolink&600 |}} | + | * Circuitul propus are la bază un microcontroler ESP32, care acționează ca unitate centrală de control și coordonează interacțiunea dintre toate componentele sistemului. |
+ | * Tabla de șah este acoperită de o matrice de switch-uri reed, câte unul pentru fiecare căsuță, pentru a detecta poziția pieselor. Pentru a economisi pini de pe ESP32, această matrice este controlată cu ajutorul unui registru de deplasare 74HC595. | ||
+ | * ESP32 interacționează cu o bandă adresabilă de led-uri, utilizate pentru a evidenția mutările valide ale pieselor selectate. | ||
+ | * Se utilizează două butoane pentru a schimba jucătorul activ. | ||
+ | * În plus, este folosit un display pentru a afișa mesaje relevante(timpul rămas, atenționare în cazul unei erori). | ||
- | <note tip> | ||
- | O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează. | ||
- | Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html | + | {{ :pm:prj2025:iotelea:smartchessboard_diagrama_lache_alexandra.png?nolink&500 |}} |
- | </note> | + | |
===== Hardware Design ===== | ===== Hardware Design ===== | ||
**Componente necesare**: | **Componente necesare**: | ||
- | * microcontroler ESP32 | + | * [[https://www.optimusdigital.ro/ro/placi-cu-bluetooth/4371-placa-de-dezvoltare-esp32-cu-wifi-i-bluetooth-42.html?search_query=esp32&results=28]|microcontroler ESP32]] |
* 64 x [[https://www.optimusdigital.ro/ro/butoane-i-comutatoare/3899-comutator-magnetic-reed-normal-deschis-2-x-14-mm.html|switch-uri reed magnetic]] | * 64 x [[https://www.optimusdigital.ro/ro/butoane-i-comutatoare/3899-comutator-magnetic-reed-normal-deschis-2-x-14-mm.html|switch-uri reed magnetic]] | ||
* [[https://www.optimusdigital.ro/ro/optoelectronice-lcd-uri/2894-lcd-cu-interfata-i2c-si-backlight-albastru.html|LCD 1602 cu Interfata I2C si Backlight Albastru]] | * [[https://www.optimusdigital.ro/ro/optoelectronice-lcd-uri/2894-lcd-cu-interfata-i2c-si-backlight-albastru.html|LCD 1602 cu Interfata I2C si Backlight Albastru]] | ||
* 11 x [[https://sigmanortec.ro/Banda-LED-adresabila-RGB-WS2812-60led-m-IP67-10cm-p166125661|Banda programabila led-uri RGB]] | * 11 x [[https://sigmanortec.ro/Banda-LED-adresabila-RGB-WS2812-60led-m-IP67-10cm-p166125661|Banda programabila led-uri RGB]] | ||
- | * 1 x 74HC595 | + | * 1 x 74HC595N |
* 2 x [[https://www.optimusdigital.ro/ro/butoane-i-comutatoare/1114-buton-cu-capac-rotund-rou.html|Buton]] | * 2 x [[https://www.optimusdigital.ro/ro/butoane-i-comutatoare/1114-buton-cu-capac-rotund-rou.html|Buton]] | ||
- | * Rezistențe, 1 x condensator(?), fire | + | * Rezistențe, condensatoare, fire |
- | * (Baterie externa?) | + | * Sursă de alimentare - TBA |
+ | |||
+ | **Diagramă circuit**: | ||
+ | |||
+ | {{ :pm:prj2025:iotelea:circuit_image_2_.png?nolink&700 |}} | ||
+ | |||
+ | **Explicare cablaj** | ||
+ | * 74HC595N | ||
+ | |||
+ | ^ Pin ^ Legătură ESP32 ^ Notă | | ||
+ | | DS | GPIO17 | Date (serial input) | | ||
+ | | SHCP | GPIO18 | Ceas (shift clock) | | ||
+ | | STCP | GPIO19 | Latch (stochează ieșirea) | | ||
+ | |||
+ | Ieșirile O0-O7 sunt conectate la matricea de switch-uri, fiecare ieșire corespunzând unui rând. | ||
+ | |||
+ | * Bandă led | ||
+ | |||
+ | ^ Pin ^ Legătură ESP32 ^ Notă | | ||
+ | | DIN | GPIO15 | Semnal date LED (neopixel) | | ||
+ | |||
+ | Banda led are nevoie de alimentare VCC de 5V. | ||
+ | |||
+ | * LCD I2C | ||
+ | |||
+ | ^ Pin ^ Legătură ESP32 ^ Notă | | ||
+ | | SDA | GPIO21 | I2C - date | | ||
+ | | SCL | GPIO22 | I2C - ceas | | ||
+ | |||
+ | * Matrice switch-uri reed | ||
+ | |||
+ | ^ Pin ^ Legătură ESP32 ^ Notă | | ||
+ | | COL0 | GPIO34 | doar input | | ||
+ | | COL1 | GPIO35 | doar input | | ||
+ | | COL2 | GPIO32 | | | ||
+ | | COL3 | GPIO33 | | | ||
+ | | COL4 | GPIO25 | | | ||
+ | | COL5 | GPIO26 | | | ||
+ | | COL6 | GPIO27 | | | ||
+ | | COL7 | GPIO14 | | | ||
+ | |||
+ | |||
+ | * Butoane jucători | ||
+ | |||
+ | ^ Pin ^ Legătură ESP32 ^ Notă | | ||
+ | | WHITE_BTN | GPIO13 | Întrerupere + rezistență de pull-down | | ||
+ | | BLACK_BTN | GPIO16 | Întrerupere + rezistență de pull-down | | ||
+ | |||
+ | |||
+ | **Realizare tablă de șah** | ||
+ | |||
+ | * [[https://drive.google.com/file/d/1VPy6rCzRrRd5N0nA_zXQbXTYwYyt8QC6/view?usp=sharing|Bandă led pe suportul inferior al tablei]] | ||
+ | * [[https://drive.google.com/file/d/1a6xs2k5m4d7LkpFWmB1pGvC11KmW6UEW/view?usp=sharing| Testare funcționalitate 74HC595N]] | ||
+ | * [[https://drive.google.com/file/d/1Qw_CxFBaAX7rj3JhEk1cNrkVJc_pHWwu/view?usp=sharing|Suport reed-uri]] | ||
- | {{ :pm:prj2025:iotelea:circuit_image_alexandra_lache.png?nolink&700 |}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | |||
+ | * mediu de dezvoltare: Arduino IDE | ||
+ | * librării : Adafruit_NeoPixel.h pentru programarea bandei led adresabile, LiquidCrystal_I2C.h și Wire.h pentru LCD | ||
+ | * noțiuni de laborator folosite: I2C, timer, întreruperi | ||
+ | * github repo: https://github.com/alex2004-l/smart-chessboard | ||
+ | |||
+ | **Implementare** | ||
+ | |||
+ | * Aplicația este structurată ca o mașină de stări: BEGINNING, READY, PICK, MOVE, CAPTURE, END; | ||
+ | |||
+ | * Pentru a urmări pozițiile pieselor pe tablă se folosesc doi vectori: board și previous_board. | ||
+ | * press_button_white() și press_button_black() sunt ISR-uri (Interrupt Service Routines) care schimbă starea jocului când jucătorul apasă butonul. | ||
+ | |||
+ | * Detectarea mutărilor pieselor prin comparația board vs previous_board | ||
+ | |||
+ | * Validarea mutărilor pe baza tipului de piesă (folosind funcțiile din moves.h) | ||
+ | |||
+ | * Implementarea unui sistem de cronometru (folosind hardware timer) | ||
+ | |||
+ | * Detectarea capturilor și actualizarea stării jocului (CAPTURE, END) | ||
+ | |||
+ | * Afișarea mutărilor și timpului pe LCD | ||
+ | |||
+ | * Controlul LED-urilor în funcție de mutările făcute sau starea curentă | ||
+ | |||
Line 64: | Line 142: | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | |||
- | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | ||
- | </note> | ||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> |