Go Down

Topic: Internet garage remote  (Read 476 times) previous topic - next topic


Jan 06, 2017, 04:40 am Last Edit: Jan 06, 2017, 04:51 am by jefflundstrom Reason: Attachment not included
Hey everyone,

  I have an idea to hook and arduino wifi board to my garage remote so I can control the remote from everywhere.  I completed this and it works great.  I was in the process of writing up an instructable to share the information and it hit me that I could optimize the build.  But, I wanted to run this by the group for some advice.

First the way I got my remote to work was to hook the bare remote to a relay then have the relay close the contact to trigger the remote.  My remote uses a 3v battery, so instead of using a battery I just wired it to my 3v out on the arduino wifi board.  That works great, but I got to thinking I really don't need the relay because I am using power from my board and I should be able to just connect a arduino digital out to the negative side of the contact.  Will that work?  I would just try that, but I don't want to fry the remote, any advice is greatly appreciated and thanks in advance!



Jan 13, 2017, 04:59 am Last Edit: Jan 13, 2017, 05:01 am by musskopf
Hi Jeff,

So, if your remote is running at 3V you may need to change a bit things instead of directly plugging into the GPIO. I don't have any tool to draw at the moment but you should get the idea.

First you need to understand if the switch you are going to simulate has a pull-up or a pull-down on the respective Remote MCU PIN. Basically when you press the button you need to understand if the voltage on the MCU Pin on the Remove goes high or low. Just put a voltmeter on the Switch leg that goes to the MCU pin and another on the ground (Negative of the battery).

If the pin has a Pull-up, it's normally HIGH (3V) and when you press the button it goes down to 0V you should be OK to control it directly using the GPIO. But instead of using digitalWrite(PIN, HIGH) as default and digitalWrite(PIN, LOW) to "simulate" the button press, you'll need to use "pinMode(PIN, INPUT)" as default and "digitalWrite(PIN, LOW) + pinMode(PIN, OUTPUT)" to "simulate" the button press - do not enable the Pull-up on the PIN, in other words, never digitalWrite(PIN, HIGH).

The reason for the approach above is that leaving the PIN in INPUT mode (with the Pull-up disable), will make it very high impedance and you basically going to always read "HIGH" on the MCU because of the 3V from the Remote Pull-up. The High impedance means that you won't drain current from the Remove. When you change the Pin Mode to "OUTPUT" and write "LOW", it starts to "drain" current from the 3V and the Remote MCU PIN will go to 0V, making it will believe you pressed the button.

If the Remote MCU Pin has a pull-down, it's LOW at default, you read always 0V without pressing the button, the approach needs to be different. In "mechanical terms" you basically need to connect the Remote 3V supply to that Remote MCU Pin. If you simply write HIGH to that PIN you'll deliver 3.3V or 5V (depending on your Arduino) and may damage the Remote MCU.

For that reason you need a HIGH-SIDE SWITCH. This can be done with a P-Mosfet. Look at the image:

Imagine that the V+ is the Remote's 3V battery, and the "Load" the the Remote's MCU Pin. Now, you can drive the pin the same way you did on the Case 1. Leave it as "INPUT" for non-pressed and as LOW OUTPUT for pressed.

Make sure you pick a P-Mosfet that can be drive by 3V (or less). And with a voltmeter and a stand-alone battery you can always test all to make sure you're delivering only the 3V from the battery and nothing more.

If you can find the Remote MCU specs in the Internet and verify the supported voltages you might be able to drive it directly via the GPIO 3.3V (or even 5V), just need to connect Arduino and Remote grounds

Go Up