Saturday, May 21, 2011

Front Panel PCB Circuit Schematic


This PCB houses 8 buttons, 1 IR remote receiver, 1 LED, 1 VFD, and 1 30-pin FFC (flexible flat cable) connector along with several resistors and capacitors. Up on closer inspection (with the help of a multimeter) I was able to draw the schematic for this board:


Since I do not know the exact spec of the VFD (which has whopping 45 pins total but only 26 of them are actually connected), I've only indicated which VFD pins and FFC connector pins are connected.

The LED and IR receiver circuits are pretty straight forward.

The buttons, however, looked somewhat puzzling at first. But, further inspecting the main PCB (i.e., the other end of the FFC) revealed that both K0 and K1 are connected to an Onkyo proprietary front-panel control IC with pulled-up 2.7 kOhm resistors. In other words, there is a variable voltage divider which results in unique voltage at K0 or K1 for each button. The Onkyo chip has either a pair of A/D converter or of arrays of analog comparators.

What to do with Front Panel PCB

The initial idea was to design a replacement PCB with Noritake VFD and a socket for the Arduino Nano. However, I concluded that there would not be enough space for Arduino Nano and more importantly it is not very cost effective to order large sparsely filled board.

Instead, I've decided to design a smaller PCB to mount the Arduino Nano and connect it to the (modded) original front panel PCB.

  • Both IR receiver and LED circuits can be used as is.
  • Remove the original VFD, and attach the Noritake VFD PCB right on the vacated space. Interestingly, the height of the original VFD unit is pretty much the same as the height of the Noritake VFD module (VFD + PCB). The front panel PCB needs to be cut so that the 6-pin VFD connector is accessible.
  • Buttons. There are several alternatives here...

Button Circuit

I came up with 3 different approaches
  1. Use the existing voltage divider circuit with Arduino's ADCs
  2. Use 8-to-3 encoder (74148)
  3. Use Microchip 8-ch I/O Expander (MCP23S08)

Option 1. Use the existing voltage divider circuit with Arduino's ADCs


Pro:
  • Least amount of modification of the front panel PCB
Con:
  • More complicated Arduino firmware design
  • Arduino must monitor the buttons all the time and cannot be powered down.

Option 2. Use 8-to-3 encoder (74148)


Pro:
  • Interrupt-driven all-digital system
Cons:
  • Front-panel button circuits must be scrapped and rewired using jumper wires
  • Needs pull-up resistors

Option 3. Use Microchip 8-ch I/O Expander (MCP23S08)


Pros:
  • Clean interrupt-driven system
  • No extra hardware components (MCP23S08 has built-in pull-up circuits)
  • Each button press individually monitored
Con:
  • Front-panel button-related resistors must be removed and rewired using jumper wires

Verdict: Option 3 for simplicity, versatility, and "greenness".

Option 1 is appealing at first but ultimately got rejected due to its inability to power down the Arduino. Of the two digital, interrupt-driven approaches, Option 2 was the first one I considered (and tested) but went with Option 3 largely due to the pull-up resistor free design. Also, only Option 3 can detect of each button state change, which enables simultaneous multiple-button presses.

Saturday, May 14, 2011

INTEC275 PC: Main Internal Components

After much talk of AMD Zacate, I've decided to go with Intel Atom D525 for Intec275 PC. This rig is solely intended for music playback and CD ripping. Hence, the Zacate's advantage in graphics processing does not come into play. Plus, the Intel's D525 board costs $80 while the cheapest Zacate board is priced above $100.

So, in the end, here's what I got:


Component Manufacturer Model Cost
Motherboard+CPU Intel BOXD525MW $79.99
Memory Crucial (2 x 2GB) DDR3 1066 SO-DIMM $44.99
Power Supply FSP Group FSP120-50GNF 120W Single FANLESS FLEX ATX PSU $57.99
Hard Drive Western Digital WD15EARS Caviar Green 3.5" SATA 1.5TB $79.99
Optical Drive Panasonic UJ875A slot-loading slim DVD burner $16.00 (eBay)
Wireless NIC Intel Intel 622AN Mini PCI Express 6200 Centrino Advanced-N $20.95

A Couple Notes:

* Motherboard BIOS... The first thing when you buy an Intel motherboard is to flash its BIOS. Mine came with one that is 6 revisions older than the most current one (~10 mo old, it could just mean that it's not being sold well...) and Ubuntu had trouble with the default BIOS (locks up when CPU goes into deep sleep).

* 3.5" HDD... It's tight. I tried pre-fitting all the components into the Intec275 chassis and the HDD will be hanging over motherboard with 3/4" clearance. I may need to go to 2.5" HDD in the end. Fingers crossed.

* PSU version... I was hoping to receive the version 2 of FSP120-50GNF with SATA power and 4-pin 12V motherboard connectors but nope, got the first version with 4 strands of 4-pin molex connectors (8 connectors total). Bummer.

* Cables... In addition to above 2 power connector adapters, 2 coax cables for wireless antenna connection have to be purchased separately. Got a pair of 7" UL.FL to RP-SMA pigtail cables on their way now.

Thursday, May 5, 2011

XBMC -> MPD or XMMS2 based jukebox

I've started this project with intent of using XBMC as the base of my modded system. It appears to be a fantastic HTPC program. However, the INTEC275 PC is aimed to be a (digital) jukebox, i.e., not interested in supporting video playback feature. Also, the aim is to control it via the front panel VFD & buttons and via the remote control without monitor. So, XBMC's smooth UI will not be visible. All in all, XBMC is way over-spec'ed for the purpose.

So, I've been looking around for alternatives and came across 2 viable candidates:
Both are music player daemon (i.e., background service) and I will pick one of the two and develop the front-end interface program for INTEC275PC.

当初のプランはINTEC275PCをXBMCPCとして稼動するつもりだったのですが、XBMCは単純なジュークボックスにはぶっちゃけ向いていない(XBMCはビデオ再生が主目的)。なので、代わりを探してみたところ、丁度いい感じのミュージックプレーヤー・デーモンを2つほど見つけた: MPDXMMS2。(デーモンは悪魔ではなく、バックグラウンド動作するプログラム。)これからどちらか一つに絞って、INTEC275PC用のクライエントを自分で組む。