Arduino Uno+sim800l отправка СМС

overdast
Offline
Зарегистрирован: 12.10.2022

Здравствуйте!

Приобрел себе GSM-модуль и не как не могу от него добиться работы. Что я только не перепробовал разные схемы подключения и т.д., всего чего я добился это ошибки. Подскажите схемы подключения его к ардуине или где я сделал ошибку. 

Так же есть GSM-модуль SIM900A который пишет что коннект произошел, но логи выводит в виде пустых квадратов и сильно греется. Прочитал где-то что оба модуля стабильно работают от 5v c ардуины.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

- некорректно вставлен код (не по правилам форума)

- лог выложить в виде текста

- показать реальную схему подключения

https://arduino.ru/forum/apparatnye-voprosy/vse-o-sim800l-i-vse-chto-s-n...

GSM-модуль SIM800L: самый полный мануал (на примерах с Arduino Uno) - часть 1. Введение - Codius.ru

 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

[quote=overdast]

 Прочитал где-то что оба модуля стабильно работают от 5v c ардуины.

 

/quote]

рекомендую обратиться к тем адептам, кто это писал. По даташиту 4 вольта 2 Ампера питание должно быть.

 

overdast
Offline
Зарегистрирован: 12.10.2022
#include <SoftwareSerial.h>
#include <Wire.h>  
#include <DHT.h>   

SoftwareSerial mySerial(5, 6);  
#define DHTPin A0               
#define DHTTYPE DHT11           
#define pinSensor A5

char incomingByte;
String inputString;

float t;
float h;

void setup() {
  Serial.begin(9600);
  mySerial.begin(9600);

  while (!mySerial.available()) {     
    mySerial.println("AT");           
    delay(1000);                      
    Serial.println("Connecting...");  
  }
  Serial.println("Connected!");           
  mySerial.println("AT+CMGF=1");          
  delay(1000);                            
  mySerial.println("AT+CNMI=1,2,0,0,0");  
  delay(1000);                            
  mySerial.println("AT+CMGL=\"REC UNREAD\"");
}

void loop()

{
  if (mySerial.available()) {  
    delay(100);                

    while (mySerial.available()) {     
      incomingByte = mySerial.read();  
      inputString += incomingByte;     
    }

    delay(10);                    
    Serial.println(inputString);  
    inputString.toUpperCase();    /

    if (inputString.indexOf("DATA") > -1) {
      DHT dht(DHTPin, DHTTYPE);
      t = dht.readTemperature();
      h = dht.readHumidity();

      sms(String("Temperature: " + String(t) + " *C " + " Humidity: " + String(h)), String("+7927xxxxxxx"));
    }

    delay(100);
    if (inputString.indexOf("OK") == -1) {
      mySerial.println("AT+CMGDA=\"DEL ALL\"");
      delay(1000);
    }

    inputString = "";
  }
}

void sms(String text, String phone)  
{
  Serial.println("SMS send started");
  mySerial.println("AT+CMGS=\"" + phone + "\"");
  delay(500);
  mySerial.print(text);
  delay(500);
  mySerial.print((char)26);
  delay(500);
  Serial.println("SMS send complete");
  delay(2000);
}


10:33:13.405 -> Connecting...
10:33:13.405 -> Connected!
10:33:15.555 -> AT

10:33:15.555 -> OK
10:33:15.588 -> AT+CMGF=1

10:33:15.588 -> ERROR
10:33:15.629 -> AT+CNMI=1,2,0,0,0


overdast
Offline
Зарегистрирован: 12.10.2022

Индикатор мигает выходит с питанием в 5v все нормально?

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

overdast пишет:

Индикатор мигает выходит с питанием в 5v все нормально?

совсем не показатель

https://arduino.ru/forum/apparatnye-voprosy/vse-o-sim800l-i-vse-chto-s-n...

 

overdast
Offline
Зарегистрирован: 12.10.2022

Я так понимаю придется таки приобретать DC-DC преобразователь на понижение для SIM800L? Внешний вид платы модема в ваших ссылках отличается от моей это не делает их разными?

Тогда что не так с модемом SIM900A индикация не горит, греется как  не в себя по датащиту он спокойно должен держать 5V учитывая что у меня версия модуля v5.1.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

overdast пишет:

Я так понимаю придется таки приобретать DC-DC преобразователь на понижение для SIM800L? 

да, но можно напрямую от аккумулятора питать, главное резисторный делитель на RX модема поставить, чтоб модуль не спалить.

overdast пишет:

Внешний вид платы модема в ваших ссылках отличается от моей это не делает их разными?

не знаю, смотрите схемы / сравнивайте/ разбирайтесь.

overdast пишет:

Тогда что не так с модемом SIM900A индикация не горит, греется как  не в себя по датащиту он спокойно должен держать 5V учитывая что у меня версия модуля v5.1.

не знаю, с этими модемами не работал, читайте даташит.

 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

обратите внимание у вас даже начальная инициализация

AT+CMGF

