Friday, June 29, 2012

Building an Arduino LCD Interface, Part IV

The PCB arrived today from Sunstone Circuits:



I hope to find time to solder the parts on soon...

Monday, June 25, 2012

Installing new wall outlets

No matter how much I plan in advance, I never wind up with outlets where I need them (either high or low voltage).  In this case, the workshop desk has plenty of outlets above the desktop, but none where I needed them below.


As luck would have it (and this rarely happens to me), the desk happens to be located against an unfinished closet -- jackpot, minimum drywall damage required!   After locating the desired position for the outlets (and throwing up some scrap lumber to get things where they need to be), I marked the wall and cut out holes for two single gang boxes.



A few holes drilled into the 2x4s to route cables, and I was ready for final connections and face plates.  A great project for the weekend, and now I have power and CAT5 connections right where I need them.

Thursday, June 14, 2012

Building an Arduino LCD Interface, Part III

Continuing with the Building an Arduino LCD Interface series, this post will focus on creating the LCD panel PCB in Eagle.

With the schematic open in Eagle, choose File | Switch to Board to create a new board from the schematic.  Drag the components onto the board as desired, then use the Autorouter tool to quickly run the wires (I'm not exactly building a motherboard here, so no need to worry about how pretty the wiring is).  I then used the Text Tool to add some labels, placing them on layer 25 (tNames).

To create a ground plane on each side of the board, the polygon tool was used.  The following settings must be used: Width=10, Isolation set to ON, and Isolate=12 (see the following snapshot).


With the above settings in place, a polygon is drawn around the outside perimeter of the board.  After creating the polygon, use the Name Tool and rename the polygon GND.  Repeat this process, but instead of using 1 Top, use 16 Bottom for the layer.  Finally, press the Rats Nest Tool to fully render the polygon (until you do this, the polygon will appear as a dotted line, as seen in the image below).  This process is fully documented in a video on YouTube by rpcelectronics.


To verify the board, use the Tools | DRC function.  Make sure to load the appropriate set of rules - in my case, Sunstone Circuits is the manufacturer,  so the appropriate setting for this board was "EAGLE Design Rules for *2* Layer Designs (DS)".

Finally, the Sunstone Circuits PDF instructions titled "EAGLE v5.0+ Board Convert to Gerber Made Easy!" were followed to generate the required files for manufacturing.  For this board, I used the "2LPlus-Sunstone.cam" processing file.  After running all the gerber-related jobs, below is a the list of files that was zipped up to submit to order the PCB:


The next post will discuss final assembly of the board.  This post will most likely not be written until sometime in July (due to manufacturing/shipping times).

Friday, June 8, 2012

Building an Arduino LCD Interface, Part II

Continuing with the Building an Arduino LCD Interface series, this post will focus on creating the LCD panel schematic in Eagle.

With only a small amount of components, building the LCD panel schematic was a quick process.  I already knew that I wanted to connect the panel via some custom wires (more on that in a later post), so most of the board consists of 0.1" headers.  The only piece not already in Eagle was the Bourns trimmer resistor [Mouser #652-3386F-1-103TLF].  After a trip to google, I found an Eagle PCB Search site which had a link to a library containing the 3386 series components.  The library was hosted at Cadsoft USA, so a few clicks later I was downloading the parts library, and dumping it into my Eagle installation's LBR directory:


The final list of Eagle components needed for the schematic was:
  • 2 x PINHD-1x2
  • 1 x PINHD-1x4
  • 1 x PINHD-1x16
  • 1 x 3386-F (bourns.lbr)
After adding the parts, the wire tool was used to connect everything up.  A few wire junctions later, the schematic was complete (also verified by running the error checker with 0 errors found).

The next post will discuss converting this schematic to a board.

Wednesday, June 6, 2012

Installing Windows 8 Preview in VMWare Player

Its always important to know what our Microsoft overlords have in store for us in the next OS.  With the Windows 8 release coming soon, I've been long overdue to get a local copy in order to "kick the tires".

The release preview was just made public, so I downloaded a copy of the ISO from the following location:

Windows 8 Release Preview ISO

Before you leave the download page, make sure to copy the product key.  Its buried in the text, right beneath the download links, and you'll need it for the install.



After downloading was complete, it was time to install the image.  Unfortunately, VMWare doesn't have Windows 8 in the OS picklist yet, so you need to jump through a few hoops in order to get it installed.  Luckily, this path was already paved by others, and thanks to the internet, there was already a well documented procedure at this site.

The major steps are:
  • Create a new vm, choosing the options for "I will install the operating system later."
  • Select Microsoft Windows as the guest operating system
    • Choose either 32 or 64 bit Windows 7 depending on the Win8 ISO you downloaded
  • Give the VM a name
  • Choose "Customize Hardware"
  • Modify CD/DVD IDE
    • Select "Use ISO image for" and select your downloaded file
  • Accept all your changes in the New VM wizard, and start the VM
The install went cleanly, and actually went a lot faster than I was expecting (it didnt cycle through half a dozen reboots like most Microsoft OS installs tend to do).  There was a section during setup that I wasn't expecting, where you basically can bind your login to a hotmail account.  Already having one of those, I filled out the form and went on my merry way.  The install finished without issues, and I then proceeded to shutdown the VM and changed the VMWare "CD/DVD IDE" setting back to the normal "Use Physical Drive / Autodetect" value.

After restarting the VM, I was a bit surprised that I needed to login to the OS with my hotmail account.  This was a departure from the last 20 years of Windows, and I haven't decided whether I'm ok with that change (when you change your email address, its just one more thing that will need to be done).

The first thing which you'll notice (how can you not) is the new desktop:


I'm not sure I want my desktop looking like a tablet.  Where I can see where it could be useful to the "just checking my email/web" crowd, as a power user, its going to take quite a few custom widgets (or whatever those new tile things are called) to get the desktop to a place where I think I could be happy with it.  Initial thoughts have me wondering how I'll work with all my common development tools, as well as what in the world am I going to do with all the shortcuts that I tend to keep on my desktop.

There is an initial tile (lower left) for launching a "legacy Windows desktop", but it has really been decimated; the most painful loss being the lack of a Start menu.  I'm really not sure what they are thinking here - go ahead and default to the new metro interface, but why in the world would you take away the security blanket of the good old start menu.  I guess it won't be long before the web is crawling with start menu replacement apps (maybe not a bad thing).  It seems odd that they would make such a radical change to the screen with the Metro UI, but then leave the desktop (but only in a neutered state).  It seems like they had the option to go all in and ditch the desktop completely, but backed-out of that thought process about halfway through development.  Another initial point of confusion was how to get back to the main screen (ie - once you dive into email, how do you get out), which trial-and-error gave the answer: pressing the "Windows" key.

My initial impression is mixed.  The Metro UI is attractive (the less is more theory of UI) and seems quite responsive (wondering how that will that scale to a large number of tiles), but I'm concerned that its going to be a major hassle changing my work habits to operate within the new model, and whether I'll lose any critical features in the process.

I'll keep experimenting as time allows...

Saturday, June 2, 2012

Building an Arduino LCD Interface, Part I

Its been long overdue that I build something using the Arduino Rev 3 on the Breadboard Mk I.  That project was built about two months ago, and has been sitting idle ever since (time flies when you have little free time)...  The first order of business is to get some kind of human legible output; bring in the LCD panel.

Thanks to that amazing series of tubes, there is no shortage of tutorials already written on this topic online.  I settled on the step-by-step instructions found at LadyAda.net, tutorial for connecting a parallel LCD Panel.  That tutorial was so comprehensive that it took only 20 minutes to get the panel up and running (including cutting wires, unpacking the parts, etc.).  For the cliff notes edition, I drew up the following wiring diagram to summarize the connections:


The parts for this project were purchased on Mouser.com:
[763-NHD0420E2ZNSWBBW]  Newhaven Display 4x20 LCD Panel (blue/white)
[652-3386F-1-103TLF]  10k trimmer resistor.

Once the parts were connected, I started with the "LiquidCrystal Library - Hello World" sketch, and modified it to reflect the LCD panel and pins I used.

The LCD initialization was changed to the following:
LiquidCrystal lcd(6,7,8,9,10,11);

The setup() method was changed to the following:
lcd.begin(20, 4);
lcd.print("sparetimenotebook");

After compiling and downloading the sketch, below is the photo of the final device configuration:


Everything is working great; However, I really can't stand the wires going all over the place (I'm funny like that).  The next steps for this project will be to create a schematic in Eagle, followed by manufacturing a small PCB to mount onto the LCD.  This will give the wire traces and trimmer resistor a permenant home, and using some PINHD connectors, will allow easy connect/disconnect for the LCD panel on the prototyping board.

More to come later...