SIM7000E Arduino Shield. HELP!

Hi,
I am looking for some help with coding and overall use of the SIM7000E shield that Core sell on their website. Are there any instructions and webpages that have detailed instructions which could help?

Thanks in advance

Hi Perry,

You can find all the documentation for the SIM7000E here:
https://www.dfrobot.com/wiki/index.php/SIM7000_Arduino_NB-IoT/LTE/GPRS_Expansion_Shield_SKU:_DFR0505/DFR0572

You can find this link in the product description on our website, and it’s the best resource available for how to use this device.

Thanks

1 Like

The preset code given is full of errors any chance you would know of some preset code that will work?

This is the only code I have sorry,

What are the errors that you are getting?

Errors given were:

Arduino: 1.8.9 (Windows 7), Board: "Arduino/Genuino Uno"

C:\Users\91968\AppData\Local\Temp\ccWXik24.ltrans0.ltrans.o: In function `setup':

D:\data\My Documents\Arduino\sketch_may31a/sketch_may31a.ino:13: undefined reference to `DFRobot_SIMcore::begin(Stream&)'

D:\data\My Documents\Arduino\sketch_may31a/sketch_may31a.ino:14: undefined reference to `DFRobot_SIMcore::turnOFF()'

C:\Users\91968\AppData\Local\Temp\ccWXik24.ltrans0.ltrans.o: In function `turnON':

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:232: undefined reference to `DFRobot_SIMcore::setRate(long)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:233: undefined reference to `DFRobot_SIMcore::send_cmd(char const*)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:234: undefined reference to `DFRobot_SIMcore::turnOFF()'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:236: undefined reference to `DFRobot_SIMcore::setRate(long)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:237: undefined reference to `DFRobot_SIMcore::send_cmd(char const*)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:238: undefined reference to `DFRobot_SIMcore::turnOFF()'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:248: undefined reference to `DFRobot_SIMcore::setRate(long)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:249: undefined reference to `DFRobot_SIMcore::send_cmd(char const*)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:251: undefined reference to `DFRobot_SIMcore::check_send_cmd(char const*, char const*)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:251: undefined reference to `DFRobot_SIMcore::check_send_cmd(char const*, char const*)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:260: undefined reference to `DFRobot_SIMcore::setRate(long)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:261: undefined reference to `DFRobot_SIMcore::send_cmd(char const*)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:263: undefined reference to `DFRobot_SIMcore::check_send_cmd(char const*, char const*)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:263: undefined reference to `DFRobot_SIMcore::check_send_cmd(char const*, char const*)'

C:\Users\91968\AppData\Local\Temp\ccWXik24.ltrans0.ltrans.o: In function `setBaudRate':

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:40: undefined reference to `DFRobot_SIMcore::check_send_cmd(char const*, char const*)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:60: undefined reference to `DFRobot_SIMcore::setRate(long)'

C:\Users\91968\AppData\Local\Temp\ccWXik24.ltrans0.ltrans.o: In function `checkSIMStatus':

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:71: undefined reference to `DFRobot_SIMcore::check_send_cmd(char const*, char const*)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:83: undefined reference to `DFRobot_SIMcore::check_send_cmd(char const*, char const*)'