не работает, или модем еще не загрузился и еще к оператору связи не зарегестрировалось, или другая проблема.

в общем случае, если подразумевается достаточно стабильное устройство, на случай замены модема, рекомендую провести полуную инициализацию модема, я использую для тестов такой код:

#define GSM_RX 3 // пин RX на модуле подключаем к указаному пину на Ардуино TX
#define GSM_TX 2 // пин TX на модуле подключаем к указаному пину на Ардуино RX
#include <SoftwareSerial.h>
SoftwareSerial SIM800(GSM_TX, GSM_RX); // установка контактовGSM_TX->RX и GSM_RX->TX для программного порта

void sendCMDandWait(char * inStr, unsigned char waitSec) {
  SIM800.print((char*)inStr);
  unsigned long startTimer = millis();
  while ((millis() - startTimer) < (waitSec * 1000UL)) {
    while (SIM800.available())  // Ожидаем прихода данных (ответа) от модема...
      Serial.write(SIM800.read());    // ...и выводим их в Serial
  }
}

void setup() {
  Serial.begin(9600);               // Скорость обмена данными с компьютером
  Serial.println("Start!");
  SIM800.begin(9600);               // Скорость обмена данными с модемом
  SIM800.println("AT");             // Автонастройка скорости
  SIM800.println("AT");             // Автонастройка скорости
  sendCMDandWait((char *)"AT\r", 3); // Автонастройка скорости
  // init
  sendCMDandWait((char *)"ATZ\r", 5); // проверка связи с модемом AT / сброс настроек на default - ATZ
  //sendCMDandWait((char *)"AT+CPIN=0000\r", 2); // вводим PIN код SIM карты
  sendCMDandWait((char *)"ATE1\r", 1); // отключение(ATE0) ЭХО, т е модем в обратку не дублирует
  sendCMDandWait((char *)"ATV1\r", 1); // развернуты подробный ответ от модема
  sendCMDandWait((char *)"AT+CMEE=2\r", 1); // вывод подробных описаний ошибок
  sendCMDandWait((char *)"AT+CIPSHUT\r", 5); // закрыть все интернет сессии
  sendCMDandWait((char *)"AT+CLIP=0\r", 2); // отключение АОН
  sendCMDandWait((char *)"ATS0=0\r", 2); // модем не берет трубку при входящем звонке
  sendCMDandWait((char *)"AT+CMGF=1\r", 2); // обычный режим вывода СМСе
  sendCMDandWait((char *)"AT+CSCLK=0\r", 2); // отключение работы энергосберегающего режима через пин DTR
  sendCMDandWait((char *)"AT+CIPMUX=0\r", 2); // моносокет - единомоментно работаем с одним подключением
  sendCMDandWait((char *)"AT+CIPHEAD=0\r", 2); // не добавлять заголовок при приеме данных
  sendCMDandWait((char *)"AT+CIPRXGET=0\r", 2); // автоматический вывод принятых данных
  sendCMDandWait((char *)"AT+CIPSRIP=0\r", 2); // не показывать данные отправителя при приеме данных
  sendCMDandWait((char *)"AT+CSPN?\r", 2); // получить имя оператора из SIM карты
  sendCMDandWait((char *)"AT+CREG?\r", 2); // проверяем зарегестрировался ли модем в сети
  sendCMDandWait((char *)"AT+COPS?\r", 2); // получить режим подключения к оператору и имя оператора
  sendCMDandWait((char *)"AT+CSQ\r", 2); // запрос качества связи
  sendCMDandWait((char *)"AT+CIPMODE=0\r", 2); // командный режим передачи данных
  sendCMDandWait((char *)"AT+CMGDA=\"DEL ALL\"\r", 2); // удаление всех SMS на SIM карте
  Serial.println("Ready!");
}

void loop() {
  while (SIM800.available())  // Ожидаем прихода данных (ответа) от модема...
    Serial.write(SIM800.read());    // ...и выводим их в Serial
  while (Serial.available()) // Ожидаем команды по Serial...
    SIM800.write(Serial.read());    // ...и отправляем полученную команду модему
}

 

overdast
Offline
Зарегистрирован: 12.10.2022
15:25:00.724 -> Start!
15:25:00.724 -> AT
AT
AT

15:25:00.770 -> OK
15:25:02.452 -> 
15:25:02.452 -> OK
15:25:02.497 -> 
15:25:02.497 -> OK
15:25:03.760 -> ATZ

15:25:03.760 -> OK
15:25:08.721 -> ATE1

15:25:08.768 -> OK
15:25:09.730 -> ATV1

15:25:09.774 -> OK
15:25:10.778 -> AT+CMEE=2

15:25:10.778 -> OK
15:25:11.769 -> AT+CIPSHUT

15:25:11.769 -> +CME ERROR: SIM not inserted
15:25:16.783 -> AT+CLIP=0

15:25:16.783 -> OK
15:25:18.768 -> ATS0=0

