[Peter] deserves an award for doing more with less. He’s built a handheld device based on an AVR controller that has features normally associated with much more powerful devices. Here’s what it doesn’t do: no phone calls, no text messages, no accelerometer, and best of all no app approval needed. What it does do is leverage inexpensive, readily available components combined with common homebrew development techniques to create a touch sensitive handheld.
The demo video embedded after the break details the device playing video, rendering 3D objects, and displaying pictures and ebooks with touch scrolling. All of this is running at 60 fps for a smooth picture. The whole thing is no larger than the 320×240 LCD that he salvaged from a broken MP3 player. An Atmel AVR ATmega644 microcontroller ties together the display, a resistive touch screen, and a microSD card for storage. The chip also controls the backlight, a Lithium Polymer battery, and uses USB for PC connectivity, charging, and even a mouse or keyboard interface. He etched the PCB himself for surface mount components and managed to do it with just four jumpers needed on the underside.
This is a big leap forward from the last AVR based touch sensitive device we saw. All of the functionality seen in the demo is run using 4k of memory and 32k of programming space. Because [Peter’s] powering this at 3.3v the system clock is limited to 12MHz but he’s managed to make it work. We asked him to post code and schematics and he didn’t hold back. Head over to the microtouch project page to download the code, Eagle CAD files, and PCB artwork. All of the demo files are there just waiting for you to build on his hard work. When you’ve got something running, don’t forget to share it with us!
[youtube=http://www.youtube.com/watch?v=EF3-U9Lb12k]
Sweet, put linux on it
Amazing!! I absolutely love it!! :)
Super awesome! I swear I remember seeing an earlier version of this months back – not sure if he had a featured article or just had a link in his comment, but I remember seeing a 3D cube demo of some sort… Very excellent work, that things not far from production ready.
@PunMaster: Much <3 #Wiibrew
Very, very impressive. THIS is what Hack-a-day is all about.
this is what all the arduino amateurs should strive for
So, it can handle video…but what kind of video? My iPod nano could support video – but only completely uncompressed video. Took a few hundred megs to store a 3 minute clip. And I don’t see how with a 12MHz CPU it’s gonna be decompressing video on the fly – my 400MHz iPod touch can’t even manage that well.
Amazing… simply amazing.
That is a truly impressive hack! Good job sir!
oh all you ipod lovers go away. The atmega chips are brill. I love the functionality of this for so little – My next project is something similar but i’m not striving for so much.
Mowcius
Wow.
^^^
ditto
*chills* jaw dropping
The lack of intelligent comments on Hack a Day is often a problem, but in this case it’s totally well founded. I definitely have nothing to say besides wow, assuming it’s legit.
Literally, if you told me to make this video now, I’d have taken my iPhone guts out of the case and just used after effects to mask a homemade board over the back. That’s the only way I’d even be able to approach this.
Pacman wasn’t even input polling and it still hiccuped.
OMAP 3530 is the best possible solution for this application in terms of open source. It has OpenGL ES support so you don’t have to interface with primitive algorithms and it has 2.6 support. You could literally compete with the iphone 3G and/or ipod touch 3G with it.
Pacman pauses when he eats a ghost. That’s just how he rolls; nothing to do with the CPU.
Did anyone look at the code? This guy wrote a mad amount of code. About ~10k lines and this is not trivial stuff. This was no weekend hack. Simply awesome!
main magic comes from 320×240 LCD with build in controller
^^^
Of course you could compete with the iPhone using an OMAP 3530: it’s substantially faster than the iPhone’s processor and has a dedicated DSP, ISP, and graphics chip in it in addition to the Cortex-A8 that runs at a higher clock rate than the iPhone’s.
That device is something like 6 orders of magnitude more powerful than this ATmega part in terms of raw processing power. It wouldn’t be particularly impressive to put this demo together with a Beagle board. This, on the other hand, pushes that micro more or less to its limit.
Hey tj,
I didn’t notice any hiccups. The site says he gets above 60 fps.
The only place I could find your “best possible solution” was on a BeagleBoard. For $150. You can get a “refreshed” iPhone from BestBuy for $130. This guy paid $8 for his MCU, tops.
If you can do this on your OMAP, I’d be happy to read about it. But don’t criticize people who do it with a 50th (roughly) of the processing power.
prices from DigiKey.com and Bestbuy.com
Forgot to say this in my earlier post:
THAT IS AWESOME
Peter deserves an award SHOP.
Wow. When I get the time I want to use the 3d engine on my TomeGS game system. I love seeing projects like this.
So impressive i thougth it was a fake. I did read and compile the code, and it can do what we see.
“video” are bitmaps copy from SDC. The 3D lib is very compact.
But there is nothing in the code about the USB. ATmega644 has no USB support, so if it has to be done by software (fishl.de) it will eat 80% of cpu time and be very slow for updating the SDC.
Harware design is beautifully minimalistic.
LCD is available from sparkfun.
LCD is also available from china for $32 with free shipping
Funny how author of this great hack even mentions 50Mhz ARM Cortex-M3 for same price as ATmega664, and guess what – “DSO nano oscilloscope” Hackaday reviewed a week ago is build EXACTLY the same as this hack, but with STM32F103VBT6 instead of overpriced Atmega.
Schematic for the DSO nano :
http://bbs.e-design.com.cn/bbs/UploadFile/2009-10/20091023176982804.jpg
You know, there is an app for that.
you can have free samples of CortexM3 at ST.
i got 9 !
… i…i….ama….z…ing
that was fantastic. I mean sure, we all get excited when we get an led to blink when we try a new uC, but this…i didnt even do anything, and i have a sense of an accomplishment after that. brilliant.
who knew that an 8bit uC running at a mere 12Mhz could do that.
well done.
This guy definitely writes some lean code. 12 mhz of 8 bit Harvard arch and look at her go. These things cant even fetch and execute at the same time!
Very impressive. Incredible!
{wow}
I’d love to know where this guy works on for a living.
very very nice.
An OMAP 3530 with the 256/256 setup and refined passive component map runs you under $90 USD and around $110 for additional minimalist PCB manufacturing. I’d say add around $80 USD for a OLED 4-wire touch screen with integrated I2C based controller.
This has nice code development and stuff, but even with super refined algorithms it’s somewhat lacking, and uses about the same power as the OMAP setup. Both solutions support i* features, most notably censors.
I’m not taking away from this person’s work, I think it’s awesome personally. I’d genuinely like to see someone put that much firmware work into something that makes major vendors who think they have the market on lock, take notice.
The propeller would also be good for this.
Also the pacman hiccup is kind of obvious in the video, and it’s not the steam buffering either. It looked like a graphical demo and not an actual game that polls and logs.
Most impressive!!!
Hands down one of the best “Hacks” on hack a day in a long time.
Now where can I get one for $19.95 imported from china in iPhone form
8 bit huh so its like an NES
This is why I go on hackaday every day!
@tj
I’m actually quite sure that the original pacman paused when he ate a ghost, that’s how I remember it anyways. To be honest it didn’t look like it was button polling. He could have mapped the buttons to interrupt capable pins and therefore doesn’t have to poll.
I think that the OMAP idea is neat, but you have to admit that this is a much cheaper solution that’s quite capable. Cheaper being the operative word here.
@gripen40k: Yeah I agree it’s really good engineering from all angles. Even with super tight code though it’s not going to handle even legacy bit stream media decoding.
He clearly has the time to take it to the next level with the OMAP chip. The chip alone is only like $45 and there is documentation for everything except the security stuff in public domain, and 2.6 kernel support and drivers. The code development would even be drastically more streamline than his AVR whether on a Linux kernel or bare metal.
Impressive hack. I like the song too.. anyone know the title and artist ?
Another great idea!
I got a question. If you look carefully on the video, when he shows pacman game it looks like the frame of maze is moving a little in oposit direction to the frame. Could it be a software bug or fake? On the others i couldn’t find such a thing…
Very very awesome – my only gripe with it would be the resistive touch pad. See how much trouble he had operating it?
I know he started out with a salvaged lcd, has anyone run accross a capacitive sensor film that could be added to an existing project, rather than a screen/touch sensor combination?
I think there was a glitch at the edge of the screen when he was swiping/scrolling pictures, but DAMN that was very fluid, and the fact he doesnt even buffers them and instead reads directly from SD card into LCD controller blew me away.
I wonder how much ram would one need to do this with real JPG files straight out of digital camera.
@defyboy : we are talking 32K of programming memory. Putting linux on this would be putting an incredible bloat.
It is really good to see some people reminding us what one can do with minimalist hardware. I used to see realtime 3D with incredible effects on my 486 that would fit in very small files. (256 bytes demo anyone ?)
Cell phones have been so bloated from the beginning that when Apple came and showed a fancy interface running smooth everyone was bewidled and thought that you had to have an iPhone to get this kind of gimmick. This clearly shows it was never the case.
Give any decent demomaker access to a pixel device and to the software that controls it and he will put 3D effects on it.
wow dude this is great! excellent!
That’s frickin awesome! I bet he could make some money off of that.
This is win. I’ll take 8.
too f-ing cool…this guy should get in touch with the wikireader guys
Someone get this guy a deal to fab some PCB’s and start selling kits, coz this would be my ideal upgrade from a Mignon Gamekit and so on ..
Pacman wasn’t hitching, that game is supposed to stall for a moment when you eat a ghost. Also the project itself is beautiful.
I think there is a real need for turnkey modules like this (touchscreen,packaged,plenty of IO, open, easy to program, cheap). This would be the weakest, bigest would have power of BeagleBoard. Bit like Buglabs but standalone. These could be the basis of great projects.
Ok. I have a question – where is battery or power supply ?? How its work without a power ? I dont see anything – no battery, no wire. So – its a fake video ???
Anyone got any links for buying the LCD? $32 sounds like a really good deal.
Does he have the SD card wired to the display directly or something? It’s just that normally you can’t read more than about 70k/sec on a 20MHz AVR from an SD card with FAT filesystem. Maybe he uses a raw format or something, but since both the SD card and the display are SPI you could probably connect them directly with a bit of clever handling from the AVR.
LCD is not talking SPI, those traces between SD and LCD are power + and -.
You dont need to read a lot of data (full 64KB for every frame) – LCD controller supports scrolling, so you scroll the screen a little and just fill the new area with data.
and even if you wanted to do full screen its not impossible, Here is a link to a dude that did full screen animation read from SD card on Atmega8
http://www.elektroda.pl/rtvforum/viewtopic.php?t=439022&postdays=0&postorder=asc&highlight=s65+animacje&start=30
LCD is 132 x 176 pixels, just reading post processed data from SD and dumping on the screen, over 20 fps.
Can anyone tell me if he’s been featured before? I definitely recognize the work, just not sure from where.