{"id":822,"date":"2008-12-18T16:20:42","date_gmt":"2008-12-18T23:20:42","guid":{"rendered":"http:\/\/mightyohm.com\/blog\/?p=822"},"modified":"2022-12-28T12:36:59","modified_gmt":"2022-12-28T20:36:59","slug":"building-a-wifi-radio-part-7-building-an-lcd-display","status":"publish","type":"post","link":"https:\/\/mightyohm.com\/blog\/2008\/12\/building-a-wifi-radio-part-7-building-an-lcd-display\/","title":{"rendered":"Building a Wifi Radio &#8211; Part 7, Building an LCD Display"},"content":{"rendered":"<p><em>This is the seventh part of an ongoing series about building a low cost, open source streaming internet radio.\u00a0 If you haven\u2019t already, check out the previous parts (see the links at the end of this article) for some background about the project.<\/em><\/p>\n<p>In <a href=\"http:\/\/mightyohm.com\/blog\/2008\/12\/building-a-wifi-radio-part-6-a-conversation-with-mpd\/\">part six<\/a>, we used <a href=\"http:\/\/www.busybox.net\/downloads\/BusyBox.html\">OpenWrt&#8217;s UNIX-style shell commands<\/a> to interface with mpd, the music player daemon, and redirect song and stream information to our <a href=\"http:\/\/www.anrdoezrs.net\/click-3238164-10440897?url=http%3A%2F%2Fwww.newegg.com%2FProduct%2FProduct.aspx%3FItem%3DN82E16833320023%26nm_mc%3DAFC-C8Junction%26cm_mmc%3DAFC-C8Junction-_-Network%2B-%2BWireless%2BRouters-_-ASUS-_-33320023&amp;cjsku=N82E16833320023\" target=\"_top\" rel=\"noopener\">ASUS WL-520gU<\/a><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.lduhtrp.net\/image-3238164-10440897\" border=\"0\" alt=\"\" width=\"1\" height=\"1\" \/> wireless router&#8217;s serial port.\u00a0 In this part, we&#8217;ll use a Sparkfun 16&#215;2 LCD display and a handful of other components to build an LCD status display for the radio.<\/p>\n<h3>The Atmel AVR Microcontroller:<\/h3>\n<p>After much thought, I decided to use an <a href=\"http:\/\/www.atmel.com\/dyn\/products\/Product_card.asp?part_id=3303\">Atmel ATmega168 AVR microcontroller<\/a> to drive the display.\u00a0 I realize that this raises the technical level of this project significantly, but I have been wanting to feature an <a href=\"http:\/\/en.wikipedia.org\/wiki\/Atmel_AVR\">AVR<\/a> project on the site and this is a great opportunity.\u00a0 The truth is that an <a href=\"http:\/\/www.arduino.cc\">Arduino<\/a> would work just as well and it shouldn&#8217;t be too difficult to port this program to an <a href=\"http:\/\/www.arduino.cc\/en\/Tutorial\/Sketch\">Arduino sketch<\/a>.\u00a0 (The Arduino is built with the same ATmega168 microcontroller, after all.)\u00a0 If anyone does this, let me know and I&#8217;ll post a link to your version of the display.<\/p>\n<p>If you&#8217;re an AVR veteran, you can skip over this part and straight to the bill of materials below.<\/p>\n<p>If you are new to the AVR, don&#8217;t be intimidated.\u00a0 There are a number of tutorials online to help you learn how to use this inexpensive and powerful microcontroller.\u00a0 I recommend starting with <a href=\"http:\/\/www.ladyada.net\/learn\/avr\/\">this one<\/a> or maybe <a href=\"http:\/\/www.sparkfun.com\/commerce\/tutorial_info.php?tutorials_id=93\">this one<\/a>, but see my note about AVR MacPack below if you&#8217;re using a Mac.\u00a0 If you&#8217;ve never programmed in C before, you&#8217;ll have an additional hurdle to get over, although for this project you won&#8217;t need any actual knowledge of programming or C to burn the code to the AVR and get things working.<\/p>\n<p>You will need to install some software to work with the AVR, I recommend:<\/p>\n<ul>\n<li><a href=\"http:\/\/www.obdev.at\/products\/avrmacpack\/index.html\">AVR MacPack<\/a> for OS X (the Adafruit tutorial recommends OSX-AVR, use this instead)<\/li>\n<li><a href=\"http:\/\/winavr.sourceforge.net\/\">WinAVR<\/a> for Windows<\/li>\n<\/ul>\n<p>I recommend following a tutorial or two and getting a simple blinking LED example working on your AVR before building the LCD display.\u00a0 That way you can be sure your programmer, development environment, breadboard, etc are working first.<\/p>\n<h3>Building the display:<\/h3>\n<h4>Bill of Materials:<\/h4>\n<p>You will need:<\/p>\n<ul>\n<li>one A-B USB cable (the kind with one flat and one square end)<\/li>\n<li>an AVR programmer, such as the <a href=\"http:\/\/www.adafruit.com\/index.php?main_page=product_info&amp;products_id=46&amp;sessid=5f4b1ada86e5cbba0de9c9fb6cf45f10\">Adafruit USBTinyISP<\/a><\/li>\n<li>an <a href=\"http:\/\/www.sparkfun.com\/commerce\/product_info.php?products_id=7957\">Atmel ATmega168 AVR microcontroller<\/a><\/li>\n<li>a working AVR development suite or at least a way to get a .hex file onto an AVR (see above)<\/li>\n<li>an LCD display like this fancy LED backlit <a href=\"http:\/\/www.sparkfun.com\/commerce\/product_info.php?products_id=255\">Sparkfun 16&#215;2 Character STN<\/a><\/li>\n<li>a <a href=\"http:\/\/en.wikipedia.org\/wiki\/Solderless_breadboard\">solderless breadboard<\/a>, like <a href=\"http:\/\/www.amazon.com\/gp\/product\/B0002H4W1E?ie=UTF8&amp;tag=mightyohm-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B0002H4W1E\">this one<\/a> (comes with precut wires!)<img loading=\"lazy\" decoding=\"async\" style=\"border: none !important; margin: 0px !important;\" src=\"http:\/\/www.assoc-amazon.com\/e\/ir?t=mightyohm-20&amp;l=as2&amp;o=1&amp;a=B0002H4W1E\" border=\"0\" alt=\"\" width=\"1\" height=\"1\" \/> or <a href=\"http:\/\/www.sparkfun.com\/commerce\/product_info.php?products_id=112\">this one<\/a>.<\/li>\n<li>a 4-pin female 0.1&#8243; header, this <a href=\"http:\/\/www.sparkfun.com\/commerce\/product_info.php?products_id=115\">breakaway header<\/a> is handy.<\/li>\n<li>two 22pF ceramic capacitors, rated &gt;6V (mine are 25V)<\/li>\n<li>a 0.1uF capacitor, rated &gt;6V<\/li>\n<li>a 10 Ohm resistor<\/li>\n<li>for contrast adjustment, a small 1k or 10k potentiometer<\/li>\n<li>a few feet of 20 to 24 gauge solid hookup wire<\/li>\n<\/ul>\n<p>also nice, but not required:<\/p>\n<ul>\n<li>a <a href=\"http:\/\/www.sparkfun.com\/commerce\/product_info.php?products_id=8508\">Sparkfun ISP breakout board<\/a> to simplify connecting the programmer to the breadboard<a href=\"http:\/\/www.sparkfun.com\/commerce\/product_info.php?products_id=8508\"><br \/>\n<\/a><\/li>\n<li>a normally-open pushbutton switch to reset the circuit<\/li>\n<\/ul>\n<h4>Schematic:<\/h4>\n<p>Here is the schematic of the LCD display (click to enlarge):<\/p>\n<p><a href=\"http:\/\/mightyohm.com\/blog\/wp-content\/uploads\/2008\/12\/avr_wifiradio_display.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"879\" data-permalink=\"https:\/\/mightyohm.com\/blog\/2008\/12\/building-a-wifi-radio-part-7-building-an-lcd-display\/avr_wifiradio_display\/\" data-orig-file=\"https:\/\/mightyohm.com\/blog\/wp-content\/uploads\/2008\/12\/avr_wifiradio_display.png\" data-orig-size=\"1132,712\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"Wifi Radio LCD Display Schematic\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/mightyohm.com\/blog\/wp-content\/uploads\/2008\/12\/avr_wifiradio_display-1024x644.png\" class=\"alignnone size-full wp-image-879\" title=\"Wifi Radio LCD Display Schematic\" src=\"http:\/\/mightyohm.com\/blog\/wp-content\/uploads\/2008\/12\/avr_wifiradio_display.png\" alt=\"Wifi Radio LCD Display Schematic\" width=\"500\" height=\"315\" srcset=\"https:\/\/mightyohm.com\/blog\/wp-content\/uploads\/2008\/12\/avr_wifiradio_display.png 1132w, https:\/\/mightyohm.com\/blog\/wp-content\/uploads\/2008\/12\/avr_wifiradio_display-300x188.png 300w, https:\/\/mightyohm.com\/blog\/wp-content\/uploads\/2008\/12\/avr_wifiradio_display-1024x644.png 1024w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/p>\n<h4>Firmware:<\/h4>\n<p>You can download the source code and compiled .hex file <a href=\"http:\/\/mightyohm.com\/files\/wifiradio\/AVR_wifiradio_display.zip\">here<\/a>.<\/p>\n<p>Special thanks to <a href=\"http:\/\/jump.to\/fleury\">Peter Fleury<\/a> for his excellent <a href=\"http:\/\/homepage.hispeed.ch\/peterfleury\/group__pfleury__lcd.html\">LCD library<\/a>, which saved me from reinventing the wheel!\u00a0 He also has another page about <a href=\"http:\/\/homepage.hispeed.ch\/peterfleury\/avr-lcd44780.html\">interfacing LCD displays to an AVR<\/a>.<\/p>\n<h3>Assembling the circuit:<\/h3>\n<p>Assembling the circuit on the breadboard is pretty straightforward.\u00a0 Here&#8217;s a photo showing all components of the setup.\u00a0 The router is shown above with the serial port wired to the breadboard (the RX line is floating as we&#8217;re not using it yet).\u00a0 The USB AVR programmer is on the right, where it is also functioning as a 5V power supply for the circuit. Make sure the 2-pin jumper on the USBTinyISP is installed, this enables the +5V supply.\u00a0 The LCD is shown displaying the current stream name (<a href=\"http:\/\/di.fm\">DI.fm<\/a>).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"http:\/\/mightyohm.com\/files\/flickr\/3113532375_f429580226.jpg\" alt=\"Wifi Radio LCD Display\" width=\"500\" height=\"375\" \/><\/p>\n<p>Here is a closeup of the components installed on the breadboard to show how I did things, feel free to experiment with the placement of components.\u00a0 As long as you follow the schematic the circuit should still work.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"http:\/\/mightyohm.com\/files\/flickr\/3114364124_d4ab638540.jpg\" alt=\"Wifi Radio LCD Display\" width=\"500\" height=\"375\" \/><\/p>\n<p>Here is a closeup of the serial port connection to the router, including the 4-pin female 0.1&#8243; header.\u00a0 I soldered wires to the pins of the female header (not the pins on the board).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"http:\/\/mightyohm.com\/files\/flickr\/3114364910_c1e27c1bfa.jpg\" alt=\"Wifi Radio LCD Display\" width=\"500\" height=\"375\" \/><\/p>\n<p>Here is a closeup of the AVR, crystal, and the <a href=\"http:\/\/www.sparkfun.com\/commerce\/product_info.php?products_id=8508\">Sparkfun ISP breakout board<\/a> showing the pinout:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"http:\/\/mightyohm.com\/files\/flickr\/3114364680_972485237a.jpg\" alt=\"Wifi Radio LCD Display\" width=\"500\" height=\"375\" \/><\/p>\n<h3>Flashing the AVR:<\/h3>\n<p>Once the circuit is assembled on the breadboard, we need to flash the AVR microcontroller with the main.hex file included with the firmware above.<\/p>\n<p>If you&#8217;re using AVR MacPack and OS X, this should be easy (since that&#8217;s what I&#8217;m using).\u00a0 PC guys will need to figure this out for themselves but hopefully the process is similar (please let me know if the Makefile works).<\/p>\n<p>Connect the USBTinyISP to your computer with the USB cable and to the breadboard with the ISP cable.\u00a0 The green light on the programmer should be on, indicating it is ready, and the backlight of the LCD should be lit, indicating that the breadboard is getting power.<\/p>\n<p>Open a terminal window and create a new directory, I used ~\/temp.\u00a0 Unzip the firmware into a directory somewhere, and execute &#8216;make flash&#8217;, as shown:<\/p>\n<blockquote>\n<pre>macbook:temp jkeyzer$ unzip .\/AVR_wifiradio_display.zip\r\nArchive:  .\/AVR_wifiradio_display.zip\r\n  inflating: lcd.c\r\n  inflating: lcd.h\r\n  inflating: main.c\r\n  inflating: main.hex\r\n  inflating: Makefile\r\nmacbook:temp jkeyzer$ make flash\r\navr-gcc -Wall -Os -DF_CPU=16000000 -mmcu=atmega168  -c main.c -o main.o<\/pre>\n<p>a few warnings later &#8230;<\/p>\n<pre>avr-gcc -Wall -Os -DF_CPU=16000000 -mmcu=atmega168  -c lcd.c -o lcd.o\r\navr-gcc -Wall -Os -DF_CPU=16000000 -mmcu=atmega168  -o main.elf main.o lcd.o\r\nrm -f main.hex\r\navr-objcopy -j .text -j .data -O ihex main.elf main.hex\r\navrdude -c usbtiny -p atmega168 -U flash:w:main.hex:i<\/pre>\n<pre>avrdude: AVR device initialized and ready to accept instructions<\/pre>\n<pre>Reading | ################################################## | 100% 0.01s<\/pre>\n<pre>avrdude: Device signature = 0x1e9406\r\navrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed\r\n         To disable this feature, specify the -D option.\r\navrdude: erasing chip\r\navrdude: reading input file \"main.hex\"\r\navrdude: writing flash (1326 bytes):<\/pre>\n<pre>Writing | ################################################## | 100% 3.32s<\/pre>\n<pre>avrdude: 1326 bytes of flash written\r\navrdude: verifying flash memory against main.hex:\r\navrdude: load data flash data from input file main.hex:\r\navrdude: input file main.hex contains 1326 bytes\r\navrdude: reading on-chip flash data:<\/pre>\n<pre>Reading | ################################################## | 100% 0.68s<\/pre>\n<pre>avrdude: verifying ...\r\navrdude: 1326 bytes of flash verified<\/pre>\n<pre>avrdude: safemode: Fuses OK<\/pre>\n<pre>avrdude done.  Thank you.<\/pre>\n<\/blockquote>\n<p>If everything went well, the LCD display firmware is now loaded into the ATmega168 and the circuit is ready to go.\u00a0 If not, double check your connections and take a look at the <a href=\"http:\/\/www.ladyada.net\/make\/usbtinyisp\/help.html\">help! page for the USBTinyISP<\/a>.<\/p>\n<h3>Testing the display:<\/h3>\n<p>Telnet or ssh into the router.\u00a0 Start mpd and connect to a stream using mpc (we covered this in <a href=\"http:\/\/mightyohm.com\/blog\/2008\/11\/building-a-wifi-radio-part-5-lets-make-some-noise\/\">part five<\/a>).<\/p>\n<p>Once the stream starts playing, execute the display.sh script we created in <a href=\"http:\/\/mightyohm.com\/blog\/2008\/12\/building-a-wifi-radio-part-6-a-conversation-with-mpd\/\">part six<\/a>.\u00a0 Within a few seconds, if everything is working, you should see the stream name on the display, followed by the artist and name of the current song.\u00a0 Congratulations!<\/p>\n<p>Here is a video of the LCD display in action, including the horizontal scrolling feature to show information that is too wide to fit within the visible area of the display:<br \/>\n<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" width=\"500\" height=\"375\" codebase=\"http:\/\/download.macromedia.com\/pub\/shockwave\/cabs\/flash\/swflash.cab#version=6,0,40,0\"><param name=\"data\" value=\"http:\/\/www.flickr.com\/apps\/video\/stewart.swf?v=63881\" \/><param name=\"flashvars\" value=\"intl_lang=en-us&amp;photo_secret=88e8f450f5&amp;photo_id=3113563145\" \/><param name=\"bgcolor\" value=\"#000000\" \/><param name=\"allowFullScreen\" value=\"true\" \/><param name=\"src\" value=\"http:\/\/www.flickr.com\/apps\/video\/stewart.swf?v=63881\" \/><param name=\"allowfullscreen\" value=\"true\" \/><\/object><\/p>\n<p>That&#8217;s it for part seven!\u00a0 In part eight, we&#8217;ll start working on the input side of the user interface.<\/p>\n<p>Like what you&#8217;re seeing?\u00a0 Have suggestions about what could be improved?\u00a0 Leave a comment or <a href=\"http:\/\/mightyohm.com\/blog\/contact\/\">contact me directly<\/a>.<\/p>\n<p><strong>Update:<\/strong> <a href=\"http:\/\/mightyohm.com\/blog\/2009\/02\/building-a-wifi-radio-part-8-adding-a-tuning-control\/\">Part eight<\/a>, in which I add a tuning control to the radio, is now available.<\/p>\n<p><strong>Update 2:<\/strong> There is a new <a href=\"http:\/\/mightyohm.com\/forum\/viewforum.php?f=2\">Wifi Radio Discussion Forum<\/a>, hop over there to ask questions about the project or see what other people are working on!\u00a0 (<em>4\/12\/09)<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This is the seventh part of an ongoing series about building a low cost, open source streaming internet radio.\u00a0 If you haven\u2019t already, check out the previous parts (see the links at the end of this article) for some background about the project. In part six, we used OpenWrt&#8217;s UNIX-style shell commands to interface with &hellip; <a href=\"https:\/\/mightyohm.com\/blog\/2008\/12\/building-a-wifi-radio-part-7-building-an-lcd-display\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Building a Wifi Radio &#8211; Part 7, Building an LCD Display<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[5,10,443],"tags":[61,343,119,36,70,46,66,68,120,24,71,162],"class_list":["post-822","post","type-post","status-publish","format-standard","hentry","category-electronics","category-microcontrollers","category-projects-2","tag-avr","tag-avr-gcc","tag-c","tag-diy","tag-embedded-linux","tag-lcd","tag-linux","tag-openwrt","tag-programming","tag-project","tag-streaming-radio","tag-wifiradio"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pioCd-dg","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":1148,"url":"https:\/\/mightyohm.com\/blog\/2009\/02\/building-a-wifi-radio-part-8-adding-a-tuning-control\/","url_meta":{"origin":822,"position":0},"title":"Building a Wifi Radio &#8211; Part 8, Adding a Tuning Control","author":"Jeff","date":"February 3, 2009","format":false,"excerpt":"This is the eighth part of an ongoing series about building a low cost, open source streaming internet radio based on the ASUS WL-520gU Wireless Router.\u00a0 If you haven\u2019t already, check out the previous parts (see the links at the end of this article) for some background about the project.\u2026","rel":"","context":"In &quot;Electronics&quot;","block_context":{"text":"Electronics","link":"https:\/\/mightyohm.com\/blog\/category\/electronics\/"},"img":{"alt_text":"","src":"http:\/\/www.ftjcfx.com\/image-3238164-10440897","width":350,"height":200},"classes":[]},{"id":1872,"url":"https:\/\/mightyohm.com\/blog\/2009\/05\/building-a-wifi-radio-part-9-a-few-odds-and-ends\/","url_meta":{"origin":822,"position":1},"title":"Building a Wifi Radio &#8211; Part 9, A Few Odds and Ends","author":"Jeff","date":"May 27, 2009","format":false,"excerpt":"This is the ninth part of an ongoing series about building a low cost, open source streaming internet radio based on the ASUS WL-520gU Wireless Router.\u00a0 If you haven\u2019t already, check out the previous parts (see the links at the end of this article) for some background about the project.\u2026","rel":"","context":"In &quot;Electronics&quot;","block_context":{"text":"Electronics","link":"https:\/\/mightyohm.com\/blog\/category\/electronics\/"},"img":{"alt_text":"","src":"http:\/\/www.ftjcfx.com\/image-3238164-10440897","width":350,"height":200},"classes":[]},{"id":1887,"url":"https:\/\/mightyohm.com\/blog\/2009\/05\/building-a-wifi-radio-part-10-building-the-box\/","url_meta":{"origin":822,"position":2},"title":"Building a Wifi Radio &#8211; Part 10, Building the Box","author":"Jeff","date":"May 29, 2009","format":false,"excerpt":"This is the tenth and final part of a series about building a low cost, open source streaming internet radio based on the ASUS WL-520gU Wireless Router.\u00a0 If you haven\u2019t already, check out the previous parts (see the links below) for some background about the project. Wow, we've come a\u2026","rel":"","context":"In &quot;Electronics&quot;","block_context":{"text":"Electronics","link":"https:\/\/mightyohm.com\/blog\/category\/electronics\/"},"img":{"alt_text":"","src":"http:\/\/www.ftjcfx.com\/image-3238164-10440897","width":350,"height":200},"classes":[]},{"id":712,"url":"https:\/\/mightyohm.com\/blog\/2008\/12\/building-a-wifi-radio-part-6-a-conversation-with-mpd\/","url_meta":{"origin":822,"position":3},"title":"Building a Wifi Radio &#8211; Part 6, A Conversation with Mpd","author":"Jeff","date":"December 17, 2008","format":false,"excerpt":"This is the sixth part of an ongoing series about building a low cost, open source streaming internet radio.\u00a0 If you haven't already, check out the previous parts (see the links at the end of this article) for some background about the project. Let's review... It's been a few weeks\u2026","rel":"","context":"In &quot;Microcontrollers&quot;","block_context":{"text":"Microcontrollers","link":"https:\/\/mightyohm.com\/blog\/category\/microcontrollers\/"},"img":{"alt_text":"","src":"http:\/\/www.awltovhc.com\/image-3238164-10440897","width":350,"height":200},"classes":[]},{"id":3731,"url":"https:\/\/mightyohm.com\/blog\/2011\/03\/jans-wifi-radio-has-a-modern-look\/","url_meta":{"origin":822,"position":4},"title":"Jan&#8217;s Wifi Radio has a modern look","author":"Jeff","date":"March 24, 2011","format":false,"excerpt":"Jan Wante made this gorgeous Wifi Radio with a modern look. It is\u00a0based on my original Wifi Radio tutorials. Not content to simply duplicate my work, he added a few creative twists of his own, including a custom handmade case made of alucobond, MDF, and real wood veneer that gives\u2026","rel":"","context":"In &quot;Electronics&quot;","block_context":{"text":"Electronics","link":"https:\/\/mightyohm.com\/blog\/category\/electronics\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mightyohm.com\/blog\/wp-content\/uploads\/2011\/03\/Build-your-own-Wifi-radio.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1902,"url":"https:\/\/mightyohm.com\/blog\/2009\/05\/sneak-peak-at-my-finished-wifi-radio-project\/","url_meta":{"origin":822,"position":5},"title":"Sneak peek at my finished Wifi Radio project!","author":"Jeff","date":"May 28, 2009","format":false,"excerpt":"While I'm busy working on part ten of my series on building a wireless router-based DIY streaming internet radio, I couldn't resist sharing a few photos of the finished project. If you want to see the radio in person, stop by Expo Hall Booth 166 at the Maker Faire in\u2026","rel":"","context":"In &quot;Electronics&quot;","block_context":{"text":"Electronics","link":"https:\/\/mightyohm.com\/blog\/category\/electronics\/"},"img":{"alt_text":"Finished Wifi Radio","src":"https:\/\/i0.wp.com\/mightyohm.com\/files\/flickr\/3567609195_79760d88fe.jpg?resize=350%2C200","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"https:\/\/mightyohm.com\/blog\/wp-json\/wp\/v2\/posts\/822","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mightyohm.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mightyohm.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mightyohm.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mightyohm.com\/blog\/wp-json\/wp\/v2\/comments?post=822"}],"version-history":[{"count":28,"href":"https:\/\/mightyohm.com\/blog\/wp-json\/wp\/v2\/posts\/822\/revisions"}],"predecessor-version":[{"id":15822,"href":"https:\/\/mightyohm.com\/blog\/wp-json\/wp\/v2\/posts\/822\/revisions\/15822"}],"wp:attachment":[{"href":"https:\/\/mightyohm.com\/blog\/wp-json\/wp\/v2\/media?parent=822"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mightyohm.com\/blog\/wp-json\/wp\/v2\/categories?post=822"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mightyohm.com\/blog\/wp-json\/wp\/v2\/tags?post=822"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}