For their ECE 4760 final project at Cornell, [Varun, Hyun, and Madhuri] created a real-time sound spectrogram that visually outputs audio frequencies such as voice patterns and bird songs in gray-scale video to any NTSC television with no noticeable delay.
The system can take input from either the on-board microphone element or the 3.5mm audio jack. One ATMega1284 microcontroller is used for the audio processing and FFT stage, while a second ‘1284 converts the signal to video for NTSC output. The mic and line audio inputs are amplified individually with LM358 op-amps. Since the audio is sampled at 8KHz, a low-pass filter gets rid of frequencies above 4KHz.
After the break, you can see the team demonstrate their project by speaking and whistling bird calls into the microphone as well as feeding recorded bird calls through the line input. They built three controls into the project to freeze the video, slow it down by a factor of two, and convert between linear and logarithmic scales. There are also short clips of the recorded bird call visualization and an old-timey dial-up modem.
Continue reading “Video Voice Visualization”
The students over at Cornell’s School of Electrical and Computer Engineering have been hard at it again with their senior projects. This time, it’s the very tiny and portable drumset dubbed Drums Anywhere by its creators [Shiva Rajagopal] and [Richard Quan]. Since there are other highly portable instruments like roll-up pianos, they suppose there should be a portable drum kit that actually sounds like drums, and this ECE duo have hit the metaphorical and physical drum on the head… except that this project doesn’t actually use physical drums to make sound.
The project consists of two 3D-printed box-like sensors with velcro straps that can be attached to any drumstick-shaped object that might be lying around. Inside the box is a flex sensor and a tiny microphone which report the “beats” to a microcontroller when they strike another object.
On the software side, there are two sampled sounds stored in the microcontroller but they plan to add more sounds in the future. The microcontroller outputs sound to a pair of speakers, and the sensors are sensitive to force, so the volume can range from almost inaudible all the way up to [John Bonham]-style booms. This could also be theoretically expanded to include more than two “beat boxes” for extra sounds, or be wireless. The options are virtually limitless, although the team notes that they are limited by the number of interrupts and ADC converters on their particular microcontroller, an ATmega1284.
This is another interesting take on a having drumset without the drums, and definitely expands the range of what a virtual drum set can do. It’s also great to see interesting projects coming from senior design classes! Be sure to check out the video after the break.
Continue reading “Drums Anywhere!”
There’s a special place in our hearts for chip tunes generated with your favorite microcontroller. But why stop there? Full-featured audio is a great challenge and it’s not often we see examples of this caliber. It puts out CD-quality audio using not much more than a microcontroller.
How do you get 16-bit audio out of an 8-bit microcontroller. We’ll give you a hint: two pins are used. Not helping? Here it comes: two 8-bit
DACs PWM outputs are used on this chip, the ATmega1284. One is used for the lower eight bits, the other handles the upper. The two are combined using carefully calculated precision resistor values and the results are beyond what you imagine. This is produced at a bitrate of 44077.135, slightly off from the 44100Hz standard but we challenge you audiophiles to tell the difference. The wave files are served from an SD card read by the chip using the Petit-FatFs library.
There are so many great things about this project. First off, following [Wancheng Zhou’s] example will let anyone with even basic microcontroller skills build a digital audio player for an [Andrew Jackson] and a couple of [Washingtons]. Secondly, those with a medium uC skill level will want to take the idea and implement/debug it for themselves. Bringing it home, [Wancheng] shows how to gauge the quality of the audio output using FFT.
If you didn’t figure it out by the time of year, this is yet another example of a Cornell ECE 4760 final project. Shout out to [Bruce Land] for inspiring awesome projects and requiring extensive documentation of the projects which itself promotes deeper understand all around.
Continue reading “8-Bit Chip Rocks 16-Bit 44.1kHz Tunes”
It’s the end of another fall semester of Bruce Land’s ECE4760 class at Cornell, and that means a fresh crop of microcontroller-based student projects. For their project, [Alice, Jesse, and Mikhail] built a Skittle-sorting miniature factory that bags and seals same-colored candies into little pouches of flavor.
Their design is split into three stages, which are visually delineated within the all-cardboard housing. Skittles are loaded into a funnel at the top that leads to the color detection module. The color is determined here with an RGB LED and OPT101 photodiode driven by an ATMega1284. Because the reflected RGB values of red and orange Skittles are so similar, the detector uses white light to make the final determination.
Once the matchmaking is over, a servo in the second stage rotates to the angle that corresponds with the color outcome. The Skittle then slides down a cardboard chute, passes through a hole in a cardboard disk, and drops into a hanging bag. Once the bags have reached the predetermined capacity, another servo moves the carousel of bags to a nichrome wire sealing rig. Lead factory worker [Jesse] must intervene at this point to pull the bags off the line. You can see the full walk-through and demonstration of this Skittle flavor separator after the break.
Continue reading “Taste the Rainbow One Color at a Time”
[Jack] is famous ’round these parts for his modern reinterpretations of very early computers. He’s created a computer entirely out of logic chips, a microcontroller-powered multicore box, and even a very odd one-instruction computer. For his latest project, he’s stepped up his game and made something that’s actually fairly useful: a microcontroller-powered system with an integrated keyboard and display.
The DUO Portable, as [Jack] calls his new toy, is built around an ATMega1284P microcontroller. Also on this board is a serial EEPROM that acts as a very small drive, a 102×64 pixel graphic display, and enough tact switches to create a QWERTY keyboard.
The DUO Portable boots to a primitive operating system where files can be created, edited, and saved. The programming language for this computer is called DCPL – the DUO Portable Command Language – and can be used to create anything from a simple ‘Hello World’ program to a block-building game.
Like all of [Jack]’s homebrew computer projects, he’s written an emulator that can be run in a browser. There’s also video of [Jack] playing around with the DUO Portable available below.
Continue reading “DUO Portable: A Homebrew Computer With Keyboard And Display”
This project is reminiscent of the old days when window managers were an amazing new idea. The difference is that this window-based GUI is running on an ATmega1284 microcontroller. But the behavior and speed of the interface is pretty much exactly what you’d expect if working on an early 90’s home computer. It even uses a mouse as input.
So how is this even possible? The key to the project is a serial to VGA module which handles the heavy lifting involved with generating a VGA signal. We featured one of [Andrew’s] past projects which used an AVR chip to generate the VGA signal. But that doesn’t leave nearly enough cycles to implement something like a window manager, not to mention the fact that it got nowhere near the resolution shown here.
He uses a serial mouse with an RS-232 converter chip to interact with the windows. This is best shown in his video after the break. He’s able to generate and interact with new windows. He even implemented a set of rudimentary controls which allow him to adjust the theme of the windows and drive the audio playback feature included on that VGA controller he’s using.
Continue reading “GUI window manager on an AVR chip”
This simple circuitry makes up the hardware for [Andrew’s] AVR-based VGA generator. He managed to get an ATmega1284 to output a stable VGA signal. Anyone who’s looked into the VGA standard will know that this is quite an accomplishment. That’s because VGA is all about timing, and that presented him with a problem almost immediately.
The chip is meant to run at a top speed of 20 MHz. [Andrew] did manage to get code written that implemented the horizontal and vertical sync at this speed. But there weren’t enough clock cycles left to deal with frame buffering. His solution was to overclock the chip to 25 MHz. We assume he chose that because he had a crystal on hand, because we think it would have been easier to use a 25.174 MHz crystal which is one of the speeds listed in the specification.
Red, green, and blue each get their own two-bit range selected via a set of resistors for a total of 64 colors. As you can see in the video after the break, the 128×96 pixel video is up and running. [Andrew] plans to enlarge the scope of the project from here to make it more versatile than just showing standard images. The code (written in assembly) is available at his GitHub repository.
Continue reading “AVR VGA generator”