15:25:18.768 -> OK
15:25:20.792 -> AT+CMGF=1

15:25:20.792 -> +CME ERROR: SIM not inserted
15:25:22.782 -> AT+CSCLK=0

15:25:22.827 -> OK
15:25:24.791 -> AT+CIPMUX=0

15:25:24.826 -> +CME ERROR: SIM not inserted
15:25:26.821 -> AT+CIPHEAD=0

15:25:26.821 -> +CME ERROR: SIM not inserted
15:25:28.844 -> AT+CIPRXGET=0

15:25:28.844 -> +CME ERROR: SIM not inserted
15:25:30.828 -> AT+CIPSRIP=0

15:25:30.863 -> +CME ERROR: SIM not inserted
15:25:32.862 -> AT+CSPN?

15:25:32.862 -> +CME ERROR: SIM not inserted
15:25:34.865 -> AT+CREG?

15:25:34.865 -> +CREG: 0,0
15:25:34.908 -> 
15:25:34.908 -> OK
15:25:36.898 -> AT+COPS?

15:25:36.898 -> +COPS: 0
15:25:36.898 -> 
15:25:36.898 -> OK
15:25:38.866 -> AT+CSQ

15:25:38.912 -> +CSQ: 24,0
15:25:38.912 -> 
15:25:38.912 -> OK
15:25:40.902 -> AT+CIPMODE=0

15:25:40.902 -> +CME ERROR: SIM not inserted
15:25:42.905 -> AT+CMGDA="DEL ALL"

15:25:42.938 -> +CME ERROR: SIM not inserted
15:25:44.929 -> Ready!

Понятно симку не видит. И так и сяк её сувал статус не меняется, при этом разные симки пробовал аналогично. Какие есть ещё варианты?

overdast
Offline
Зарегистрирован: 12.10.2022
15:31:34.485 -> Ready!
15:32:24.588 -> �Start!
15:32:39.246 -> AT
AT
AT

15:32:39.246 -> OK
15:32:39.581 -> 
15:32:39.581 -> OK
15:32:39.615 -> 
15:32:39.615 -> RDY
15:32:39.615 -> 
15:32:39.615 -> +CFUN: 1
15:32:39.615 -> 
15:32:39.660 -> OK
15:32:40.287 -> 
15:32:40.287 -> +CPIN: READY
15:32:41.790 -> 
15:32:41.790 -> Call Ready
15:32:42.215 -> ATZ

15:32:42.262 -> OK
15:32:42.262 -> 
15:32:42.262 -> SMS Ready
15:32:46.112 -> �AT+CIPSHUT

15:32:50.295 -> ERROR
15:32:50.407 -> 
15:32:50.407 -> +CPIN: READY
15:32:51.907 -> 
15:32:51.907 -> Call Ready
15:32:52.354 -> 
15:32:52.354 -> SMS Ready
15:32:54.913 -> �������AT+CMGF=1

15:32:59.303 -> OK


15:33:00.663 -> 
15:33:00.663 -> Call Ready
15:33:01.122 -> 
15:33:01.122 -> SMS Ready
15:33:01.286 -> AT+CSCLK=0

15:33:01.328 -> OK
15:33:03.326 -> AT+CIPMUX=0

15:33:03.326 -> OK
15:33:04.941 -> ����������AT+CIPSRIP=0

15:33:09.381 -> OK
15:33:10.720 -> 
15:33:10.720 -> Call Ready
15:33:11.185 -> 
15:33:11.185 -> SMS Ready
15:33:11.360 -> AT+CSPN?

15:33:11.394 -> +CSPN: "Beeline",0
15:33:11.394 -> 
15:33:11.438 -> OK
15:33:13.400 -> AT+CREG?

15:33:13.400 -> +CREG: 0,2
15:33:13.400 -> 
15:33:13.400 -> OK
15:33:14.536 -> �AT+CIPMODE=0

15:33:19.427 -> OK
15:33:20.339 -> 
15:33:20.339 -> Call Ready


15:33:20.802 -> SMS Ready
15:33:21.429 -> AT+CMGDA="DEL ALL"

15:33:21.429 -> ERROR
15:33:23.425 -> Ready!

С билайном работает через раз если бумажку подложить чтобы лучше прижим был. Эти модемы какое-то лютое "г". Вывод один надо было брать шилдовую версию с sim900 там и питальник есть нормальный есть.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

всяко бывает...вероятно брать модемы надо по нормальным отзывам/продавцам, ни разу не было чтоб SIMку не видел модем.

overdast
Offline
Зарегистрирован: 12.10.2022

Мегафон тоже заработал с такими же ошибками как у билайна, видимо проблема в слоте сим-карты...

overdast
Offline
Зарегистрирован: 12.10.2022

Так нормальные там были отзывы.

overdast
Offline
Зарегистрирован: 12.10.2022

Осталось разобраться с SIM900A.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

overdast пишет:

 такими же ошибками 

по каждой вашей ошибке читать описание команды и почему так происходит.