SIM800 не отвечает на АТ команды

vk007
Offline
Зарегистрирован: 16.06.2015

Irinka пишет:

0,1 мкФ хватит?)

Да.

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Здравствуйте. Подскажите. Nano и SIM800 питаю от источника 4 Вольт.

Когда вставляю юсб провод в ардуино, на SIM800 получается не 4, а 5 Вольт от порта юсб.

Достаточно ил одного диода 1N4001? чтобы 5 вольт было только на ардуино?

 

vvadim
Offline
Зарегистрирован: 23.05.2012

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

у дуни и модуля должно быть раздельное питание.

а у вас в юсби сколько амперов?

 

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Я же написала, питаю модуль от источника питания 4 Вольт.

Когда я подключаю ардуино в ЮСБ, соответственно от ЮСБ 5 Вольт идет на контакт "5 Вольт" ардуино,а значит и на SIM800 тоже получается 5 Вольт

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

Irinka пишет:

Я же написала, питаю модуль от источника питания 4 Вольт.

Когда я подключаю ардуино в ЮСБ, соответственно от ЮСБ 5 Вольт идет на контакт "5 Вольт" ардуино,а значит и на SIM800 тоже получается 5 Вольт


Это как так? Сами себе противоречите.

Схему предоставьте, не может такого быть

Update : понятно как подключили, но это криво, 4 вольта отдельно должно быть на sim800, а nano питается всегда от 5 и это правильно. Меняйте схему подключения.

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Я хочу чтобы и нано и сим800 питались от одного источника 4 вольт

vlad072
Offline
Зарегистрирован: 01.08.2017

как сделать чтоб sim800 что нибудь слал в порт после звгрузки? ну типа нотификации что он пришёл в себя и готов к приёму команд

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

При запуске ардуино организовать перезагрузку модуля СИМ800, а далее проверять отправкой, к примеру, команды АТ....ответил, значит готов.

Перезагрузка модуля СИМ800 не обязательна.

Emer
Offline
Зарегистрирован: 02.11.2016

Irinka пишет:

При запуске ардуино организовать перезагрузку модуля СИМ800, 

Перезагрузка модуля СИМ800 не обязательна.

Эти два предложения противоречат сами себе.

Модем и так, при загрузке оповещает, М590 , например сообщает MODEM:STARTUP, а потом +PBREADY, кто мешает отловить это и после уже запускать свои команды.

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Emer пишет:

Irinka пишет:

При запуске ардуино организовать перезагрузку модуля СИМ800, 

Перезагрузка модуля СИМ800 не обязательна.

Эти два предложения противоречат сами себе.

Модем и так, при загрузке оповещает, М590 , например сообщает MODEM:STARTUP, а потом +PBREADY, кто мешает отловить это и после уже запускать свои команды.

SIM800 при старте ничего не отсылает. А если бы и отсылал, в обязательном порядке пришлось бы сначало включать ардуино, потом СИМ800.

Перезагрузка СИМ800 при старте ардуино мне удобна. 

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017
#include <SoftwareSerial.h>
SoftwareSerial SIM800(10,11);  
String Otvet;
unsigned long TimeOtpr;
bool FlagOtpravki=false;

unsigned long Timeout;
bool FlagTimeout=false;


String inString;


void setup() {
  SIM800.begin(9600);
  Serial.begin(9600);
  Serial.println("Zagruzka");
  TimeOtpr=millis();
  FlagOtpravki=true;
}



void sendATCommand(String cmd, bool waiting){
  SIM800.println(cmd);  
  Serial.print("Komanda: ");
  Serial.print(cmd);
  Serial.print(" - Time: ");
  Serial.print(millis());
  Serial.println("");
  if (waiting){
    Timeout=millis();
    FlagTimeout=true;
  }
}