C:\Users\91968\AppData\Local\Temp\ccWXik24.ltrans0.ltrans.o: In function `setNetMode':

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp<img alt=":100:" class="emoji gmail-smilies" src="https://cdn.jsdelivr.net/emojione/assets/svg/1f4af.svg" style="box-sizing: border-box; border: 0px; vertical-align: middle; height: auto; width: 20px; color: rgb(73, 93, 96); font-family: Roboto, sans-serif; font-size: 12px;"> undefined reference to `DFRobot_SIMcore::check_send_cmd(char const*, char const*)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:102: undefined reference to `DFRobot_SIMcore::check_send_cmd(char const*, char const*)'

C:\Users\91968\AppData\Local\Temp\ccWXik24.ltrans0.ltrans.o: In function `checkSignalQuality':

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:176: undefined reference to `DFRobot_SIMcore::cleanBuffer(char*, int)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:177: undefined reference to `DFRobot_SIMcore::send_cmd(char const*)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:178: undefined reference to `DFRobot_SIMcore::readBuffer(char*, int, unsigned int, unsigned int)'

C:\Users\91968\AppData\Local\Temp\ccWXik24.ltrans0.ltrans.o: In function `attacthService':

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:129: undefined reference to `DFRobot_SIMcore::cleanBuffer(char*, int)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:130: undefined reference to `DFRobot_SIMcore::send_cmd(char const*)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:132: undefined reference to `DFRobot_SIMcore::readBuffer(char*, int, unsigned int, unsigned int)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:141: undefined reference to `DFRobot_SIMcore::cleanBuffer(char*, int)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:143: undefined reference to `DFRobot_SIMcore::check_send_cmd(char const*, char const*)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:155: undefined reference to `DFRobot_SIMcore::send_cmd(char const*)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:157: undefined reference to `DFRobot_SIMcore::readBuffer(char*, int, unsigned int, unsigned int)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:165: undefined reference to `DFRobot_SIMcore::check_send_cmd(char const*, char const*)'

C:\Users\91968\AppData\Local\Temp\ccWXik24.ltrans0.ltrans.o: In function `openNetwork':

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:198: undefined reference to `DFRobot_SIMcore::send_cmd(char const*)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:199: undefined reference to `DFRobot_SIMcore::send_cmd(char const*)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:200: undefined reference to `DFRobot_SIMcore::send_cmd(char const*)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:202: undefined reference to `DFRobot_SIMcore::send_cmd(char const*)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:203: undefined reference to `DFRobot_SIMcore::send_cmd(char const*)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:217: undefined reference to `DFRobot_SIMcore::cleanBuffer(char*, int)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:218: undefined reference to `DFRobot_SIMcore::readBuffer(char*, int, unsigned int, unsigned int)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:216: undefined reference to `DFRobot_SIMcore::checkReadable()'

C:\Users\91968\AppData\Local\Temp\ccWXik24.ltrans0.ltrans.o: In function `send':

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:292: undefined reference to `DFRobot_SIMcore::send_cmd(char const*)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:293: undefined reference to `DFRobot_SIMcore::send_cmd(char const*)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:294: undefined reference to `DFRobot_SIMcore::check_send_cmd(char const*, char const*)'

C:\Users\91968\AppData\Local\Temp\ccWXik24.ltrans0.ltrans.o: In function `recv':

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:550: undefined reference to `DFRobot_SIMcore::cleanBuffer(char*, int)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:551: undefined reference to `DFRobot_SIMcore::readBuffer(char*, int, unsigned int, unsigned int)'

C:\Users\91968\AppData\Local\Temp\ccWXik24.ltrans0.ltrans.o: In function `closeNetwork':

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:601: undefined reference to `DFRobot_SIMcore::check_send_cmd(char const*, char const*)'

C:\Users\91968\AppData\Local\Temp\ccWXik24.ltrans0.ltrans.o: In function `send':

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:295: undefined reference to `DFRobot_SIMcore::send_cmd(char const*)'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:297: undefined reference to `DFRobot_SIMcore::checkReadable()'

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.cpp:298: undefined reference to `DFRobot_SIMcore::readBuffer(char*, int, unsigned int, unsigned int)'

C:\Users\91968\AppData\Local\Temp\ccWXik24.ltrans0.ltrans.o: In function `setup':

