Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino 我的ESP8266/NodeMCU如何与GSM模块SIM800L通信?_Arduino_Esp8266_Nodemcu_Software Serial_Sim800l - Fatal编程技术网

Arduino 我的ESP8266/NodeMCU如何与GSM模块SIM800L通信?

Arduino 我的ESP8266/NodeMCU如何与GSM模块SIM800L通信?,arduino,esp8266,nodemcu,software-serial,sim800l,Arduino,Esp8266,Nodemcu,Software Serial,Sim800l,因此,我想将我的SIM800L GSM模块连接到我的NodeMCU。我买了一个LM2596 DC-DC电压调节器,用于将SIM800L的输出电压转换为~4V。调节器的输入电压为9V/1A 一切都已连接:从GSM接收到D5(GPIO14),从TX接收到D6(GPIO12),从RST接收到D7(GPIO13)。GPIO是特意选择的,因为我在网上读到,NodeMCU上的RX/TX引脚在内部使用。我以前尝试过匹配RX/TX引脚,但结果是一样的(这就是为什么我确定,这一定是我的代码有缺陷)。GSM模块中还

因此,我想将我的SIM800L GSM模块连接到我的NodeMCU。我买了一个LM2596 DC-DC电压调节器,用于将SIM800L的输出电压转换为~4V。调节器的输入电压为9V/1A

一切都已连接:从GSM接收到D5(GPIO14),从TX接收到D6(GPIO12),从RST接收到D7(GPIO13)。GPIO是特意选择的,因为我在网上读到,NodeMCU上的RX/TX引脚在内部使用。我以前尝试过匹配RX/TX引脚,但结果是一样的(这就是为什么我确定,这一定是我的代码有缺陷)。GSM模块中还插入了SIM卡(带PIN)

我在Arduino IDE上编码,我使用GSMSim和软件串行库连接到GSM模块。我已经尝试了GSMSim的示例草图,以便与GSM模块通信,但在串行监视器上没有得到任何答案

我还尝试手动向GSM模块发送命令

#include <GSMSim.h>
#include <SoftwareSerial.h>

// You can use any Serial interface. I recommended HardwareSerial. Please use the library with highiest baudrate.
// In examples, i used HardwareSerial. You can change it anymore.

#define RX 14
#define TX 12
#define RESET 13

SoftwareSerial serial(RX, TX);
GSMSim gsmModule(serial, RESET);

void setup() {
  serial.begin(115200); // If you dont change module baudrate, it comes with auto baudrate.
  while(!serial) ;
  Serial.begin(115200); // Serial for debug...
  while(!Serial) ;

  Serial.println("");
  Serial.println("serial begin");
  
    // Init module...
    gsmModule.init(); // use for reseting module. Use it if you dont have any valid reason.
  delay(100);

  gsmModule.sendATCommand("AT+GMR");
  if(serial.available()) Serial.println(serial.readString());
  Serial.println("Sent AT");

}
修改后的GSMSim_HTTP草图的另一个示例:

#include <GSMSim.h>
#include <SoftwareSerial.h>

// You can use any Serial interface. I recommended HardwareSerial. Please use the library with highiest baudrate.
// In examples, i used HardwareSerial. You can change it anymore.

#define RX 14
#define TX 12
#define RESET 13

SoftwareSerial serial(RX, TX);
GSMSim http(serial, RESET);
static volatile int num = 0;

void setup() {
  serial.begin(115200); // If you dont change module baudrate, it comes with auto baudrate.

  while(!serial) {
    ; // wait for module for connect.
  }

  Serial.begin(115200); // Serial for debug...

  // Init module...
  http.init(); // use for init module. Use it if you dont have any valid reason.

  Serial.print("Set Phone Function... ");
  Serial.println(http.setPhoneFunc(1));
  //delay(1000);

  Serial.print("is Module Registered to Network?... ");
  Serial.println(http.isRegistered());
  //delay(1000);

  Serial.print("Signal Quality... ");
  Serial.println(http.signalQuality());
  //delay(1000);

  Serial.print("Operator Name... ");
  Serial.println(http.operatorNameFromSim());
  //delay(1000);


  //Serial.print("GPRS Init... ");
  //Serial.println(http.gprsInit("internet")); // Its optional. You can set apn, user and password with this method. Default APN: "internet" Default USER: "" Default PWD: ""
  //delay(1000);


  Serial.print("Connect GPRS... ");
  Serial.println(http.connect());
  //delay(1000);

  Serial.print("Get IP Address... ");
  Serial.println(http.getIP());
  delay(1000);
  
 
  Serial.print("Get... ");
  Serial.println(http.get("sera.erdemarslan.com/test.php"));
  delay(1000);

  Serial.print("Get with SSL and read returned data... ");
  Serial.println(http.getWithSSL("erdemarslan.com/test.php", true));
  delay(1000);

  Serial.print("Post... ");
  Serial.println(http.post("sera.erdemarslan.com/test.php", "name=Erdem&surname=Arslan", "application/x-www-form-urlencoded"));
  delay(1000);

  Serial.print("Post with SSL and read returned data... ");
  Serial.println(http.post("erdemarslan.com/test.php", "name=Erdem&surname=Arslan", "application/x-www-form-urlencoded", true));
  delay(1000);

  Serial.print("Close GPRS... ");
  Serial.println(http.closeConn());
  //delay(1000);

  // For other methods please look at readme.txt file.

}

