I have a friend who does research tracking the prevalence of eelgrass in the nearshore coast of Washington State. He tows an underwater camera that records the bottom along the transects that he follows. Years ago, I built a device that he could use to correlate GPS position, as recorded from his video, with the presence or absence of eelgrass in the frames, which are displayed in the pilot house in real time. Basically, an operator watches the video and holds a button down when she sees eelgrass, which gets recorded, along with its GPS position. From there, a map of eelgrass -- or any other feature -- can be produced in the region of interest. In addition, he wanted to record the count of other features seen in the video -- starfish, perhaps? -- along with the eelgrass data. So three of the buttons are edge-sensitive, rather than level sensitive. My device translates the button pushes into a custom NMEA sentence that it sends to an attached PC.
The original device I built for him used an SX processor, programmed in assembly, along with a voltage regulator, a logic-to-RS232 convertor, and numerous passive components, to accomplish the necessary functioning. I designed a PCB to accommodate all of those numerous parts and had it fabricated, after which I populated it with the SMD parts that it required.
The unit has performed flawlessly over the course of 15+ years. But now, my friend wanted a spare, you know, just in case ... Well, the SX chip I used is obsolete, so I had to start again from scratch. Here's a photo of the original unit:
I designed a replacement using the Propeller FLiP module
. This was much
easier than the original, so much, in fact, that I decided not to do a custom PCB, opting for Vectorboard and point-to-point wiring instead. I had only to add some LEDs, a couple of resistor networks, another resistor, and a header for the buttons. The FLiP module has everything else in a compact form factor. Here's a view of the interior before final assembly:
And one of the finished product:
I programmed an 87-line program in Spin that uses two cogs and locks to handle the buttons and transmit the data. I've always considered Spin to be a rapid-application-development (RAD) language, since it's so easy to cobble together elegant, working code in short order. (The original SX code was dozens of lines of SX ASM and took probably five times as much time to write.) Was the Propeller underutilized in this project? Yes. Does that matter? No!
The FLiP module is an OEM's dream. It's inexpensive and enables not only RAD, but rapid product development (RPD), whether the volume is one or hundreds. I cannot say enough good things about it. And I was able to build the spare device for my friend at much less cost to him than the original.