Sudden unreliability with my network-enabled Arduino project [SOLVED]

Hello,

I've created a prototype device that opens/closes my garage door and gives me the status of it (open/closed). I installed it a few months back and it worked perfectly up until last month when we had a really hot week (the hottest since I installed it). Now it's unreliable. I can 'connect' to it (Android client app I wrote) over the internet/network every time I try just fine, but when I try to send a command (again, with the Android app after it initiates a connection) to close/open the garage door, it doesn't always work.

First, here's a link to pastebin for the Arduino code:

http://pastebin.com/P86C7ifZ

And here's a photo of the prototype installed near my garage door opener (near the ceiling):

|500x336

And here's the Fritzing image:

|500x441

So basically what's happening is that sometimes after I connect I will push the appropriate button on my Android app to send a command to either close or open the garage door, and it won't do anything. Sometimes it will after the 2nd try though. Sometimes it won't. I don't understand because like I said, it worked perfectly for a couple months, and nothing that I can think of has changed. Did the heat damage something? (I live in the Bay Area, California, USA...it got to the upper 90s (Fahrenheit) outside, and so it would've been several degrees hotter in my garage) Or is it just coincidence? What would be the most likely component(s) to be damaged if the heat did in fact damage something? I'm so new at this still I don't know what to do or where to begin troubleshooting.

My only idea is to take it down and install a resistor and LED on another pin of the Arduino and modify the Arduino code a little to turn off/on the LED when the garage door has been opened/closed by the Arduino and if that works but it doesn't actually open/close it, then I can rule out the Ethernet Shield being damaged and I'll know that the problem is with the Arduino pin, or the transistor/relay part of the circuit.

Sorry if I have too little information (or the wrong information) on here, I didn't want to put up too much, so I just put up the basics. I can post the Android code too, but I already have a lot of stuff on this post it seems like.

Oh, one strange thing though that's probably worth mentioning - regardless of whether it responds to my commands or not sent from the Android phone, it will always send the correct status of the garage door upon initial connection, and it does change as it should if the garage door's status changes (via the 'old-fashioned' push button in my garage), so it almost makes me think that it's not the Ethernet Shield. But then I think, well maybe it is the Ethernet Shield still as the garage door status commands are being sent from the Arduino to the Android, whereas my problem is sending from the Android to Arduino...I don't know. I'm a little overwhelmed.

Thanks, jamie

I'd suspect the relay beginning to stick or relay contacts wearing out.

But the relay was brand-new...but I'll check into it...could the heat have made it prematurely wear out?

domiflichi: But the relay was brand-new...but I'll check into it...could the heat have made it prematurely wear out?

Is the relay rated for the garage door current requirements? Looks kind of small.

Ohhhhh. Didn't think of that. I'll check into that too. Thanks!

Well, i just looked at my garage door opener and it says 5 Amps. And this is the relay I'm using:

http://www.digikey.com/product-search/en?x=0&y=0&lang=en&site=us&KeyWords=pb874

I assume that it's the contact rating (5A) that I care about? As opposed to the coil current (91mA)? If this is the case, is it still too small because it's exactly 5A and should have room for play...like 6 or 7 amps or something?

I have yet to replace it still and see if that 'fixes' it as that will take me a little more time, but I definitely want to try it today.

As opposed to the coil current (91mA)?

91mA is far too high to be driving directly from the Arduino. Are you using a transistor in between?

What is that blue stuff just above the Arduino? Looks like tape. Check all joints to make sure that they are securely soldered. Heat can cause them to work loose.

Yes there is a transistor in between (the little silver-colored circular thing directly below the relay shown in the photo). The blue stuff is like a sticky putty...don't remember what you call it. It's keeping the gray, black, and red wires inserted in the Ethernet Shield because the board is mounted horizontally, so I didn't want the wires to work themselves out or fall out. I'll check solder joints too then. Thanks.

Ok, well I finally disconnected my device that is shown in the picture and brought it in to my room to test and look further. Strangely after I removed it from the wood backer and separated the shield, and put it all back together it seemed to work just fine all day long (in my room) (this was Friday). But even though it was working fine, I still added an LED/resistor to one of the pins on the Arduino and updated the code in the sketch to turn on and off that LED whenever it received a garage door open or close command. It all seemed to work fine (including the relay happily clicking away when it should) still in my room also with it happily turning on/off that LED whenever it received a close/open command from my Android. So I installed it back up in my garage near the opener and hooked it all up, and seemed to work all day (this was yesterday).

Then this morning it worked once, then it didn't work anymore. :( And what I dreaded may happen happened - the LED never turned on/off when I would send the open or close command. According to my 'deductive skills', this means that nothing is wrong with the relay/transistor or that pin on my Arduino, correct?. Which, in turn, means that I've got something else going on such as a problem with the Ethernet Shield maybe? Now I am very overwhelmed. I don't really know how/what to troubleshoot something as complex as that shield. :(

Any help/advice would be greatly appreciated...but please remember, I'm a noob, so the more detail, the better.

Thanks

But even though it was working fine, I still added an LED/resistor to one of the pins on the Arduino and updated the code in the sketch to turn on and off that LED whenever it received a garage door open or close command.

but please remember, I'm a noob, so the more detail, the better.

That works both ways. "one of the pins" is not a lot of detail, I think you'll agree.

If if works on the bench, and not in the garage, then I would suspect a wiring issue.

Touche. You got me there. I just didn't think that it would be relevant, so I didn't mention that I put the new LED on Aruino pin 8 (so ATMega pin 14).

You know, it's funny. Shortly before you replied about the possible wiring issue, I remembered that I've been having another issue with another device. I purchased the parts for an OpenSprinkler device and put it all together last year, and have had problems with it ever since - from time to time it would just 'lock up' and i couldn't ping it or anything. It's driven me nuts for a long time and have not been able to figure it out...I just figured that it's something that I did (like something I broke while soldering everything in place). And I have an VoIP IP (PoE) phone that locks up from time to time. I just chalked the phone's problem to being cheap. But what I recently realized is that all 3 of these devices (the 3rd is my problem device that I'm most currently troubleshooting) are on the same switch - a NetGear 8-port (w/4 PoE ports) switch. So I'm wondering if this switch is bad.

What I did a few minutes ago is take that switch off of my network and moved things around to plug those devices into my other switches. So far, my garage door opener device is working great. (But that's how it usually starts off)

But we'll see, and I'll definitely be posting any updates (good or bad)...

Well that sure didn't last very long. Today my device was having the same problem, right off the bat in the morning so it wasn't even that warm yet. So when I got home from work I tested the cable and it tested fine. I used an STM-8 (http://www.siemon.com/e-catalog/ECAT_GI_page.aspx?GI_ID=tt_stm-8) cable tester. All 8 conductors came back fine with continuity, and no wires were crossed or anything.

The only thing I can think of I can do next is 'modify' my circuit/device even further and wire up an FT232R breakout board (http://www.sparkfun.com/products/718) so that I can hook it up to my laptop in the garage via USB and start outputting to the serial monitor what it's receiving when I attempt to send command to open/close the door from my Android app.

Even if I do this, I wouldn't know what to do next regardless of what I find - if I find that for some reason that characters/packets/whatever are getting dropped, I wouldn't know what to do, or if it appears everything is coming through fine, wouldn't know what to do.

Am I going in the next logical direction though as far as the best thing to do to troubleshoot my problem? Or should I try something else / look elsewhere?

I brought my device into my room, am powering it with the same power supply (9V purchased from Sparkfun) and I have it on my desk vertically, just like when it's mounted/installed in the garage. (When I did all my testing in my room prior to originally installing into my garage I had it laying flat/horizontally). Should that even matter?

It seemed to work last night flawlessly (of course this was only over the span of a few hours), but I have a feeling it's not going to give me a problem in my room. Are there any other 'variables' that I should be looking out for?

I don't know where you are, or the environment in the garage, but how hot is it in the garage where it is mounted?

Is there a specific time of day it starts to fail?

Just a thought...

I thought the same thing because I didn't start having the problem (had it installed, running successfully with no problems for a couple of months) until we had a really hot week upper 90s Fahrenheit. And I'm sure it's even hotter in my garage. (I live in the Bar Area, CA, USA)

However, it gives me trouble in the mornings sometimes too when it is not hot at all - maybe like around the 70s.

Considering the location, how is the humidity in the garage?

How about the mains power in the garage? Any chance that could cause a problem? Like big power-eaters closeby? A/C or the like that would cause voltage spikes or sags?

How about the garage door opener motor? Is that closeby? Maybe a shielded box might help?

There has to be something different if it does ok inside and not in the garage.

Just another few thoughts...

edit: How about the CAT5 cable? Is that run into the house? If the connection breaks, that could cause the ethernet shield code to lock up if not written correctly. Maybe a timeout routine on the connection?

I don't know the humidity in the garage...I think I'm going to stop by and by a thermostat on the way home and install it in the garage.

I'm pretty sure all the big guys - AC, Heater, Furnace are all on separate circuits. The furnace/heater/blower is inside the garage, but I'm pretty sure on a separate circuit. I do have a medium sized freezer inside the garage, but that might be on a different circuit, but I can check when I get home if you think that might be a problem.

I do have a lot of network/phone/security devices running on the same circuit inside the garage however. Would this cause a problem?

Yes, the garage door opener itself (the main unit with motor I guess) is pretty close by, yes. So this could cause a problem even if the motor is not 'spinning'? If so, maybe that's it! How far away does it need to be? When my device is mounted in the garage, it's probably within 12" or less of the actual opener/motor.

No, the CAT5 cable is running to my network equipment within the garage, and I tested it already - tested ok.

Maybe you could elaborate more or send me somewhere that would have more information on the proper code procedure to handle a possible broken connection?

I haven't seen your code, but here is mine.

The first downloads Google home page every 10 seconds, but has no timeout. http://arduino.cc/forum/index.php/topic,99629.msg754629.html#msg754629

Here is the timeout code for the Google code above: http://arduino.cc/forum/index.php/topic,102879.msg778413.html#msg778413

You must put them together. Shouldn't be that difficult. I did it. ;)

Thanks for the code links...

Any thoughts on my replies to your questions? Particularly the proximity of my device to the actual garage door opener?

Thanks.

It would be best for you to post your code. This is your project, and I don't know how you are doing things. If I can take a look, maybe I can help.

I would test it a piece at a time. Try it in the garage not connected to the motor. Does it still fail? It isn't connected to the motor in the house, is it?