Scott Frazier-CpE Ryan Rivas-EE Louis Mason-CpE Steffen Sutton-EE,CpE Group 33 Scott Frazier-CpE Ryan Rivas-EE Louis Mason-CpE Steffen Sutton-EE,CpE
What is CyberChess? CyberChess is an autonomous, speech- controlled chess board designed to allow two players to enjoy an aesthetically appealing game of chess entirely through spoken commands.
Motivations Interactive Experience PCB Design Speech Recognition Enjoyment Graduation
Goals Chess pieces appear to move by themselves Speech controlled Chess game rules engine Audio output system LED Matrix Chess clock
Requirements The game will... 1. ...provide game feedback via audio and lighting 2. ...allow any move to be completed autonomously 3. ...be able to set up the chess board automatically 4. ...display possible moves (via LEDs) if a user asks for them 5. ...display a visual countdown for modes with timers 6. ...have a specific startup sequence for lights and audio 7. ...have a specific shutdown sequence 8. ...have a flat see-through surface so LEDs can sit underneath the squares.
Specifications Complete any move in: 10 Seconds Set up board from start in: 5 minutes Save and load: 1 game Weigh no more than: 25 lbs Sounds audible from at least: 2 feet No larger than: 4 x 3 feet Automatically turn off after (prolonged inactivity)
How to Move Chess Pieces? Individually motorized pieces controlled by RF signals (Requires 32 separate electromechanical systems) Mechanical arm above board (Chess pieces do not appear to move on their own) XY-plotter beneath the board, with magnet to grab chess pieces (Move execution time may be fairly slow, but cost and workload are reasonable)
Requirements for the XY-Plotter |____________________________| 12 inches 2 stepper motors (left) 1 servo motor (right) Linear motion kit (vex racks, sprockets, sliders) - Wood and screws for structure - Electronics/software to control motors
Additional Systems LED Matrix - An 8x8 RGB LED array (one for each square) used for visual effects. Also, the LEDs will light up to indicate possible moves for any piece specified by the user. Chess Timer - Players can use this optional feature to play timed chess games in a few different styles. Two 4-digit 7-segment displays (one for each player to see) will be used to show time.
i3 Mainframe Will be used to interface with the final PCB via USB-to-Serial connection. The CyberChess audio system will be directly controlled from the mainframe. Speakers Microphone All custom software engines will run on the mainframe
General Hardware
Microcontroller MCU ATMega2560 ATMega1280 ATMega328 Flash (KBytes) Pin Count 100 32 Max Operating Frequency (MHz) 16 20 MAX I/O Pins 86 23
Motors Stepper Motor ROB-10846 Pololu Adafruit Steps/Rev 400 200 Supply Voltage 3V 3.8V 12V Servo Motor ROB-09064 HS-81 Sec/60Deg 0.16 0.11 Supply Voltage 6V 4.8V
Motor Driver Stepper Motor Driver DRV8834 A4988 ROB-10267 Microstepping 32 16 8 Supply Voltage 3.3V 5V 8V Price Sampled $9.95 $14.95
LED Matrix
LEDs Multiplexed LED Array (Darlington Array) 24 pins from MCU MCU provides current through rows LED driver sinks in current through columns and adjust color using BC
LED Driver LED Driver TLC5952 TLC5940 AS1112 # of Channels 24 16 Data transfer rate 35 MHz 30 MHz Channel drive 35 mA 120 mA 100 mA Supply Voltage 3 - 5 V 3 - 5.5 V Price Sampled $5.95 $1.49
Chess Clock Display
Chess Clock Multiplexing The ATMega 2560 activates the transistors in order to allow current through certain digits. The BCD to 7-segment decoder outputs the the connections corresponding to the given BCD numbers (0-F [hex]). By turning on and off transistors, the four digits can be multiplexed such that each digit is active 1/4 of the time.
USB Controller ATMega16U2 FTDI Pins 44 28 Interfaces UART, SPI UART EEPROM 512B 1024 bits
Microphone Minimum Frequency Response: 100 Hz Maximum Frequency Response: 5 kHz Microphone Sensitivity: -54 dB
PCB Schematic
Development Board Arduino Mega 2560 Arduino Uno Operating Voltage 5V Digital I/O Pins 54 14 Analog Input Pins 16 6 Flash Memory (KB) 256 32 SRAM (KB) 8 2 EEPROM (KB) 4 1 Clock Speed (MHz)
Arduino Mega 2560
General Software
Development Tools Arduino IDE Basic error checking Simple compilation and uploading Text Editors VIM Notepad Simple, clean, and straightforward
Board Representation Array of 8 rows Each row represented by one 32-bit int Each nybble corresponds to a spot Board acted on with bit-twiddling: value: (board[rank] >> (file << 2)) & 0xF unset: board[rank] &= ~(0xF << (file << 2)) set: board[rank] |= (newValue << (file << 2)) All necessary interaction can be composed from these atomic functions
Chess Engine Move execution: Check detection: Iterate through each spot on board Attempt move from current spot to each King
Chess Engine Data Structures
BMSE (Board, Movement, Sound) Maintain synchronous gameplay experience Control motors, lights, and sounds Execute movements along square edges Potentially optimize to move diagonally through empty spaces Utilize Arduino's simple pin API
BMSE (Board, Sound, Movement) Sounds startup.mp3, shutdown.mp3 newGame.mp3, gameOver.mp3 gameSaved.mp3 gameLoad{ing,ed}.mp3 pauseGamePrompt.mp3 endGamePrompt.mp3 resignPrompt.mp3
Speech Recognition Audio waveforms split into utterances and paired with the closest match Utterances audio chunks between pauses
Speech Recognition Options PocketSphinx Android Microsoft Speech API Coding Language C Java Visual Basic/C# Language Support English Chinese French Spanish German Russian New languages always being added Simplified Chinese Japanese
How PocketSphinx Works Acoustic Model Acoustic properties of each senone Specific to Language (English) Language Model Used to restrict word search Created with CMUSphinx Toolkit Phonetic Dictionary Mapping from words to phones
Speech Recognition Engine Makes use of PocketSphinx Library Converts spoken commands into text Parsed and sent to appropriate program
SRE Commands “[Piece Location] to [New Location]” Action “[Piece Location] to [New Location]” Executes requested move. “[Piece Location] possible moves” Lights up possible moves. “Pause Game” Requests opponent's confirmation. “End Game” “New Game” "Draw" “Resign” Requests current player's confirmation.
SRE Flow chart No *Checked with Chess/BMSE Engine Yes
Bootloader ARDUINO MEGA to be used AVR ISP (In- System Programmer) Connected to AVR Using SCK, MISO, MOSI, RESET, GND, VCC Serial Clock Master In Slave Out Master Out Slave In
Power Supply Power Supply Voltage Range: Servo motor 4.8 - 6V Stepper motor 3V LED driver 3 to 5.5V Motor driver 2.5 to 10.8V ATmega2560 4.5 to 5.5V
Enclosure 4' x 3' x 1' Hinged side for hardware access
Administrative Content Current Purchases QTY Description Part Number Unit Price Total Price 1 ATmega2560 ATMEGA2560-16CU Sampled 2 Bipolar Stepper Motor ROB-10846 $16.95 $33.90 Dual Bridge Stepper Driver DRV8834 Servo Motor ROB-09064 $12.95 24 channel LED driver TLC5952 Gear Kit 276-2169 $12.99 3 (2 pack) Linear Slides 276-1096 $14.95 $44.85 (16 pack) Vex rack gear 276-1957 $19.99 $39.98 74 RGB LED's COM-10866 $0.86 $63.64 7 Segment LCD Display FE0202 LCD Panel Driver ICM7211AMIPLZ $1.33 $2.66 Miscellaneous (Wood, screws, etc. ) $20.00 Money Spent to Date: $208.66
Administrative Content Items Left 1 Enclosure $150.00 Arduino Mega 2560 $59.99 PCB $30.00 Remaining Cost: $239.99 Expected Total: $448.65
Workload PCB Chess Engine Enclosure BMSE SRE Movement System LED Array/Chess Timer Louis X Ryan Steffen Scott
Administrative Content
Problems and Concerns ARM to ARDUINO Movement system fast enough? Magnetic pulls and buffer space
Questions?