N64C – 297DP Final Report

My name is Nicolas Wicker and I am in my junior year at UMass on the electrical engineering track. I decided to enroll in 297DP this past semester as I figured it would be a great opportunity to apply the fundamentals of electrical engineering that I have learned over the past few years, in an environment where I could integrate my own creative freedom towards a project I’m passionate about.

The project I decided to take on was one that both had a personal connection to me, as well as exemplified core electrical engineering skills. I wanted to take one of my favorite gaming systems, the Nintendo 64, and turn it into a handheld, portable unit that you could take with you and play games on the go and on original hardware. This project has been done by others in the past, either by using original Nintendo 64 hardware or emulation via a small computer such as the Raspberry Pi. After extensive research, I came to the conclusion that Nintendo 64 games emulated on the Raspberry Pi do not all play at 100% speed when compared to the games running on the original system. Also, having the nostalgia factor of plugging in a retro cartridge into my system seemed like a neat feature to me, thus I decided to hack up an original Nintendo 64 and use that as opposed to emulation.

After determining this, I went on to design the initial plan on how this would all come together. My criteria for the system was rather simple. It needed to be as compact as I could get it, so it wouldn’t be a far cry from other modern portable systems. It needed to integrate a battery pack, controls, audio amp with speakers, and screen, all so it could be played on the go. It needed to integrate the Nintendo 64 RAM Expansion Pack which would allow it to play every Nintendo 64 title, as some require more ram. And finally, it needed to just be appealing to me and something I would be proud of.

Based on what others have done with this project in the past, I began to think about cutting down the Nintendo 64 as small as I could get it. Thus it could go in a small form factor to satisfy that criteria point. This can be tricky because if you cut off necessary components on the board by mistake you could ruin your board and have to buy another Nintendo 64. Being so, I took extreme caution with trimming down the motherboard and got it down to a small enough form factor to where it was still functional as well. After this was done, I went on to figure out how I would integrate the expansion pack. The pack plugs into a connector on the motherboard and extends off  of it vertically. Thus, it wastes a lot of space. I decided to try my hands at cutting the expansion pack board on one side 80% of the way through, that way all of the bus traces on the other side would still be in tact. This allowed me to bend the board at a 90 degree angle and I only had to rewire one ground trace from the severed side of the board. Unfortunately, my first attempt at this failed as when I went to bend the board, some of the traces on the other side severed, rendering it useless. I feel this was a result of me not being careful enough, so I bought another Expansion Pack and tried my hands at it again. This time it worked like a charm. I now had to think about integrating the controller. I opened up a 3rd party Nintendo 64 controller I bought and began to brainstorm how I could cut up the controller board itself to save space. Being that the particular controller board I used was a single sided PCB, seeing where I could cut away was fairly easy. Most of the space on the PCB were just traces routed out to the button contacts, so these contacts could be cut off and traced back to a spot on the board closer to the center where I could solder to. I found each button’s corresponding pin on the center of the board and soldered wires directly to them. These wires would go to tactile switches on prototyping boards, which I could arrange in an ergonomic position in my design. Next up, I had to source a LCD screen that accepted composite video, as that’s what the Nintendo 64 outputs, as well as design a decent audio amplifier. The screen was straight-forward, a simple Amazon search pointed me to a 3.5″ rearview monitor for a car that happens to take in a composite video signal. This could just be spliced with the composite output pin on the Nintendo 64 motherboard, and it worked with no problem. I found a simple circuit using a lm386 for audio amplifying. I wired it up, hooked up a little piezo speaker I found in M5, connected it to the audio output pins on the Nintendo motherboard, and I was happy with the result. I also decided to route those pins to a headphone jack as well, so I would have the option of playing either way. With a integrated controller as input, a portable power supply, and a small screen and audio amp for outputs, I seemed to have everything done in terms of the electronics side of things. Next up was to design an enclosure around everything. To do this, I used SolidWorks which is a 3D CAD package I’m very familiar with to design two parts of a case that would fit around my assembled electronics. This was straight forward as well. After taking into account the measurements of all the components, all I had to do was add a bit of my own personal flair to the design and it was ready to be printed and assembled.

I am very happy with how my project came out. The final form factor matched exactly to what I set out to create, something both sleek and functionally practical. If someone were to follow in my footsteps and create a similar project I would advise highly to follow the same procedure in which I outlined in this post. Getting everything  electrically functional is a must before even thinking about your case. It goes by the old rule of thumb: form follows function. You have to have everything working and sound before you think of the design of it, otherwise you’ll drive yourself crazy trying to rearrange things to fit in the case you designed initially, and will most likely have to do all kinds of jerry rigging, which just begs for things to go awry down the road.

