Sim800 FTP Arduino
Я не смог ничего передать по FTP с помощью Arduino и SIM800L. Я сократил код настолько, насколько это было возможно:
#include <SoftwareSerial.h>
//Create software serial object to communicate with SIM800L
SoftwareSerial mySerial(3, 2); //SIM800L Tx & Rx is connected to Arduino #3 & #2
String moduleAnswer = "";
void setup()
{
//Begin serial communication with Arduino and Arduino IDE (Serial Monitor)
Serial.begin(9600);
//Begin serial communication with Arduino and SIM800L
mySerial.begin(9600);
Serial.println("Initializing...");
delay(1000);
SoftwareATCommand("AT"); //Once the handshake test is successful, it will back to OK
SoftwareATCommand("AT+CSQ"); //Signal quality test, value range is 0-31 , 31 is the best
SoftwareATCommand("AT+CCID"); //Read SIM information to confirm whether the SIM is plugged
SoftwareATCommand("AT+CREG?"); //Check whether it has registered in the network
//APN and GRPS Setup
SoftwareATCommand("AT+SAPBR=0,1"); //Close GPRS before connecting
SoftwareATCommand("AT+SAPBR=3,1,\"Contype\",\"GPRS\""); //Configure bearer profile
SoftwareATCommand("AT+SAPBR=1,1"); //Connect to GPRS
//FTP Connection
SoftwareATCommand("AT+FTPCID=1");
SoftwareATCommand("AT+FTPSERV=127.189.249.205"); //Not real IP
SoftwareATCommand("AT+FTPPORT=21");
SoftwareATCommand("AT+FTPUN=user");
SoftwareATCommand("AT+FTPPW=pass");
//FTP Upload
uploadFTP();
}
void loop()
{
}
void uploadFTP()
{
SoftwareATCommand("AT+FTPPUTNAME=\"test.txt\""); //Filename
SoftwareATCommand("AT+FTPPUTPATH=/home/arduino/SolarDataLogger/"); //Path
SoftwareATCommand("AT+FTPPUT=1"); //Start FTP
delay(10000);
SoftwareATCommand("AT+FTPPUT=2,100"); //Send 100 bytes of data
delay(10000);
SoftwareATCommand("Hello12345"); //Send Data
SoftwareATCommand("AT+FTPPUT=2,0"); //Close FTP
}
String SoftwareATCommand(String strAT)
{
String strNotice = "Sending: " + strAT;
Serial.println(strNotice);
mySerial.println(strAT);
delay(500);
moduleAnswer = "No Response";
while(mySerial.available())
{
moduleAnswer = mySerial.readString();
char* buf = (char*) malloc(sizeof(char)*moduleAnswer.length()+1);
moduleAnswer.toCharArray(buf, moduleAnswer.length()+1);
Serial.write(buf);//Forward what Software Serial received to Serial Port
- Module answer sent to screen
free(buf);
}
return moduleAnswer;
}
Последовательный выход, в котором заключается проблема:
Я пробовал дольше ждать ответа +FTPPUT:
1,1,1360 или посылать что-то дважды, но, похоже, ничего не работает. Файл создается, но никакие другие данные никогда не отправляются.
@Jak, 👍0
2 ответа
Возможно, уже слишком поздно отвечать, но строка +FTPPUT: 1,65 указывает на ошибку сервера.
https://www.elecrow.com/wiki/images/2/20/SIM800_Series_AT_Command_Manual_V1.09.pdf - страница 275.
Пожалуйста , проверьте последовательность команд, может быть, чего-то не хватает ?
Я использую следующую последовательность :
"AT+CREG?"
"AT+SAPBR=3,1,\"Contype\",\"GPRS\""
"AT+SAPBR=3,1,\"APN\",\"NAME OF YOUR PROVIDER \""
"AT+SAPBR=1,1"
"AT+SAPBR=2,1"
"AT+FTPCID=1"
"AT+FTPSERV=\"SERVER ADDRESS\""
"AT+FTPPORT=21"
"AT+FTPTYPE=\"I\""
"AT+FTPUN=\"USERNAME\""
"AT+FTPPW=\"PASSWORD\""
"AT+FTPPUTNAME=\"" + NAME OF FILE + "\""
"AT+FTPPUT=1"
"AT+FTPPUT=2," + STRING OF BUFFER SPACE ( Get from response of FTPPUT=1 )
"AT+FTPPUT=2,0"
Посмотрите в руководстве для приведенных выше команд.
Извините за мою грамматику
то, что я заметил в вашем коде-я думаю, что вы не следовали правильной последовательности подключения контекста GPRS, упомянутого в спецификации sim800l.
Пожалуйста, следуйте разделу 3.1. конфигурация на предъявителя. Я также приложил скриншот ниже. Таким образом, вы пропустили настройку имени точки доступа(APN). После запроса контекста GPRS(последний шаг на изображении), если вы получите правильный IP-адрес, вы обязательно отправите данные по FTP. Пожалуйста, следуйте последовательности FTP, указанной в справочнике.
- Как отправить команду AT на sim800l с помощью SoftwareSerial
- SIM800L не регистрируется в сети
- GSM и GPS-модуль не работают вместе
- как заставить щит GPRS/GSM SIM900 работать с модулем gps neo-6M с помощью платы Arduino UNO
- GSM SIM900A Содержимое SMS не отображается
- SIM800L не отвечает на AT-команды
- Как связаться с GPS SIM900a без serial monitor
- Как отправить команду на Gsm модуль из Arduino через последовательный порт
Спасибо за ваш вклад. Я опубликовал это после перехода на Pi вместо этого для всех, кто может столкнуться с той же проблемой, и я думаю, что ваш вклад будет кому-то полезен., @Jak