I have been looking for some basic board at work for building an IOT related test terminal for one of our project. While seaching for possible boards I ended up on the Raspberry PI and the Arduino.
When I saw the Arduino, the first thing that came to my mind was "hey, there may be some interesting stuff that can be done with that, maybe even nes related". Since I always wanted to learn more about electronic I thought that it could be a starting point.
At first I would just experiment with it but what I would like to know if it could be used in any kind of nes related project and what kind of project? What are the limitation of such mico-controllers?
Well, it doesn't use an Arduino, but there's Rachel Simone Weil's
ConnectedNES, which uses a
Particle Photon board.
I'm not in a position to be able to judge the limitations of using external hardware, not having dealt with it myself.
The most obvious application to me is
using it to run a TAS.
Aside from that, it really depends on what you're interested in. You could create all sorts of weird peripherals for the system, but that kinda stuff tends to be hard to share with others, except as a local demonstration.
Thank you guys for the reply. Maybe nes projects is not something common that can be done with
I guess instead of focusing of the nes, I should have asked my question in the general forum instead and ask what kind of interesting things can be done with the Arduino. I though it could be a way to make me want to try some electronics without being too overwhelmed and be able to see results right way.
If you need some project idea for an Arduino, you could try and build either a wireless Controller, or a Controller to USB adapter.
I am currently on building the first; a wireless SNES Controller, with Mouse support using a laser mouse (I found a PS/2 Mouse that uses a laser for movement detection) and PC transfer support. I needed a method to transfer porgrams (and data) from my PC to my SNES (of course with a supporting bootloader), so I figured why not going for the whole package when I need to chop up a controller anyways. Using the Attiny series, which is supported by the Arduino IDE, this can be done pretty much in a compact form-factor (Digispark for example are very cheap, like 1$ for a board, and they offer USB capabilities, like keyboard and joystick emulation, in a very small form-factor).
Oh, also you can use an Arduino to build an EPROM programmer/dumper, if you don't have one. I think Bisqwit
did this once to dump a cart.
@rainwarrior
This could be an idea. I do have an eprom burner but I think that software that came with it is not good and may be the cause that it takes too much time to write.
What is the average time to write a 512k flash eeprom, like a AT29C040A? With my current burner, it can take easily 5-6 minutes if I remember well, which seem quite long for such a small size. I don't know if it's the burner, the software or it's just normal.
Programming time depends on the specific part, but that sounds slow.
The datasheet for the AT29C040A says that it should never take more than 10ms to program 256 bytes (Note 1 on page 6, tWC and the figure on page 7); it "should" only take 21 seconds to program that Flash.
You could be limited by the interface to the programmer being too slow to feed data at the ≈needed 256kbit/sec.
My AT29C040s definitely take less than a minute to program. It's been a while, but 20 to 30 seconds sounds about right.
A few years ago I hacked up an Arduino sketch and an NES controller so I could stream it midi data over USB and and have it correlate to NES button presses (ie C = left, C# = right, D = up, etc). I used it to trigger the powerpak NSF player to jump tracks in an NSF file so that I could synchronize the start of a song with other sequenced tracks running in my DAW. It never really proved that useful - I only used it for two live Marshall Art shows. What I really want to do is a full midi clock sync but that's still a little outside the range of my skillset.
If anyone wants my horrible code I can try to dig it out.
My assumption was right that it seemed unusual to take that much time. I could always ask the company but they never updated the software and it only works for windows xp.
This is one reason I didn't test much on hardware when I was active since a 6 minutes wait per try was a pain. The model was a leaper 3c if my memory is good. I should just make one, that would be cheaper.
Could it be done with a raspberry pi too? (I guess you could) I'm going to receive one at work so I could test to burn as a way to "learn how it works".
As for controllers hack, that could be interesting. In my case the only thing I have available is famicom controllers so I would need to detach it from the console. Just to use it as a controller on my pc would be interesting too.
Raspberry Pis run at 3V; many 5V PROMS disallow programming when they're supplied that low of a voltage.
I think I remember people saying that the Raspberry Pi GPIO speed is disappointingly slow, too ... so much so that it might be faster to have the raspberry pi talk to the arduino rather than toggle its own pins.
(Specific exceptions for SPI, I²C, or I²S peripherals)
GPIOs on the Raspberry Pi are fast when you mmap the /dev/mem file and write to the correct offsets. This is also a very questionable practice. Better would be to make a kernel module, implement the desired GPIO protocol and communicate to ordinary userspace processes using only "high-level" messages (instead of controlling every pin from userspace, ask the driver to do a certain job)
@lidnariq
I will keep possible speed issue in mind if I do so. If I could find the speed issue of my burner it would simplify things but I don't have high hope since the last update of the software was in 2010 so.. unlikely. Either buy a new one or make one is the possible solution.
As for your comment on 3v voltage, since I'm a beginner and I see a 5v dc on pin 2 of the GPIO on the pi 3, I'm not sure what it meant. My educated guess is that it's not related to that pin but the actual platforms run on 3v and that may cause issues. An explanation about the issue would help me learn on the subject.
@Jarhmander
I didn't use the pi yet so I cannot comment on the subject.
From some casual google searching, I found
this project that uses an Arduino to make an NES USB controller. This has got me thinking. Could an Arduino be used as a solution to getting keyboard input through the standard controller ports? I've wanted to see projects such as an assembler, machine code monitor, or a better BASIC interpreter than Family Basic for years on an American NES. Theoretically you could use the serial mode on Arduino to type on a keyboard to it and then write a program (or modify the existing project I linked even) to write the needed keyboard inputs. Is this even feasible in an easy fashion?
That would be feasible. Some time ago, tpw_rules was working on a microcontroller project to adapt a PS/2 mouse and keyboard for use with an NES until real life intervened.
@lidnariq
I have been working a good part of the week with the Raspberry PI and with all the things I had to search to figure out how sensors work (no docs comes with them) and issues with 3v/5v parts I now understand your comment about the Raspberry running at 3v. It feels good to have figured it by myself even though it may seems obvious for people in the know.
At first I was concerned to connect a 1602 LCD I2C screen since the VCC was 5v and the pins on the PI are 3v to the point that I learned how to use a level shifter (didn't know what to use it for before) until I figured out that I2C master/slave, as long master is 3V and the slave doesn't set high on that pin, there is no issue (if the information I found is accurate).
But why the need for 3v, 5v, I'm not sure yet. Is there an historical reason for that? I guess I can figure out by googling but still curious to learn more.
Lower voltage parts can be dramatically more power efficient.
Power consumption for a clocked CMOS part is approximately CV²f, where C is the equivalent bulk capacitance of the whole device, f is its operating frequency, and V is the operating voltage. So using the same part at 3.3V instead of 5V uses only 44% of the power (assuming it can operate at both voltages).
In fact, the majority of modern electronics actually operate at even lower voltages, operating near the lower bound of what silicon-based MOSFETs can do, somewher in the range of 1.2 to 1.8V. The Raspberry Pi is one of these; its I/O voltage is 3.3V but its core voltage is approximately 1.2V.
Is there a good reason, other than lack of demand, for there not being a wider variety of ICs (memory, larger CPLDs, and FPGAs) that run 1.2 V internal and 5.0 V external?
It's mostly lack of demand.
It's also a little harder to design voltage translation to switch to a slightly higher voltage—e.g. the MOSFETs need thicker gates (and thus an extra round in the fab to apply an extra thick layer of quartz in the MOS sandwich) so that the higher externally applied voltages don't exceed whatever the desired safety margin is relative to the breakdown voltage of the quartz dielectric—but I believe this is a small effect in comparison.