Примеры из видео
Примеры не тестированы, не является готовым проектом и написаны для демонстрации работы с модемом.
pdf со списоком АТ команд Neoway M590 AT Command Sets_V3.0
код ниже отправляет массив в файл на FTP сервере
//#include <SoftwareSerial.h> #include <dht11.h> #define DHT11PIN 11 // пин DHT11 #define gsm Serial1 //SoftwareSerial gsm(7, 8); // RX, TX dht11 DHT11; int i = 0; // функция отправляет данные на фтп сервер void gprssend(){ // читаем данные с градусника DHT11.read(DHT11PIN); // собераем массив для отправки char val[47]; snprintf(val, sizeof(val), "#FFFFFFFFFFFF#ardESP\n#H1DHT11#%d\n#T1DHT11#%d\n##", DHT11.humidity, DHT11.temperature); // проверяем соединины ли с интернетом gsm.flush(); gsm.println("at+xiic?"); delay(100); if (gsm.find("0.0.0.0")) gprsconnect(); // если нет, то подключаемся gsm.flush(); gsm.println("AT+FTPLOGOUT"); // на всякий случай разлогиниваемся delay(1000); gsm.flush(); // соединяемся с FTP и отправляем массив в файл gsm.println("AT+FTPLOGIN=ip,login,pass"); // соединяемся с FTP, УКАЗЫВАЕМ СВОЙ СЕРВЕР! while(!gsm.find("+FTPLOGIN")); // в цикле ждем ответ delay(100); gsm.println("AT+FTPPUT=test.txt,1,2,47"); // открываем файл delay(1000); gsm.println(val); // пишим в файл массив delay(100); while(!gsm.find("+FTPPUT:")){ // ждем ответ Serial.print("."); delay(1000); } Serial.print("FTP send"); // отписываемся что отправили delay(1000); gsm.println("AT+FTPLOGOUT"); // разлогиниваемся } // отправляем настройки GPRS и подключаемся. void gprsconnect(){ gsm.println("AT+CGDCONT=1,\"IP\",\"internet.beeline.ru\""); delay(100); gsm.println("AT+XGAUTH=1,1,\"beeline\",\"beeline\""); delay(100); gsm.println("AT+CUSD=1,\"*99***1#\",15"); delay(100); gsm.println("AT+XISP=0"); // включаем РРР delay(100); gsm.println("at+xiic=1"); delay(100); do{ // ждем IP gsm.println("at+xiic?"); Serial.print("."); delay(300); }while(gsm.find("0.0.0.0")); } void setup() { Serial.begin(9600); gsm.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for Leonardo only } /* while(!gsm.find("+PBREADY")){ // при включении ждем готовность модема Serial.print(". ");ad delay(100); } */ do{ // проверяем готовность модема gsm.println("AT+CPAS"); Serial.print("."); delay(100); }while(!gsm.find("0")); do{ gsm.println("AT+CREG?"); Serial.print(":"); delay(100); }while(!gsm.find("+CREG: 0,1")); delay(100); gsm.flush(); gprsconnect(); // соединяемся с инетом gprssend(); // отправляем данные } void loop() { /* // read from port 1, send to port 0: if (Serial1.available()) { int inByte = Serial1.read(); Serial.write(inByte); } // read from port 0, send to port 1: if (Serial.available()) { int inByte = Serial.read(); Serial1.write(inByte); }*/ delay(6000); gprssend(); }
этот код отправляет данные на народный мониторинг
//#include <SoftwareSerial.h> #include <dht11.h> #define DHT11PIN 11 // пин DHT11 #define gsm Serial1 //SoftwareSerial gsm(7, 8); // RX, TX dht11 DHT11; int i = 0; void gprssend(){ DHT11.read(DHT11PIN); // читаем данные с градусника // if(!digitalRead(6)){ // если нажали кнопку char val[48]; snprintf(val, sizeof(val), "#FFFFFFFFFFFF#ardlab\n#H1DHT11#%d\n#T1DHT11#%d\n##", DHT11.humidity, DHT11.temperature); gsm.println("AT+TCPCLOSE=0"); // закрываем соединение, на всякий случай while(1){ // в цикле соединяемся с сервером народмон gsm.println("AT+TCPSETUP=0,91.122.49.168,8283"); delay(2500); if (gsm.find("+TCPSETUP:0,OK")) break; // если соединились, выходим из цикла Serial.println("tcp_err"); // если нет, проверяем соединины ли с интернетом gsm.flush(); gsm.println("at+xiic?"); delay(100); if (gsm.find("0.0.0.0")){ gprsconnect(); // если нет, то подключаемся delay(2000); } } // отправляем 47 байт gsm.println("at+tcpsend=0,47"); delay(100); gsm.println(val); delay(250); if (gsm.find("+TCPSEND")) Serial.println("sendOK"); else Serial.println("sendERROR"); gsm.println("AT+TCPCLOSE=0"); // закрываем соединение Serial.print("!!!"); } //// соединяемся с интернетом void gprsconnect(){ gsm.println("AT+CGDCONT=1,\"IP\",\"internet.beeline.ru\""); delay(100); gsm.println("AT+XGAUTH=1,1,\"beeline\",\"beeline\""); delay(100); gsm.println("AT+CUSD=1,\"*99***1#\",15"); delay(100); gsm.println("AT+XISP=0"); // включаем РРР delay(100); gsm.println("at+xiic=1"); delay(100); do{ // проверяем выдали ли нам IP gsm.println("at+xiic?"); Serial.print("."); delay(300); }while(gsm.find("0.0.0.0")); } void setup() { Serial.begin(9600); gsm.begin(9600); while (!Serial1) { ; // wait for serial port to connect. Needed for Leonardo only } pinMode(6, INPUT_PULLUP); /* while(!gsm.find("+PBREADY")){ // при включении ждем отклик от модема Serial.print(". "); delay(100); } */ do{ // проверяем готовность модема gsm.println("AT+CPAS"); Serial.print("."); delay(100); }while(!gsm.find("0")); do{ // проверяем готовность модема gsm.println("AT+CREG?"); Serial.print(":"); delay(100); }while(!gsm.find("+CREG: 0,1")); gsm.println("ATE0"); // выключаем эхо gsm.println("AT+XISP=0"); // включаем РРР delay(100); gsm.flush(); gprsconnect(); gprssend(); } void loop() { while (Serial.available() > 0) { // смотрим что ответил есп после отправки char i = Serial.read(); if (i == 's') gprssend(); else if (i == 'c') gprsconnect(); else Serial.write(i); } /* // read from port 1, send to port 0: if (Serial1.available()) { int inByte = Serial1.read(); Serial.write(inByte); } // read from port 0, send to port 1: if (Serial.available()) { int inByte = Serial.read(); Serial1.write(inByte); } */ }