If I were to continue off this project, I would most likely design my own PCB that integrates all of the external components: battery charging circuit, LCD driving circuit, audio amp and speakers, headphone jack, controller circuit etc. on one PCB. Then all one would have to do wiring wise would be wire a few things from the PCB to the Nintendo 64 motherboard. Maybe this idea could then be mass produced or even sold as a kit.

M5 was a invaluable resource for me throughout this entire process. With instant access to all tools I needed, as well as electrical components, it was very easy to work on things once I acquired the few things M5 could not provide such as the Nintendo 64 and such. One thing M5 could possibly change would be the hours of operation, as having access to these resources late at night were sometimes a necessity to me, as that was the only time I could work on my project in the midst of classes.

In conclusion, I am very happy with how my project came out, as well as the learning experience that came with it. 297DP was a great course that allowed me to receive credit for a self-assigned project that I was passionate towards throughout the whole process, and I cannot commend the course enough for that.

Some Thoughts on Power Supplies

I’ve been working a lot with two single-board computers recently: the Raspberry Pi 3 and the ESP-8266. Both of these include (and that’s why they’re so attractive to me) WiFi hardware.

WiFi devices, because they’re broadcasting a radio signal, use a fair amount of power. Higher-power processors, such as those on the Raspberry Pi, also can consume a lot.

Cheap power supplies, such as most wall-warts, come in two varieties. Unregulated power supplies might produce two or three times the rated voltage when the load is drawing very little current, while they generally produce quite a bit less than the rated voltage when the load draws a lot of current. Regulated power supplies do a bit better – they generally don’t produce a lot more than their rated voltage. However, my recent testing indicates that they don’t generally hold their rated voltage at their maximum rated current.

The way to test a power supply (or a battery, or a radio transmitter) is to use an electronic load. These can be programmed to draw a fixed current, for example, regardless of the voltage. If it slowly (in steps) increases the current draw, and at each step measures the voltage provided by the power supply, one can look at the graph and see the performance of the power supply.

The following link provides a little more detail and some examples. It also links to a very good vlog by Andreas Speiss – he has a ton of interesting material on his YouTube channel.

EBD-USB+ Electronic Load – Testing Power Supplies and Batteries

Circuits and Code is coming

If you are a participant in the ECE297DP class, or if you are an individual contributor planning to have an exhibit at Circuits and Code next Saturday (29Apr), here is a PowerPoint template to use as you create a poster for your exhibit. The printed size will 8 1/2 x 14″ (legal paper size).

We need to get these to Professor Soules by Thursday noon so he can get them printed and have them for you on Saturday.

Saturday promises to be a very fun day!

M5 IoT Server is Here!

I have wanted for some time for there to be a wireless hotspot at M5 specifically for hosting Mosquitto, an internet of things information broker which implements the MQTT protocol. I think I have finally crossed all the technical hurdles. I put the server up for a couple hours last Wednesday and tested it, and it seemed to be working perfectly. I have now put it back up, and plan to leave the server up permanently.

The server creates a local WiFi network with DHCP and access to the mosquitto port 1883, but not through-access to the internet. Mosquitto will also be available to the campus network (including eduroam). Talk to Chuck to get the url – I don’t want to post it here!

This service will allow interconnection of IoT objects all around M5; sensors, switches, actuators, simple displays, lights, etcetera. A data source sends (in MQTT terms, publishes) a message to the host (the broker), labeled by a topic name; any device that has subscribed to that topic will receive notification of the new value, and can then act on it as necessary.

Links:

  • The home page for the MQTT protocol
  • The mosquitto software home page
  • Installing the mosquitto MQTT server onto a Raspberry Pi, in case you want to try it yourself

ECE297DP – Come get your hands dirty at M5! Saturday afternoons

Your ECE education at UMass is quite remarkable. You will graduate very well prepared with the theory and computational skills you will need to start useful work in the real world.

To have a *really* well balanced education, though, (as well as great stuff to put on your resume!) you should have hands-on experience building projects. M5 is the place for making things – electronic, mechanical, audio, RF, and more – or breaking things to find out how they work(ed), or fixing things. The M5 team is eager to help you with project ideas and pointers.

ECE297DP offers you one course credit, pass-fail, so you even get some academic credit for coming and having fun. You also get résumé cred with all the cool projects you’ve done.

