<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Hack a Day &#187; digital picture frame</title>
	<atom:link href="http://hackaday.com/tag/digital-picture-frame/feed/" rel="self" type="application/rss+xml" />
	<link>http://hackaday.com</link>
	<description>Fresh hacks every day</description>
	<lastBuildDate>Fri, 10 Feb 2012 14:02:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='hackaday.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/5560f98f805877b0e332f191cb9e0af3?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Hack a Day &#187; digital picture frame</title>
		<link>http://hackaday.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://hackaday.com/osd.xml" title="Hack a Day" />
	<atom:link rel='hub' href='http://hackaday.com/?pushpress=hub'/>
		<item>
		<title>This digital picture frame runs Linux better than you might think</title>
		<link>http://hackaday.com/2012/01/10/this-digital-picture-frame-runs-linux-better-than-you-might-think/</link>
		<comments>http://hackaday.com/2012/01/10/this-digital-picture-frame-runs-linux-better-than-you-might-think/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 00:27:11 +0000</pubDate>
		<dc:creator>Mike Szczys</dc:creator>
				<category><![CDATA[linux hacks]]></category>
		<category><![CDATA[arm9]]></category>
		<category><![CDATA[df3120]]></category>
		<category><![CDATA[digital picture frame]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[parrot]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=65206</guid>
		<description><![CDATA[Ah, the beauty of spreading the guts of some hackable hardware across your workbench. This happens to be the circuit board and LCD screen from a Parrot DF3120 digital picture frame. The device is pretty powerful, considering you can still find them available for around $25. You&#8217;ll get a 3.5&#8243; screen, ARM9 processor with 8MB [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=65206&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-65210" title="parrot-df3120-running-linux" src="http://hackadaycom.files.wordpress.com/2012/01/parrot-df3120-running-linux.png" alt="" width="470" height="343" /></p>
<p>Ah, the beauty of spreading the guts of some hackable hardware across your workbench. This happens to be the circuit board and LCD screen from a Parrot DF3120 digital picture frame. The device is pretty powerful, considering you can still find them available for around $25. You&#8217;ll get a 3.5&#8243; screen, ARM9 processor with 8MB or RAM, Bluetooth, a tilt sensor, and more. It seem that [BusError], [Sprite_tm], [Claude], and few others really went to town and <a href="https://sites.google.com/site/repurposelinux/df3120">spilled all of the secrets this device has to offer</a>.</p>
<p>Their goal of the hack was to get their own Linux kernel running. It is possible to reprogram the processor using its JTAG interface. And if you really want to drill down to the good stuff, there&#8217;s access to all of the BGA pins on the bottom of the board thanks to a grid of micro vias. But the device can be tricked into flashing your own firmware just by altering a stock upgrade image.</p>
<p>You can get a pretty good idea of what there is to do once you&#8217;ve replaced the firmware from the video after the break. A RAM upgrade (using a chip from an old PC133 stick) lets the video run smoothly as it&#8217;s controlled via a Wii remote.</p>
<p><span id="more-65206"></span><span style="text-align:center; display: block;"><a href="http://hackaday.com/2012/01/10/this-digital-picture-frame-runs-linux-better-than-you-might-think/"><img src="http://img.youtube.com/vi/cwN6eztHQSA/2.jpg" alt="" /></a></span></p>
<p>[Thanks Dans34]</p>
<br />Filed under: <a href='http://hackaday.com/category/linux-hacks/'>linux hacks</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/65206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/65206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/65206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/65206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/65206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/65206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/65206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/65206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/65206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/65206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/65206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/65206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/65206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/65206/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=65206&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2012/01/10/this-digital-picture-frame-runs-linux-better-than-you-might-think/feed/</wfw:commentRss>
		<slash:comments>79</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Mike Szczys</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2012/01/parrot-df3120-running-linux.png" medium="image">
			<media:title type="html">parrot-df3120-running-linux</media:title>
		</media:content>
	</item>
		<item>
		<title>Adding a little polish to your cellphone charging setup</title>
		<link>http://hackaday.com/2011/09/14/adding-a-little-polish-to-your-cellphone-charging-setup/</link>
		<comments>http://hackaday.com/2011/09/14/adding-a-little-polish-to-your-cellphone-charging-setup/#comments</comments>
		<pubDate>Wed, 14 Sep 2011 22:01:14 +0000</pubDate>
		<dc:creator>Mike Szczys</dc:creator>
				<category><![CDATA[cellphones hacks]]></category>
		<category><![CDATA[home hacks]]></category>
		<category><![CDATA[charging]]></category>
		<category><![CDATA[digital picture frame]]></category>
		<category><![CDATA[ikea]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=55744</guid>
		<description><![CDATA[Cable management can really be an eyesore, but a little creative camouflage and you can have a cellphone charging station that also serves as decoration. [Kitesurfer] wanted to use one of the cubbyholes in his new Ikea book shelf for charging but wasn&#8217;t keen on the rat&#8217;s nest of wires that would go along with [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=55744&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-55745" title="mobile-charging-station" src="http://hackadaycom.files.wordpress.com/2011/09/mobile-charging-station-e1316011669317.jpg" alt="" width="470" height="313" /></p>
<p>Cable management can really be an eyesore, but a little creative camouflage and you can have <a href="http://www.kitesurfer1404.de/tech/ladestation/en">a cellphone charging station that also serves as decoration</a>.</p>
<p>[Kitesurfer] wanted to use one of the cubbyholes in his new Ikea book shelf for charging but wasn&#8217;t keen on the rat&#8217;s nest of wires that would go along with it. Also not wanting to take on <a href="http://www.kitesurfer1404.de/tech/ladestation/en">the challenge of wireless charging</a> he hit the As-Is section of the home furnishing giant and grabbed a leftover board that matched the same finish as the cabinetry. It now serves as a false-back for the charging center behind which a power strip and wall-warts hide.</p>
<p>This covers up the problem, but a blank white box filled with the business end of the charging wires isn&#8217;t a whole to better. As with a magic show, the trick is in redirection. [Kitesurfer] cut a hole in the false-back and added the guts of a digital picture frame. Right now he&#8217;s got it scrolling through different charging icons, but it&#8217;s easy enough to change up the slide-show if he gets tired of them. We&#8217;d love to see a subsequent hack that lets the picture frame access the photos on your phone via Bluetooth.</p>
<br />Filed under: <a href='http://hackaday.com/category/cellphones-hacks/'>cellphones hacks</a>, <a href='http://hackaday.com/category/home-hacks/'>home hacks</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/55744/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/55744/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/55744/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/55744/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/55744/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/55744/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/55744/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/55744/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/55744/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/55744/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/55744/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/55744/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/55744/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/55744/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=55744&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2011/09/14/adding-a-little-polish-to-your-cellphone-charging-setup/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Mike Szczys</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2011/09/mobile-charging-station-e1316011669317.jpg" medium="image">
			<media:title type="html">mobile-charging-station</media:title>
		</media:content>
	</item>
		<item>
		<title>Wifi sniffing digital picture frame</title>
		<link>http://hackaday.com/2011/06/13/wifi-sniffing-digital-picture-frame/</link>
		<comments>http://hackaday.com/2011/06/13/wifi-sniffing-digital-picture-frame/#comments</comments>
		<pubDate>Mon, 13 Jun 2011 11:05:31 +0000</pubDate>
		<dc:creator>Brian Benchoff</dc:creator>
				<category><![CDATA[wireless hacks]]></category>
		<category><![CDATA[digital picture frame]]></category>
		<category><![CDATA[wifi sniffing]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=45797</guid>
		<description><![CDATA[[AUTUIN] sent in a tip for his wifi sniffing digital picture frame. A soon-to-be-trashed Pentium II laptop was rescued from Free Geek Vancouver. A lot of coffee shops around Vancouver feature local art and free wifi, so [AUTUIN] decided to combine the two. The project is designed to hang on the wall of a cafe [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=45797&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-large wp-image-45798" title="pictureframe" src="http://hackadaycom.files.wordpress.com/2011/06/pictureframe.jpg?w=450&#038;h=268" alt="" width="450" height="268" /></p>
<p>[AUTUIN] sent in a tip for his <a href="http://freegeekvancouver.blogspot.com/2011/06/another-hack-wiretap-picture-frame.html">wifi sniffing digital picture frame</a>.</p>
<p>A soon-to-be-trashed Pentium II laptop was rescued from <a href="http://freegeekvancouver.org/">Free Geek Vancouver</a>. A lot of coffee shops around Vancouver feature local art and free wifi, so [AUTUIN] decided to combine the two. The project is designed to hang on the wall of a cafe and sniff images transmitted on the wireless network &#8211; an invasion of privacy, but as [AUTUIN] says, &#8220;that&#8217;s kind of the point.&#8221;</p>
<p>After gutting the laptop and putting it in a custom picture frame, <a href="http://www.ex-parrot.com/~chris/driftnet/">Driftnet</a>, a program that listens network traffic and picks out images from TCP streams, was installed. [AUTUIN] tested his build with an open wireless connection in his building. The results provided a wonderful narrative that started with pictures from news sites than slowly devolved to pictures from a hot-or-not style website, an online dating site and finally pictures from the inevitable conclusion of that browsing session.</p>
<p>[AUTUIN] is now looking for either a brave or foolish local coffee shop in Vancouver to feature his wifi sniffing picture frame. We think this would be very amusing if we weren&#8217;t using that network, not that we have something to hide or anything.</p>
<br />Filed under: <a href='http://hackaday.com/category/wireless-hacks/'>wireless hacks</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/45797/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/45797/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/45797/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/45797/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/45797/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/45797/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/45797/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/45797/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/45797/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/45797/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/45797/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/45797/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/45797/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/45797/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=45797&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2011/06/13/wifi-sniffing-digital-picture-frame/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">brianbenchoff</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2011/06/pictureframe.jpg?w=450" medium="image">
			<media:title type="html">pictureframe</media:title>
		</media:content>
	</item>
		<item>
		<title>LCD: Replacing CCFL with LEDs</title>
		<link>http://hackaday.com/2011/05/31/lcd-replacing-ccfl-with-leds/</link>
		<comments>http://hackaday.com/2011/05/31/lcd-replacing-ccfl-with-leds/#comments</comments>
		<pubDate>Tue, 31 May 2011 14:18:09 +0000</pubDate>
		<dc:creator>Mike Szczys</dc:creator>
				<category><![CDATA[led hacks]]></category>
		<category><![CDATA[ccfl]]></category>
		<category><![CDATA[digital picture frame]]></category>
		<category><![CDATA[inverter]]></category>
		<category><![CDATA[led backlight]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=44165</guid>
		<description><![CDATA[[Fileark] had the backlight on his digital picture frame go out one day. These are generally Cold Cathode Fluorescent Lamps which require an inverter to source the voltage necessary for proper operation. When they stop working, the inverter is usually to blame. Since that circuit is made up of pretty small surface mount circuitry, he decided to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=44165&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-44167" title="replacing-ccfl-with-led" src="http://hackadaycom.files.wordpress.com/2011/05/replacing-ccfl-with-led.jpg" alt="" width="470" height="264" /></p>
<p>[Fileark] had the backlight on his digital picture frame go out one day. These are generally Cold Cathode Fluorescent Lamps which require an inverter to source the voltage necessary for proper operation. When they stop working, the inverter is usually to blame. Since that circuit is made up of pretty small surface mount circuitry, he decided to <a href="http://filear.com/dnn/Home/tabid/41/EntryId/50/Repairing-broken-LCD-screen-backlight-with-LEDs.aspx">replace the backlight with LEDs</a> rather than repair the inverter.</p>
<p>In the video after the break [Fileark] will walk through the entire project. After snooping around inside the picture frame he sizes up a strip of LEDs on a flexible substrate. The metal retaining bracket that hosts the LCD must be altered to fit the new light source and for that, he&#8217;s included a hacking montage in his video. The final result looks stock and he estimates the screen is around 97% as bright as with the original backlight.</p>
<p>This isn&#8217;t the first time we&#8217;ve seen an LED edge-lit upgrade. <a href="http://hackaday.com/2011/03/04/led-backlight-conversion-using-recycled-ccfl-inverter-parts/">The last one we saw</a> even used a custom PCB to host the LEDs.</p>
<p><span id="more-44165"></span><span style="text-align:center; display: block;"><a href="http://hackaday.com/2011/05/31/lcd-replacing-ccfl-with-leds/"><img src="http://img.youtube.com/vi/HojPTbUlk_o/2.jpg" alt="" /></a></span></p>
<br />Filed under: <a href='http://hackaday.com/category/led-hacks/'>led hacks</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/44165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/44165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/44165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/44165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/44165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/44165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/44165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/44165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/44165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/44165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/44165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/44165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/44165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/44165/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=44165&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2011/05/31/lcd-replacing-ccfl-with-leds/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Mike Szczys</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2011/05/replacing-ccfl-with-led.jpg" medium="image">
			<media:title type="html">replacing-ccfl-with-led</media:title>
		</media:content>
	</item>
		<item>
		<title>Is that some type of new Kindle?</title>
		<link>http://hackaday.com/2010/02/22/is-that-some-type-of-new-kindle/</link>
		<comments>http://hackaday.com/2010/02/22/is-that-some-type-of-new-kindle/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 18:25:54 +0000</pubDate>
		<dc:creator>Mike Szczys</dc:creator>
				<category><![CDATA[misc hacks]]></category>
		<category><![CDATA[digital picture frame]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[reader]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=21900</guid>
		<description><![CDATA[[Mr C Camacho] picked up an inexpensive digital picture frame hoping to hack into it. He hasn&#8217;t had the time to crack open the hardware so that it will do his bidding but he did find a creative way to make it an ebook reader. Using a python script he processes books, creating images of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=21900&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-21901" title="picture-frame-reader" src="http://hackadaycom.files.wordpress.com/2010/02/picture-frame-reader.jpg" alt="" width="470" height="330" /></p>
<p>[Mr C Camacho] picked up an inexpensive digital picture frame hoping to hack into it. He hasn&#8217;t had the time to crack open the hardware so that it will do his bidding but he did find a creative way to make it an ebook reader. Using a python script he processes books, creating images of the pages.</p>
<p>The python script, available after the break, takes free books from <a href="http://www.gutenberg.org/wiki/Main_Page">Project Gutenburg</a> and spits out JPG images. Page turning and bookmarking are not what they ought to be but the process does work. The thought of someone staring at a picture frame on the subway is a bit amusing but we&#8217;re sure that sooner or later someone will ask if it&#8217;s a new version of <a href="http://hackaday.com/2010/01/31/add-a-bluetooth-terminal-to-your-kindle/">the Kindle</a>.</p>
<p><span id="more-21900"></span></p>
<p>Usage explanation from the developer:</p>
<blockquote><p>./process.py book.txt 480 234 16 /usr/share/fonts/truetype/ttf-droid/DroidSansMono.ttf 10 7</p>
<p>param</p>
<p>1   book.txt       the file name<br />
2   480              native X resolution of picture frame<br />
3   234              native Y resolution of picture frame<br />
4   16                Number of vertical lines of text required<br />
5   blah.ttf        full path and name of a ttf font<br />
6   10                font size to use for lines<br />
7   7                  font size for &#8220;page no x&#8221; at bottom of page</p>
<p>you&#8217;ll have to play with it to get it to work right for your size of screen</p>
<p>(its just a hack ;) )<br />
The main thing to get right first is the font size of the width of the screen<br />
from there you can work out the number of lines you can fit&#8230;</p></blockquote>
<p><pre class="brush: python;">#!/usr/bin/python

import pygameimport sys

# ./process.py book.txt 480 234 16 /usr/share/fonts/truetype/ttf-droid/DroidSansMono.ttf 10 7

txtname=sys.argv[1]nativeX=int(sys.argv[2])nativeY=int(sys.argv[3])pagelines=int(sys.argv[4])fontname=sys.argv[5]fontsize=int(sys.argv[6])pagenosize=int(sys.argv[7])

f=open(txtname)

def cleanline(l): l=l.strip('\r') l=l.strip('\n') return l

pygame.init()screen = pygame.display.set_mode((nativeX, nativeY))lines=f.readlines()font = pygame.font.Font(fontname, fontsize)pfont = pygame.font.Font(fontname, pagenosize)

for ln in range(len(lines)/pagelines+1): background = pygame.Surface(screen.get_size()) background = background.convert() background.fill((255, 255, 255))

 for pl in range(16): if (ln*16+pl)&lt;len(lines): line=cleanline(lines[ln*pagelines+pl]) text = font.render(line, 1, (0, 0, 0)) textpos = text.get_rect(x=4,y=pl*(nativeY/pagelines)) background.blit(text, textpos) text=pfont.render(&quot;Page &quot;+str(ln+1),1,(0,0,0)) textpos=text.get_rect(x=8,y=nativeY-pagenosize) background.blit(text,textpos) screen.blit(background, (0, 0)) pygame.display.flip() fn=&quot;page%#05d&quot; % (ln+1) pygame.image.save(background,fn+&quot;.jpg&quot;)

</pre></p>
<br />Filed under: <a href='http://hackaday.com/category/misc-hacks/'>misc hacks</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/21900/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/21900/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/21900/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/21900/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/21900/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/21900/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/21900/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/21900/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/21900/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/21900/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/21900/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/21900/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/21900/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/21900/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=21900&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2010/02/22/is-that-some-type-of-new-kindle/feed/</wfw:commentRss>
		<slash:comments>42</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Mike Szczys</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2010/02/picture-frame-reader.jpg" medium="image">
			<media:title type="html">picture-frame-reader</media:title>
		</media:content>
	</item>
		<item>
		<title>Chumby digital picture frame teardown</title>
		<link>http://hackaday.com/2009/01/20/chumby-digital-picture-frame-teardown/</link>
		<comments>http://hackaday.com/2009/01/20/chumby-digital-picture-frame-teardown/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 04:31:56 +0000</pubDate>
		<dc:creator>Eliot</dc:creator>
				<category><![CDATA[classic hacks]]></category>
		<category><![CDATA[digital cameras hacks]]></category>
		<category><![CDATA[home entertainment hacks]]></category>
		<category><![CDATA[camera]]></category>
		<category><![CDATA[ces]]></category>
		<category><![CDATA[chumby]]></category>
		<category><![CDATA[devkit]]></category>
		<category><![CDATA[digital camera]]></category>
		<category><![CDATA[digital picture frame]]></category>
		<category><![CDATA[dpf]]></category>
		<category><![CDATA[hdk]]></category>
		<category><![CDATA[samsung]]></category>
		<category><![CDATA[stormwind]]></category>
		<category><![CDATA[teardown]]></category>
		<category><![CDATA[usb]]></category>
		<category><![CDATA[widget]]></category>
		<category><![CDATA[wifi]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=8034</guid>
		<description><![CDATA[At this year&#8217;s Consumer Electronics Show, Chumby unveiled their latest prototype. It&#8217;s a network connected digital picture frame that runs Flash widgets. Just like the current Chumby model, they&#8217;re publishing the software and hardware under a license designed to let you hack it. They let us borrow one of their open chassis evaluation kits to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=8034&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-8035" title="overview-1" src="http://hackadaycom.files.wordpress.com/2009/01/overview-1.jpg" alt="overview-1" width="450" height="300" /></p>
<p>At this year&#8217;s Consumer Electronics Show, <a title="chumby internet radio player, digital picture frame, alarm clock - more!" href="http://www.chumby.com/">Chumby</a> unveiled their latest prototype. It&#8217;s a network connected digital picture frame that runs Flash widgets. Just like the current Chumby model, they&#8217;re publishing the software and hardware under a license designed to let you hack it. They let us borrow one of their open chassis evaluation kits to teardown and photograph. We&#8217;ve got more pictures, full specs, and the schematics below.</p>
<p><span id="more-8034"></span></p>
<p><img class="alignnone size-full wp-image-8036" title="boot" src="http://hackadaycom.files.wordpress.com/2009/01/boot.jpg" alt="boot" width="450" height="170" /></p>
<p>The new version has an 800&#215;600 LCD touchpanel. They&#8217;re still using an open source <a title="Linux Hacks - Mahalo" href="http://www.mahalo.com/Linux_hacks#Linux_Hacks">Linux</a> backend, but they&#8217;ve updated the UI. Chumby widgets are now managed on the device. Before, users had to log into the website and then have their chosen widgets pushed down to the Chumby. The software is designed so that it could be a user&#8217;s primary photo management application. It instantly recognizes inserted memory cards and lets users drag and drop photos into the widget playlist. The device integrates seamlessly with PhotoBucket letting you easily upload new galleries. You can send these to other Chumby users (Chums) as well.</p>
<p><img class="alignnone size-full wp-image-8037" title="overview-2" src="http://hackadaycom.files.wordpress.com/2009/01/overview-2.jpg" alt="overview-2" width="450" height="243" /></p>
<p>Keep in mind that this is just an evaluation kit, so it&#8217;s mounted in a generic wooden photo frame.</p>
<p><em><img class="alignnone size-full wp-image-8038" title="small_back" src="http://hackadaycom.files.wordpress.com/2009/01/small_back.jpg" alt="small_back" width="450" height="338" /></em></p>
<p><a href="http://hackadaycom.files.wordpress.com/2009/01/big_back.jpg"><em>Click here for a bigger version</em></a></p>
<p>On the left side are stereo speakers connected to the onboard amplifier. The large orange ribbon at the bottom contains all of the display electronics. The lower connector on the right edge powers the backlight. The upper four wire ribbon is for the touchscreen. The cutout at the top is for the USB <a title="WiFi - Mahalo" href="http://www.mahalo.com/WiFi">WiFi</a> card. The coincell holder is battery backup for the real time clock. There are two control panel buttons along the top.</p>
<p><img class="alignnone size-full wp-image-8040" title="headers" src="http://hackadaycom.files.wordpress.com/2009/01/headers.jpg" alt="headers" width="450" height="210" /></p>
<p>The board includes several headers to make debugging easier. The pins in the lower left provide a serial console (<a href="http://hackadaycom.files.wordpress.com/2009/01/3210605127_ca9b1f9fae.jpg">detail</a>). The larger grouping is the CPU JTAG. Next to that is an MMC port for the initial boot image. The cryptoprocessor also has a JTAG connector.</p>
<p><img class="alignnone size-full wp-image-8043" title="camera" src="http://hackadaycom.files.wordpress.com/2009/01/camera.jpg" alt="camera" width="450" height="100" /></p>
<p>Flipping the board over you can see the optional video camera daughter card.</p>
<p><img class="alignnone size-full wp-image-8044" title="stamp" src="http://hackadaycom.files.wordpress.com/2009/01/stamp.jpg" alt="stamp" width="450" height="100" /></p>
<p>The silkscreen next to the RAM on the front side says this board version is Stormwind v8.0 revC.</p>
<p><em><img class="alignnone size-full wp-image-8045" title="small_front" src="http://hackadaycom.files.wordpress.com/2009/01/small_front.jpg" alt="small_front" width="450" height="333" /></em></p>
<p><a href="http://hackadaycom.files.wordpress.com/2009/01/big_front.jpg"><em>Click here for a bigger version</em></a></p>
<p>The front side of the board is where most of the interesting bits are. The reset and user buttons are located in the upper left. Next to that is an SD card socket and a CF card socket. The power jack and microphone are on the upper right corner along with the amplifier circuitry. Below the CF is a TSOP socket holding a Hynix HY27UF081G2A-TP memory device. Under that is the main processor, a <a href="http://www.samsung.com/global/business/semiconductor/productInfo.do?fmly_id=229&amp;partnum=S3C6410">Samsung S3C6410</a>. It&#8217;s a 533Mhz ARM11 CPU. To the right of the chip, are two Hynix RAM chips. This new Chumby can be built with 2-8GB of storage. Below that is the Novatek NT39703 display driver. The crypto processor is left of there. The headphone jack is located in the lower right corner of the board. The board&#8217;s lower edge features three USB ports. A USB WiFi card is plugged into one of them. We assume not integrating WiFi means they don&#8217;t have to deal with FCC approval; they just use an approved card. The <a title="USB - Mahalo" href="http://www.mahalo.com/USB">USB</a> and memory cards are controlled by the Alcor Micro AU6350 located next to the camera module.</p>
<p>For those looking for even more detail, here are the full schematics:</p>
<p><strong>IMPORTANT:</strong> The materials contained in this download are subject to the <a title="chumby › chumby hdk license agreement" href="http://www.chumby.com/developers/agreement">Chumby HDK License Agreement</a> contained in the download. By using the Chumby materials in this download, you are indicating that you have read and understood, and agree to be bound by, that agreement.</p>
<p><a href="http://blog.mahalo.com/hackaday/chumby/chumby.stormwind.hdk.zip">Download the Chumby Stormwind HDK</a></p>
<br />Posted in classic hacks, digital cameras hacks, home entertainment hacks  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/8034/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/8034/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/8034/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/8034/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/8034/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/8034/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/8034/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/8034/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/8034/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/8034/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/8034/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/8034/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/8034/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/8034/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=8034&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2009/01/20/chumby-digital-picture-frame-teardown/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">RobotSkirts</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/overview-1.jpg" medium="image">
			<media:title type="html">overview-1</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/boot.jpg" medium="image">
			<media:title type="html">boot</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/overview-2.jpg" medium="image">
			<media:title type="html">overview-2</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/small_back.jpg" medium="image">
			<media:title type="html">small_back</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/headers.jpg" medium="image">
			<media:title type="html">headers</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/camera.jpg" medium="image">
			<media:title type="html">camera</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/stamp.jpg" medium="image">
			<media:title type="html">stamp</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/small_front.jpg" medium="image">
			<media:title type="html">small_front</media:title>
		</media:content>
	</item>
		<item>
		<title>How-to: Prepare your Eagle designs for manufacture</title>
		<link>http://hackaday.com/2009/01/15/how-to-prepare-your-eagle-designs-for-manufacture/</link>
		<comments>http://hackaday.com/2009/01/15/how-to-prepare-your-eagle-designs-for-manufacture/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 00:11:39 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[how-to]]></category>
		<category><![CDATA[parts]]></category>
		<category><![CDATA[cadsofteagle]]></category>
		<category><![CDATA[circuit boards]]></category>
		<category><![CDATA[digital picture frame]]></category>
		<category><![CDATA[diy pcb]]></category>
		<category><![CDATA[eagle]]></category>
		<category><![CDATA[electronics]]></category>
		<category><![CDATA[gerbers]]></category>
		<category><![CDATA[pcb]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=7678</guid>
		<description><![CDATA[Cadsoft Eagle is a multi-platform freeware circuit layout program. Lots of open source hardware is designed in Eagle, and it&#8217;s become a hobbyist favorite. We use it for all of our hardware designs. There are several ways to turn an Eagle design into an actual printed circuit board (PCB). We&#8217;ll show you how to save [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=7678&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-7596" title="back" src="http://hackadaycom.files.wordpress.com/2009/01/back.jpg" alt="back" width="450" height="290" /></p>
<p><a href="http://www.cadsoft.de">Cadsoft Eagle</a> is a multi-platform freeware circuit layout program. Lots of open source hardware is designed in Eagle, and it&#8217;s become a hobbyist favorite. We use it for all of our <a href="http://hackaday.com/category/how-to/">hardware designs</a>.</p>
<p>There are several ways to turn an Eagle design into an actual <a href="http://en.wikipedia.org/wiki/Printed_circuit_board">printed circuit board</a> (PCB). We&#8217;ll show you how to save Eagle designs as industry-standard gerber files that are accepted by any PCB manufacturer. You can use the gerbers to order a single prototype, or a full panel.</p>
<p><span id="more-7678"></span><strong>Introduction</strong></p>
<p>Toner transfer is the beginners&#8217; favorite way to make a PCB because the investment in materials is minimal. We&#8217;ve <a href="http://hackaday.com/2008/07/28/how-to-etch-a-single-sided-pcb/">covered toner transfer before</a>. Most PCBs in our <a href="http://hackaday.com/category/how-to/">how-tos</a> are made with the <a href="http://www.ladyada.net/library/pcb/inhouseetch.html">photo-resist process</a>.  The photo process makes nice boards, but requires a bit of equipment; sensitized boards, developer, and an ultra-violet light source.</p>
<p>Some board manufacturers, like <a href="http://www.olimex.com/pcb/index.html">Olimex</a>, make PCBs directly from Eagle .brd files. Most require a minimum order of one <a href="http://en.wikipedia.org/wiki/Eurocard_(printed_circuit_board)">eurocard-sized</a> PCB (100mmx160mm). Good if you need a few boards, expensive for a single experimental prototype.</p>
<p>The cheapest option is to submit <a href="http://en.wikipedia.org/wiki/Gerber_File">gerber files</a> like the professionals. Any PCB manufacturer will accept gerber formatted design files. <a href="http://www.goldphoenixpcb.biz/index.php">Gold Pheonix</a> sells 155square inches of PCB panel for $110. If you&#8217;re looking for something smaller, services like <a href="http://www.batchpcb.com/">BatchPCB</a> and <a href="http://www.pcb-pool.com/ppuk/info.html">PCB-Pool</a> combine small orders and submit them as a full panel. Either way, you&#8217;ll submit gerber files to the board house. This is the process we describe.</p>
<p><strong>Process overview</strong></p>
<ul>
<li>Prepare the design.</li>
<li>Create gerbers, generic files accepted by any PCB fab house.</li>
<li>Verify that the gerbers are correct.</li>
<li>Send the design for production.</li>
</ul>
<p><strong>Prepare the design</strong></p>
<p>We&#8217;re going to walk you through the process of preparing our <a href="http://hackaday.com/2009/01/08/how-to-digital-picture-frame-100-diy/">digital picture frame</a> PCB for production. This design requires a double-sided board with fairly small traces.</p>
<p><img class="alignnone size-full wp-image-7792" title="eagle1" src="http://hackadaycom.files.wordpress.com/2009/01/eagle1.png" alt="eagle1" width="450" height="355" /></p>
<p>Download the <a href="http://blog.mahalo.com/hackaday/howto/dpf.v1.zip">project archive</a> (ZIP) from last week. Open the .brd file with the freeware version of <a href="http://www.cadsoft.de/freeware.htm">Cadsoft Eagle</a>.</p>
<p><img class="alignnone size-full wp-image-7793" title="eagle2" src="http://hackadaycom.files.wordpress.com/2009/01/eagle2.png" alt="eagle2" width="451" height="276" /></p>
<p>The ground fill is empty when the file opens. Press the ratsnest button (<em>or Tools-&gt;Ratsnest</em>) to fill in the empty polygons.</p>
<p><img class="alignnone size-full wp-image-7799" title="rules" src="http://hackadaycom.files.wordpress.com/2009/01/rules.png" alt="rules" width="450" height="225" /></p>
<p>Board manufacturers publish specifications outlining their production capabilities, such as the smallest possible traces, spacing, and drill size. BatchPCB has 8mil <a href="http://www.batchpcb.com/index.php/Faq#What%20are%20the%20PCB%20rules%20and%20limits">minimum traces and spacing</a>, and 20mil minimum holes.</p>
<p><img class="alignnone size-full wp-image-7794" title="pcb-justsayno" src="http://hackadaycom.files.wordpress.com/2009/01/pcb-justsayno.png" alt="pcb-justsayno" width="449" height="290" /></p>
<p>Don&#8217;t torture the manufacturer. Just because they advertise 8mils, doesn&#8217;t mean it&#8217;s safe to make every trace 8mils. Slightly larger-than-minimum tolerances will reduce <a href="http://www.sparkfun.com/commerce/tutorial_info.php?tutorials_id=115">manufacturing errors</a>. The digital picture frame has 8mil traces around the tiny <a href="http://www.sparkfun.com/commerce/product_info.php?products_id=570">LCD connector</a>, shown above. The traces are 8mils only until there&#8217;s enough clearance to use 10mil traces.</p>
<p><img class="alignnone size-full wp-image-7796" title="drc2" src="http://hackadaycom.files.wordpress.com/2009/01/drc2.png" alt="drc2" width="450" height="314" /></p>
<p>Use Eagle&#8217;s <em>design rule check</em> to make sure your board doesn&#8217;t exceed the manufacturer&#8217;s production abilities. Download the <a href="http://www.sparkfun.com/tutorial/Eagle-DFM/SparkFun.dru">SparkFun design rules</a> (DRU) for BatchPCB, or the Olimex <a href="http://www.olimex.com/pcb/8mils.dru">8mil</a> (DRU) or <a href="http://www.olimex.com/pcb/10mils.dru">10mil</a> (DRU) design rules.  Click the DRC icon (or, <em>Tools-&gt;DRC</em>) and load the design rule file. Eagle analyzes the design and highlights any areas that violate the design rule parameters.</p>
<p>Correct any errors. Here, the spacing between traces is too close. Sometimes the spacing on a part footprint is too small to be manufactured. Sparkfun&#8217;s default footprint for the  Nokia LCD connector had pad spacing less than 8mils. We <a href="http://www.sparkfun.com/commerce/tutorial_info.php?tutorials_id=110">edited the part library</a> to make the pads smaller, and the separation larger.</p>
<p><img class="alignnone size-full wp-image-7797" title="smash" src="http://hackadaycom.files.wordpress.com/2009/01/smash.png" alt="smash" width="448" height="269" /></p>
<p>It&#8217;s helpful to include part numbers on the printed silkscreen layer. BatchPCB prints a silkscreen on both sides. Be sure to see what your board house offers, some charge extra. Use the smash tool to unlink obscured labels, then move them to a better location.</p>
<p><strong>Create gerber files<br />
</strong></p>
<p>Gerber files are the <a href="http://en.wikipedia.org/wiki/Portable_Document_Format">PDFs</a> of PCBs. Gerber files describe a PCB exactly as it should appear, agnostic of the display hardware. It&#8217;s a final production format that isn&#8217;t intended to be edited. We created our gerber files in Eagle using the procedure outlined in <a href="http://www.sparkfun.com/commerce/tutorial_info.php?tutorials_id=109">SparkFun&#8217;s Eagle tutorial</a>.</p>
<p><img class="alignnone size-full wp-image-7800" title="cam1" src="http://hackadaycom.files.wordpress.com/2009/01/cam1.png" alt="cam1" width="450" height="313" /></p>
<p>The Eagle CAM processor writes gerber files, open it from the menu under <em>File-&gt;CAM processor</em>.</p>
<p>SparkFun has a <a href="http://www.sparkfun.com/tutorial/BeginningEmbedded/9-EaglePCBs/sfe-gerb274x.cam">script</a> (CAM) that configures the CAM processor to make gerber files. Load the CAM script using <em>File-&gt;Open-&gt;Job&#8230;</em></p>
<p><img class="alignnone size-full wp-image-7801" title="cam2" src="http://hackadaycom.files.wordpress.com/2009/01/cam2.png" alt="cam2" width="450" height="358" /></p>
<p>By default, SparkFun&#8217;s silkscreen configuration only includes the <em>place</em> layer. Our parts usually have labels on the <em>names</em> and <em>docu</em> layers, activate these layers on the top and bottom silkscreen tabs to add them to the output.</p>
<p>Click <em>Process Job</em> to create the gerber files.</p>
<p><img class="alignnone size-full wp-image-7803" title="files2" src="http://hackadaycom.files.wordpress.com/2009/01/files2.png" alt="files2" width="363" height="221" /></p>
<p>The CAM processor creates seven files that we need.</p>
<ul>
<li>Top and bottom copper (.GTL, .GBL)</li>
<li>Top and bottom solder mask (.GTS, .GBS)</li>
<li>Top and bottom silkscreen (.GTO, .GBO)</li>
<li>Drill file, 2.4 leading (.TXT)</li>
</ul>
<p><strong>Verify that the gerbers are correct<br />
</strong></p>
<p>Verify the CAM output in a <a href="http://www.mitsi.com/PCB/free%20viewers.htm">gerber viewer</a> to make sure everything was positioned correctly. We followed SparkFun&#8217;s suggestion and used <a href="http://www.viewplot.com/">Viewplot</a>.</p>
<p><img class="alignnone size-full wp-image-7806" title="24leading" src="http://hackadaycom.files.wordpress.com/2009/01/24leading.png" alt="24leading" width="450" height="305" /></p>
<p>Load the seven files with Viewplot. <em>Be sure to specify the drill file type as 2.4 leading.</em></p>
<p><img class="alignnone size-full wp-image-7807" title="viewplot1" src="http://hackadaycom.files.wordpress.com/2009/01/viewplot1.png" alt="viewplot1" width="450" height="350" /></p>
<p>Check for errant vias, mirrored layers, and alignment. We&#8217;ve noticed that text added to the silkscreen layer is usually bigger than it was in Eagle. Correct any problems and run the CAM processor again.</p>
<p>When everything looks good, the board is ready for production.</p>
<p><strong>Send the design for production</strong></p>
<p><a href="http://en.wikipedia.org/wiki/ZIP_(file_format)">Zip</a> the seven gerber files and submit them to the PCB fab house. <em>Remember to tell them that the drill file format is 2.4 leading.</em><strong><br />
</strong></p>
<p>BatchPCB is a pooled panel service that sells space by the square inch. Other manufacturers and batch services require you to order <em>at least</em> a full eurocard. We use BatchPCB for prototyping because we never need the extra board space of a full eurocard, and we don&#8217;t mind the average 20day wait.</p>
<p>At BatchPCB, $2.50/square inch buys a PCB with silkscreen on both sides, unlimited vias, and a huge range of drill sizes; stuff that usually costs extra. BatchPCB&#8217;s minimum traces, spacing, and drill are similar to other prototyping services. There&#8217;s a $10 <em>per order </em>setup fee, but an order can include multiple designs. Shipping, even internationally, isn&#8217;t outrageous.</p>
<p>If you need a lot of the same board, look at Gold Phoenix. They manufacture boards for BatchPCB. A 100 square inch panel is $100, a 155 square inch panel is $110.</p>
<p><img class="alignnone size-full wp-image-7789" title="bpcb11" src="http://hackadaycom.files.wordpress.com/2009/01/bpcb11.png" alt="bpcb11" width="450" height="229" /></p>
<p>Create an account at <a href="http://www.batchpcb.com/">BatchPCB</a>. Click upload to add a new design. Name the design and upload the zip archive containing the 7 gerber files.</p>
<p><img class="alignnone size-full wp-image-7786" title="bpcb2" src="http://hackadaycom.files.wordpress.com/2009/01/bpcb2.png" alt="bpcb2" width="450" height="276" /></p>
<p>Verify that the gerber layers were successfully detected.</p>
<p><img class="alignnone size-full wp-image-7787" title="bpcb3" src="http://hackadaycom.files.wordpress.com/2009/01/bpcb3.png" alt="bpcb3" width="451" height="223" /></p>
<p>Verify that the correct size was detected.</p>
<p><img class="alignnone size-full wp-image-7788" title="bpcb4" src="http://hackadaycom.files.wordpress.com/2009/01/bpcb4.png" alt="bpcb4" width="450" height="287" /></p>
<p>The BatchPCB rule check &#8216;robot&#8217; will verify that your design meets production standards, and send an e-mail in a few minutes. Since we ran our own rule check prior to sending the design, we can expect that everything will be fine. Click continue and you&#8217;ll have the option to order the board. For more help, see the BatchPCB <a href="http://www.batchpcb.com/index.php/Help">help</a> and <a href="http://www.sparkfun.com/cgi-bin/phpbb/viewforum.php?f=16">support forum</a>.</p>
<p><strong>Receive your boards</strong></p>
<p><strong><img class="alignnone size-full wp-image-7862" title="boards" src="http://hackadaycom.files.wordpress.com/2009/01/boards.jpg" alt="boards" width="450" height="213" /><br />
</strong></p>
<p>Boards arrive from BatchPCB in about 20 days. Check the boards for obvious errors before soldering. Some manufacturers test PCBs, BatchPCB doesn&#8217;t. We&#8217;ve ordered PCBs from two of the popular hobbyist board houses, Olimex and BatchPCB, and all the boards have been satisfactory.</p>
<p><strong>Taking it further</strong></p>
<p>It&#8217;s easy to order professional PCBs using gerber files. Why not build that awesome DIY project you&#8217;ve been putting off?</p>
<p>What has been your experience with PCB fab houses?</p>
<p>&nbsp;</p>
<p>UPDATE: the files have been moved! <a href="http://www.whereisian.com/files/dpf.v1.zip">find them here</a>.</p>
<br />Posted in how-to, parts  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/7678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/7678/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/7678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/7678/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/7678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/7678/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/7678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/7678/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/7678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/7678/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/7678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/7678/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/7678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/7678/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=7678&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2009/01/15/how-to-prepare-your-eagle-designs-for-manufacture/feed/</wfw:commentRss>
		<slash:comments>39</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Ian</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/back.jpg" medium="image">
			<media:title type="html">back</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/eagle1.png" medium="image">
			<media:title type="html">eagle1</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/eagle2.png" medium="image">
			<media:title type="html">eagle2</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/rules.png" medium="image">
			<media:title type="html">rules</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/pcb-justsayno.png" medium="image">
			<media:title type="html">pcb-justsayno</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/drc2.png" medium="image">
			<media:title type="html">drc2</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/smash.png" medium="image">
			<media:title type="html">smash</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/cam1.png" medium="image">
			<media:title type="html">cam1</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/cam2.png" medium="image">
			<media:title type="html">cam2</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/files2.png" medium="image">
			<media:title type="html">files2</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/24leading.png" medium="image">
			<media:title type="html">24leading</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/viewplot1.png" medium="image">
			<media:title type="html">viewplot1</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/bpcb11.png" medium="image">
			<media:title type="html">bpcb11</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/bpcb2.png" medium="image">
			<media:title type="html">bpcb2</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/bpcb3.png" medium="image">
			<media:title type="html">bpcb3</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/bpcb4.png" medium="image">
			<media:title type="html">bpcb4</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/boards.jpg" medium="image">
			<media:title type="html">boards</media:title>
		</media:content>
	</item>
		<item>
		<title>How-to: Digital picture frame, 100% DIY</title>
		<link>http://hackaday.com/2009/01/08/how-to-digital-picture-frame-100-diy/</link>
		<comments>http://hackaday.com/2009/01/08/how-to-digital-picture-frame-100-diy/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 00:07:04 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[home hacks]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[digital photo frame]]></category>
		<category><![CDATA[digital picture frame]]></category>
		<category><![CDATA[diy electronics]]></category>
		<category><![CDATA[DIY Projects]]></category>
		<category><![CDATA[electronics]]></category>
		<category><![CDATA[lcd]]></category>
		<category><![CDATA[microcontroller]]></category>
		<category><![CDATA[pic]]></category>
		<category><![CDATA[screen]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=7561</guid>
		<description><![CDATA[There are a ton of digital picture frame tutorials out there. Most are old laptops with crafty case reconfigurations that fit a photo frame profile. We set out to build a 100% DIY, scratch-built digital picture frame. Our frame has a 12bit color LCD, gigabytes of storage on common, FAT-formatted microSD cards, and you can [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=7561&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-7597" title="frontii" src="http://hackadaycom.files.wordpress.com/2009/01/frontii.jpg" alt="frontii" width="450" height="296" /></p>
<p>There are a ton of <a href="http://www.instructables.com/id/Digital_Picture_Frames/">digital picture frame tutorials</a> out there. Most are old laptops with crafty case reconfigurations that fit a photo frame profile.</p>
<p>We set out to build a 100% DIY, scratch-built digital picture frame. Our frame has a 12bit color LCD, gigabytes of storage on common, FAT-formatted microSD cards, and you can build it at home. We&#8217;ve got the details below.</p>
<p><span id="more-7561"></span><strong>Concept overview</strong></p>
<p><img class="alignnone size-full wp-image-7593" title="overview" src="http://hackadaycom.files.wordpress.com/2009/01/overview.jpg" alt="overview" width="450" height="272" /></p>
<p>The bitmap images are stored on common, PC-readable microSD cards. A PIC microcontroller reads the images over a three wire SPI bus. The PIC processes the image data and writes it to a color LCD over a unidirectional, 9bit SPI-like bus. A configuration file on the SD card defines the delay between images.</p>
<p><strong>Hardware</strong></p>
<p><strong><img class="alignnone size-full wp-image-7571" title="cct450" src="http://hackadaycom.files.wordpress.com/2009/01/cct450.png" alt="cct450" width="450" height="181" /><br />
</strong></p>
<p><a href="http://hackadaycom.files.wordpress.com/2009/01/cct.png">Click for a full size schematic image</a> (PNG). The circuit and PCB are designed using the freeware version of <a href="http://www.cadsoft.de/">Cadsoft Eagle</a>. All the files for this project are included in the project archive linked at the end of the article.</p>
<p><img class="alignnone size-full wp-image-7596" title="back" src="http://hackadaycom.files.wordpress.com/2009/01/back.jpg" alt="back" width="450" height="290" /></p>
<p><em>Microcontroller</em></p>
<p>We used a Microchip <a href="http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en026374">PIC24FJ64GA002</a> 28pin SOIC microcontroller (IC1) in this project. We really like this chip because the peripheral pin select feature lets us put important features on the pins we want; this gives a smaller, simpler, more compact PCB. Each power pin has a 0.1uF bypass capacitor to ground (C1,2). The internal 2.5volt regulator requires a 10uF tantalum capacitor (C12). The chip is programmed through a five pin header, SV1. R1 is a pull-up resistor for the MCLR function on pin 1. Read more about this chip in our <a href="http://hackaday.com/2008/09/18/web-server-on-a-business-card-part-1/">PIC24F introduction</a>.</p>
<p>A 32.768kHz crystal (Q1) and two 27pF capacitors (C10,11) provide an oscillator for the real-time clock calendar (RTCC). These parts are optional, the initial firmware doesn&#8217;t use them. The RTCC could be used as part of a function that superimposes the current time on the screen. Buttons connected to the programming header could be used to set the time.</p>
<p><em>SD card</em></p>
<p><a href="http://en.wikipedia.org/wiki/MicroSD">MicroSD</a> cards are completely compatible with regular SD cards, microSD cards can be used in an SD card reader/writer with an adapter. We <a href="http://hackaday.com/2008/10/06/parts-microsd-memory-card-holders/">tested several microSD card holders</a>, and settled on one from SparkFun Electronics. The microSD card requires a bypass capacitor between the power pin and ground (C3). An LED indicates microSD read activity, but its also useful for general debugging (LED1, R2).</p>
<p><em>Color LCD 128&#215;128 Nokia knock-off</em></p>
<p>This project is designed around <a href="http://www.sparkfun.com/commerce/product_info.php?products_id=569">SparkFun&#8217;s $20 color LCD panel</a>. The LCD logic runs at 3.3volts and requires a decoupling capacitor (C4). The LED backlight requires a separate 7volt supply, and appears to have an internal current limiter because example designs don&#8217;t use external resistors.</p>
<p>The LCD has a separate input for the 3.3volt display supply. Many report noise in the display if this voltage isn&#8217;t clean. We used a ferrite bead (L1) and 0.1uF capacitor (C5) to filter the supply, and haven&#8217;t experienced any problems. This even worked on a dirty home-etched prototype. The ferrite bead type isn&#8217;t important, we used one left over from our <a href="http://hackaday.com/2008/09/25/web-server-on-a-business-card-part-2">tiny web server project</a>.</p>
<p>The small connector is easy to solder on a professional board with a solder mask, but buy several as insurance. SparkFun has a PCB footprint for this part in their <a href="http://www.opencircuits.com/SFE_Footprint_Library_Eagle">Eagle parts library</a>, but the spacing between the pads is smaller than <a href="http://www.olimex.com/pcb/">Olimex</a> or <a href="http://www.batchpcb.com/">BatchPCB</a> will manufacture. We fudged it by decreasing the pad size to get more space between.  Don&#8217;t depend on the connector to hold the LCD in place, use tape to hold it down. We used sticky-tack to attach the LCD temporarily.</p>
<p>We prototyped an LCD carrier board prior to sending the final design for manufacture. We recommend against using a ground fill under the connector without a solder mask.</p>
<p><em>Power supply</em></p>
<p>A 3.3volt supply, provided by an LD1117S33 (IC2), powers the PIC, microSD card, LCD logic, and LCD display. IC2 requires a 0.1uF bypass capacitor (C6) on the supply side, and a 10uF capacitor (C13) on the output. We used the same tantalum capacitor that we used for the PIC internal regulator.</p>
<p>The LCD backlight is powered by an LM317 adjustable regulator (IC3) configured to 7volts with 240 (R5) and 1100 (R6) ohm resistors. C7 and C8 are 0.1uF bypass capacitors for the LM317.</p>
<p>J1 is a SMD power jack for a common <a href="http://en.wikipedia.org/wiki/DC_connector">2.1mm DC barrel plug</a>. C11 is a 10uF electrolytic capacitor that smooths any lag in the supply voltage. C11 has a maximum 16volt input rating, so the supply voltage is best kept under 12volts. 9-12 volts is probably the idea power supply range.</p>
<p><strong>PCB</strong></p>
<p><strong><img class="alignnone size-full wp-image-7589" title="board4501" src="http://hackadaycom.files.wordpress.com/2009/01/board4501.png" alt="board4501" width="451" height="328" /><br />
</strong></p>
<p><a href="http://hackadaycom.files.wordpress.com/2009/01/board1.png">Click for a full size placement diagram</a> (PNG). L1, C5, and the LCD are on the opposite side. We can&#8217;t prototype two-sided boards in mom&#8217;s basement, so we sent this design to <a href="http://www.batchpcb.com/">BatchPCB</a>. Next week we&#8217;ll show you how we did it.<strong><br />
</strong></p>
<p><em>Partslist</em></p>
<table border="0">
<tbody>
<tr>
<td><strong>Part</strong></td>
<td><strong>Description</strong></td>
</tr>
<tr>
<td>IC1</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?qs=V/yyTCAHA4D/h5r3CRQDtA==">PIC 24FJ64GA002</a> (SOIC)</td>
</tr>
<tr>
<td>IC2</td>
<td><a href="https://www.mouser.com/Search/ProductDetail.aspx?R=LD1117S33CTRvirtualkey51120000virtualkey511-LD1117S33C">LD1117S33</a> 3.3volt regulator (SOT223)</td>
</tr>
<tr>
<td>IC3</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?R=LM317MDCYRvirtualkey59500000virtualkey595-LM317MDCYR">LM317 adjustable regulator</a> (SOT223)</td>
</tr>
<tr>
<td>U$1</td>
<td><a href="http://www.sparkfun.com/commerce/product_info.php?products_id=569">Color LCD 128&#215;128 Nokia knock-off<br />
</a></td>
</tr>
<tr>
<td>-</td>
<td><a href="http://www.sparkfun.com/commerce/product_info.php?products_id=570">Nokia knock-off connector<br />
</a></td>
</tr>
<tr>
<td>C1-8</td>
<td><a href="https://www.mouser.com/Search/ProductDetail.aspx?R=C0805C104M5RACTUvirtualkey64600000virtualkey80-C0805C104M5R">0.1uF capacitor</a> (0805)</td>
</tr>
<tr>
<td>C10,11</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?qs=0ZUpllj3bsbA9A7Pajx4jA%3d%3d">27pF capacitor</a> (0805)</td>
</tr>
<tr>
<td>C12,13</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?R=293D106X96R3A2TE3virtualkey61320000virtualkey74-293D106X96R3A2TE3">10uF tantalum capacitor</a> (SMCA)</td>
</tr>
<tr>
<td>C14</td>
<td><a href="https://www.mouser.com/Search/ProductDetail.aspx?R=UWF1C100MCL1GBvirtualkey64700000virtualkey647-UWF1C100MCL1GB">10uF electrolytic capacitor</a> (SMD)</td>
</tr>
<tr>
<td>L1</td>
<td><a href="https://www.mouser.com/Search/ProductDetail.aspx?R=BLM21BB600SN1Dvirtualkey64800000virtualkey81-BLM21BB600SN1D">ferrite bead</a> (0805)</td>
</tr>
<tr>
<td>LED1</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?qs=7JStj%2fjQ2SElGv%2fp7IzKlg%3d%3d">LED</a> (0805)</td>
</tr>
<tr>
<td>Q1</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?R=CM200S-32.768KDZF-UTvirtualkey69500000virtualkey695-CM200S-327KF-U">32.768kHz crystal</a></td>
</tr>
<tr>
<td>R1</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?qs=jBethxrBxZb5NLDetw123g%3d%3d">2000 ohm resistor</a> (0805)</td>
</tr>
<tr>
<td>R2</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?qs=2BMLUTrrT4P7Xm58YbKmPg==">390 ohm resistor</a> (0805)</td>
</tr>
<tr>
<td>R5</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?qs=B6sMDe4C%252beDvUrZZzlhhcA%3d%3d">240 ohm resistor </a>(0805)</td>
</tr>
<tr>
<td>R6</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?qs=DZvKvnD5UYWyFJjgnPvJ4g%3d%3d">1100 ohm resistor</a> (0805)</td>
</tr>
<tr>
<td>SD1</td>
<td><a href="http://www.sparkfun.com/commerce/product_info.php?products_id=127">microSD card holder</a></td>
</tr>
<tr>
<td>J1</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?qs=b2tC%2fwvzm2TxaPjSsb%252bCzQ%3d%3d">2.1mm power jack</a> (SMD)</td>
</tr>
<tr>
<td>SV1</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?R=4-103329-0virtualkey57100000virtualkey571-41033290">0.1” male pin header, right angle</a></td>
</tr>
</tbody>
</table>
<p><strong>Firmware</strong></p>
<p>The firmware is written in C using the free demonstration version of the <a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;nodeId=1406&amp;dDocName=en010065">PIC C30 compiler</a>. Learn all about working with this PIC in our <a href="http://hackaday.com/2008/09/18/web-server-on-a-business-card-part-1/">introduction to the PIC 24F series</a>. The firmware is included in the project archive at the end of the article.</p>
<p><em>FAT12/16/32 disk library</em></p>
<p><a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;nodeId=1824&amp;appnote=en532040">Microchip&#8217;s FAT 12/16/32 library</a> gives us easy access to files stored on SD cards. We gave a detailed description of this library in our <a href="http://hackaday.com/2008/09/25/web-server-on-a-business-card-part-2">web server on a business card project</a>. If you&#8217;re having trouble reading a card with the library, check that it was formatted in a digital camera or using <a href="http://panasonic.jp/support/global/cs/sd/download/sd_formatter.html">Panasonic&#8217;s SD card formatter</a>.</p>
<p><em>Nokia 6100 LCD driver</em></p>
<p>SparkFun has a <a href="http://www.sparkfun.com/Code/Nokia_LCD_driver.zip">basic 8bit color driver</a> (ZIP) for the Nokia 6100. We ported it to the PIC, and updated it for the 2byte-per-pixel <a href="http://www.idcomm.com/personal/lorenblaney/sparkfun.html">12bit color mode</a>. With a small amount of added complexity, the pixel write rate could easily be increased by using a different 12bit mode that delivers two pixels using 3 bytes.</p>
<p>The LCD uses a 9bit protocol, one bit more than most SPI hardware will handle. The first bit tells the LCD whether the next 8bits are data or a command. On the PIC 24F it&#8217;s impossible to manually bang in the first bit, and then use the SPI peripheral to send the remaining 8bits. We lose direct control of the pins when hardware SPI is enabled. The data entry has to be completely bit-banged, which dramatically reduces the screen refresh rate.</p>
<p><em>Reading Bitmaps</em></p>
<p>There are a ton of <a href="http://en.wikipedia.org/wiki/Windows_bitmap">bitmap formats</a>.  Windows compatibility keeps everyone using the ancient <a href="http://en.wikipedia.org/wiki/Windows_bitmap#Bitmap_information_.28DIB_header.29">Windows v3 format</a>. We created two C structs to read the V3 bitmap data.</p>
<table border="0">
<tbody>
<tr>
<td><strong>Offset</strong></td>
<td><strong>Bytes</strong></td>
<td><strong>Bitmap file header</strong></td>
</tr>
<tr>
<td>0</td>
<td>2</td>
<td>Always 0&#215;42 0x4D (hex for BM)</td>
</tr>
<tr>
<td>2</td>
<td>4</td>
<td>File size (bytes)</td>
</tr>
<tr>
<td>6</td>
<td>2</td>
<td>Reserved, ignored</td>
</tr>
<tr>
<td>8</td>
<td>2</td>
<td>Reserved, ignored</td>
</tr>
<tr>
<td>10</td>
<td>4</td>
<td>Location in file of the first bitmap data</td>
</tr>
</tbody>
</table>
<p>Bitmap files start with a 14byte file header. The first two bytes are the letters &#8216;BM&#8217;, indicating a bitmap.  If the first two bytes are correct, the firmware loads the information header. The last four bytes indicate the beginning of bitmap data, but the current firmware just assumes it will begin at the end of the headers.</p>
<table border="0">
<tbody>
<tr>
<td><strong>Offset</strong></td>
<td><strong>Bytes</strong></td>
<td><strong>Bitmap information header</strong></td>
</tr>
<tr>
<td>14</td>
<td>4</td>
<td>Length of bitmap information header (40bytes for Windows V3 bitmaps)</td>
</tr>
<tr>
<td>18</td>
<td>4</td>
<td>Width (pixels)</td>
</tr>
<tr>
<td>22</td>
<td>4</td>
<td>Height (pixels)</td>
</tr>
<tr>
<td>26</td>
<td>2</td>
<td>Color planes, always 1</td>
</tr>
<tr>
<td>28</td>
<td>2</td>
<td>Color bits per pixel (1, 4, 8, 16, 24 and 32)</td>
</tr>
<tr>
<td>30</td>
<td>4</td>
<td>Compression method, we only read uncompressed (type 0)</td>
</tr>
<tr>
<td>34</td>
<td>4</td>
<td>Image data length</td>
</tr>
<tr>
<td>38</td>
<td>4</td>
<td>Horizontal resolution (pixels per meter)</td>
</tr>
<tr>
<td>42</td>
<td>4</td>
<td>Vertical resolution (pixel per meter)</td>
</tr>
<tr>
<td>46</td>
<td>4</td>
<td>Number of colors, ignored.</td>
</tr>
<tr>
<td>50</td>
<td>4</td>
<td>Number of important colors, ignored.</td>
</tr>
</tbody>
</table>
<p>A Windows V3 bitmap information header is 40bytes long. The firmware verifies that the header length (offset 14) is 40, indicating a V3 bitmap. If the width (132), height (132), color depth (24), and compression (0) all check out, the image data is processed and output to the screen.</p>
<table border="0">
<tbody>
<tr>
<td><strong>Offset</strong></td>
<td><strong>Bytes</strong></td>
<td><strong>24bit image bitmap data</strong></td>
</tr>
<tr>
<td>54+(3n)</td>
<td>1</td>
<td>pixel n red value</td>
</tr>
<tr>
<td>54+(3n+1)</td>
<td>1</td>
<td>pixel n green value</td>
</tr>
<tr>
<td>54+(3n+2)</td>
<td>1</td>
<td>pixel n blue value</td>
</tr>
</tbody>
</table>
<p>Bitmap images have uncompressed, 1:1 representations of pixel data stored in three byte sequences.  The data starts at the lower right-hand corner of the image; first the red value, then green and blue. Wikipedia has a <a href="http://en.wikipedia.org/wiki/Windows_bitmap#Example_of_a_2x2_Pixel.2C_24-Bit_Bitmap">complete bitmap walk through</a>.</p>
<p>If the color depth of a bitmap image (24bits) is greater than the LCD can display (12bits), we need to discard the least significant bits of color data. To convert from 24bit color to 12bit color, we just chuck half the color data; an 8bit value of 11110011 is pushed four bits to the right, giving 1111.</p>
<p><em>Firmware walk-through</em></p>
<ol>
<li>Init PIC, SD, LCD.</li>
<li>Read config.ini, create if it does not exist.</li>
<li>Use first character of config.ini to set between image delay.</li>
<li>Look for images, open next image.</li>
<li>Read and check bitmap file header for proper format.</li>
<li>Read and check bitmap information header for version, size, color.</li>
<li>Read and display each pixel value. Adjust bit depth as needed.</li>
<li>Delay, then repeat from 4.</li>
</ol>
<p><strong>Preparing images</strong></p>
<p><strong><img class="alignnone size-full wp-image-7573" title="newyear" src="http://hackadaycom.files.wordpress.com/2009/01/newyear.jpg" alt="newyear" width="132" height="132" /><img class="alignnone size-full wp-image-7579" title="hackaday" src="http://hackadaycom.files.wordpress.com/2009/01/hackaday.jpg" alt="hackaday" width="132" height="132" /><img class="alignnone size-full wp-image-7580" title="tulips1" src="http://hackadaycom.files.wordpress.com/2009/01/tulips1.jpg" alt="tulips1" width="132" height="132" /><br />
</strong></p>
<p>To keep this demo simple, the photo frame only displays the most common bitmap format. Images must be sized to 132x132pixels, with 24bit color.</p>
<ol>
<li>Open a picture with an image editing program.</li>
<li>Draw a square selection box over the part of the image you want to use, usually using shift and drag.</li>
<li>Crop the image.</li>
<li>Size the image to 132x132pixels.</li>
<li>Save the image as a windows bitmap, 24bits of color depth.</li>
</ol>
<p>Other image sizes and formats could be supported with a firmware upgrade (PNG, JPG), especially with a pin-compatible microcontroller upgrade to a <a href="http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en532302">giant dsPIC 33F</a>.</p>
<p><strong>Using it</strong></p>
<p>Put images in the root directory of a FAT formatted SD card. Depending on the last device to format the card, it might need to be formatted with a digital camera or the Panasonic SD formatter.</p>
<p>Optional: make a config.ini file with a text editor. Enter a single digit, from 0-9, to set the between picture delay. Save the file. If you don&#8217;t create your own config.ini file, one will be created for you with a 1 second delay.</p>
<p>Put the card in the socket, and plug in the digital picture frame. Images will cycle on the screen with the defined delay.</p>
<p><strong>Taking it further</strong></p>
<p>We see a lot of potential in this simple digital picture frame. Many features can be added with a firmware upgrade, some are the basis for future hardware.<strong><br />
</strong></p>
<ul>
<li>Display other image formats, scale images</li>
<li>Random fades and wipes</li>
<li>Display time and date over image, set with buttons connected to programming pins</li>
<li>Extend the configuration options in config.ini to include longer delays, fade or wipe type</li>
<li>Use a sub directory for images because there are some file limitations to the root directory of a FAT formatted SD card.</li>
<li>Add an ethernet connection for networked display updates.</li>
</ul>
<p><del><strong>Download:</strong> <a href="http://blog.mahalo.com/hackaday/howto/dpf.v1.zip">dpf.v1.zip</a></del> It has moved <a href="http://www.whereisian.com/files/dpf.v1.zip">to here</a>.</p>
<span style="text-align:center; display: block;"><a href="http://hackaday.com/2009/01/08/how-to-digital-picture-frame-100-diy/"><img src="http://img.youtube.com/vi/AKlQwLkeWdE/2.jpg" alt="" /></a></span>
<a class="DiggThisButton DiggMedium" href="http://digg.com/submit?url=http%3A%2F%2Fhackaday.com%2F2009%2F01%2F08%2Fhow-to-digital-picture-frame-100-diy%2F&amp;title=How-to%3A+Digital+picture+frame%2C+100%25%26nbsp%3BDIY"></a>
<p>&nbsp;</p>
<br />Posted in home hacks, how-to  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/7561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/7561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/7561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/7561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/7561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/7561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/7561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/7561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/7561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/7561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/7561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/7561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/7561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/7561/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=7561&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2009/01/08/how-to-digital-picture-frame-100-diy/feed/</wfw:commentRss>
		<slash:comments>48</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Ian</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/frontii.jpg" medium="image">
			<media:title type="html">frontii</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/overview.jpg" medium="image">
			<media:title type="html">overview</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/cct450.png" medium="image">
			<media:title type="html">cct450</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/back.jpg" medium="image">
			<media:title type="html">back</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/board4501.png" medium="image">
			<media:title type="html">board4501</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/newyear.jpg" medium="image">
			<media:title type="html">newyear</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/hackaday.jpg" medium="image">
			<media:title type="html">hackaday</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/tulips1.jpg" medium="image">
			<media:title type="html">tulips1</media:title>
		</media:content>
	</item>
	</channel>
</rss>
