On Thu, Mar 14, 2013 at 2:43 PM, Earl Evans <earl at retrobits.com> wrote:
Hi all,
I need another project like I need a hole in the head. However, I am
definitely on the prowl for a way to store and retrieve information in a
more physical fashion. Something like a tape punch/reader, or a mark-sense
card reader. (I'd have to find or print some mark-sense cards...)
I'd love to see how to solve this problem - having recently connected
the dots about the HP 9830 I used as a kid, I see Doug Jones has a
high-res image of a blank card
(
http://www.divms.uiowa.edu/~jones/cards/collection/hp9320-2051big.gif)
so in theory, one could have a print-run on suitable-weight card stock,
or with a more gentle feed/scanning mechanism, laser-print blanks.
Back in the day I used punch cards, mark-sense cards,
and paper tape.
There's a certain "coolness" to actually seeing and holding the data in a
physical format. I think it would be great for my kids to see, and/or help
me build a physical storage device, to give them a more visceral sense of
computing. You can't exactly see the bits in a flash memory chip.
Agreed.
All that said - I've looked for homebrew projects
of this type, and haven't
come up with any great candidates. I'm not the most skilled person at
mechanical stuff, so I do seek a starting point for ideas or plans. Anyone
have any comments/suggestions?
Goal would be a method to store (could be as simple as #2 pencil), a method
to read, and a serial RS232 interface (that part I can build).
The HP 9320-2051 cards have timing marks. That really helps vs an
IBM Hollerith card that uses a constant-rate feed mechanism and
timing from the front edge to locate the data. One idea is to have
a microcontroller (Arduino with nootropic design Video Experimenter
shield or a Raspberry Pi with a USB web cam, etc) positioned such
that it sees a vertical slice of the card, filtered through a red gel to
obscure the printed background, and when two timing ticks are visible
(detected via either camera image decoding or perhaps a pair of spaced
phototransistors to a "trigger" input), snap a tall, narrow frame that
represents one column and look for the dark spots in the right places
and turn that into an ASCII character and emit it out the serial port
(both the Arduino and the Raspberry Pi can do this).
One could also just take a full frame image (if high enough resolution,
and this is where the Raspberry Pi w/Webcam might do better
than an Arduino with a low-res real-time NTSC decoder) then sift
through the pixels for the edges of the card and the timing tracks
and spit out the decoding of the now-aligned dark marks in the
data region.
With the printed timing track, I can imagine a hand-fed slot
that accepts commercially-printed card-stock or *perhaps*
laser-printed high-weight office paper. Hand-fed is possible
to contemplate since the data is aligned with visible clocking
and feed speeds wouldn't be required to be constant.
There's already Python code out there for decoding
full-frame imaged IBM Hollerith cards. It shouldn't be
too difficult to adapt that to a web-cam-based full-frame
HP 9320-2051 scanner. That method might be too
RAM-intensive for a small AVR processor, but any sort
of ARM-based appliance (Pogoplug, Shivaplug...) that
can talk to a USB camera can probably handle it.
So there's two approaches - build a "column-at-a-time"
scanner or build a full-frame scanner.
-ethan