Also – if you have a team project in mind, you can take ECE497DP as the mentor / project leader, and get even more resume cred!

Chuck Malloch is especially interested in distributed sensor systems and home monitoring. He has experience with ESP8266, NeoPixel strips, Node-Red, MQTT, Mosquitto, UDP, Python, Perl, and X-10 system components and would love to work with you on projects to monitor building systems and environments and provide assistive technology to the elderly and disabled. Come talk to him at M5 to talk about project ideas you might have or to develop a project idea based on your interests.

Chuck will be in the Pi Room at M5 every Saturday at least from 2:30 to 4:30, and usually will be there much earlier. Come on down. Also, check out the M5 web site at UMassAmherstM5.org for additional course details.
The course requirements, all of which must be fulfilled to pass the course, are:
o preparation of a project proposal and having it approved by Professor Soules or myself.
The proposal needs to describe what you plan to do, what the necessary resources are, the main concept (that you will demonstrate mid-term), and what cool thing you’re going to do with that concept for Circuits and Code. Don’t delay on this – it needs to be to me or TBS in time to get approved during the add/drop period!
o perfect attendance during the class sessions (one per week), with one pre-excused absence and one unanticipated absence allowed.
o two additional hours each week spent working on your project
o preparation and delivery mid-course of a 5-minute “lightning talk” describing your project, your progress, and your intentions
o exhibition of your completed project at Circuits and Code just before finals
o preparation and submission of a final report

Chuck is also very interested as a musician and a software engineer in working with a programmable audio effects box. See the this post for more details on that action.

Also note that Chuck has a blog now, and it’s intended to explore and serve as an example of project logging and documentation. Unsurprising hint: such documentation can come in very handy for students looking for a job. ‘Nuff said.

See you Wednesday or Saturday!

ECE297DP Saturday Sounds / Firmware discussions

Let’s make noise! (Spring 2018 version)

The effects boxes are here and available for students enrolled in the Saturday section of ECE297DP. This term, we’ll be spending about an hour each week discussing the process of developing firmware within the constraints of existing hardware.

We’re also exploring Pure Data (Pd), a graphical programming language particularly well suited to synthesizing, playing, modifying, and generally honking around with audio. The concepts from Pd will largely transfer to the programming of the effects boxes.

So come down and play! We have some open seats on Saturday afternoons, 2:30 – 4:30, in Euler’s Good Room. Bring your laptop.

Here are some interesting links:

 

Other interesting links:

Finally:

I have been developing a blog site using the UMass Create service. I intend to explore its usefulness as a build log tool and as a way to document project efforts. The service is available to anyone in the UMass community, and I encourage students to use it to create a web presence that will show prospective employers the breadth and depth of their work!

See you on Saturday!

ECE297DP Saturday Sounds!

Let’s make noise!

The effects boxes haven’t arrived yet, but we aren’t letting that stop us. We’re exploring Pure Data (Pd), a graphical programming language particularly well suited to synthesizing, playing, modifying, and generally honking around with audio. The concepts from Pd will largely transfer to the programming of the effects boxes.

So come down and play! We have some open seats on Saturday afternoons, 2:30 – 4:30, in Euler’s Good Room. Bring your laptop.

Here are some important links:

Download Pure Data (Pd)
Pure Data tutorials – cheetomoskeeto
Pure Data cheat sheet
Chuck’s Github work on the OpenEffects box
Chuck’s PureData patches for this class, including (in externals) the output~ abstraction

The OpenEffects Project – from whence our open effects boxes will come
The boxes are powered by Teensy microcontrollers from Paul Stoffregen
… and use the same chip found on the Teensy Audio Shield
The Teensy audio effects are programmed graphically using a web tool

Other interesting links:

Onyx Ashanti – beatjazz performer with self-built audio processing
Gordon Reid’s Synth Secrets

It looks like the audio effects boxes will be delayed in arriving, so I’ve ordered some Teensy Audio Boards to use in the meantime. They should be here by the time we have our next meeting (which, you should know, will be September 30)

Circuits & Code 2017

This weekend, members of the ECE 297DP class presented their semester projects in M5.  The projects consisted of various different projects within engineering and technology subfields.

Wayne Hobby constructed a Fourier Transform Fan with led strips on the blades that interpreted the surrounding sounds, and dispersed them as different colors along the radius of the fan.  The greater the frequency, resulting in a higher pitch, and the louder the noise, the further outward the fan would light up.  He demoed his project using Coldplay’s Scientist, where it was able to follow the rhythm of the piano and the sudden changes in the singer’s voice.  To do this, Wayne used a Teensy 3.6, a microcontroller similar to an Arduino, an Electret Microphone Amplifier and LED strips on each of the fan blades.

                                                   

