GSM-модуль IOT-GA6 Arduino + ошибка CME 58
Недавно я купил GSM-модуль IOT-GA6. Я хочу использовать его для отправки ммс, но не работает. Смс и звонок работают. Когда я выполняю функцию void (mms), монитор показывает сообщение об ошибке +CME EYROR:58. Кто-нибудь знает, что это значит и как это решить?
это мой код
include SoftwareSerial.h
include SD.h
define CS 4
SoftwareSerial A6Module(2, 3);
File dataFile;
int i;
unsigned char data=0;
void setup()
{
pinMode(PWR,OUTPUT);
pinMode(CS,OUTPUT);
A6Module.begin(115200);
Serial.begin(115200);
digitalWrite(PWR,LOW);
delay(10);
digitalWrite(PWR,HIGH);
delay(10);
if (!SD.begin(CS)) Serial.println("initialization failed!");
else Serial.println("initialization done.");
}
void loop()
{
if(Serial.available())
{
while(Serial.available())
{
data=Serial.read();
Serial.write(data);
Serial.println("\n");
}
//данные=0;
}
if(Serial.available())
{
data=Serial.read();
}
if(data=='1')
{
A6Module.println("AT+CGMI\r"); //Идентификация производителя
}
if(data=='2')
{
A6Module.println("AT+CGMM\r"); //Идентификация модели
}
if(data=='3')
{
A6Module.println("AT+CGMR\r"); //Версия ПО
}
if(data=='4')
{
A6Module.println("AT+CGSN\r"); // номер IMEI
}
if(data=='5')
{
A6Module.println("ATD+21369682909;\r"); //Вызов
}
if(data=='6')
{
A6Module.println("ATH\r"); //Вешать трубку
}
if(data=='7')
{
A6Module.println("AT+CMGF=1");
delay(2000);
A6Module.print("AT+CMGS=\"+213696829093");
A6Module.print(char(34)); // "
A6Module.print(char(13)); // CR
A6Module.print('\r'); // шестнадцатеричный эквивалент новой строки
delay(2000);
A6Module.print("A6 test message");
delay(500);
A6Module.println (char(26)); //ctrl_z
}
if(data=='8')
{
A6Module.println("AT+CMGR=1\r"); //Читать сообщение
}
if(data=='9')
{
A6Module.println("AT+CMGD=1,0\r"); //Удаленное сообщение
}
if(data=='s') sendMMS();
data=0;
}
void sendMMS()
{
A6Module.print("AT+CMMSINIT");
delay(100);
if(A6Module.available())
{
while(A6Module.available()) Serial.write(A6Module.read());
}
A6Module.print("AT+CMMSCURL=\"http://mms.itelcel.com/servlets/mms\"");
delay(100);
if(A6Module.available())
{
while(A6Module.available()) Serial.write(A6Module.read());
}
A6Module.print("AT+CMMSCID=1\r");
delay(100);
if(A6Module.available())
{
while(A6Module.available()) Serial.write(A6Module.read());
}
A6Module.print("AT+CMMSPROTO=\"148.233.151.240\",8080");
delay(100);
if(A6Module.available())
{
while(A6Module.available()) Serial.write(A6Module.read());
}
A6Module.print("AT+CMMSSENDCFG=6,3,0,0,2,4\r");
delay(100);
if(A6Module.available())
{
while(A6Module.available()) Serial.write(A6Module.read());
}
A6Module.print("AT+SAPBR=3,1,\"CONTYPE\",\"MMS\"\r");
delay(100);
if(A6Module.available())
{
while(A6Module.available()) Serial.write(A6Module.read());
}
A6Module.print("AT+SAPBR=3,1,\"APN\",\"mms.itelcel.com\"");
delay(100);
if(A6Module.available())
{
while(A6Module.available()) Serial.write(A6Module.read());
}
A6Module.print("AT+SAPBR=1,1");
delay(4000);
if(A6Module.available())
{
while(A6Module.available()) Serial.write(A6Module.read());
}
A6Module.print("AT+SAPBR=2,1");
delay(4000);
if(A6Module.available())
{
while(A6Module.available()) Serial.write(A6Module.read());
}
A6Module.print("AT+CMMSEDIT=1");
delay(100);
if(A6Module.available())
{
while(A6Module.available()) Serial.write(A6Module.read());
}
A6Module.print("AT+CMMSDOWN=\"PIC\",19293,2000000,\"test.jpg\"\r");
delay(1000);
if(A6Module.available())
{
while(A6Module.available()) Serial.write(A6Module.read());
}
dataFile=SD.open("test.jpg");
i=0;
if(dataFile)
{
while(dataFile.available())
{
data=dataFile.read();
if(data<0x10) Serial.print("0");
Serial.print(data,HEX);
i++;
if((i%40)==0) Serial.println();
A6Module.write(data);
}
dataFile.close();
}
else
{
Serial.println("error opening test.jpg");
}
delay(1000);
A6Module.print("AT+CMMSRECP=\"+213696829093");
delay(100);
if(A6Module.available())
{
while(A6Module.available()) Serial.write(A6Module.read());
}
A6Module.print("AT+CMMSVIEW\r");
delay(2000);
if(A6Module.available())
{
while(A6Module.available()) Serial.write(A6Module.read());
}
A6Module.print("AT+CMMSSEND\r");
delay(2000);
if(A6Module.available())
{
while(A6Module.available()) Serial.write(A6Module.read());
}
A6Module.print("AT+CMMSEDIT=0\r");
delay(2000);
if(A6Module.available())
{
while(A6Module.available()) Serial.write(A6Module.read());
}
A6Module.print("AT+CMMSTERM\r");
delay(2000);
if(A6Module.available())
{
while(A6Module.available()) Serial.write(A6Module.read());
}
}
@Hamoud Hoceini, 👍-1
Обсуждение1 ответ
▲ 1
Arduino Uno не поддерживает максимальный ток, запрошенный GA6, попробуйте внешний источник для модуля gprs с напряжением не менее 6 В, используя общую землю между модулем gprs и arduino.
,
@Links Engel
Смотрите также:
- как отправить аргумент объектам ESP8266WebServer в функции
- Разница между массивом char и массивом unsigned char
- Не могу использовать uint16_t в библиотеке
- Arduino UNO + Ethernet Shield + ЖК-дисплей + RFID, но RFID не работает
- Firmata: как установить определенный PIN на высокий уровень при загрузке?
- Arduino wrap или подкласс print() для работы с несколькими Serial
- Serial печатается дважды?
- Считывание данных нескольких датчиков из текстового файла, расположенного на SD-карте в Arduino/ESP32
какая строка вызывает ошибку? ... используйте операторы печати для отладки потока программы, @jsotola
все команды, начинающиеся с 'AT+CMMS' до A6, получают +cme error 58. Я не знаю, почему!, @b chabb