Arduino UNO and SIM800L


#1

I have an Arduino UNO connected to a SIM800L. The SIM800L is connected to a 3.7v Battery and blinks once a second.


I am using this repository: https://github.com/HologramEducation/hologram-SIMCOM

I opened the Kitchen Sink Example and added my device key and pin numbers to the header of the code. After compiling and uploading to the UNO, here is my result:

ERROR: Timeout when calling AT
| elapsed ms = 0
ERROR: begin() failed at AT
DEBUG: Verbose monitoring and modem serial access enabled
DEBUG: Write Modem Serial = AT+CGATT?

ERROR: Timeout when calling AT+CGATT?
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CIPSTATUS?

ERROR: Timeout when calling AT+CIPSTATUS?
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CIPMUX?

ERROR: Timeout when calling AT+CIPMUX?
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CIFSR

ERROR: Timeout when calling AT+CIFSR
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CSQ

ERROR: Timeout when calling AT+CSQ
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CIPSHUT

ERROR: Timeout when calling AT+CIPSHUT
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CSQ

ERROR: Timeout when calling AT+CSQ
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CGATT?

ERROR: Timeout when calling AT+CGATT?
| elapsed ms = 0
ERROR: failed at +CGATT
ERROR: unable to connect to cellular network
DEBUG: Write Modem Serial = AT+CGATT?

ERROR: Timeout when calling AT+CGATT?
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CIPSTATUS?

ERROR: Timeout when calling AT+CIPSTATUS?
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CIPMUX?

ERROR: Timeout when calling AT+CIPMUX?
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CIFSR

ERROR: Timeout when calling AT+CIFSR
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CSQ

ERROR: Timeout when calling AT+CSQ
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CIPSHUT

ERROR: Timeout when calling AT+CIPSHUT
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CSQ

ERROR: Timeout when calling AT+CSQ
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CGATT?

ERROR: Timeout when calling AT+CGATT?
| elapsed ms = 0
ERROR: failed at +CGATT
ERROR: unable to connect to cellular network
DEBUG: Write Modem Serial = AT+CIPSTART=1,“TCP”,“23.253.146.203”,“9999”

ERROR: Timeout when calling AT+CIPSTART=1,“TCP”,“23.253.146.203”,“9999”
| elapsed ms = 0
ERROR: failed to start TCP connection
DEBUG: Write Modem Serial = AT+CGATT?

ERROR: Timeout when calling AT+CGATT?
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CIPSTATUS?

ERROR: Timeout when calling AT+CIPSTATUS?
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CIPMUX?

ERROR: Timeout when calling AT+CIPMUX?
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CIFSR

ERROR: Timeout when calling AT+CIFSR
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CSQ

ERROR: Timeout when calling AT+CSQ
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CIPSHUT

ERROR: Timeout when calling AT+CIPSHUT
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CSQ

ERROR: Timeout when calling AT+CSQ
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CGATT?

ERROR: Timeout when calling AT+CGATT?
| elapsed ms = 0
ERROR: failed at +CGATT
ERROR: unable to connect to cellular network
DEBUG: Write Modem Serial = AT+CIPSTART=1,“TCP”,“23.253.146.203”,“9999”

ERROR: Timeout when calling AT+CIPSTART=1,“TCP”,“23.253.146.203”,“9999”
| elapsed ms = 0
ERROR: failed to start TCP connection
DEBUG: Write Modem Serial = AT+CGATT?

ERROR: Timeout when calling AT+CGATT?
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CIPSTATUS?

ERROR: Timeout when calling AT+CIPSTATUS?
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CIPMUX?

ERROR: Timeout when calling AT+CIPMUX?
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CIFSR

ERROR: Timeout when calling AT+CIFSR
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CSQ

ERROR: Timeout when calling AT+CSQ
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CIPSHUT

ERROR: Timeout when calling AT+CIPSHUT
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CSQ

ERROR: Timeout when calling AT+CSQ
| elapsed ms = 0
DEBUG: Write Modem Serial = AT+CGATT?

ERROR: Timeout when calling AT+CGATT?
| elapsed ms = 0
ERROR: failed at +CGATT
ERROR: unable to connect to cellular network
DEBUG: Write Modem Serial = AT+CIPSTART=1,“TCP”,“23.253.146.203”,“9999”


#2

The initial AT failed. Most likely that means your TX and RX needs to be flipped.

UNO TX > RX SIM800
UNO RX > TX SIM800


#3

Thanks for the quick reply.

Just flipped them in the code, recompiled, uploaded, same error.


#4

Do you handle the voltage translation correctly between the SIM800L and arduino UNO?

The SIM800L has 2.8V logic, where the Arduino UNO has 5V logic. If the Arduino is putting 5V into the SIM800L RX, TX, or RESET lines you are likely to get undefined behavior and possibly damage the SIM800L. Also since the SIM800L is only outputing max 2.8V (probably more like 2.5-2.7V) for logic high, the Arduino UNO likely doesnt see this as a high enough voltage to trigger logic high.

You will likely need a level shifter to do this correctly (I think sparkfun has some, something like: https://www.sparkfun.com/products/12009)


#5

LastMinuteEngineers.com had a good writeup on this. I share the relevant piece below but the whole article is worth checking out. https://lastminuteengineers.com/sim800l-gsm-module-arduino-tutorial/

As @AndrewGifft mentioned the SIM800 could be damaged so if the problems persist after adding the resistors you may need to replace the cell module.

We cannot directly connect Rx pin on module to Arduino’s digital pin as Arduino Uno uses 5V GPIO whereas the SIM800L module uses 3.3V level logic and is NOT 5V tolerant . This means the Tx signal coming from the Arduino Uno must be stepped down to 3.3V so as not to damage the SIM800L module. There are several ways to do this but the easiest way is to use a simple resistor divider. A 10K resistor between SIM800L Rx and Arduino D2, and 20K between SIM800L Rx and GND would work fine.

7V-LiPo-Battery


#6

All good except the article is incorrect about the digital voltage level of the SIM800L. article says 3.3V but SIM800L Hardware Manual says 2.8V. See table 9 on page 30: https://img.filipeflop.com/files/download/Datasheet_SIM800L.pdf

image

Also see page 31 section 4.5.2 for reference circuits to go from 3V or 3.3V MCU to 2.8V SIM800L (I dont know why blogs dont just read and cite the manual…)


#7

Thank you @benstr and @AndrewGifft

Using the resistors did the trick! Now the question is, what will I do with this module…:thinking: