MEGA и SIM900 ОШИБКА при попытке опубликовать с использованием "AT + HTTPACTION = 1" - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть модуль SIM900, подключенный к Arduino MEGA, все работает нормально, за исключением того, что когда я пытаюсь сделать пост-запрос, он продолжает показывать ERROR после выполнения команды AT + HTTPACTION = 1, в руководстве SIM900, что сообщение ERROR является связанные с "Функциональность мобильного оборудования". Он работал отлично, но теперь продолжает показывать досадную ОШИБКУ.

Это мой код: (Я поставил поддельный адрес сервера, но мой работает нормально, я проверил его с почтальоном)

void gprsSetup()
{
  Serial.println(F("Initializing GPRS module"));
  delay(1000);
  Serial1.flush();
  Serial.flush();

  Serial1.println("AT+CGATT?");                    
  delay(1000);                                     
  toSerial();                                      
  delay(1000);                                     

  Serial1.println("AT+CBAND?");                   
  delay(1000);                                     
  toSerial();                                      
  delay(1000);                                    

  Serial1.println("AT+CBAND=\"ALL_BAND\"\r\n");        
  delay(1000);                                     
  toSerial();                                      
  delay(1000);                                     

  Serial1.print("AT+CGDCONT=1,\"IP\",\"internet.movistar.ve\",\"\",0,0\r\n"); 
  delay(1000);                                     
  toSerial();                                      
  delay(1000);                                     

  Serial1.println("AT+CGDCONT?");                  
  delay(1000);                                     
  toSerial();                                      
  delay(1000);                                     

  Serial1.println("AT+IPR?\r\n");                  
  delay(1000);                                     
  toSerial();                                     
  delay(1000);                                      


  Serial1.println("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"\r\n"); 
  delay(1000);                                     
  toSerial();                                      
  delay(1000);                                     

  Serial1.println("AT+SAPBR=3,1,\"APN\",\"internet.movistar.ve\"\r\n"); 
  delay(1000);                                     
  toSerial();                                      

  Serial1.println("AT+SAPBR=1,1\r\n");             
  delay(1000);                                     
  toSerial();                                      

  Serial1.println("AT+SAPBR=2,1\r\n");              
  delay(1000);                                     
  toSerial();                                      

  Serial1.println("AT+CSQ\r\n");                   
  delay(1000);                                     
  toSerial();                                      
  delay(1000);                                     

  Serial1.println("AT+SAPBR=2,1\r\n");              
  delay(1000);                                     
  toSerial();                                     

  Serial1.println("AT+HTTPINIT");                 
  delay(1000);                                     
  toSerial();                                      

  Serial1.println("AT+HTTPPARA=\"CID\",1");        
  delay(1000);                                     
  toSerial();                                      


  jsonWriting();
  delay(3000);

  Serial1.println("AT+HTTPPARA=\"URL\",\"http://myserverthatworks\"");        // not my real server address 
  delay(1000);                                     
  toSerial();                                      

  Serial1.println("AT+HTTPPARA=\"CONTENT\",\"application/json\"");        
  delay(1000);                                     
  toSerial();                                      

  Serial1.println("AT+HTTPDATA=" + String(sendtoserver.length()) + ",10000");        // Server
  Serial.println(sendtoserver);
  delay(3000);                                     
  toSerial();                                      

  Serial1.println(sendtoserver);
  delay(1000);
  toSerial();

  Serial1.println("AT+HTTPACTION=1");
  delay(3000);
  toSerial();

  Serial1.println("AT+HTTPREAD");
  delay(2000);
  toSerial();
  delay(2000);

  Serial1.println("AT+HTTPTERM");
  delay(3000);
  toSerial();

}

А вот и вывод

код вывода

1 Ответ

0 голосов
/ 30 апреля 2020

Используйте эту команду

 Serial1.println("AT+CMEE=2\r");   // Enable +CME ERROR: <err> result code               
 delay(1000);                                     
 toSerial();    

и используйте подробные значения, чтобы ваш модуль не отвечал простой строкой «ОШИБКА», но сообщал, в чем именно заключается проблема. Do:

 Serial1.println("AT&W\r");   // save to be persistent after a reset               
 delay(1000);                                     
 toSerial(); 

Затем при вызове

 Serial1.println("AT+HTTPACTION=1");
 delay(3000);
 toSerial();

вы получите ошибку - скорее всего, с sim900 это будет

CME ERROR: 4    Operation not supported

, что означает, что вы должны отправить строки через TCP / IP и с использованием

  Serial1.println("AT+HTTPACTION=0");

Если вы получаете

CME ERROR: 3    Operation not allowed

, ваш оператор сети не разрешает это так же, как и не поддерживается, если

 CME ERROR: 30  No network service

до 40 - это сетевые проблемы, на которые вы не можете повлиять, а ошибки от 41 до 50 - это отсутствие контактов, кодов, паролей и т. д. c Если у вас есть сообщение об ошибке, отредактируйте ваш вопрос, и я постараюсь помочь

...