I’ve been having a lot of issues connecting to a SIM7000E through an Arduino UNO. Reading through all the posts on here, no one seems to be able to give a solid solution.
Firstly, I downloaded the source libraries from DF robot wiki, tried running the example code provided there (Which turned out to be a complete failure, that code simply doesn’t compile). The examples provided in the sim7000 libraries seem to run better.
Initially, I was seeing that this was failing to pass the “Turn ON” stage. I since connected this with a laptop charger to the 7-12V charging port, and it has seemed to fix that issue, and provides enough juice to get everything going. I’m sure this isn’t ideal, but it’s a temporary work around so I don’t have to invest more money into this system.
Progressing from there, I’m now hitting a “Fail to Attach service” issue, where
sim7000.attacthService() is failing (Yeah that’s the way it is in the source library). My signal strength is typically around 18 to 21 of 30.
At the moment I’ve tried both an amaysim (optus) and woolworth (telstra) sim, but both are getting stuck at that same error.
I’ve tried the
DFRobot_SIM7000_ATtest.ino, however I can’t get a response back from the device (apparently this code is broken too)
I thought to look at testing the AT commands of the device using https://m2msupport.net/m2msupport/software-and-at-commands-for-m2m-modules/ AT Tester, however that one just crashes every time I connect to my arduino port. (Am I just being stupid here or is there another method of connecting to the module for these AT commands in particular?)
So I guess what I’m asking is am I missing something? Did I get a dud? Is there any place to go from here, as it seems like it’s a bug riddled system that some people just don’t have any luck fixing. Any advice is greatly appreciated.
Thanks for the reply Wayne.
However, as I mentioned I’m unable to connect to the com port of the Arduino through AT command tester, it simply crashes on pressing connect.
sorry I’m not familair with the SIM7000, but can I ask a couple of basic questions.
- when you say that code simply does not compile, which actual code was that and are there any error messages?
- When you tried the SIMs, are they activated/registered? and for example the Telstra one may be locked to the device you used to register?
- how do you get the signal strength?
Also if all the code ‘is broken’ I’d be checking the wiring and that you have the correct pin assignments, e.g. in the start of
DFRobot_SIM7000_ATtest.ino you have:
#define PIN_TX 7
#define PIN_RX 8
Sure, appreciate the help!
The code I attempted to use was from the DFRobot Wiki (https://wiki.dfrobot.com/SIM7000_Arduino_NB-IoT_LTE_GPRS_Expansion_Shield_SKU__DFR0505_DFR0572). For some reason had a bunch of issues compiling this with the default library the wiki provides. Don’t have access to my system at the moment to see any errors.
Issues in sending AT commands to SIM7000E - This is the broken code I was referring to - with the actual reading and sending of AT commands to the device.
Both sims were indeed activated. I haven’t actually been able to test these in a device, as they are full size (for the sim module) and I’d like to avoid using an adapter in the device. However, I will look at this, thanks for the suggestion.
The signal strength can be found using the library command
sim7000.checkSignalQuality();, provided in one of the examples codes.
The module is a shield that sits directly on top of the Arduino, all pins connected so it shouldn’t be an issue there.
I have just tried the sample code from the WiKi. Once I added the two library files(DFRobot_SIM-master.zip and DFRobot_SIM7000-master.zip) it complies OK, so I suspect that you have not added them to the IDE correctly.
Try compiling again and posting the error messages.
I’ve had a closer look at the DFRobot code and cannot see anywhere that mySerial is started. Normally there would be a couple of things in setup():
(Reference https://www.arduino.cc/en/Reference/SoftwareSerialBegin )
// define pin modes for tx, rx:
// set the data rate for the SoftwareSerial port
I suggest you add the line
I think the pinMode() lines are only there for completeness, they are not in all the Arduino examples. N.B. in the DFRobot case they have defined the pins as PIN_TX and PIN_RX, so would need altering anyhow.
I just noticed that their ‘Tutorial’ example has a mySerial.begin(19200); later in the code.
Let me know if that makes any difference.