MEAM.Design - MEAM 410/510 - L4 (Orchestra)
Congratulations! You've just been accepted into the highly prestigious MEAM410/510 mechatronic orchestra! To participate, you must design and construct a battery-powered, GF1004-based instrument capable of playing a tone for a specified duration when requested via an mRF wireless command.
Instrument Selection
If you would like to select the "instrument" (general range of frequencies) that you are going to play, send an email to medesign@seas.upenn.edu entitled 510-L4-instrument containing an ordered list of your top three choices from: Bass (60-110 Hz), Baritone (110-180 Hz), Tenor (180-300 Hz), Alto (300-440 Hz), Mezzo-Soprano (440-650 Hz), and Soprano (650-950 Hz). This email must be received before 9:00 p.m. on Tuesday, October 11th, after which time you will otherwise be randomly assigned. We will work to balance the orchestra and inform you of your actual instrument shortly thereafter.
Part A - Driver Design
1 - Unipolar Drive: Given a unipolar (GND and V+) benchtop power supply and a low-current function generator output, build a circuit to drive your speaker. Experiment with various input waveforms and listen for the changes in the output sound. Because the unipolar drive will have a non-zero DC component (which will heat up the speaker coil), do not excite the speaker (especially a higher volumes) for more than a few seconds. Include a schematic of your driver design and briefly describe the results of your experiments with the various waveforms.
2 - Bipolar Drive: Redesign your drive circuitry to use a bipolar (V-, GND, V+) power source. Experiment with various AC drive signals (zero DC component) from the function generator. Include a schematic of your driver design and briefly describe the results of your experiments, including a comparison between the unipolar and bipolar modes.
3 - Microcontroller Function Generation: Design a system and write the necessary M2 code to produce a reasonable sinusoidal AC output over your instrument's frequency range. Describe your methodology, and submit a copy of your (obviously well commented) code.
Due Friday!
Part B: Exploring Wireless Communications
1 - Read through the instructions for using the mBUS peripheral interface and the mRF wireless module.
2 - Find a partner, and improve your understanding of the wireless communication system. Program each microcontroller to send a single-byte packet to the other when an external button is pressed. When the microcontroller receives a packet, it should flash the red onboard LED the number of times specified by the value of the packet. To avoid collisions, you should use the addresses described under Address and Instrument Table below.
Part C: Play Music!
Configure your system to listen for incoming packets from the conductor. These packets will consist of three bytes as follows:
char packet[3] = {0xFL, 0xFH, 0xDD};
Where the first two bytes (0xFL
& 0xFH
) are a split 16-bit value corresponding to the tone frequency in deciHertz (1/10 of a Hertz), and the last byte (0xDD
) corresponds to the sound duration in centiseconds (1/100 of a second). Once received, your system should immediately play the specified tone for the desired duration.
Note - Output frequency will be found using 0xFL and 0xFH together. If you find your instrument is slightly out-of-tune during testing, the class slides on pointers might guide you toward a solution.
Part D: Design and Build Your Instrument
Your instrument, which you will bring to class for demonstration, must:
- Be battery powered.
- Contain at least one easily-visible LED which will illuminate when the tone is being played.
- Include a knob or slider to control the output volume.
- Be contained within an MDF or acrylic body.
(Creative enclosures using other materials are considered on a case-by-case basis. Ask on Piazza!) - Be labeled with your name, wireless ID, and instrument type (Bass, Baritone, etc.).
Submission
1 - Leave your instrument in the lab after class.
2 - Send your well-commented and human-readable source code to medesign@seas.upenn.edu with subject "510-L4code".
Address Table
You will have a unique wireless address (hex value 0xXX) on RF Channel 1, as listed in the table below.
Name | Wireless ID (XX) | Instrument |
Arya, Prashant | 0x 36 | bass |
Cai, Myles | 0x 37 | bass |
Cook, Liam N | 0x 38 | bass |
Freifelder, David L | 0x 39 | bass |
Hernandez, David E | 0x 3A | bass |
Huang, Yingfeng | 0x 3B | bass |
Kneier, Nicholas Ewald | 0x 3C | bass |
Li, Guanrui | 0x 3D | bass |
Ling, Wudao | 0x 3E | bass |
Liu, Zeshen | 0x 3F | bass |
Lu, Kevin | 0x 40 | bass |
Nam, Brian S | 0x 41 | bass |
Patel, Raj Nanalal | 0x 42 | bass |
Qian, Lei | 0x 43 | bass |
Sanna, Kellen J | 0x 44 | bass |
Trivelis, Nicholas Dimitri | 0x 45 | bass |
Zahra, Ahmed A | 0x 46 | bass |
Zhou, Xuanyu | 0x 47 | bass |
Bensing, Zachary Sander | 0x 23 | baritone |
Chen, Gongyao | 0x 24 | baritone |
Cooley, Michael Renee | 0x 25 | baritone |
Gaardsmoe, Samuel A | 0x 26 | baritone |
Herlihy, Alexander S | 0x 27 | baritone |
Jafferjee, Adnan | 0x 28 | baritone |
Ko, Hung-Tang | 0x 29 | baritone |
Kramer, Benjamin T | 0x 2A | baritone |
Lu, Yabin | 0x 2B | baritone |
Narula, Maanav | 0x 2C | baritone |
Oslin, Matthew A | 0x 2D | baritone |
Paul, Sandeep | 0x 2E | baritone |
Shamsah, Abdulaziz | 0x 2F | baritone |
Talbott, Lincoln R | 0x 30 | baritone |
Weintraub, Samuel P | 0x 31 | baritone |
Wu, Yixin | 0x 32 | baritone |
Xu, Zi Liang | 0x 33 | baritone |
Zembroski, Kevin J | 0x 34 | baritone |
Bernstein, Benjamin V | 0x 6F | tenor |
Borja, Gabriel B | 0x 70 | tenor |
Chase, Elyse D | 0x 71 | tenor |
Collins, Spencer P | 0x 72 | tenor |
Dimwamwa, Elaida D | 0x 73 | tenor |
Galginaitis, Jason Gordon | 0x 74 | tenor |
Harris, Daniel C | 0x 75 | tenor |
Karunanithi, Divya Lakshmi | 0x 76 | tenor |
Krishnan, Nikhil | 0x 77 | tenor |
Maheshwari, Jalaj Rahul | 0x 78 | tenor |
Majithia, Sumil Praful | 0x 79 | tenor |
Needhammer, Craig James | 0x 7A | tenor |
Pritt, Marshall E | 0x 7B | tenor |
Sannino, James | 0x 7C | tenor |
Shin, Young J | 0x 7D | tenor |
Wang, Jiawei | 0x 7E | tenor |
Wang, Shichao | 0x 7F | tenor |
Zou, En Hui | 0x 80 | tenor |
Brink, Evan W | 0x 10 | alto |
Dorward, Brian | 0x 11 | alto |
Ginsberg, Reed E | 0x 12 | alto |
Ji, Cheng | 0x 13 | alto |
Kaushik, Anirudh Venkatesh | 0x 14 | alto |
Lee, Giyun | 0x 15 | alto |
Lee, Seungha | 0x 16 | alto |
Luong, Kim Nguyen | 0x 17 | alto |
Marcus, Alexandra J | 0x 18 | alto |
Oquendo, Yousi A | 0x 19 | alto |
Puranik, Shreyas Shriram | 0x 1A | alto |
Shoer, Maxwell C | 0x 1B | alto |
Smith, Joana M | 0x 1C | alto |
Subramanyam, Anirudh L | 0x 1D | alto |
Vankadari, Vishwanth Kumar | 0x 1E | alto |
Verheye, Achille | 0x 1F | alto |
Yang, Ni | 0x 20 | alto |
Zhu, Haomin | 0x 21 | alto |
Abramowitz, Rebecca E | 0x 49 | mezzo |
Bui, Kevin | 0x 4A | mezzo |
Drewery, James Lewis | 0x 4B | mezzo |
Fine, Jake | 0x 4C | mezzo |
Gottlieb, Eli J | 0x 4D | mezzo |
Kearns, Alexander William | 0x 4E | mezzo |
Lin, Julia L | 0x 4F | mezzo |
Liu, Hantian | 0x 50 | mezzo |
Mendivil, Matthew S | 0x 51 | mezzo |
Owusu, Anthony M | 0x 52 | mezzo |
Ravishankar, Nupura | 0x 53 | mezzo |
Soe, Jessica | 0x 54 | mezzo |
Wang, Dufeng | 0x 56 | mezzo |
Welde, John L | 0x 57 | mezzo |
Yee, Catherine F | 0x 58 | mezzo |
Yuan, Liangzhe | 0x 59 | mezzo |
Zhang, Mutian | 0x 5A | mezzo |
Zhou, Zhou | 0x 5B | mezzo |
Caporale, Juan Diego | 0x 5D | soprano |
Frank, Andrea E | 0x 5E | soprano |
Gu, Tongda | 0x 5F | soprano |
Killoran, John J | 0x 60 | soprano |
Liu, Lin | 0x 61 | soprano |
Michalowski, Stephen P | 0x 62 | soprano |
Panyi, David | 0x 63 | soprano |
Robberts, Juhanna T | 0x 64 | soprano |
Stockburger, Daniel P | 0x 65 | soprano |
Weinstein, Evan R | 0x 66 | soprano |
Wenger, Garrett John | 0x 67 | soprano |
Wiig Nordby, Gaute | 0x 68 | soprano |
Xu, Yifan | 0x 69 | soprano |
Yie, Hai Min | 0x 6A | soprano |
Yu, Jinglei | 0x 6B | soprano |
Zawacki, Christopher C | 0x 6C | soprano |
Zhang, Chi | 0x 6D | soprano |
Zheng, Siyu | 0x 6E | soprano |