Помогите разобраться с UART DFPlayer Mini 2.0

Тема в разделе "Arduino & Shields", создана пользователем Unruly, 27 ноя 2014.

  1. Onkel

    Onkel Гуру

    вон он кстати, это как получается - я должен 6 байтов просуммировать в беззнаковое целое двухбайтное и потом взять минус?

    uint16_t mp3_get_checksum (uint8_t *thebuf) { uint16_t sum = 0; for (int i=1; i<7; i++) { sum += thebuf; } return -sum; }
     
  2. Onkel

    Onkel Гуру

    вот уроды, у них опечатка. Вместо команды
    7E FF 06 03 00 00 01 FF E6 EF

    к.с. должно быть FE F7

    кстати динамик еле еле пищит. спалил? Какое напряжение должен давать - 3W это вольта 3, не меньше, а у меня еле еле слышно.
     
  3. Onkel

    Onkel Гуру

    видно спалил. китаиса написала в pdf- 3 Вт, на 5 В 3Вт соответствует 0,6 А, сопротивлению как раз 8 Ом. Почему собака от этих 8 Ом динамика сгорел? Впрочем, после ошибки в листинге кодов - это не самая большая ошибка.
    Поставил 120 Ом пикалку, замучается он теперь себя жечь.
     
  4. Onkel

    Onkel Гуру

    мк посылает запрос и получает ответ
    7E FF 04 43 00 FE BA EF

    в ответе (у меня конкретно) громкость 0A= это 10 в десятичной системе.

    7E FF 06 43 00 00 0A FE AE EF


    По идее значением должны быть сама функция, т.е. она должна быть целой , char или другой со значением, но в этой библиотеке она почему-то void, так что придется видимо отслеживать и выковыривать из буфера uint8_t recv_buf[10] либо в самой функции, либо после, ну лучше сразу после, пока буфер не забился.
     
  5. sergio6988

    sergio6988 Нуб

    Не пойму, как пользоваться функциями типа mp3_get_volume ();
    Я так понимаю, что плеер должен сообщить текущее значение громкости, а как его посмотреть?​
    мк посылает запрос и получает ответ
    7E FF 04 43 00 FE BA EF

    в ответе (у меня конкретно) громкость 0A= это 10 в десятичной системе.

    7E FF 06 43 00 00 0A FE AE EF



    Получается я могу на плеер послать или команду mp3_get_volume (); или в двоичном виде 7E FF 04 43 00 FE BA EF, правильно?
     
  6. Onkel

    Onkel Гуру

    правильно, только наверное правильнее будет назвать не в двоичном, а в гексагональном ( шестнадцатиричном),
    0x7E , 0xFF, 0x06 и т.д.
     
  7. sergio6988

    sergio6988 Нуб

    Подскажите пожалуйста что можно сделать, скачал и загрузил библиотеку mp3TF с первой страницы, загрузил тестовый скетч, видно что ардуина посылает команды в ком порт, на мониторе ком порта выходят какие-то непонятные аэроглифы, и теперь не получается залить какой-либо другой скетч, выдает ошибку, как можно стереть или обнулить залитую программу?
     
  8. sergio6988

    sergio6988 Нуб

    Подскажите пожалуйста что можно сделать, скачал и загрузил библиотеку mp3TF с первой страницы, загрузил тестовый скетч, видно что ардуина посылает команды в ком порт, на мониторе ком порта выходят какие-то непонятные аэроглифы, и теперь не получается залить какой-либо другой скетч, выдает ошибку, как можно стереть или обнулить залитую программу?
     
  9. Onkel

    Onkel Гуру

    ну если иероглифы - значит не та скорость, определенно.
    а по самой ардуине подсказать не могу - я шью кодом из codevision
     
    Последнее редактирование: 20 авг 2015
  10. geher

    geher Гуру

    То, что иероглифы, скорее всего определяется особенностями обмена с плэйером. Команды не текстовые, а мутная последовстельность байт, которые содержат значения, соответствующие символам, не складывающимся в читаемый текст.
    А насчет прошивки, перед прошивкой лучше отсоединить плэйер. Если не помгает, можно попробовать нажимать в моиент между компиляцией и собственно прошивкой кнопку reset на ардуине
     
  11. Onkel

    Onkel Гуру

    Да, чтобы понимать терминал должен быть в режиме hex (шестнадцатеричном), не ascii.
    Тогда и иероглифов не будет. У меня - то он всегда hex, я уж и забыл, что может быть по другому.
     
  12. Onkel

    Onkel Гуру

    пы сы рекомендую терминал Hterm, он показывает сразу и ascii, и и hex
     
  13. sergio6988

    sergio6988 Нуб

    А насчет прошивки, перед прошивкой лучше отсоединить плэйер. Если не помгает, можно попробовать нажимать в моиент между компиляцией и собственно прошивкой кнопку reset на ардуине

    Плеер отсоединил, пробовал после появления "Вгружаем" нажимать кнопку ресет, ничего не помогает, прошить не получается, может как-то можно сбросить прошивку?
     
  14. Onkel

    Onkel Гуру

    вот еще незадача. у меня плейер по команде проиграть трек 3 играет трек, который третьим (по времени записи) записан на карточку. Очень неудобно - записывать треки в определенном порядке. Как это победить - кто -то победил?
     
  15. geher

    geher Гуру

    А имена треков и расположение на карточке соответствуют?
    Если не ошибаюсь, у них должны быть имена вроде 001.mp3, 002.mp3 и т.д. И они вроде должны быть в папке mp3.
     
  16. Onkel

    Onkel Гуру

    попробую так, но пока у меня как описано. Командую я напрямую по uart, без ардуино.
    А если как у вас - все играет независимо от порядка записи файлов, только по названиям?
     
  17. DrProg

    DrProg Вечный нерд

    ИгорьК нравится это.
  18. Onkel

    Onkel Гуру

    то, что мы обсуждаем - это не баги, это фичи.
     
  19. Onkel

    Onkel Гуру

    ... и последние станут первыми
     
  20. Tomasina

    Tomasina Сушитель лампочек Модератор

    э, там есть особенность, неочевидная из описания по даташиту.
    Файлы должны быть строго в папке "mp3" (маленькими буквами) и имя должно быть четырехсимвольным (0001.mp3). Возможно, допустима и двух-трехзначная нумерация, но я придерживаюсь рекомендаций.
    Для управления этим плеером командами по UART первому треку соответствует первый записанный файл в файловой системе.
    Для управления плеером методом замыкания пинов Next и т.д. первому треку соответствует первое по алфавиту имя файла.
    Правильно, на то, прошивку собирали по кускам, и подпрограммы чтения ФС, подпрограмму обработки списка файлов и подпрограмму обработки входящих команд писали разные китайские студенты, причем без ТЗ, поэтому каждый сделал так, как считает нужным.[/OFFTOP]

    Поясню.
    Вы записали папку mp3 с файлами 0001.mp3, 0002.mp3, 0003.mp3, 0004.mp3. Все замечательно, все три условия соблюдаются, все треки воспроизводятся как и ожидалось.
    Но второй трек не нравится, его заменили на другой: 0002.mp3.
    Теперь перечень файлов такой: 0001.mp3, 0002.mp3, 0003.mp3, 0004.mp3
    А последовательность файлов на карте такая: 0001.mp3, 0003.mp3, 0004.mp3, 0002.mp3.
    Вот тут и начинаются глюки, описанные выше. Если уже играет первый трек, то при управлении кнопкой Next следующий трек будет 0002.mp3, а при получении команды "mp3_play(2)" следующий трек будет 0003.mp3, потому что именно он является вторым.
    Поэтому если какой-то из треков заменяется, надо на SD-карте не только его заменить, а все удалить и заново переписать (на моей практике ОС при массовом копировании всегда корректно записывает последовательность файлов, в нужном порядке).

    А так это отличный неглючный плеер, легкий в управлении и разводке (вся правая колодка фактически не используется, поэтому его можно распаивать вертикально, экономя место).
    Просто мы избалованы нетребовательностью большинства интерфейсов. Вы же привыкли всегда прописывать в setup все предварительные данные? По сути тут тоже самое - для правильной работы его надо правильно подготовить.

    P.S. входы UART на нем 3.3 В, поэтому для пятивольтовых МК в каждую линию ставьте последовательно резистор 1k.
     
    Последнее редактирование: 20 сен 2015