SIM800L only works when USB serial port connected

I’m using Arduino Uno as my microcontroller, but I got a strange behavior. I need to run several function at the same time. One to get GPS and temperature value then send every value to user’s phone number when a request received by SIM800L GSM module, and another to display those value on I2C LCD. Everything works fine when my USB port connected to my computer. But when I tried to unplug the USB and using external power source from Li-Po battery I can’t get a response from SIM800L module whenever I send a request message.

When I tried to create a separate program (just received a request message and then sent a response by SIM800L) it works fine even though using external power supply (Li-Po battery) without USB port plugged in. Another strange behavior is when I was using both of Li-Po battery and USB port connected then unplugged the USB port it works fine again. But when I unplugged my battery and then plugged it again without USB port connected, SIM800L couldn’t send a response. What is wrong ?

Hello and welcome!

Do you have schematic of your circuit? Without knowing the circuit, it would quite difficult to understand it. That being said, some points for you to check:

  1. Are you sure the arduino, GPS module and temperature sensor are receiving proper power? The SIM800 can be directly powered by the Li-Po battery, but the others most likely need some sort of dc-dc converter.

  2. Without more info, it sounds like a floating connection somewhere, or maybe a bad ground. That is, maybe there is some part of your circuit that you think is connected but it might only be capacitively coupled, which can manifest as some erratic behavior. Check all your solders and connections.

  3. Is the battery, power supply/ies and/or dc-dc converters rated for your power consumption?

  4. If you have another arduino, you can use it as a “serial bridge” in order to send and receive messages for debugging purposes without powering the system via the USB. You only need to plug TX->Some-pin, RX->Someother-pin and GND->GND on both arduinos and program the “serial bridge” arduino with the Software Serial library, assign the corresponding pins a tell it to repeat whatever comes from one port onto the other, and vice versa. After that, you can talk to the original arduino (the one connected to the SIM800, GPS and temperature sensor) like it was connected with its USB port.

1 Like