Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
This shield can simply connect to an Arduino's (host board) pins to allow it to communicate with the SIM7500 module and temperature sensor and is compatible with the Arduino Uno, Mega, and Leonardo and most other 5V microcontroller boards available if used as a standalone module (not as a "shield"). You can view the full schematic here but the pinouts are shown below:
The complete setup needed to get this shield to work properly should look something like the picture below, with a SIM card and antenna connected:
The LTE Shield is powered by the 5V rail on the Arduino (or externally). This means that as long as your Arduino has adequate power the shield will be happy as well! However, if you don't plan on plugging the shield into an Arduino board you can use it as a standalone module (i.e., if you are using an Arduino Micro or other board that isn't in the Arduino Uno form factor) by connecting the 5V power rail and GND to the microcontroller, and connecting the appropriate logic pins explained in the next section (namely, TX and RX pins).
- GND - Common ground for all logic and power
- 3.3V - 3.3V from the Arduino's regulator. Use this just as you would on the Arduino!
- 5V - This 5V is the Arduino's 5V rail and is the logic voltage for the I2C and level shifting. Note that by default this does NOT power the shield! To power the shield you need to attach a micro USB cable.
NOTE: This feature is not really recommended, especially for heavy-use applications (transmitting lots of data) because the current can spike significantly! If you choose to experiment with this mode please power the Arduino from the barrel jack instead of via USB since this can handle more current than the USB (5V/1A using barrel jack vs 5V/500mA USB limit). However, the Arduino requires 7-12V on the barrel jack so please make sure your supply is adequate.
- VIN - This pin is simply connected to the VIN pin on the Arduino. You can power the Arduino as you normally would with 7-12V on this pin but this will NOT power the shield.
Logic Voltage Selection
3.3V Arduino Form-Factor Boards
By default the logic voltage is set to 5V but if you have, say, a 3.3V microcontroller this can be changed by cutting the existing trace on the back of the board as shown below with an X-ACTO knife or razor blade and bridging the other side of the jumper with solder. You can then supply a logic voltage anywhere from 1.8V and 5.5V across the VCC/GND header. This is perfect if you want to interface the board with a lower-voltage microcontroller!
However, it should be noted that supplying your own logic voltage will also switch the temperature sensor to that new logic voltage, but since the temperature sensor operates from 2.7-5.5V you won't be able to use the temperature sensor if the voltage is too low. However, you can still communicate with the SIM7500 down to 1.8V as long as it has an adequate power supply on the 5V pin (see previous section).
External Host Board
If you're wiring up the shield to an external microcontroller board, then you can use a quick and dirty trick to avoid having to set the solder jumper above. All you have to do is make the following key connections (MCU --> Shield):
- GND --> GND
- 3.3V --> 5V (this will make the shield operate on 3.3V instead of 5V)
- 3.3V TX --> Shield RX
- 3.3V RX --> Shield TX
Keep the LiPo battery in place, but note that it won't charge because there's only 3.3V on the 5V end, but if that's OK for you then you can save some work! This method has been tested on ESP8266 and other 3.3V microcontrollers!
The logic pins are the same as the host Arduino board but some are reserved for the SIM7500 module so you should not use them for other purposes:
- D5 - This pin is not normally connected but can be tied to the temperature sensor's ALERT pin by bridging the solder jumper on the front of the board. This pin can produce an interrupt when the temperature reaches a set threshold via I2C. To connect it, simply bridge the jumper on the board with solder. You can view the the full MCP9808 datasheet here. Since ALERT is open-drain output, the LTE shield includes a 10k pull-up resistor on the ALERT pin to pull it normally high; when the even occurs the interrupt will pull it low. Note that the ALERT pin can be configured as active-high instead of active-low, but active-low should is more conventional and should work for all practical purposes.
- D6 - This pin is connected to the SIM7500's "power key" (PWRKEY) pin. Pulsing it LOW for at least 100ms (500ms typical) then setting it back to HIGH will turn on the module if it was OFF previously. Note that there is a 13s lag before the green power LED will indicate that the module is on after you have initiated the turn-on pulse. To turn it OFF from being ON you have to pulse it for at least 2.5s, after which the power LED will lag about 26s to turn off.
- D7 - This pin is connected to the module's RESET pin and can reset it by pulsing the pin low for at least 100ms. Note that this pin should only be used in an emergency, according to the datasheet.
- D8 - This is the Ring Indicator (UI) pin for the UART and it can be used as an interrupt to see if the SIM7500 is currently in a call, or receives a text or URC report. Normally it's pulled high but when the text or call comes in it is pulled low. In order to reset it, use the "AT+CRIRS" command. However, in order to use this function you need to use the command "AT+CFGRI=1". More documentation can be found in Section 3.3.2 in the SIM7500 Hardware Design manual
- D9 - This is the UART Data Terminal Ready (DTR) pin which can be used in conjunction with "AT+CSCLK" to wake the module out of sleep mode for low-power applications. For most users and general testing this pin may not be needed but it's there in case you do. To connect the pin, bridge the solder jumper with a little solder.
- D10 - This is the SIM7500's RX pin which is the Arduino's TX pin. Both TX and RX are needed to communicate with the SIM7500!
- D11 - This is the SIM7500's TX (transmit) pin, which should be the Arduino's (or host board's) RX (receive) pin. In the Arduino IDE just make sure you're straight about which one is which! This pin is compatible for software serial RX on the Arduino Uno, Mega, and Leonardo.
- SDA - This is the I2C data pin which is used to communicate with the temperature sensor and this pin is the same as the analog pin A4 on the Arduino Uno
- SCL - This is the I2C clock pin and is the same as analog pin A5 on the Arduino Uno
Software Serial Note
Software serial is used in place of hardware serial for cases in which there is only a single hardware serial used for debugging (like the Arduino Uno) or when hardware serial is otherwise not available. Software serial emulates hardware serial by using two digital pins and interrupts. However, there are limitations to using software serial, including a lower maximum baud rate (57600 on Arduino Uno) which means that you will need to set the default 115200 baud rate of the SIM7500 module to a lower value in order to communicate reliably using software serial. Moreover, on some Arduino boards (like Arduino Mega and Leonardo) software serial is only available on certain pins for RX. Fortunately this shield is designed to use RX on pin 11 for compatibility with these boards. You can find more information about the library here.
Hardware Serial Note
If you are using hardware serial you will need to wire up TX and RX of the hardware serial port on the microcontroller to the RX/TX pins on the shield (D10/D11). On Arduino Leonardo the hardware serial port is pins 0 and 1 and therefore you will have to wire up the shield externally. Also, if the microcontroller has multiple hardware serial ports, please keep them straight! For example, using the Arduino Leonardo "Serial" is reserved for the USB interface (serial monitor) whereas you should use "Serial1" for the actual communication with the shield. So use "Serial" to print out your debug messages but use "Serial1" for executing AT commands, etc.
- Micro USB - This micro USB connector is for both powering the shield and communicating with the SIM7500 module. When powered is supplied to this connected, a green LED lights up:
- SIM Card Holder - This SIM card holder accepts micro SIM cards only! Most SIM cards come in a standard SIM size but also allow you to break out a smaller size. Break out the intermediate size (you should still have a "nano" size inside the "micro" one you're using). Insert the SIM card into the holder as shown below while the Arduino is off, trying not to touch the metal connections with your fingers!
- Antenna Connectors - There are a total of three standard uFL connectors, two for the LTE diversity wires and one for GPS. All these wires are labeled on the antenna that comes with the shield. This is absolutely essential for proper operation so go ahead and snap the antenna on!
The antenna also has 3M adhesive on the back if in case you want to stick it onto something.
There are two LEDs on the shield for indicating the power and network status of the SIM7500 module:
Module Power - This green LED (labeled "PWR") indicates the power state of the SIM7500 module. Just because this LED is off doesn't mean that the module doesn't have power, because you can command the module to shut down. If you want to disable this LED you can cut the jumper trace next to it on the board using a razor blade.
Network Status - This blue LED indicates the cellular network connection status. Per the SIM7500 Hardware Design Document, the LED being always on indicates searching for a network or call connect, 200ms ON/200ms OFF indicates data transmit (registered to 4G), 800ms ON/800ms OFF indicates registered to 2G/3G, and completely OFF indicates the module is in power-off or sleep mode.
Here's how it looks when both LED's are on:
Voice & Audio
A cool feature of this shield is that it has voice support so you can call a friend (or your own phone if you don't have any) from your Arduino! On the board there is a four-pin header split up into two sections: two pins for the microphone and two pins for the speaker.
- Microphone - You can solder the leads of an electret microphone directly to the "MIC-" and "MIC+" pins on the shield (the polarity/orientation does not matter). Use this to capture your beautiful voice over the cell towers!
- Speaker - You can use just about any small 8-Ohm speaker or a headset or pair of earbuds with two 16-Ohm speakers in parallel (8-Ohms total). Perhaps the quickest and easiest option is to get a pair of old earbuds or headphones, cut the audio jack off, and strip the two wires and solder them directly to the shield. The audio codec is capable of directly driving an 8-Ohm speaker up to about 0.4 Watts. Perhaps a better solution for those of a more refined palate is to get a 4-pole audio jack, solder the four wires to the LTE shield, then plug a headset with built-in microphone into the audio jack. (For headsets and earbuds polarity usually doesn't matter) However, do what suits you best; you can always use a speaker with a built-in amplifier if you're too manly for making phone calls with earbuds!