Страница 1 из 1

sim800l не поднимает трубку

Добавлено: 30 апр 2018, 19:02
yankarelia
Добрый вечер форумчане, долго искал причину, но не смог её найти, поэтому прошу Вашей помощи.
пытаюсь собрать сигнализацию для гаража начитался статей, насмотрелся видео, собрал проэкт как в видео уроке (https://www.youtube.com/watch?v=4DvQWTe2FrA), но сим800 не поднимает телефон. Если залить другой скетч, то при прописывании ATA в мониторе порта он поднимает трубку и понимает дтмф команды.В Чем моя ошибка ?

Код: Выделить всё

#include <SoftwareSerial.h>                     // Библиотека програмной реализации обмена по UART-протоколу
SoftwareSerial SIM800(8, 9);                    // RX, TX

String _response = "";                          // Переменная для хранения ответа модуля
void setup() {
  Serial.begin(9600);                           // Скорость обмена данными с компьютером
  SIM800.begin(9600);                           // Скорость обмена данными с модемом
  Serial.println("Start!");

  sendATCommand("AT", true);                    // Отправили AT для настройки скорости обмена данными
  _response = sendATCommand("AT+DDET=1", true); // Включаем DTMF
}

String sendATCommand(String cmd, bool waiting) {
  String _resp = "";                            // Переменная для хранения результата
  Serial.println(cmd);                          // Дублируем команду в монитор порта
  SIM800.println(cmd);                          // Отправляем команду модулю
  if (waiting) {                                // Если необходимо дождаться ответа...
    _resp = waitResponse();                     // ... ждем, когда будет передан ответ
    // Если Echo Mode выключен (ATE0), то эти 3 строки можно закомментировать
    if (_resp.startsWith(cmd)) {                // Убираем из ответа дублирующуюся команду
      _resp = _resp.substring(_resp.indexOf("\r\n", cmd.length()) + 2);
    }
    Serial.println(_resp);                      // Дублируем ответ в монитор порта
  }
  return _resp;                                 // Возвращаем результат. Пусто, если проблема
}

String waitResponse() {                         // Функция ожидания ответа и возврата полученного результата
  String _resp = "";                            // Переменная для хранения результата
  long _timeout = millis() + 10000;             // Переменная для отслеживания таймаута (10 секунд)
  while (!SIM800.available() && millis() < _timeout)  {}; // Ждем ответа 10 секунд, если пришел ответ или наступил таймаут, то...
  if (SIM800.available()) {                     // Если есть, что считывать...
    _resp = SIM800.readString();                // ... считываем и запоминаем
  }
  else {                                        // Если пришел таймаут, то...
    Serial.println("Timeout...");               // ... оповещаем об этом и...
  }
  return _resp;                                 // ... возвращаем результат. Пусто, если проблема
}

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

sim800l не поднимает трубку

Добавлено: 30 апр 2018, 20:15
whitevip
[ref]yankarelia[/ref], Дело в блоках, вот последняя версия блока для SIM800 он рабочий и там есть все функции.
SIM800.ubl
Отправлено спустя 3 минуты 45 секунд:
вот еще бок для этого модуля, тут блоки добовляют по отднльности, все эти блоки я проверял и они работают.
GSM_NEW 0.5.1b.ubl

sim800l не поднимает трубку

Добавлено: 30 апр 2018, 20:44
yankarelia
Спасибо за оперативность, скачал, но не помогло. 1й файл выдаёт ошибку при загрузке, а когда ставлю 2е блоки такая же проблема.
ps Когда в ручную прописываю автоматическое поднятие телефона - он поднимает любой телефон даже если делаю проверку только указанных телефонов.

sim800l не поднимает трубку

Добавлено: 30 апр 2018, 22:38
whitevip
я не могу сказать точно, но эти ошибки кажется потому что, блоки взяты с разных версий.

Отправлено спустя 17 минут 3 секунды:
[ref]yankarelia[/ref], первый файл нужно ставить без дополнительных блооков. я только что проверил и все впорядке нет не каких ошибок. приложите проект.

sim800l не поднимает трубку

Добавлено: 30 апр 2018, 22:50
Golan
[ref]yankarelia[/ref], вот мой файл с видео, итоговый вариант, пробуйте, вернее меняйте под себя.

Отправлено спустя 1 минуту 28 секунд:
А сеть находит, инициализация проходит?

sim800l не поднимает трубку

Добавлено: 30 апр 2018, 22:53
yankarelia
Да если пользоваться одним блоком сим 800 (который первый) ошибки не выдаёт, но толку тоже нету... дело в какой то мелочи - но в какой ?
Да сеть находит, но трубку не берёт, спасибо, сейчас попробую.

sim800l не поднимает трубку

Добавлено: 30 апр 2018, 23:02
whitevip
[ref]Golan[/ref], я конечно извиняюсь, но когда я разберался с этим модулям я пошел на Ваш канал скачал проект удалил не нужное оставив блоки для SIM800 но у меня была проблема в точности как у ТС, после чего я тут на форуме скачал более новые блоки и все заработало, сейчас все блоки у меня в программе проверены и полностью работают.

Отправлено спустя 2 минуты 2 секунды:
[ref]yankarelia[/ref], а Вы попробуйте с компаратора строк прямой подать на вход поднятия.

Отправлено спустя 5 минут 52 секунды:
[ref]yankarelia[/ref], еще я Вам скажу тут на форуме есть тема где описывают как прошить этот модуль для того что бы указать на какой скорости он должен работать и это нужно сделать для уверености. Модуль сам по себе звонки будет принимать если на него подавать нужное для него питание, после чего нужно убедится что он общается с ардуиной, подсоедените экран и попробуйте вывести номер входящего звонка или с компоратора подайте на 13 пин и если при звонке лампа горит то идем дальше.

sim800l не поднимает трубку

Добавлено: 30 апр 2018, 23:09
yankarelia
[ref]Golan[/ref], Спасибо огромное, заработало, теперь буду копать, что бы понять что я сделал не так и он не поднимает трубку. Спасибо!
[ref]whitevip[/ref], Звонок через МП я поднимал командой ата, скорость я установил 9600 и сохранил. Сейчас у меня заработало с блоками [ref]Golan[/ref], следовательно либо где то ошибка у меня, либо существует баг программы.Первый вариант более вероятен, но нужно понять где...

sim800l не поднимает трубку

Добавлено: 01 май 2018, 00:42
Golan
whitevip писал(а): 30 апр 2018, 23:02Golan, я конечно извиняюсь, но когда я разберался с этим модулям я пошел на Ваш канал скачал проект
У меня на канале я проекты не выкладываю, так как это практически исключает обдумывание, я много смотрел Грачика, все отлично, за что ему спасибо большое, но как сунулся в более менее большой проект, если не делать самому, а скачать и потом разбираться, для меня оказалось сложным.
yankarelia писал(а): 30 апр 2018, 23:09Golan, Спасибо огромное, заработало
Да совсем не за что, я же тоже новичек, да и видео стал снимать, что бы потом не забыть что и как делал, так сказать для себя