Voice Controlled Chess Engine (VCCE)

Introducere

Am decis să îmi urmăresc pasiunea pentru șah și în proiectul la PM, unde intenționez să construiesc o entitate capabilă să joace șah cu utilizatorul la un nivel competitiv. Consider că amatorilor de șah (și nu numai) li s-ar părea cel puțin interesantă ideea de o unealtă portabilă pentru antrenament.

Descriere generală

Pentru a elimina limita impusă de puterea de procesare a microprocesorului, comenzile vocale sunt convertite în text de un dispozitiv mobil capabil de text-to-speech și de transmisie Bluetooth. Telefonul trimite mutarea în limbaj natural microcontrolerului, iar acesta o convertește în reprezentarea folosită de protocolul motorului de șah. Microprocesorul va rula un motor de șah simplu, proiectat pentru dispozitive încorporate. Tabla de șah va fi afișată pe un ecran LCD, iar printr-un dispozitiv cu interfață audio 3.5mm se vor anunța mutările efectuate de motor. Cardul SD are rolul de a furniza fișierele audio necesare.


 Diagrama Bloc

Hardware Design

Listă de piese

  • Modul Bluetooth HC-05
  • Modul LCD ST7735R

Schemă Electrică

 Schemă Electrică

Software Design

Surse și funcții implementate

În fișierul sursă main.c am implementat motorul de șah, interfațarea cu acesta și player-ul audio. Motorul de șah și interfața folosită sunt inspirate din versiunea 1.6 a programului micro-Max realizat de H. G. Muller. Player-ul audio este similar celui folosit în cadrul laboratorului, fiind bazat pe întreruperi pentru a reda prin PWM fișiere în format WAV ce conțin voice prompt-uri. Pentru a transmite comenzi vocale microprocesorului am instalat pe telefon aplicația Arduino Bluetooth Voice Controller ce are rolul dublu de a folosi Google Voice pentru a converti comanda în format text și de a o transmite modulului Bluetooth conectat la microprocesor. În fișierul sursă usart.c am implementat comunicația serială cu modului Bluetooth și convertirea șirului recepționat în formatul acceptat de motorul de șah. În fișierul sursă ST7735R_TFT.c, preluat din resursele laboratorului, am realizat comunicația cu controller-ul LCD-ului, efectuând modificări pentru a optimiza reprezentarea tablei de șah. Aceasta este desenată sub formă de caractere ce reprezintă inițiala denumirii piesei în limba engleză, unul din seturile de piese fiind scris cu majusculă pentru a le diferenția. În fișierul sursă pff.c se găsesc funcțiile oferite de modului Petit FAT File System ce sunt folosite pentru interfațarea cu cardul SD, iar în fișierul sursă sd.c se găsesc primitivele necesare acestui modului pentru comunicarea cu disk-ul. În fișierul sursă spi.c am efectuat modificări pentru a suporta atât cardul SD, cât și ecranul LCD.

Rezultate obținute

Pe lângă faptul că acest proiect a fost un succes complet, am reușit să adaug și funcționalități extra, în sensul că inițial nu mi-am propus să implementez și un sistem de feedback bazat pe audio. Astfel, motorul de șah își anunță mutarea făcută, dar și atenționează utilizatorul în cazul în care a propus o mutare ilegală. Se poate ca un utilizator să joace singur, cu un adversar uman sau cu motorul de șah. De asemenea, se poate ca motorul de șah să joace împotriva sa. La orice moment de timp al unui joc motorul de șah poate interveni să ajute cu o mutare (face mutarea pentru jucătorul curent).


 Rezultat

Concluzii

Pot conclude prin a afirma că am dobândit multe cunoștințe în urma realizării acestui proiect, atât hardware, cât și software, dar și abilități practice. Cel mai important lucru a fost că mi-am atins țelul și m-am și distrat făcând-o.

Download

Resurse

Resurse Hardware

Resurse Software

pm/prj2019/abirlica/8568.txt · Last modified: 2021/04/14 17:07 (external edit)
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