8-bit Device Quenches IPhone Envy

avr-iphone-envy

[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]

69 thoughts on “8-bit Device Quenches IPhone Envy

  1. 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

  2. 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.

  3. 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

  4. 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.

  5. 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.

  6. ^^^

    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.

  7. 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

  8. 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.

  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.

  10. 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.

  11. 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

  12. @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.

  13. @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.

  14. 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…

  15. 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?

  16. 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.

  17. @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.

  18. 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.

  19. 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.

  20. 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.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.