void loop() {
  
//Каждые две секунды отправляем команду АТ
if (FlagOtpravki && millis()-TimeOtpr>=5000){
  sendATCommand("AT",true); 
  TimeOtpr=millis();
}



if (Serial.available()>0)  {
  char inChar = (char)Serial.read();
  inString += inChar;
    if (inChar == '\n') {
      Serial.print("Zapros: "); 
      inString.trim();
      Serial.print(inString); 
      Serial.println(""); 
      SIM800.println(inString);  
      inString="";
    }
}

if(SIM800.available()){
  FlagTimeout=false;
  Timeout=millis();
  Otvet = SIM800.readString();
  Otvet.trim();  
  Serial.print("Otvet: ");
  Serial.print(Otvet);
  Serial.print(" - Time: ");
  Serial.print(millis());
  Serial.println("");
}else{
    if (FlagTimeout && millis()-Timeout>=2000){
      FlagTimeout=false;
      Serial.print("Timeout");
      Serial.print(" - Time: ");
      Serial.print(millis());
      Serial.println(""); 
    }
  
}




}//loop

Прошу прокомментировать код, подсказать что я упустили или неправильно сделала

Многое подсмотрела на сайте www.codius.ru, за что им Большое Спасибо.

Но там в коде есть один неприятный момент

while (!SIM800.available() && millis() < _timeout)  {}; // Ждем ответа 10 секунд, если пришел ответ или наступил таймаут, то...

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

Я в своём коде от этого избавилась.

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

Основной вопрос/претензия - насколько надежным должно быть устройство?

попробуйте стресс-тест - отправить на устройство сразу пяток русских длинных СМС (операторы слать рекламу тоже любят) - если выдержит и не зависнет, значит все хорошо.

И что должен делать этот код? просто тестирование? так все проще есть:

#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 setup() {
  Serial.begin(9600);               // Скорость обмена данными с компьютером
  SIM800.begin(9600);               // Скорость обмена данными с модемом
}

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

 

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

andycat пишет:

Основной вопрос/претензия - насколько надежным должно быть устройство?

естественно должно быть надёжным, стабильным в работе

andycat пишет:

попробуйте стресс-тест - отправить на устройство сразу пяток русских длинных СМС (операторы слать рекламу тоже любят) - если выдержит и не зависнет, значит все хорошо.

Спасибо. Попробую.

andycat пишет:

И что должен делать этот код? просто тестирование? так все проще есть:

Это примерный код для отправки AT команд и ожидания ответа именно на эту команду.

vlad072
Offline
Зарегистрирован: 01.08.2017

На плате ардуины выкиньте диод возле USB - коннектора (маленький чёрный прямоугольничек с двумя ногами). Тогда внешнее питание от USB не будет подаваться в схему.

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

vlad072 пишет:

На плате ардуины выкиньте диод возле USB - коннектора (маленький чёрный прямоугольничек с двумя ногами). Тогда внешнее питание от USB не будет подаваться в схему.

У SIM800 питание 4 Вольт, я не питаю его через Ардуину.

vlad072
Offline
Зарегистрирован: 01.08.2017

Я про это и говорю. У вас модем и дуина висят на одном питании 4В, и когда вы подключаетесь через USB, 5В от него попадают на эту общую шину питания, выключая модем из работы, я правильно понял проблему?

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Вы про 202 пост? Это не актуально, решила вопрос.

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

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

Мануал по ссылке, страница 147

http://www.mt-system.ru/sites/default/files/documents/sim800_series_at_c...

 

Команда
AT+CALA=?
Возвращает
+CALA: ("yy/mm/dd,hh:mm:ss","hh:mm:ss"),(1-5),(0-7)
 
Устанавливаю будильник № 1 на  16:00:00 с Пн по Пт
AT+CALA="16:00:00",1,1,2,3,4,5
 
Устанавливаю будильник № 2 на  16:00:00  на все дни
AT+CALA="16:00:00",2,0
 