Sophomore CSE student Zac Little created a homemade set of drum pads by using an Arduino Nano, Codec + MicroSD Breakout – MP3/WAV/MIDI/OGG Play + Record, and piezo sensors.  He made the pads out of old DVDs with the piezoelectric disks in the middle, and assigned each of the sensors to a designated port on the bread board. One improvement he hopes to make is to allow the drums to be able to play two or more of the sounds at the same time.  Because of the code he used, the system thinks linearly and can only process the input of one of the sensors at a time.  Since when using a drum set, you often combine the different instruments, he plans to alter the coding so he can successfully make this change.

There were many other projects from the class that were on display.  One project consisted of a robot that reacted to the sound of the environment and looked in your direction.  Each “ear” contained a sensor to detect the level of noise in the environment, and if the noise was above a certain threshold, it would send a signal back to the microcontroller to move the head in whatever direction the noise came from.  Another project was an LED Clock that uses a timer to keep track of the time, and then displays the numbers in respective colors based on a color code.

                                  

If you are interested in working on a project like this next semester, you can enroll in ECE 297DP with Professor Baird Soules.

Dr. Seuss Interactive Exhibit Project: Circuits and Code Preview

Coming into this semester, a group of five Electrical and Computer Engineering students had some ordered parts to create an exhibit for the new Dr. Seuss Museum in Springfield, and went from there.  The idea was to develop an interactive exhibit composed of an audio system that would be triggered by museum goers, just as companies hire Professional Engineering companies do.  However, Jack Kenney, Eric Lee, Jason Sproviero, Sean Sproviero, and Tim Zhang were up for the challenge.

First they had to decide what they were going to use to control the audio system, and went with the Adafruit Audio FX as the sound board. Tim Zhang explained that they went this because “the Adafruit soundboard provides a simple, reliable, and cost effective solution for enabling us to play audio without the need for a microcontroller or more advanced systems”.   This seemed to be the best choice because it was the cheapest and most reliable based on the minimal functions needed within the system.

Next, the group had to determine what type of triggering mechanism they wanted to use for the system.  They wanted to make the exhibit interactive for people of all ages, but also keep in mind cost.  Three different ideas were experimented with, including arcade-style button, capacitive touch, and infrared sensors.  After testing, they decided to go with X-Arcade Buttons because they were cheaper, more durable, and have a lifetime of 10,000,000 Cycles.

         

After all of the hardware was figured out, the group had to fine tune exactly what the exhibit would do and what sounds it would trigger.  The exhibit involved sound for the Seuss Brewery, Mulberry Street Band, and many more “Seussical” sounds.

Throughout the process, the students realized the challenges of “real world” projects, compared to projects they may work on in their own free time.  Here at M5, students can work on their own projects, but this practicum gave students the ability to have a client, and work with them to create a project.

Instead of calling upon a company, the developers looked towards the ECE students with the same standards to provide the same quality product.  In this circumstance, you have to take into considerations and factors that you may not have to when working on an individual project.  Because of the time constraint of having one semester to develop, prototype, and have the final product, the exhibit had to have a simplified design.  They also had to consider cost, but still wanted to have a reliable finished product that contained as little parts as possible.

 
Overall, all students really enjoyed the experience and it gave them an opportunity to put what they learn in all of the engineering classes to practical use.  They had some mentorship from professionals in sound and engineering, and learned a lot about future careers in the field.  Jason Sproviero shared that he was hesitant to partake in the practicum at first, but the experience has been extremely beneficial: “I was afraid that I would get left behind, but now that I am immersed, I am really learning”.  It was a once in a life time chance for all students, and they are excited to share their work with the community at Circuits & Code!

Surface Mount Prototyping Workshop

Friday April 21st, 3:00pm

UMass Alum Chris Montoya will be joining us in M5 for a surface mount prototyping workshop, using a reflow oven! This is an excellent opportunity to get some hands on experience working with surface mount electronics, and to speak with a knowledgeable engineer working in the field. We will dive right into the workshop and then have time to ask any other general questions. Each student will have their own kit to work with, so spots are limited. so RSVP soon if you would like a spot!

TO RSVP: Email Dan Travis (dtravis AT umass DOT edu). First come first serve reservations.