Имеется SIM800 и плеер DfPlayer. Нужно при поднятии трубки запустить в эфир мп3 файл с плеера. На SIM800 вход аудио сигнала микрофонный, в плеера выход или на динамики или стерео на усилитель. Я то то не соображу с ходу как правильно и безопасно подать звук на микрофонный вход? Подскажете?
В общем разобрался сам. Сейчас тестовое устройство умеет: - поднимать трубку при входящем звонке (опционально если звонят не из белого списка, трубка кладется), - проигрывать в телефонную линию mp3 файлы любой длины и в любом количестве в хорошем качестве, - принимать и исполнять одиночные DTMF команды, - принимать и исполнять DTMF команды из нескольких символов, например заканчивающиеся решеткой или звездочкой, - делать звонки и проигрывать абоненту файл (оповещение), или несколько файлов по заданному алгоритму (голосовое меню), - принимать и исполнять команды по SMS (опционально только с номеров из белого списка), - отправлять сообщения по SMS, - (опция) вести лог событий на SD-карточку. - может что то забыл еще. Комбинируя данные возможности можно создать тысячу и одну веселую поделку. Например был такой запрос: звоним своему загородному дому, он спрашивает "Хозяин, во сколько тебя ждать?", набираем "1830#", к этому времени все будет прогрето и вскипячено. Как вариант - говорящая машина с запуском. Можно и перед друзьями понтонуться, если что. )
на точность не претендую, но поиски дали вот это возможно что-то подобное вопрос в следующем Без микрофона вообще никак?
На вход подал напрямую с выхода плеера, через резисторы получается очень тихо и шумно. Громкость не помню какую выстави, порядка 20 из 30 что-ли, надо подбирать.
Там же вроде стерео, надо с двух каналов через пару резисторов. У меня еще плейер шумел, когда на него шли команды, приходилось делать для него отдельный uart софтовый.
Я так понял у ТС SIM800L там нет плеера. Надо брать SIM800C и работает устойчивее и плеер в нем есть. Но несколько отличается процесс включения.
У меня SIM800 L и всё заработало. Нужна програмулька для заливки файлов и файлы надо в каком-то хитром формате. Я сейчас в больнице, подробнее объяснить не могу. Завтра буду дома, могу посмотреть.
там хитрая программулина, а заливается в основном AMR файлы для меньшего весу ,был для мобильных популярен
Сегодня выяснил что 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