RF interference with TPL5010 causing restart, with video!

I found this strange behavior an I would like to share it with you.

I’ve few Electron running since the beginning of the year and I spent lot of time to redesign the PCB with some EM protection, TPL5010 watchdog and so on…

I tested the new board for a while just with the Electron without any enclosure and it works without any problem.

Yesterday with one of them after mounted into the plastic box (quite big like 150x110x70 mm) after connecting the battery it pulse white, then flash green then it blink cyan but after the first blink it start blinking white / D7 blue, like a multiple reset for few seconds, then repeat.

I tried another stock antenna and it was the same, then I tried another non stock antenna (same brand but different model, a super-wide range antenna) and the problem disappear.

The problem disappear also with the Electron out of the PCB but inside the box.

I found that the problem disappear if I completely remove the antenna (I think there is so much coverage that it connects without antenna as well).

Then I tried an external antenna, same problem. Now I put some aluminum foil next to the antenna wire and connector (not the Electron connector, the connector where you mount the antenna) and it works since last night without any problem.

Is it possible that the cellular signal may interference with the TPL5010 causing multiple resets?

Do you have a pull-down on the DONE line of the TPL5010?

I use a 10K pull-down on the TPL5000 because when the Electron first boots the GPIO that tickles the watchdog will be in INPUT (high-Z) mode, and the DONE line will float. This caused my watchdog to behave unpredictably.

Yes, I have it. Except this strange situation at the startup everything works fine.

This evening I’ll monitor the DONE and RST pin on a fresh start and I’ll post the output. Anything else can help me understanding the issue?

As a side question, how does the TPL5010 save more power than going into deepsleep with a timer as in (System.sleep(SLEEP_MODE_DEEP, 7) which wakes every 7 seconds on its own?

I’m using the TPL5010 as watchdog with 1hour 30 min time trigger. Normally the Electron power up for 2 minutes every 10 during the day and every hour during the night, everything with System.sleep and it works.

Here the output from the logic analyzer

Close to the reset train:

I have a DONE petting at the end of the setup code and one at the end of each loop (the loop has 2 seconds delay.

This is the normal behavior

the gap between the second done and the third is the cloud connection plus the data retreive routine.

The foil above the antenna is the only way I found to make it works.

RST has 100k pull-up resistor.

I also have 1uf capacitor on 3v3

Here the output from the Electron enabling the SerialLogHandler

0000011547 [system] INFO: ARM_WLAN_WD 1
0000012047 [system] INFO: ARM_WLAN_WD 2
0000012047 [system] INFO: CLR_WLAN_WD 1, DHCP success
1542047755 >>> Now is Mon Nov 12 19:35:55 2018
1542047755 >>> Not connected, trying to connect..
1542047755 >>> Get data..
0000012549 [system] INFO: Cloud: connecting
0000012550 [system] INFO: Read Server Address = type:1,domain:$id.udp.particle.io
0000012930 [system] INFO: Cloud socket connected
0000012930 [system] INFO: Starting handshake: presense_announce=0
0000012931 [comm.protocol.handshake] INFO: Establish secure connection
0000012945 [comm.dtls] INFO: (CMPL,RENEG,NO_SESS,ERR) restoreStatus=0
0000012945 [comm.dtls] INFO: out_ctr 0,1,0,0,0,0,0,68, next_coap_id=23
0000012945 [comm.dtls] INFO: app state crc: cached: 5607099e, actual: 5607099e
0000012946 [comm.dtls] WARN: skipping hello message
0000012947 [comm.dtls] INFO: restored session from persisted session data. next_msg_id=35
0000012947 [comm.dtls] INFO: session cmd (CLS,DIS,MOV,LOD,SAV): 2
0000013148 [comm.protocol.handshake] INFO: resumed session - not sending HELLO message
0000013148 [system] INFO: cloud connected from existing session.
0000013148 [system] INFO: Cloud connected

it close the connection caused by reset after that row

1 Like

I did another test, I’ve disabled the Particle.connection() code, now the Electron works till an http.get request I have in place as backup when there is no connection to the cloud.

To me seem something related to the data transmission itself. What could it be?

Guys any suggestion to debug this problem?

Here the video