1 / 44

EE 478 Final Project

EE 478 Final Project. 49-key MIDI keyboard. Jonathan Feucht, Whitney James. Introduction. 49-key touch insensitive keyboard Utilizes the ATSAM2195 Low-power Single Chip Synthesizer with Effects Adjustable settings using an LCD 16×2 character Crystalfontz CFA-533 display. Introduction.

kelsie-love
Download Presentation

EE 478 Final Project

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. EE 478 Final Project 49-key MIDI keyboard Jonathan Feucht, Whitney James

  2. Introduction • 49-key touch insensitive keyboard • Utilizes the ATSAM2195 Low-power Single Chip Synthesizer with Effects • Adjustable settings using an LCD 16×2 character Crystalfontz CFA-533 display

  3. Introduction Topics covered in this presentation: • Project description • Design specification • Hardware / Software implementation • Design procedure • Challenges encountered • Design improvement ideas

  4. Design requirements • Low key latency (< 800 µs) • USB or battery powered (< 2.5 Watts total) • Adjustable volume, reverb, chorus levels • Adjustable reverb / chorus types • Pitch-bend mode • Transposition • Selection of 100+ instrument sounds • 3.3 V 150 mA supply for keyboard controller / Atmel synthesizer chip • 5 V supply for LCD screen, audio amp, and speakers.

  5. Design requirements • Communication protocols • Parallel communication with ATSAM2195 chip • I²C communication between Keyboard controller and LCD driver • LCD menu master • Keyboard controller slave • RS-232 communication with LCD screen

  6. Hardware implementation

  7. Hardware implementation • Crystalfontz CFA-533 LCD • 16×2 character • Uses 19200 RS-232 • 6 navigation buttons

  8. Hardware implementation • User front end - Seeeduino • 16 MHz ATMEGA328P • Controls LCD display • EEPROM used for saving settings after powerdown • I2C Master

  9. Hardware implementation • ATSAM2195 Atmel synthesizer chip • QFN-44 package with ground plane • Measures 0.7×0.7×0.2 cm3

  10. Hardware implementation • Operates 3.3 V supply • 2.2 Vpp analog output signal • Configured in parallel implementation

  11. Hardware implementation • Amplifier stage for driving on-board speakers:

  12. Software implementation • Crystalfontz CFA533 driver • Data sent out and received in “packets” • Command • Data length • Data • CRC checksum • For every command sent out, return packet is sent back

  13. Software implementation • Buttons used for navigating tree-style menu • Left: Follow to parent menu • Right: Follow to child menu • Up: Navigate up the menu list • Down: Navigate down the menu list • Okay: If selectable, execute command or select setting; otherwise, navigate to child menu • Cancel: Go to main menu

  14. Software implementation • Button polling • Command is issued to display to return states of buttons • Return packet is 3 bytes, indicating: • Buttons pressed down since last poll • Buttons released since last poll • Buttons currently being held down • Data ended up being NOISY • Filtered data by debouncing keys • Adjusted for smooth menu navigation

  15. Software implementation

  16. Software implementation • Tree menu • Implemented as tree of menu nodes • Used for modifying all keyboard settings • Each menu node consists of a complex data structure • Each node has pointers to parent node, and an array of pointers to children nodes

  17. Menu node data structure:

  18. Software implementation

  19. Software implementation • I2C Arduino / Pic communication • Synchronization on boot-up • Arduino sends settings to PIC using 2 bytes of data • After sending setting, Pic sends acknowledge code back

  20. Design procedure

  21. Design procedure

  22. Design procedure

  23. Design procedure

  24. Design procedure

  25. Design procedure

  26. Design procedure

  27. Design procedure

  28. Design procedure

  29. Design procedure

  30. Design procedure

  31. Design procedure

  32. Design procedure

  33. Design procedure

  34. Design procedure

  35. Design procedure

  36. Design procedure

  37. Design procedure

  38. Results

  39. Results • Measurements • Key polling: Max 250 µs • I2C setting transfer: 179 ms • Power consumption: 1.2 Watts • Keyboard controller / synth chip: 0.216 Watts • Speakers / audio amplifier: 0.200 Watts • LCD display: 0.505 Watts • Seeeduino board: 0.279 Watts

  40. Challenges encountered • Reflow soldering for QFN-44 package • Procedure • Testing • 3.3 V vs. 5 V • Using program memory for menu drivers • ATSAM2195 initialization • LCD driver communication • Frustrations with Arduino environment • No μs delays • Arduino environment I²C drivers would not trigger interrupts on the PIC during reads

  41. Project status • Working as is • Planning to add more features; perhaps include second instrument package, enable drum patch, or something else.

  42. Ideas for improvement • More keys!!! • More features • Free up pins on the keyboard controller • Touch-sensitive key action • Incorporate everything on only one microcontroller

  43. Conclusion • We successfully implemented a prototype for a keyboard instrument for midgets • Still has room for more features and creativity • Our project is way cooler than Torin, Daniel, and Russell’s project

  44. DEMO

More Related