Звук на SIM800

Тема в разделе "Посоветуйте детальки", создана пользователем ostrov, 27 фев 2018.

  1. ostrov

    ostrov Гуру

    Имеется SIM800 и плеер DfPlayer. Нужно при поднятии трубки запустить в эфир мп3 файл с плеера. На SIM800 вход аудио сигнала микрофонный, в плеера выход или на динамики или стерео на усилитель. Я то то не соображу с ходу как правильно и безопасно подать звук на микрофонный вход? Подскажете?
     
  2. ostrov

    ostrov Гуру

    НА одном из форумов нашел такую схему, пока не пробовал:
    [​IMG]
     
    Airbus нравится это.
  3. Airbus

    Airbus Радиохулиган

    Вполне.
     
  4. ostrov

    ostrov Гуру

    Нет, схема вверху не правильная. Сплошные помехи.
     
  5. ostrov

    ostrov Гуру

    Ну раз никому не интересно, то правильную и не покажу. И другие секретики не открою. :oops:
     
  6. ostrov

    ostrov Гуру

    В общем разобрался сам. Сейчас тестовое устройство умеет:

    - поднимать трубку при входящем звонке (опционально если звонят не из белого списка, трубка кладется),
    - проигрывать в телефонную линию mp3 файлы любой длины и в любом количестве в хорошем качестве,
    - принимать и исполнять одиночные DTMF команды,
    - принимать и исполнять DTMF команды из нескольких символов, например заканчивающиеся решеткой или звездочкой,
    - делать звонки и проигрывать абоненту файл (оповещение), или несколько файлов по заданному алгоритму (голосовое меню),
    - принимать и исполнять команды по SMS (опционально только с номеров из белого списка),
    - отправлять сообщения по SMS,
    - (опция) вести лог событий на SD-карточку.
    - может что то забыл еще.

    Комбинируя данные возможности можно создать тысячу и одну веселую поделку. Например был такой запрос: звоним своему загородному дому, он спрашивает "Хозяин, во сколько тебя ждать?", набираем "1830#", к этому времени все будет прогрето и вскипячено. Как вариант - говорящая машина с запуском. Можно и перед друзьями понтонуться, если что. )
     
  7. Slacky

    Slacky Нерд

    Ну сказали А, говорите и Б :))

    Схему и код интересно посмотреть ...
     
  8. itsWoland

    itsWoland Нерд

    на точность не претендую, но поиски дали вот это
    возможно что-то подобное
    upload_2019-8-1_20-53-12.png
    вопрос в следующем
    Без микрофона вообще никак?
     
  9. ostrov

    ostrov Гуру

    Запросто без микрофона.


     
  10. itsWoland

    itsWoland Нерд

    а там схема та же? или есть изменения?
     
  11. ostrov

    ostrov Гуру

    На вход подал напрямую с выхода плеера, через резисторы получается очень тихо и шумно. Громкость не помню какую выстави, порядка 20 из 30 что-ли, надо подбирать.
     
  12. Onkel

    Onkel Гуру

    Там же вроде стерео, надо с двух каналов через пару резисторов.
    У меня еще плейер шумел, когда на него шли команды, приходилось делать для него отдельный uart софтовый.
     
  13. a1000

    a1000 Гик

    А встроенный в SIM800 плеер вас не устроил?
     
    Andrey12 нравится это.
  14. Andrey12

    Andrey12 Гик

    Я так понял у ТС SIM800L там нет плеера. Надо брать SIM800C и работает устойчивее и плеер в нем есть. Но несколько отличается процесс включения.
     
  15. a1000

    a1000 Гик

    У меня SIM800 L и всё заработало. Нужна програмулька для заливки файлов и файлы надо в каком-то хитром формате. Я сейчас в больнице, подробнее объяснить не могу. Завтра буду дома, могу посмотреть.
     
  16. itsWoland

    itsWoland Нерд

    там хитрая программулина, а заливается в основном AMR файлы для меньшего весу ,был для мобильных популярен
     
    Последнее редактирование: 10 авг 2019
  17. itsWoland

    itsWoland Нерд

    Сегодня выяснил что sim800l sim800l рознь
    В моём случае для того чтобы впихнуть туда файлы пришлось прошивку обновлять
    с воспроизедением пока не разобрался

    при коде
    Код (C++):
     ...
    _response = sendATCommand("AT+FSLS=C:\\User\\", true);
      _response = sendATCommand("AT+CREC=4, \"C:\\User\001.amr\",0,100", true);

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

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

    Код (C++):
    AT+FSLS=C:\User\

    001.amr
    24.amr
    4514.amr


    AT+CREC=4,"C:\User\001.amr",1,100

    +CME ERROR: 100

    >AT+CREC=4,"C:\User\001.amr",1,100

    +CME ERROR: 100