Но на определённую дату установить не получается, выдаёт ошибку (что текущую дату, что будущую одинаково)
Пример:
AT+CALA="19/09/23,13:17:00",2,0
Ответ: Error

 

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

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

(если "на ходу" вынуть сим карту, SIM800 через некоторое время начинает быстро мигать(как нет сети), при вставке сим карты обратно, cеть не находится до перезапуска SIM800)

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

Да, сам подключается.
PS. Вы опять странные эксперименты проводите с вытаскиванием симки - это не типовое использование модуля и так ничего не добьётесь.

vlad072
Offline
Зарегистрирован: 01.08.2017

Чтоб не плодить ветки, спрошу здесь. Вопрос к тем кто использует LBS - геолокацию на модулях серии SIM800 совместно с билайновской симкой. Где то пару недель назад в ответ на cipgsmloc стал присылать нулевые координаты. Чтозанафиг? Обновление прошивки с 02 до последней 07 ничего не дало.

at+gmr
Revision:1418B07SIM800C24_BT
OK
at+sapbr=1,1
OK
at+sapbr=2,1
+SAPBR: 1,1,"10.68.15.250"
OK
at+cipgsmloc=1,1
+CIPGSMLOC: 0,0.000000,0.000000,2019/12/07,10:58:37
OK

Попытка использовать clbs заканчивается таймаутом (2)

14:07:27.007 -> at+clbs=1,1
14:08:00.676 -> +CLBS: 2
14:08:00.676 -> 
14:08:00.676 -> OK

 

 

Vanyok_333
Offline
Зарегистрирован: 27.05.2020

Что-то разговор ушёл куда-то..

Вопрос как решили вопрос отсутствием ответа на AT команды?

vitaliy
Offline
Зарегистрирован: 01.07.2020

Может кому поможет,

была схожая проблема с:

Baks пишет:

Всем доброго времени суток.
 Нужна помощ по модулю SIM800.
 Вообщем дело обстоит так.. подключаю его от блока питания компа 12 вольт через понижающий шилд, 
 подаю 4.10 вольта при поиске сети 4.09 вольт, тоесть отлично без просадок.
 После включения светодеод мигает быстро после чего медленнее (сеть нашел). 
 Сигнальные ТХ к RX а RX к ТХ ( пробовал и через делитель и на прямую) к пинам №18,19 на ардуино мега . ну и земли соединил.
 
залил скетч :
#include <SoftwareSerial.h>
SoftwareSerial mySerial(19, 18); // RX, TX
void setup() {
  Serial.begin(19200);  //Скорость порта для связи Arduino с компьютером
  Serial.println("Goodnight moon!");
  mySerial.begin(19200);  //Скорость порта для связи Arduino с GSM модулем
  mySerial.println("AT");
}
 
void loop() {
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
}
 так вот при открытие монитора порт выставил скорость и новая строка, и мне приходит сообщение "Goodnight moon!" из скетча, и все...
 пишу в монитор порта AT, ничего никакой реакции, также пробовал ATI  тоже реакции 0.
 
что я не так сделал дайте идею кто знает?  и еще  один из контактов слота симкарты както странно припаян, припоя не видно на нем,
 а прозвонить незнаю как , и может ли не работать АТ команды из за этого контакта?
 
Кто знает отзовитесь пож... Заранее спасибо

решился вопрос указанием в строке "SoftwareSerial mySerial(19, 18)" в качестве портов, номеров, записанных на плате, а не порядковых номер распиновки. Т.е. у меня Нано V3  TX - на D2, RX на D3. Написал код как "SoftwareSerial mySerial(3, 2)" все заработало. Ну и подключение через резисторы 10 кОм, запаралелленные с землей, которая на другой стороне платы от TX и RX. Здесь все как по схемам в интернетах. 

Pashy777
Offline
Зарегистрирован: 20.05.2017

Подскажите пожалуйста случайно примера скетча нет, как подключить sim800l к аппаратному uart ардуино нано?

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