void loop() {
  
  // Use your Serial interface...
  if(serial.available()) {
      String buffer = "";
      buffer = Serial1.readString();
      num = num + 1;
      Serial.print(num);
      Serial.print(". ");
      Serial.println(buffer);
  }
  
  // put your main code here, to run repeatedly:
}
我希望这是显而易见的,因为我根本不熟悉任何命令

谢谢

ESP8266的GSM发送至接收引脚(引脚14),GSM接收至发送引脚(引脚15)。
#include <GSMSim.h>
#include <SoftwareSerial.h>

// You can use any Serial interface. I recommended HardwareSerial. Please use the library with highiest baudrate.
// In examples, i used HardwareSerial. You can change it anymore.

#define RX 14
#define TX 12
#define RESET 13

SoftwareSerial serial(RX, TX);
GSMSim http(serial, RESET);
static volatile int num = 0;

void setup() {
  serial.begin(115200); // If you dont change module baudrate, it comes with auto baudrate.

  while(!serial) {
    ; // wait for module for connect.
  }

  Serial.begin(115200); // Serial for debug...

  // Init module...
  http.init(); // use for init module. Use it if you dont have any valid reason.

  Serial.print("Set Phone Function... ");
  Serial.println(http.setPhoneFunc(1));
  //delay(1000);

  Serial.print("is Module Registered to Network?... ");
  Serial.println(http.isRegistered());
  //delay(1000);

  Serial.print("Signal Quality... ");
  Serial.println(http.signalQuality());
  //delay(1000);

  Serial.print("Operator Name... ");
  Serial.println(http.operatorNameFromSim());
  //delay(1000);


  //Serial.print("GPRS Init... ");
  //Serial.println(http.gprsInit("internet")); // Its optional. You can set apn, user and password with this method. Default APN: "internet" Default USER: "" Default PWD: ""
  //delay(1000);


  Serial.print("Connect GPRS... ");
  Serial.println(http.connect());
  //delay(1000);

  Serial.print("Get IP Address... ");
  Serial.println(http.getIP());
  delay(1000);
  
 
  Serial.print("Get... ");
  Serial.println(http.get("sera.erdemarslan.com/test.php"));
  delay(1000);

  Serial.print("Get with SSL and read returned data... ");
  Serial.println(http.getWithSSL("erdemarslan.com/test.php", true));
  delay(1000);

  Serial.print("Post... ");
  Serial.println(http.post("sera.erdemarslan.com/test.php", "name=Erdem&surname=Arslan", "application/x-www-form-urlencoded"));
  delay(1000);

  Serial.print("Post with SSL and read returned data... ");
  Serial.println(http.post("erdemarslan.com/test.php", "name=Erdem&surname=Arslan", "application/x-www-form-urlencoded", true));
  delay(1000);

  Serial.print("Close GPRS... ");
  Serial.println(http.closeConn());
  //delay(1000);

  // For other methods please look at readme.txt file.

}

void loop() {
  
  // Use your Serial interface...
  if(serial.available()) {
      String buffer = "";
      buffer = Serial1.readString();
      num = num + 1;
      Serial.print(num);
      Serial.print(". ");
      Serial.println(buffer);
  }
  
  // put your main code here, to run repeatedly:
}
serial.begin
Set Phone Function... 0
is Module Registered to Network?... 0
Signal Quality... 99
Operator Name... NOT CONNECTED
Connect GPRS... 0
Get IP Address... 
Get module date time... ERROR:NOT_GET_DATETIME
Set timezone and time server... 0
Sync date time from server... AT_COMMAND_ERROR
Get module date time after sycn... ERROR:NOT_GET_DATETIME
Close GPRS... 0