Interface and protocol on how to control an Eheim Pro 3e Aquarium Pump
The Eheim Pro 3e series of aquarium pumps have a 3.5mm (1/8 inch) jack that can hook the pump up to a computer. Eheim is selling a $100 USB interface, that I believe to be nothing more than a USB<>UART adapter with a 1/8 inch jack.
I want to figure out the physical interface to the pump and the protocol to speak to it. Ultimately I would like to control the pump from an Arduino (or other MCU) or a Raspberry Pi (mainly for network convenience).
1. Determine the pinout of the 1/8 inch headphone jack.
2. See if a cheap USB<>UART adapter will allow the Eheim software to speak to the pump.
3. Once we have communication to the pump, sniff the protocol to control the pump, read status information, etc.
4. Arduino library to control the pump / retrieve pump data. Might include program for Arduino to act as a more comfortable UI for the pump.
5. Raspberry Pi control of the pump through Python or other scripting language.
TIP is B (SIGNAL), RING is A (12V), SHIELD is GND
In my cable that's Black for B and Brown for A. Shield for Shield, duh.
Leave it to zee germanz to completely overengineer what should have been a simple UART interface.
I hooked up the UART <> USB adapter and tried all kinds of pinouts, it simply wouldn't work. I tried measuring the interface with the bus pirate and a multimeter but the readings didn't make sense for a UART port.
So ... after some digging I realized that this is not a UART port but RS485. It's a robust 3 wire connection based on voltage differentials. The upside is that it allows for very long cables, whoever might care about that in this setup. It's also commonly used for Alarm Panels in home alarm systems. Just FYI. Also fun to play with.
Anyway... My only RS485 adapter is in permanent installation in said alarm system so I need to get a new one, or better yet, just get a USB <> RS485 interface.
This is getting more complicated than I thought. No biggie though. Next week this should be done. I need to look into UART <> RS485 interface options if I want to control this thing from an Arduino or Raspberry Pi.
1. The eheim software itself has a firmware update button, but it links to a defunct php script on their site, so it doesn't work. They no longer supply firmware updates to users, you can send in your pump head (yeah, right) or you can use a third party software from "GHL", a company that eheim seems to have an agreement with about distributing the firmware at their (GHL's) risk.
2. I found the manual for the GHL updater and the filenames of the firmware indicate that the pump is controlled by a PIC18F252. This might be handy to know down the road.
3. The manual also indicates that the PIC is using some kind of bootloader and there is a application note for a bootloader for this PIC on the Microchip site. Maybe eheim just re-used the code. Something to poke at later.