old school RS-232
Tuesday, June 3 2008
The Arduino-based solar sufficiency controller is in the boiler room, about 100 feet away (by wire run) from the main laboratory computer, from which I deploy upgrades and tweaks to its software. For well over a year now, I've been trying to communicate with the Arduino across a cheap no-brand Chinese-built 100 foot USB extension system. This communication system worked well enough for me to keep it in place, but it was so unreliable that it was essentially broken and useless most of the time. The Arduino itself worked reliably during this time, and whenever I needed to upgrade its control software, I'd somehow cobble together enough functionality out of the USB cable to transfer the software. But I hated the unreliability, which prevented me from doing all sorts of other fun things. I couldn't, for example, reliably save logs of Arduino data on a computer in the laboratory, and this kept me from generating database digests of it. With the cheap 100 foot USB extension cable, the data would come in for an hour or two at the most and then suddenly die and I'd have to reboot the Arduino or the computer or both to set things right again. For a long time I'd actually thought this was a problem of the Arduino and not the cable, but when there's a cheap no-name Chinese-made link in a broken chain, chances are it's the thing that warrants the most suspicion.
Tracking down the exact nature of my problem was easy once I took it to the Arduino's very active and helpful message board system. From the material being posted there, it was clear that USB was not a suitable communication system given the length of the cable run. Standard RS-232 serial was what I needed. It's slow, but in this application speed is not important.
The first version of Arduino had used a standard nine pin serial port, but this had quickly been supplanted in later versions by USB and even BlueTooth. In fact, I couldn't find anyone selling old serial-based Arduinos anywhere. But then someone in the forum volunteered that his company was manufacturing Arduino knock-offs ("Freeduinos") with standard serial ports. What's more, these were compatible with the new Diecimila Arduino standard, which allows its processor to be reflashed without pushing its reset button. (To reflash the old-style Arduino NG in the basement, I'd had to rig a relay connected to its reset button, a relay that I energized with two wires run in a CAT-3 cable from the laboratory.)
So I'd ordered a kit containing the components to assemble a serial-port-based Freeduino (the price had only been $16.50). It arrived today and I immediately put it together. Its circuit board was a little tricky; solders tended to short out on the ground plane despite the non-conductive paint, but I eventually got the thing working. I'd originally planned to reuse the USB extension cable as conventional RS-232 cable, but in the end I got by using just a few of the conductors in a CAT-3 cable (the one that had been carrying the energizer wires to the old Arduino's reset relay). Once I got the wires figured out, this conventional old-school serial link proved rock solid.
The new system (and the fact that I no longer have to simulate the pressing of a reset button) will greatly simplify the process of redeploying solar sufficiency controller code, which will make me more enthusiastic to further expand and improve the code. There are some tricks I can achieve entirely in software to make the hydronic solar panel array more self-reliant and useful. One of these is: upon detection of maximum hot water tank temperature (150 degrees Fahrenheit) to switch to circulating hot water through the basement slab. This will act as a heat dump to prevent the panel from getting too hot and boiling over. A side benefit is that the additional heat in the basement (which is a little too cold even in the summer) will help slow the proliferation of mold.
For linking purposes this article's URL is:feedback
previous | next