dgraves.org - Projecthttp://dgraves.org/category/project
enPico-IrDA for Zilog Z8 Encore! XPhttp://dgraves.org/picoirdazilog
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Port of BlauLogic's minimalistic IrDA stack for microcontrollers, version 1.0, to the <a href="http://www.zilog.com/" title="Zilog Website">Zilog Z8 Encore! XP</a> microcontroller platform.</p>
<p>Pico-IrDA is a software library providing a minimalistic IrDA stack for microntontrollers, implemented with the C programming language by Gerd Rausch of BlauLogic. Although the BlauLogic website no longer appears to be active, the original Pico-IrDA source code can still be obtained from the <a href="http://tech.groups.yahoo.com/group/pico_irda/" title="Pico-IrDA Yahoo! Group">Pico-IrDA Yahoo! Group</a>, located in the "Attachments" section.</p>
<p>The Pico-IrDA port to the Zilog Z8 Encore! XP microcontroller platform provides an implementation of the Pico-IrDA IrPHY physical interface component for the Zilog Z8 Encore! XP Z8F6403. It should also work with the Z8F6403's successor, the Z8F6423, and other microcontrollers from the Zilog Z8 Encore! XP family.</p>
<p>The Pico-IrDA port to the Zilog Z8 Encore! XP platform was originally created as part of an IrDA based bootloader project for the Z8F6403. Detailed documentation for the IrDA protocol and its use with the Z8F4603 can be found <a href="http://www.dgraves.org/coursework/cs339" title="CSCI 339 - Embedded Systems">here</a>.</p>
<h1>Downloads</h1>
<table border="0" cellpadding="2" cellspacing="2" style="border-top-color: rgb(211, 211, 211); border-right-color: rgb(211, 211, 211); border-bottom-color: rgb(211, 211, 211); border-left-color: rgb(211, 211, 211); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; " width="100%"><thead><tr><th style="border-top-color: rgb(211, 211, 211); border-right-color: rgb(211, 211, 211); border-bottom-color: rgb(211, 211, 211); border-left-color: rgb(211, 211, 211); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; ">Name</th>
<th style="border-top-color: rgb(211, 211, 211); border-right-color: rgb(211, 211, 211); border-bottom-color: rgb(211, 211, 211); border-left-color: rgb(211, 211, 211); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; ">Date</th>
<th style="border-top-color: rgb(211, 211, 211); border-right-color: rgb(211, 211, 211); border-bottom-color: rgb(211, 211, 211); border-left-color: rgb(211, 211, 211); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; ">Size</th>
</tr></thead><tbody><tr class="odd"><td style="border-top-color: rgb(211, 211, 211); border-right-color: rgb(211, 211, 211); border-bottom-color: rgb(211, 211, 211); border-left-color: rgb(211, 211, 211); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; " valign="top"><strong>Current Source:</strong> <a href="/files/electronics/zilog/irda-zilog_z8.zip" title="Pico-IrDA for ZIlog Z8 Encore! XP">irda-zilog_z8.zip</a></td>
<td style="border-top-color: rgb(211, 211, 211); border-right-color: rgb(211, 211, 211); border-bottom-color: rgb(211, 211, 211); border-left-color: rgb(211, 211, 211); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; " valign="top">28 Mar 2006</td>
<td style="border-top-color: rgb(211, 211, 211); border-right-color: rgb(211, 211, 211); border-bottom-color: rgb(211, 211, 211); border-left-color: rgb(211, 211, 211); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; " valign="top">40KB</td>
</tr></tbody></table><p> </p>
</div></div></div><div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above"><div class="field-label">Project:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/category/project">Project</a></div><div class="field-item odd"><a href="/category/project/electronics">Electronics</a></div><div class="field-item even"><a href="/category/project/electronics/z8-encore">Z8 Encore!</a></div><div class="field-item odd"><a href="/category/project/electronics/zilog">Zilog</a></div></div></div><div class="field field-name-taxonomy-vocabulary-6 field-type-taxonomy-term-reference field-label-above"><div class="field-label">Programming:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/category/programming/c">C</a></div></div></div>Tue, 28 Jun 2011 03:56:45 +0000dgraves359 at http://dgraves.orgThe Making of an Easy Program Launcher Buttonhttp://dgraves.org/content/making-easy-program-launcher-button
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>After watching Matt Richardson's <a href="http://blog.makezine.com/archive/2011/04/the-awesome-button.html" title="The AWESOME Button">AWESOME Button</a> project video, where he embeds a microcontroller within a Staples Easy Button to create a special purpose keyboard, I was inspired to make a similar item to present as a gift to a user of the software that I develop professionally. This user had requested that we create an "Easy Mode" for our software to group all of the features commonly used by his organization into a simple and easy to use graphical user interface component. Since the "Easy Mode" concept was inspired by the Easy Button campaign from Staples, I thought an Easy Button would be perfect for launching the software in the "Easy Mode." </p>
<!--break--><p>I called this modified Easy Button the Easy Program Launcher. </p>
<p>Like the AWESOME Button, the Easy Program Launcher uses a <a href="http://www.pjrc.com/teensy/" title="Teensy USB Development Board">Teensy USB Development Board</a> embedded within a Staples Easy Button. Whenever the Easy Button is pressed, key codes are transmitted to a computer through a USB connection. For the case of the Easy Program Launcher, the transmitted key codes cause an application to be launched on the computer. Because the software initially targeted by the Easy Program Launcher works with both the Windows and Linux operating systems, the Easy Program Launcher has also been designed to work with both the Windows and Linux operating systems. A slide switch, hidden within the Easy Button's battery compartment, is used to select between the Windows and Linux modes. </p>
<p><span>The project's key code transmission software was created using the </span><a href="http://arduino.cc/en/Main/Software" title="Arduino Software">Arduino IDE</a><span> with the <a href="http://www.pjrc.com/teensy/teensyduino.html" title="Teensyduino Add-on for Arduino IDE">Teensyduino</a> software add-on. Application launch was achieved for Windows by transmitting the 'WinKey+R' key combination followed by the name of the program to be launched, and for Linux by transmitting the 'Alt+F2' key combination followed by the name of the program to be launched. </span></p>
<p><span>Once the software was complete, it was loaded onto a Teensy USB Development Board for testing with a push button and slide switch:</span></p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/61351883@N06/5849538266/" title="Easy Program Launcher: Initial Circuit Test by dusgrave, on Flickr"><img alt="Easy Program Launcher: Initial Circuit Test" height="376" src="http://farm3.static.flickr.com/2774/5849538266_75530bc0ff.jpg" width="500" /></a></p>
<p>After the initial push button test, a Staples Easy Button was disassembled, following the same procedure described by the <a href="http://blog.makezine.com/archive/2011/04/the-awesome-button.html" title="The AWESOME Button">AWESOME Button project video</a>, and connected to the Teensy for testing:</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/61351883@N06/5849538728/" title="Easy Program Launcher: Circuit Test by dusgrave, on Flickr"><img alt="Easy Program Launcher: Circuit Test" height="375" src="http://farm4.static.flickr.com/3165/5849538728_e26cfd9d5b.jpg" width="500" /></a></p>
<p>The initial circuit tests were made with the button and switch connected to the Teensy's D0 and D1 pins, but the B0 and B1 pins were used for the final version of the circuit. Pull-up resistors are not required for either the button or switch because the Teensy's pins have their own internal pull-up resistors that can be enabled in software.</p>
<p>Connecting the Teensy to the Easy Button's circuit board involves connecting one of the Teensy's GPIO pins to a trace on one side of the button, and connecting the Teensy's ground pin to a lead on the other side of the button. There are two possible connection points on the left side of the button, the trace with the resistor and the trace with the capacitor. For this project, the resistor was desoldered from the board and the Teensy's B0 pin was connected in its place. The Teensy's ground pin was then connected to the trace on the board's right side:</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/61351883@N06/5848982723/" title="Easy Program Launcher: Button Assembly by dusgrave, on Flickr"><img alt="Easy Program Launcher: Button Assembly" height="375" src="http://farm3.static.flickr.com/2526/5848982723_d315ce91ef.jpg" width="500" /></a></p>
<p>With the Teensy connected to the Easy Button's circuit board, the Teensy was installed and the Easy Button was reassambled, again following the procedure described by the <a href="http://blog.makezine.com/archive/2011/04/the-awesome-button.html" title="The AWESOME Button">AWESOME Button project video</a>. The slide switch was routed into the Easy Button's battery compartment, which it would share with the Teensy USB Development Board, and fastened into place with plenty of hot glue:</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/61351883@N06/5849540190/" title="Easy Program Launcher: Switch Access by dusgrave, on Flickr"><img alt="Easy Program Launcher: Switch Access" height="375" src="http://farm3.static.flickr.com/2438/5849540190_761fc3f98d.jpg" width="500" /></a></p>
<p>As you can see, I really ground up the area around the battery compartment. My Dremel skills could clearly use some work. At least the battery cover hides most of the damage. When turned right-side up, the final product looks like this:</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/61351883@N06/5848983091/" title="Easy Program Launcher: Finished by dusgrave, on Flickr"><img alt="Easy Program Launcher: Finished" height="375" src="http://farm4.static.flickr.com/3306/5848983091_7fc806950e.jpg" width="500" /></a></p>
<p>One final test of the Easy Program Launcher showed that it was indeed working:</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/61351883@N06/5848981261/" title="Easy Program Launch by dusgrave, on Flickr"><img alt="Easy Program Launch" height="458" src="http://farm4.static.flickr.com/3466/5848981261_eacc14ef75.jpg" width="500" /></a></p>
<p>Instead of sending the name of a specific application to be launched, the Easy Program Launcher sends the name of a batch file (shell script on Linux) that can be customized to launch any program or execute any series of commands.</p>
<p>With the button fully assembled and tested, it was placed back into its original gift box packaging for delivery:</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/61351883@N06/5848982251/" title="Easy Program Launcher: Final Product by dusgrave, on Flickr"><img alt="Easy Program Launcher: Final Product" height="375" src="http://farm6.static.flickr.com/5199/5848982251_95e67423ce.jpg" width="500" /></a></p>
<p>I have created a separate project page for the <a href="/easyprogramlauncher" title="Easy Program Launcher">Easy Program Launcher</a>, where source code, schematics, and instructions for building an Easy Program Launcher button can be found. Click <a href="/easyprogramlauncher" title="Easy Program Launcher">here</a> to learn more about how you can build your own <a href="/easyprogramlauncher" title="Easy Program Launcher">Easy Program Launcher</a>.</p>
<p> </p>
</div></div></div><div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above"><div class="field-label">Project:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/category/project">Project</a></div><div class="field-item odd"><a href="/category/project/electronics">Electronics</a></div><div class="field-item even"><a href="/category/project/electronics/arduino">Arduino</a></div><div class="field-item odd"><a href="/category/project/electronics/teensy">Teensy</a></div></div></div><div class="field field-name-taxonomy-vocabulary-6 field-type-taxonomy-term-reference field-label-above"><div class="field-label">Programming:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/category/programming/c-plus-plus">C++</a></div></div></div>Sun, 19 Jun 2011 20:53:06 +0000dgraves357 at http://dgraves.orghttp://dgraves.org/content/making-easy-program-launcher-button#commentsEasy Program Launcherhttp://dgraves.org/easyprogramlauncher
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>The Easy Program Launcher is a project for the <a href="http://www.pjrc.com/teensy/" title="Teensy USB Development Board">Teensy USB Development Board</a>. It is based on the <a href="http://blog.makezine.com/archive/2011/04/the-awesome-button.html" title="Awesome Button">AWESOME Button</a> by Matt Richardson. A project for the Arduino IDE, using the <a href="http://www.pjrc.com/teensy/teensyduino.html" title="Teensyduino Add-on for Arduino IDE">Teensyduino</a> software add-on, provides software to emulate a keyboard and send key commands to a personal computer that cause an application to be launched. Designed to be embedded within an Easy Button from Staples, the key commands are sent when the Easy Button is pressed.</p>
<p>Both the Windows and Linux operating systems are supported by the Easy Program Launcher. A switch hidden in the Easy Button's battery compartment is used to select the desired operating system. This illustration, made with the <a href="http://fritzing.org/" title="Fritzing">Fritzing</a> project documentation software, shows how the components are connected to the Teensy from a breadboard:</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/61351883@N06/5849538046/" title="Easy Program Launcher Breadboard Layout by dusgrave, on Flickr"><img alt="Easy Program Launcher Breadboard Layout" height="218" src="http://farm4.static.flickr.com/3354/5849538046_9b6349b638.jpg" width="479" /></a></p>
<p>Here is the Teensy connected with the Easy Button and slide switch for an initial circuit test:</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/61351883@N06/5849538728/" title="Easy Program Launcher: Circuit Test by dusgrave, on Flickr"><img alt="Easy Program Launcher: Circuit Test" height="375" src="http://farm4.static.flickr.com/3165/5849538728_e26cfd9d5b.jpg" width="500" /></a></p>
<p>The Easy Program Launcher connects to a personal computer with a USB cable and acts like a special purpose keyboard. When the button is pressed, and Windows mode is enabled, 'WinKey+R' is sent to the computer, followed by the name of a Windows batch file to be executed. When Linux mode is enabled, 'Alt+F2' is send to the computer, followed by the name of a script to be executed.</p>
<p>The default name for the batch file to be executed on Windows is 'easylauncher.bat', and the default name for the script to be executed on Linux is 'easylauncher.sh'. Files with these names must be located within the user's path for the Easy Program Launcher to work. The content of these files may be customized to launch any program or execute any commands desired. This screen shot shows the Easy Program Launcher working on Windows 7:</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/61351883@N06/5848981261/" title="Easy Program Launch by dusgrave, on Flickr"><img alt="Easy Program Launch" height="458" src="http://farm4.static.flickr.com/3466/5848981261_eacc14ef75.jpg" width="500" /></a></p>
<p>For more information regarding the motivation behind this project, and a description of how the Easy Button was modified to house the Easy Program Launcher, see my blog post entitled <a href="/content/making-easy-program-launcher-button" title="Making the Easy Program Launcher Button">The Making of an Easy Program Launcher Button</a>.</p>
<h1>Building Your Own Easy Program Lacunher</h1>
<p>Source code for the <a href="http://arduino.cc/en/Main/Software" title="Arduino IDE Download">Arduino IDE</a> and schematics for the <a href="http://fritzing.org/download/" title="Fritzing Software Download">Fritzing</a> project documentation software to help you build your own Easy Program Launcher are freely available, distributed under the terms of the open source <a href="http://en.wikipedia.org/wiki/MIT_License" title="MIT License">MIT License</a>. You can find all of the relevant files in my Arduino projects repository hosted by <a href="https://github.com/dgraves/ArduinoProjects" title="My Arduino Projects Repository">GitHub</a>:</p>
<p style="margin-left: 40px; ">git://github.com/dgraves/ArduinoProjects.git</p>
<p>The<a href="http://www.pjrc.com/teensy/teensyduino.html" title="Teensyduino Add-on for Arduino IDE"> Teensyduino</a> software add-on for the Arduino IDE and the <a href="http://www.pjrc.com/teensy/loader.html" title="Teensy Loader Application">Teensy Loader</a> application are required to program the Teensy with the Arduino IDE.</p>
<p> </p>
</div></div></div><div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above"><div class="field-label">Project:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/category/project">Project</a></div><div class="field-item odd"><a href="/category/project/electronics">Electronics</a></div><div class="field-item even"><a href="/category/project/electronics/arduino">Arduino</a></div><div class="field-item odd"><a href="/category/project/electronics/teensy">Teensy</a></div></div></div><div class="field field-name-taxonomy-vocabulary-6 field-type-taxonomy-term-reference field-label-above"><div class="field-label">Programming:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/category/programming/c-plus-plus">C++</a></div></div></div>Sun, 19 Jun 2011 20:50:34 +0000dgraves356 at http://dgraves.orgNew Electronics Project: Mailbox Monitor for Arduinohttp://dgraves.org/content/new-electronics-project-mailbox-monitor-arduino
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>The Mailbox Monitor project detects the presence of "snail mail" within an old-fashioned mailbox. Photographs of the Mailbox Monitor project, along with source code and instructions that you can use to build your own Mailbox Monitor, are available <a href="/mailboxmonitor" title="Mailbox Monitor">here</a>.</p>
</div></div></div><div class="field field-name-taxonomy-vocabulary-3 field-type-taxonomy-term-reference field-label-above"><div class="field-label">General:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/category/general/update">Update</a></div></div></div><div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above"><div class="field-label">Project:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/category/project">Project</a></div><div class="field-item odd"><a href="/category/project/electronics">Electronics</a></div><div class="field-item even"><a href="/category/project/electronics/arduino">Arduino</a></div></div></div><div class="field field-name-taxonomy-vocabulary-6 field-type-taxonomy-term-reference field-label-above"><div class="field-label">Programming:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/category/programming/c-plus-plus">C++</a></div><div class="field-item odd"><a href="/category/programming/java">Java</a></div><div class="field-item even"><a href="/category/programming/processing">Processing</a></div></div></div>Sat, 18 Jun 2011 23:11:42 +0000dgraves355 at http://dgraves.orghttp://dgraves.org/content/new-electronics-project-mailbox-monitor-arduino#commentsMailbox Monitorhttp://dgraves.org/mailboxmonitor
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>The Mailbox Monitor detects the presence of "snail mail" within an old-fashioned mailbox. It is a project for the <a href="http://arduino.cc/" title="Arduino Home Page">Arduino Development Environment</a>, and consists of projects for the Arduino IDE and <a href="http://www.processing.org/" title="Processing.org">Processing</a> IDE which detect and report the presence of mail placed between an IR emitter and detector.</p>
<p>Design of the Mailbox Monitor project was inspired by my experience as the owner of a personal mailbox at a The UPS Store during a transition period while moving from Hawaii to Washington, DC. It was possible to call The UPS Store to inquire about the availability of mail, but I liked the idea of an automated system that would email the mailbox owner when mail was available. My first thoughts were of a barcode based system, involving the scanning of barcodes on mailboxes as mail was inserted and syncing with a computer responsible for sending email notifications. But that seemed to involve too much user interaction. A fully automated system employing an IR emitter and detector for mail detection seemed much more reasonable.</p>
<p>The presence of objects placed between an IR emitter and detector is detected by a program running on an Arduino development board. The detection process is triggered by a requests received through the Serial device. The result of the detection process is reported through the Serial device. </p>
<p>This illustration, made with the <a href="http://fritzing.org/" title="Fritzing">Fritzing</a> project documentation software, shows how the components are connected to the Arduino from a breadboard:</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/61351883@N06/5846338891/" title="Mailbox Monitor Breadboard Layout by dusgrave, on Flickr"><img alt="Mailbox Monitor Breadboard Layout" height="496" src="http://farm4.static.flickr.com/3180/5846338891_ddf093ccbc.jpg" width="492" /></a></p>
<p>When laid out on a breadboard, the IR receiver LED (blue) and IR detector photo transistor (clear) are bent so that they point toward each other:</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/61351883@N06/5846475573/" title="Mailbox Monitor by dusgrave, on Flickr"><img alt="Mailbox Monitor" height="375" src="http://farm4.static.flickr.com/3105/5846475573_7af8db49b7.jpg" width="500" /></a></p>
<p>The IR emitter and detector pictured in the above photograph were purchased as a pair from RadioShack. The RadioShack part number for the pair is <a href="http://www.radioshack.com/product/index.jsp?productId=2049723" title="Infrared Emitter and Detector from RadioShack">276-0142</a>.</p>
<p>A series one <a href="http://www.sparkfun.com/products/8664" title="XBee 1mW Chip Antenna">XBee</a> is used for wireless serial communication. The XBee unit is connected to the Arduino board with the <a href="http://www.sparkfun.com/products/9132" title="XBee Explorer Regulated">XBee Explorer Regulated</a> from <a href="http://www.sparkfun.com/" title="SparkFun Electronics">SparkFun Electronics</a>.</p>
<p>A program written with the Processing programming language sends detection requests to the Arduino at a specified interval and receives the response data. Based on the response from the Arduino, a visual notification is displayed to indicate that mail is or is not present. An email notification can optionally be sent when mail is added to or removed from the mail box.</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/61351883@N06/5847132586/" title="Mailbox Monitor No Mail Notification by dusgrave, on Flickr"><img alt="Mailbox Monitor No Mail Notification" height="238" src="http://farm4.static.flickr.com/3393/5847132586_a0ba2abbc7_m.jpg" width="216" /></a> <a href="http://www.flickr.com/photos/61351883@N06/5847132602/" title="Mailbox Monitor Mail Notification by dusgrave, on Flickr"><img alt="Mailbox Monitor Mail Notification" height="238" src="http://farm3.static.flickr.com/2535/5847132602_43e98082e3_m.jpg" width="216" /></a></p>
<p>The Mailbox Monitor is designed to be placed in a mailbox to detect that mail is present and needs to be retrieved. An RF modem, such as an XBee, is intended to be used for wireless communication between the device placed in a mailbox and a computer.</p>
<h1>Building Your Own Mailbox Monitor</h1>
<p>Source code for the <a href="http://arduino.cc/en/Main/Software" title="Arduino IDE Download">Arduino IDE</a> and schematics for the <a href="http://fritzing.org/download/" title="Fritzing Software Download">Fritzing</a> project documentation software to help you build your own Mailbox Monitor for Arduino are freely available, distributed under the terms of the open source <a href="http://en.wikipedia.org/wiki/MIT_License" title="MIT License">MIT License</a>. You can find all of the relevant files in my Arduino projects repository hosted by <a href="https://github.com/dgraves/ArduinoProjects" title="My Arduino Projects Repository">GitHub</a>:</p>
<p style="margin-left: 40px; ">git://github.com/dgraves/ArduinoProjects.git</p>
<p> </p>
</div></div></div><div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above"><div class="field-label">Project:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/category/project">Project</a></div><div class="field-item odd"><a href="/category/project/electronics">Electronics</a></div><div class="field-item even"><a href="/category/project/electronics/arduino">Arduino</a></div></div></div><div class="field field-name-taxonomy-vocabulary-6 field-type-taxonomy-term-reference field-label-above"><div class="field-label">Programming:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/category/programming/c-plus-plus">C++</a></div><div class="field-item odd"><a href="/category/programming/java">Java</a></div><div class="field-item even"><a href="/category/programming/processing">Processing</a></div></div></div>Sat, 18 Jun 2011 23:08:46 +0000dgraves354 at http://dgraves.orgNew Electronics Project: 3D Map Control for Arduinohttp://dgraves.org/content/new-electronics-project-3d-map-control-arduino
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>The 3D Map Control project lets you control the Google Earth web browser plug-in with a Wii Nunchuk connected to an <a href="http://arduino.cc/" title="Arduino Home Page">Arduino</a> development board. A photograph and a video demonstration of the 3D Map Control project, along with source code and instructions that you can use to build your own 3D Map Control, are available <a href="/mapcontrol" title="3D Map Control">here</a>.</p>
</div></div></div><div class="field field-name-taxonomy-vocabulary-3 field-type-taxonomy-term-reference field-label-above"><div class="field-label">General:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/category/general/update">Update</a></div></div></div><div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above"><div class="field-label">Project:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/category/project">Project</a></div><div class="field-item odd"><a href="/category/project/electronics">Electronics</a></div><div class="field-item even"><a href="/category/project/electronics/arduino">Arduino</a></div></div></div><div class="field field-name-taxonomy-vocabulary-6 field-type-taxonomy-term-reference field-label-above"><div class="field-label">Programming:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/category/programming/3d">3D</a></div><div class="field-item odd"><a href="/category/programming/c-plus-plus">C++</a></div><div class="field-item even"><a href="/category/programming/google-earth">Google Earth</a></div><div class="field-item odd"><a href="/category/programming/java">Java</a></div><div class="field-item even"><a href="/category/programming/javascript">JavaScript</a></div><div class="field-item odd"><a href="/category/programming/processing">Processing</a></div></div></div>Fri, 17 Jun 2011 02:37:16 +0000dgraves352 at http://dgraves.orghttp://dgraves.org/content/new-electronics-project-3d-map-control-arduino#comments3D Map Controlhttp://dgraves.org/mapcontrol
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>3D Map Control is a project for the <a href="http://arduino.cc/" title="Arduino Home Page">Arduino Development Environment</a> that uses the Arduino development board to read, decode, and transmit data received from the Wii Nunchuk to a computer. A simple <a href="http://www.processing.org/" title="Processing.org">Processing</a>/<a href="http://www.java.com/en/" title="Java + You">Java</a> application running on the computer reads the Wii Nunchuk data from the Arduino development board and makes it available to any modern web browser through a simple web service.</p>
<p>The goal of the project is to use the Wii Nunchuk to control mapping applications such as Google Earth in the web browser. JavaScript code to control the Google Earth web browser plug-in with the Wii Nunchuk is included with the project. </p>
<p>Here is a video demonstration of the 3D Map Control project controlling Google Earth:</p>
<p style="text-align: center;">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" data="http://www.flickr.com/apps/video/stewart.swf?v=109786" height="360" type="application/x-shockwave-flash" width="640"><param name="flashvars" value="intl_lang=en-us&amp;photo_secret=1e9c68e88a&amp;photo_id=5841129484&amp;hd_default=false" /><param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=109786" /><param name="bgcolor" value="#000000" /><param name="allowFullScreen" value="true" /><embed allowfullscreen="true" bgcolor="#000000" flashvars="intl_lang=en-us&amp;photo_secret=1e9c68e88a&amp;photo_id=5841129484&amp;hd_default=false" height="360" src="http://www.flickr.com/apps/video/stewart.swf?v=109786" type="application/x-shockwave-flash" width="640"></embed></object></p>
<p>Actions supported by the 3D Map Control are:</p>
<ul><li>Jerk the Nunchuk up or down to reset the camera</li>
<li>Press the C button to zoom out</li>
<li>Press the Z button to zoom in</li>
<li>Tilt the Nunchuk up or down to tile the camera up or down</li>
<li>Tilt the Nunchuk left or right to rotate the camera left or right</li>
<li>Use the joystick to pan the camera left, right, forward, and backward</li>
</ul><p>Camera tilt, rotate, pan, and zoom operations can all be performed simultaneously. </p>
<p>The Arduino portion of the project is fairly simple. The Nunchuk is connected to the Arduino's I2C controller and a simple program reads data from the Nunchuk, which is transmitted to a computer through the serial device:</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/61351883@N06/5840575857/" title="3D Map Control by dusgrave, on Flickr"><img alt="3D Map Control" height="375" src="http://farm6.static.flickr.com/5265/5840575857_4403ea05dd.jpg" width="500" /></a></p>
<p>I have attempted to illustrate the pin connections for the Wii Nunchuk with the following ASCII art:</p>
<p> </p>
<pre style="font: normal normal normal 12px/normal 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 1.4em; font-family: 'Bitstream Vera Sans Mono', Courier, monospace; font-size: 11px; color: #444444; white-space: pre-wrap; word-wrap: break-word; padding: 0px; margin: 0px;"> NC
__ | __
| \___/ |
Clock -&gt; | * * * | &lt;- GND
3.3V -&gt; |_*__*__*_| &lt;- Data
|
NC</pre><p>The data line connects to the Arduino's analog pin 4 and the clock line connects to the Arduino's analog pin 5.</p>
<p>The web server application, written with the Processing programming language, makes use of the <a href="http://download.oracle.com/javase/6/docs/jre/api/net/httpserver/spec/com/sun/net/httpserver/package-summary.html" title="Java HTTP Server">HttpServer</a> package from the JDK for serving web pages (Processing is a specialized version of Java). Control of Google Earth is achieved with custom JavaScript code that uses the <a href="http://code.google.com/apis/earth/" title="Google Earth API">Google Earth API</a> to manipulate the view of the globe. </p>
<h1>Building Your Own 3D Map Control</h1>
<p>Source code for the <a href="http://arduino.cc/en/Main/Software" title="Arduino IDE Download">Arduino IDE</a> and the <a href="http://www.processing.org/" title="Processing.org">Processing IDE</a> to help you build your own 3D Map Control for Arduino are freely available, distributed under the terms of the open source <a href="http://en.wikipedia.org/wiki/MIT_License" title="MIT License">MIT License</a>. You can find all of the relevant files in my Arduino projects repository hosted by <a href="https://github.com/dgraves/ArduinoProjects" title="My Arduino Projects Repository">GitHub</a>:</p>
<p style="margin-left: 40px; ">git://github.com/dgraves/ArduinoProjects.git</p>
<p> </p>
</div></div></div><div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above"><div class="field-label">Project:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/category/project">Project</a></div><div class="field-item odd"><a href="/category/project/electronics">Electronics</a></div><div class="field-item even"><a href="/category/project/electronics/arduino">Arduino</a></div></div></div><div class="field field-name-taxonomy-vocabulary-6 field-type-taxonomy-term-reference field-label-above"><div class="field-label">Programming:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/category/programming/3d">3D</a></div><div class="field-item odd"><a href="/category/programming/c-plus-plus">C++</a></div><div class="field-item even"><a href="/category/programming/google-earth">Google Earth</a></div><div class="field-item odd"><a href="/category/programming/java">Java</a></div><div class="field-item even"><a href="/category/programming/javascript">JavaScript</a></div><div class="field-item odd"><a href="/category/programming/processing">Processing</a></div></div></div>Fri, 17 Jun 2011 01:38:09 +0000dgraves351 at http://dgraves.orghttp://dgraves.org/mapcontrol#commentsNew Electronics Project: Ringtone Jukebox for Arduinohttp://dgraves.org/content/new-electronics-project-ringtone-jukebox-arduino
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Over the past few months I have been working on a few different projects using the excellent <a href="http://arduino.cc" title="Arduino Home Page">Arduino</a> open source electronics prototyping platform. Source code and schematics for these projects have been available through my <a href="https://github.com/dgraves/ArduinoProjects" title="My Arduino Projects Repository">GitHub account</a> since I started working on them, but I am just now getting around to putting detailed project descriptions on this site. </p>
<p>For my first Arduino project, I created a <a href="/ringtonejukebox" title="Ringtone Jukebox">ringtone jukebox</a> (which is an adaptation of the second project that I developed for the <a href="http://www.zilog.com/index.php?option=com_product&amp;task=product&amp;businessLine=1&amp;id=2&amp;parent_id=2&amp;Itemid=56" title="Zilog Z8 Encore!">Zilog Z8 Encore!</a>). The Ringtone Jukebox plays multiple ringtones with the Arduino and works with a separate <a href="http://www.processing.org/" title="Processing.org">Processing</a> application for the computer to draw graphical representations of ringtones as they are played. </p>
<p>Photographs and a video demonstration of the Ringtone Jukebox project, along with source code and schematics that you can use to build your own Ringtone Jukebox, are available <a href="/ringtonejukebox" title="Ringtone Jukebox">here</a>.</p>
</div></div></div><div class="field field-name-taxonomy-vocabulary-3 field-type-taxonomy-term-reference field-label-above"><div class="field-label">General:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/category/general/update">Update</a></div></div></div><div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above"><div class="field-label">Project:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/category/project">Project</a></div><div class="field-item odd"><a href="/category/project/electronics">Electronics</a></div><div class="field-item even"><a href="/category/project/electronics/arduino">Arduino</a></div></div></div><div class="field field-name-taxonomy-vocabulary-6 field-type-taxonomy-term-reference field-label-above"><div class="field-label">Programming:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/category/programming/c-plus-plus">C++</a></div><div class="field-item odd"><a href="/category/programming/java">Java</a></div><div class="field-item even"><a href="/category/programming/processing">Processing</a></div></div></div>Thu, 16 Jun 2011 02:29:30 +0000dgraves350 at http://dgraves.orghttp://dgraves.org/content/new-electronics-project-ringtone-jukebox-arduino#commentsRingtone Jukeboxhttp://dgraves.org/ringtonejukebox
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Ringtone Jukebox is a project for the <a href="http://arduino.cc/" title="Arduino Home Page">Arduino Development Environment</a>. It consists of a project for the Arduino IDE that plays <a href="http://en.wikipedia.org/wiki/RTTTL" title="Ring Tone Transfer Language">RTTTL</a> ringtones, and a project for the <a href="http://www.processing.org/" title="Processing.org">Processing</a> IDE that draws graphical representations of the notes that make up a ringtone. As a ringtone is played by the Arduino board, information describing each note is transmitted through the serial device to a computer running the Processing application. Here is a video demonstration, showcasing the Arduino ringtone player and the Processing ringtone visualizer:</p>
<p style="text-align: center;">
<object type="application/x-shockwave-flash" width="640" height="360" data="http://www.flickr.com/apps/video/stewart.swf?v=109786" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"> <param name="flashvars" value="intl_lang=en-us&amp;photo_secret=3c7662b7b2&amp;photo_id=5855234332&amp;hd_default=false" /><param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=109786" /><param name="bgcolor" value="#000000" /><param name="allowFullScreen" value="true" /><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/video/stewart.swf?v=109786" bgcolor="#000000" allowfullscreen="true" flashvars="intl_lang=en-us&amp;photo_secret=3c7662b7b2&amp;photo_id=5855234332&amp;hd_default=false" height="360" width="640"></embed></object></p>
<p>Sixteen pre-programmed ringtones are stored on the Arduino, with support for loading a user specified ringtone into the Arduino's EEPROM. The user specified ringtone is received through the Serial device.</p>
<p>Three buttons connected to the Arduino control the playing of ringtones. Two of the buttons are used to cycle through the ringtones in the jukebox, one to select the next ringtone in the jukebox and one to select the previous ringtone in the jukebox. The third button toggles the playing of the current ringtone. A LED blinks along with the ringtone while it is playing, and information for each note is written to the Serial device as it is played. This illustration, made with the <a href="http://fritzing.org/" title="Fritzing">Fritzing</a> project documentation software, shows how the components are connected to the Arduino from a breadboard:</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/61351883@N06/5583544242/" title="Ringtone Jukebox Breadboard Layout by dusgrave, on Flickr"><img alt="Ringtone Jukebox Breadboard Layout" height="256" src="http://farm6.static.flickr.com/5058/5583544242_0cd8ae9172.jpg" width="500" /></a></p>
<p>When building this project, I used this <a href="http://www.sparkfun.com/products/7914" title="Arduino ProtoShield Kit">ProtoShield</a> from <a href="http://www.sparkfun.com/" title="SparkFun Electronics">SparkFun Electronics</a> in place of a traditional breadboard:</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/61351883@N06/5583512694/" title="Ringtone Jukebox by dusgrave, on Flickr"><img alt="Ringtone Jukebox" height="375" src="http://farm6.static.flickr.com/5263/5583512694_56734fbbb8.jpg" width="500" /></a></p>
<p>A program written with the Processing programming language receives information describing each note of a ringtone from the Arduino board for visualization as the ringtone is played. When idle, the Processing program displays a ring of darkly colored circles. The ring of circles is intended to simulate a ring of lights. When information describing a note is received from the Arduino, a circle associated with the note is temporarily redrawn with a brighter color for a duration determined by the duration of the note, making the circle appear to blink. The name of the current ringtone is also displayed in the upper left hand corner of the program's window.</p>
<p>User specified ringtones can be transmitted to the Arduino board with the Processing program. Pressing the space bar will display a dialogbox to which an RTTTL ringtone can be entered. A database of RTTTL ringtones can be found <a href="http://merwin.bespin.org/db/rts/" title="MeRWiN's Ringtone Search">here</a>.</p>
<p>The Processing program is also capable of recording video. Video recording is toggled with the Enter key.</p>
<h1>Building Your Own Ringtone Jukebox</h1>
<p>Source code for the <a href="http://arduino.cc/en/Main/Software" title="Arduino IDE Download">Arduino IDE</a> and schematics for the <a href="http://fritzing.org/download/" title="Fritzing Software Download">Fritzing</a> project documentation software to help you build your own Ringtone Jukebox for Arduino are freely available, distributed under the terms of the open source <a href="http://en.wikipedia.org/wiki/MIT_License" title="MIT License">MIT License</a>. You can find all of the relevant files in my Arduino projects repository hosted by <a href="https://github.com/dgraves/ArduinoProjects" title="My Arduino Projects Repository">GitHub</a>:</p>
<p style="margin-left: 40px; ">git://github.com/dgraves/ArduinoProjects.git</p>
<p> </p>
</div></div></div><div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above"><div class="field-label">Project:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/category/project">Project</a></div><div class="field-item odd"><a href="/category/project/electronics">Electronics</a></div><div class="field-item even"><a href="/category/project/electronics/arduino">Arduino</a></div></div></div><div class="field field-name-taxonomy-vocabulary-6 field-type-taxonomy-term-reference field-label-above"><div class="field-label">Programming:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/category/programming/c-plus-plus">C++</a></div><div class="field-item odd"><a href="/category/programming/java">Java</a></div><div class="field-item even"><a href="/category/programming/processing">Processing</a></div></div></div>Thu, 16 Jun 2011 00:53:02 +0000dgraves349 at http://dgraves.orghttp://dgraves.org/ringtonejukebox#commentsAudioOrganizerhttp://dgraves.org/audioorganizer
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><h1>AudioOrganizer</h1>
<p>AudioOrganizer is a simple script for the Ruby programming language, written to organize audio files downloaded from the eMusic digital music service. Collections of files with names matching the eMusic file naming convention, <em>artist-album-track number-track name.mp3</em>, are reorganized into a hierarchical folder/file structure, <em>artist/album/track number-track name.mp3</em>. M3U playlist files can also be generated for a file collections. </p>
<p>The AudioOrganizer code has been placed in the public domain.</p>
<h2>Usage</h2>
<p>AudioOrganizer.rb provides two top level functions for organizing files and creating M3U playlists, which are used as:</p>
<blockquote><p>collection = moveFiles("/home/audio/downloads/emusic", "/home/audio/mp3")<br />makeM3UPlaylist("/home/audio/mp3", "/home/audio/mp3", collection)</p></blockquote>
<p> </p>
<h1>Downloads</h1>
<table border="0" cellspacing="2" cellpadding="2" width="100%"><thead><tr><th>Name</th>
<th>Date</th>
<th>Size</th>
</tr></thead><tbody><tr class="odd"><td valign="top"><strong>Current Source:</strong> <a title="libcdlyte Source Code" href="/files/audioorganizer/AudioOrganizer.rb">AudioOrganizer.rb</a></td>
<td valign="top">5 Nov 2004</td>
<td valign="top">4.5KB</td>
</tr></tbody></table><p> </p>
</div></div></div><div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above"><div class="field-label">Project:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/category/project">Project</a></div><div class="field-item odd"><a href="/category/project/software">Software</a></div><div class="field-item even"><a href="/category/project/software/misc">Misc</a></div></div></div><div class="field field-name-taxonomy-vocabulary-6 field-type-taxonomy-term-reference field-label-above"><div class="field-label">Programming:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/category/programming/ruby">Ruby</a></div></div></div>Sun, 12 Jun 2011 23:34:41 +0000dgraves347 at http://dgraves.org