this isn't exactly a circuit design question, but there is enough collective nerddom in this group to maybe point me in the right direction.
There's this elderly control PC controlling a quality control instrument in a factory, and the data that this PC collects needs to go out into the company network. The computer has no network connection, and it can't be upgraded. Any upgrades or modifications of software or hardware are taboo.
It does, however, have a USB socket for pen drives. What I'd like to have is a box that can be connected to the PC via USB in such a way that it mimicks a pen drive, allowing the PC to log data into it. This data I'd like the "box" to send out onto the Net, or to offer via ftp service, whatever.
Yes, but wireless-only (which should not be a problem because you van always run a WLAN on the other side) and it is for SD Cards (for which there are adapters USB-SD).
Not very expensive:
This is mainly intended for cameras where it allows wireless transfer of image data through their regular memory card slot instead of always having to fumble with a cables, or discover you left it at home. If the PC is from the times of Napoleon and can't handle a 4GB size you may have to get used ones, they made 256MB as well.
Heck, you can even upload to your smart phone. I believe you can set numerous modes such as instant send or wait for polling.
Joerg, thanks for the good starting pointer, but a chain of flimsy adapters which needs an extra Wifi router to bridge into the company network will make our IT department go ballisitic. I respect these guys, they are understaffed yet do a terrific job, so I need something they will actually like. Something like a brushed aluminium box with an USB port on one end and an Ethernet socket on the other and a Raspberry Pi inside. Data volume is very low, maybe 30 files 3k each per day. This is a serious 24/7 industrial production environment (Semi fab, actually) that can't tolerate rogue network devices.
Aside: the IT department's plan for replacing this elderly PC when it craps out is...?
I realize you may be looking for a "canned" solution. You can (could?) get a cable that has two USB A ends and a microcontroller in the middle, for transferring data between two PCs. As far as I know, though, these cables require their own drivers/software to be installed on the PC at each end, which is probably a non-starter for you.
How about this... it's sort of an automated sneakernet.
Bill of materials:
USB pen drive of whatever size - smaller (2 GB or less) may be better if the PC is really old
4PDT relay or two 4PST relays Raspberry Pi, or equal single-board computer with USB A, Ethernet, and one or two digital outputs Nice shiny box Some USB cables and connectors
Inside the shiny box, you connect the 4 lines from the pen drive to the wipers of the 4PDT relay. One set of contacts from the relay goes to a USB cable to the elderly PC. The other set of contacts from the relay goes to a USB cable to the Raspberry Pi. The coil of the relay goes to a digital output pin on the Raspberry Pi.
When the relay is in one position, it connects the pen drive to the elderly PC. Elderly PC sees it, mounts it as a drive letter, and then the elderly PC's software writes log files to the pen drive.
Every so often, the Pi flips the relay the other way, which disconnects the pen drive from the PC and connects it to the Pi. The Pi then mounts the pen drive somewhere, and then maybe copies the data from the pen drive to some other local storage on the Pi, or FTPs it off somewhere, or whatever. The Pi then flips the relay back to connect the pen drive back to the elderly PC.
If you want to have a "center off" function, where the pen drive is isolated from both the elderly computer and the Pi, you need the two
4PST relays instead. The pen drive goes to the wipers of both relays, and you tell the Pi to open both of them to provide the "center off" function.
The main problem here is that from the view of the elderly PC, you will always be doing a "surprise removal" of the pen drive, and some of the files the elderly PC was trying to write on the pen drive may or may not have been closed. I think you can give Windows a hint not to cache data in RAM for flash drives, but I don't know if it always takes your advice. This sort of depends on how the software on the elderly PC logs data - continuously to one file, a new file every 60 seconds, a new file every day, etc. You'll basically have a built-in race condition between the PC and the Pi; you'll have to decide how happy you are with this. This situation is hard to fix if you aren't allowed to modify the configuration of the elderly PC.
It sounds like (for software-verification reasons) active bidirectional transfer is not wanted. The traditional solution might have been a paper-tape writer. The closest item I can think of, nowadays, would be a barcode printer; you could put each logged test into a few scannable codes, print 'em, and collect the resulting tape in a basket; every so often, tear off the 'log' and scan it into another station (or use a smartphone). Or, just keep the paper tape on file. There are also OCR fonts, so a simple printer can be just as effective (but perhaps not as efficient at scan time). Out-of-paper and out-of-ink are problems, though.
There used to be serial ports for networks, and an output-only serial port on your sensitive PC could drive one of those with some fully-equipped network denizen picking up the data. Connect output and handshake signals only. A serial-serial connection direct to a non-sensitive computer will require physically routing serial wires, but is also an option.
If it's not writing to a pen drive now then how can you make it write to a pen drive when "any upgrades or modifications of software or hardware are t aboo?" You think plugging in a pen drive will make the current system autom atically write to it??? Tell us you're a 10yo.
I think you can do this with a Beagle Bone. it has a USB on the go jack, so it can behave as a usb DEVICE. (It also has a USB HOST jack and an Ethernet jack.) When connected with the OTG jack, it exposes its file system on that side. You could write an app that checks for a new file appearing, and then sends that out via the network.
Yeah... that's partly why I thought the relay+pendrive, maybe with "center off", would be easier to sell as a solution. Look, there's an air gap!
Point a webcam at the log paper!
Or, periodically dump the log file to the elderly PC's screen, and point a webcam at the screen. OCR and hope not too many of the '1's turn into 'l's.
Periodically dump the log file to the elderly PC's screen, and use external A/Ds to digitize the RGB and sync signals at the VGA connector. Reassemble the picture from the digital data and OCR that.
Periodically dump the log file to the elderly PC's screen, and Van Eck phreak it. :)
I think you can still get them. For me, the usual suspects would be either B&B Electronics or Black Box.
Yeah... If the elderly PC is elderly enough, it's likely to have a serial port as well. I thought about a batch file like this
cd c:\SuperSecretQASoftware\logs rem magic to find the latest log file goes here mode com1 9600,8,e,1 copy latestlog.txt com1:
and then having some other computer listening for it. Put the batch file in Task Scheduler (if equipped) to run at intervals. It's even better if SuperSecretQASoftware can kick off the batch file itself, but that may be a configuration change too far. Adding the batch file and the serial cable to the machine may be too much, anyway. This also only has the parity on the serial line to protect against corruption; a better solution would be to use xmodem/ymodem/zmodem or similar, but again, that requires more software on the elderly PC.
(Note: the syntax for the "mode" command in the example above is almost certainly wrong. It's still in Windows at least as of XP, though.)
Jon Elson's idea of something with a USB OTG port is probably closest to what the OP thinks he wants. John Fields' question (how is the data handled now) is also a good one. It would be interesting to know how strict the "no changes to the elderly PC" requirement is.
If you're going to put the data onto the screen, why not generate a serially-modulated screen "blink" to be received by a photocell or photodiode? You can improve the bandwidth by using multiple blocks or even putting up 1D or 2D barcodes and reading them via a photodiode array.
here's a commercial product using a variant of this technique:
Jes' another thought.
ACHTUNG! ALLES LOOKENSPEEPERS!
Dummkopfen. Das mausklicken Sichtseeren relaxen und watchen das