D:\data\My Documents\Arduino\sketch_may31a/sketch_may31a.ino:74: undefined reference to `DFRobot_SIMcore::turnOFF()'

collect2.exe: error: ld returned 1 exit status

exit status 1
Error compiling for board Arduino/Genuino Uno.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

But when I installed this library (DFRobot_SIM-master) the errors were significantly minimized to:

Arduino: 1.8.9 (Windows 7), Board: "Arduino/Genuino Uno"

In file included from d:\data\My Documents\Arduino\libraries\DFRobot_SIM-master/DFRobot_SIM.h:7:0,

                 from D:\data\My Documents\Arduino\sketch_may31a\sketch_may31a.ino:2:

d:\data\My Documents\Arduino\libraries\DFRobot_SIM-master/DFRobot_SIMclient.h:6:6: error: multiple definition of 'enum Protocol'

 enum Protocol {

      ^

In file included from D:\data\My Documents\Arduino\sketch_may31a\sketch_may31a.ino:1:0:

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.h:9:6: note: previous definition here

 enum Protocol {

      ^

exit status 1
Error compiling for board Arduino/Genuino Uno.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Hi Perry,

You need to removed the “-” from the file names for your libraries or Arduino wont recognize them.
Change “DFRobot_SIM7000-master” to “DFRobot_SIM7000”

Let me know how it goes!

Hi,
changed the names in the folder but couldn’t update them in the library (in the application). I complied and got the same errors:

Arduino: 1.8.9 (Windows 7), Board: "Arduino/Genuino Uno"

In file included from d:\data\My Documents\Arduino\libraries\DFRobot_SIM-master/DFRobot_SIM.h:7:0,

                 from D:\data\My Documents\Arduino\sketch_may31a\sketch_may31a.ino:4:

d:\data\My Documents\Arduino\libraries\DFRobot_SIM-master/DFRobot_SIMclient.h:6:6: error: multiple definition of 'enum Protocol'

 enum Protocol {

      ^

In file included from D:\data\My Documents\Arduino\sketch_may31a\sketch_may31a.ino:1:0:

d:\data\My Documents\Arduino\libraries\DFRobot_SIM7000-master/DFRobot_SIM7000.h:9:6: note: previous definition here

 enum Protocol {

      ^

exit status 1
Error compiling for board Arduino/Genuino Uno.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Thanks for your continual support

Hi Perry,

You have some sort of IDE configuration issue then. If the filenames did not change in Arduino IDE then you need update your library location within the IDE. I suspect this can be solved by correctly adding the libraries, but I’m not sure where your error has occurred.

Read through this tutorial on adding Libraries:
https://www.arduino.cc/en/Guide/Libraries

Another turn on problem. I think I have tried/addressed all the suggestions in this post andd on the DFRobot forum,
I used the examples ; DFRobot_SIM7000_ATtest and DFRobot_SIM7000_HTTP that came straight from https://github.com/DFRobot DF DFRobot_SIM7000-master. The same problem happens with both examples.
Shield ; SIM7000E Arduino NB-IoT/LTE/GPRS/GPS Expansion Shield DFR0572
Board; Unbranded Uno clone
Powered; 11.1v Lipo battery connected to GND and VIN of Shield & Uno
Alternatively and still unsuccessfully, a large 12V sealed lead acid battery
Monitor: Serial monitor of Arduino IDE 1.8.9
Serial switch is set to Tx>D8; Rx > D7
Software; Downloaded DFRobot_SIM-master and DFRobot_SIM7000-master from https://github.com/DFRobot on 7/9/2019
Unzipped using Arduino IDE “add Zip library”
When uploaded and the output checked on the Serial monitor, the code never reaches the line “Serial.println(“Turn ON !”);” Same result for both code examples
I tried changing the 20ms to 3000ms as suggested in 1 reply to this post.
Using debug text I have found that library file “DFRobot_SIM7000.cpp” has a function “TurnON” within that function the code is hanging/trapped in this while loop . Library only modified by addition of the labelled insertions to generate debug text.
while(1){
Serial.println(F(“The first While(1) of TurnON fnxn has commenced”)); //VN insertion
i = 6;
delay(200);
baudrate = 19200;
setRate(baudrate);
send_cmd(“AT\r\n”);
while(i){
Serial.println(F(“in While i”)); //VN insertion
if(check_send_cmd(“AT\r\n”,“OK”,1,1000)){
return true;
}
Serial.println(F("in if(check_send_cmd ")); //VN insertion **worked to here 6 times then back to TurnOn fnxn has commenced
delay(20);
i-- }
Happy to add any code that would be helpful, just thought this post was pretty big already.
Vere Nicolson

Can someone confirm that the correct place to attach the 7-12v power supply is via the vin pin in the red “Arduino power supply interface” header?

I know this is an old conversation but has anyone managed a long term solution to the Turn ON problem with the DFRobot SIM7000E shield.
I have been struggling for some time to correct the issue but so far no success.
I have used the examples and libraries from the DFRobot site https://wiki.dfrobot.com/SIM7000_Arduino_NB-IoT_LTE_GPRS_Expansion_Shield_SKU__DFR0505_DFR0572
and the modifies code for the library file suggested in SIM7000E expansion shield with Arduin Lenardo
I had a reliable system running on SMS messages to run a genset, pumps and valves. Since the closure of 3G where I live, the system no longer works. I simply want a shield that I can read SMS messages. I can then pass those messages along to my control system.
If the DFRobot SIM700E shield is not the best choice, I would gratefully accept advice.

I have spent countless hours trying to get this unit to work, I am even more motivated that I have x 20 of them. The DFRobot library is indeed full of errors.

I will try provide some insight into how I developed a somewhat reliable solution.

First of all, place your breakout on an Arduino board and upload a sketch that writes digitalPort 12 HIGH and void loop(){delay(1000);}. Connect a 9-12v power supply to the DCJACK of your Arduino, the unit should now have sufficient power.

Next, head to botletics SIM7000e shield (what this model was most likely ripped off) - https://github.com/botletics/SIM7000-LTE-Shield/wiki and install the drivers to your PC.

Download “AT COMMAND TESTER” by M2M solutions, they have a 14 day free trial.

Unplug your USB cable from the Arduino and plug a micro-usb cable into your sim7000. Keep the unit on the Arduino and the DC Jack powered.

Find the COM port where “ATPORT” driver is listed in device manager. Select “FIND PORTS” with AT TESTER and attempt to connect at 19200 baud. Try different bauds until you connect. Once connected set baud to 9600 (AT+IPR=9600). AT Command Tester was fantastic for testing SMS, Network Config, Registration etc, there is a SIMCOM version available also with NB-IOT/CATM1 features. I did most of the inital settings on this platform.

After testing the unit, open up the DFRobot_SIM7000.cpp library in a text editor. Find the function where ::turnON is called and modify the “baud rate” to 9600. You will now be able to turn on the unit and pass the first initialisation.

I am currently working to modify the library as HTTP POST/GET are extremely unreliable especially for an IOT application.

If all this fails, download the BOTLETICS library for Arduino, a much more advanced library. You will just need to ensure you write digitalPort 12 HIGH before using any commands in the library otherwise the unit will not boot.

1 Like

–Update–

Download BOTLETICS Sim7000 library from GITHUB. Much more advanced. Managed multiple successful HTTP GET requests. Only difference, PWRKEY is changed to digital port 12.

Sample program, not sure on changes made to .CPP file, I think it works standard after baud is set to 9600.

#include "Adafruit_FONA.h"
#include <SoftwareSerial.h> 
#include <Wire.h>

#define ltePort 12

SoftwareSerial fonaSS = SoftwareSerial(8,7);
SoftwareSerial *fonaSerial = &fonaSS;
Adafruit_FONA_LTE fona = Adafruit_FONA_LTE();

void setup () {
Serial.begin(9600);
pinMode(ltePort,OUTPUT);
digitalWrite(ltePort,HIGH);
fonaSS.begin(9600);
delay(2000);
  if (! fona.begin(fonaSS)) {
    Serial.println(F("Couldn't find FONA"));
    while(1); // Don't proceed if it couldn't find the device
  }
}

Special thanks to Botletics.

3 Likes

Thank you Luke
I will follow and reply on the other post you set up.

No problem Warren,

I will try the unit today with a regular Telstra Sim card and see how I go sending an SMS and will update you on how I go.