DF Player mini (MP3-TF-16P)мои грабли

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Tirexi
Родился
Сообщения: 1
Зарегистрирован: Пн июн 07, 2010 20:49:20

Re: DF Player mini (MP3-TF-16P)мои грабли

Сообщение Tirexi »

Соник, Спасибо тебе, у меня та же самая проблема была, уже голову сломал, а после того как добавил больше 10 файлов на карту SD, все кнопки управления заработали. Вот китайцы
Реклама
Аватара пользователя
Соник
Друг Кота
Сообщения: 7576
Зарегистрирован: Пн мар 22, 2010 11:01:14
Откуда: СССР, г. Москва.

Re: DF Player mini (MP3-TF-16P)мои грабли

Сообщение Соник »

Подскажите, как сделать чтобы DF Player mini сразу при подаче питания сам начал проигрывать аудиофайл?
Допустимо ли вывод 12 или 13 накоротко соединить с общим проводом и оставить так?
СпойлерИзображение
Я рожден при социализме, и я этим горжусь!
Реклама
pcb432
Мудрый кот
Сообщения: 1808
Зарегистрирован: Пт мар 26, 2010 17:16:52
Откуда: Kazan

Re: DF Player mini (MP3-TF-16P)мои грабли

Сообщение pcb432 »

А попробовать?
Ведь мс есть у вас и к тому же вряд ли кто кроме разработчиков энает процедуру
инициализации мс после подачи питания.
Аватара пользователя
Соник
Друг Кота
Сообщения: 7576
Зарегистрирован: Пн мар 22, 2010 11:01:14
Откуда: СССР, г. Москва.

Re: DF Player mini (MP3-TF-16P)мои грабли

Сообщение Соник »

Работает, но я не знаю, допустима ли такая схемотехника...
Я рожден при социализме, и я этим горжусь!
Реклама
Эиком - электронные компоненты и радиодетали
Radioalex
Родился
Сообщения: 6
Зарегистрирован: Вт авг 02, 2011 16:19:47

Re: DF Player mini (MP3-TF-16P)мои грабли

Сообщение Radioalex »

Всем доброго дня. Прошу помощи разобраться с проблемой. Подключил сей модуль через переходник UART-USB к компьютеру (порты RX, TX через резисторы на 1 кОм как в даташите). Использую программу Terminal v1.9. Скорость 9600, названия файлов также как даташите. При включении mp3 модуля терминал принимает команду инициализации: 7E FF 06 3F 00 00 02 FE BA EF, т.е. инициализация произошла успешно и модуль указывает что подключена TF карта. Если замкнуть 9 пин с 10, то файлы проигрываются, т.е. модуль вроде как исправлен. Пытаюсь посылать команды по UART (без контроля суммы), например:
7E FF 06 03 00 00 01 EF - воспроизвести трек №2;
7E FF 06 0D 00 00 00 EF - просто воспроизведение;
7E FF 06 01 00 00 00 EF - воспроизвести следующий трек
в ответ всегда модуль шлет 7E FF 06 40 00 00 03 FE B8 EF и ничего не происходит. Судя по даташиту код 40 означает ошибка. Собственно вопрос - что я не так делаю? почему модуль не запускается?
Реклама
MOHCTEP
Опытный кот
Сообщения: 768
Зарегистрирован: Вс янв 19, 2014 00:55:09

Re: DF Player mini (MP3-TF-16P)мои грабли

Сообщение MOHCTEP »

Radioalex,
"$7E$FF$06$0D$00$00$00$EF" так попробуйте послать, без кавычек естественно.
У меня тоже непонятка с этим плеером. Эта цепочка, посланная непосредственно с Terminal v1.9, нормально отрабатывает. Точно такая же последовательность с контроллера, на том же юарте, с той же скоростью, никакого воздействия не оказывает. Терминал показывает, что все байты верные.
Реклама
Radioalex
Родился
Сообщения: 6
Зарегистрирован: Вт авг 02, 2011 16:19:47

Re: DF Player mini (MP3-TF-16P)мои грабли

Сообщение Radioalex »

Спасибо МОНСТЕР за вариант. Именно в таком формате я и отправлял данные, но все оказалось сложнее.
После трех дней мучений выяснилось следующее (может кому то пригодится): на моих модулях установлен чип MH2024k-24SS, хотя и подзатерта надпись. На иностранных форумах многие жаловались на эти чипы. На оригинальных модулях стоит чип YX5300-24SS и этот чип реагирует на все команды и работает без каких либо нареканий. Модули с чипом MH2024k-24SS воспринимают ТОЛЬКО ПОЛНЫЕ КОМАНДЫ, т.е. с контрольными суммами, например 7E FF 06 01 00 00 00 FE FA EF. Сокращенные команды он не понимает (по крайней мере вся моя партия - 10 шт.) и выдает сообщение об ошибке кадра. Так что не наступайте на мои грабли. Всем удачи...
MOHCTEP
Опытный кот
Сообщения: 768
Зарегистрирован: Вс янв 19, 2014 00:55:09

Re: DF Player mini (MP3-TF-16P)мои грабли

Сообщение MOHCTEP »

Чуток подразобрался с плеером. Монолог получился, а вот диалог - нет. Так и не удалось добиться от этой чудо-железки адекватных ответов на запросы. Некоторые наблюдения выложу, авось кому-то пригодятся.
1 Плееру абсолютно монопенисуально, какие номера вы присвоите файлам. Он считает файлы в порядке их записи на носитель. Так что, если вы кинете музыку на карточку сразу группой, то вполне возможно, что "025.mp3" запишется перед "001.mp3" и при указании "воспроизвести первый файл", проиграется "025.mp3".
2 Зациклить воспроизведение конкретного файла, напрямую, командой 0x08, возможно, только если файл расположен либо в корне, либо в папке "mp3\". В других папках ("01...99") так просто не получится, из-за отсутствия подходящей команды. Однако с бубном, все же можно. Для этого нужно запустить воспроизведение нужного файла, в нужной папке. Затем, когда файл уже гарантировано "поет", командой 0x19 с "0" аргументом, можно зациклить его воспроизведение.
jcxz
Мудрый кот
Сообщения: 1717
Зарегистрирован: Вт авг 15, 2017 10:51:13

Re: DF Player mini (MP3-TF-16P)мои грабли

Сообщение jcxz »

[uquote="MOHCTEP",url="/forum/viewtopic.php?p=3884186#p3884186"]Чуток подразобрался с плеером. Монолог получился, а вот диалог - нет. Так и не удалось добиться от этой чудо-железки адекватных ответов на запросы. Некоторые наблюдения выложу, авось кому-то пригодятся.[/uquote]А зачем она нужна? Непонятно.... :dont_know: MP3 можно и программно декодировать и проиграть силами самого МК без всяких дополнительных железок.
Novice user
Мудрый кот
Сообщения: 1704
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

Re: DF Player mini (MP3-TF-16P)мои грабли

Сообщение Novice user »

[uquote="jcxz",url="/forum/viewtopic.php?p=3887022#p3887022"][uquote="MOHCTEP",url="/forum/viewtopic.php?p=3884186#p3884186"]Чуток подразобрался с плеером. Монолог получился, а вот диалог - нет. Так и не удалось добиться от этой чудо-железки адекватных ответов на запросы. Некоторые наблюдения выложу, авось кому-то пригодятся.[/uquote]А зачем она нужна? Непонятно.... :dont_know: MP3 можно и программно декодировать и проиграть силами самого МК без всяких дополнительных железок.[/uquote]
Можно подробнее-как проигрывать МК MP3 ?
MOHCTEP
Опытный кот
Сообщения: 768
Зарегистрирован: Вс янв 19, 2014 00:55:09

Re: DF Player mini (MP3-TF-16P)мои грабли

Сообщение MOHCTEP »

jcxz писал(а):А зачем она нужна?
Мне понадобилась для будильника. Причем часы и будильник, соответственно, в проекте - второстепенны. Распределение ресурсов - соответствующее.
jcxz писал(а):Можно подробнее-как проигрывать МК MP3 ?
Вот и мне интересно... К тому же
jcxz писал(а):силами самого МК без всяких дополнительных железок.
jcxz
Мудрый кот
Сообщения: 1717
Зарегистрирован: Вт авг 15, 2017 10:51:13

Re: DF Player mini (MP3-TF-16P)мои грабли

Сообщение jcxz »

[uquote="MOHCTEP",url="/forum/viewtopic.php?p=3887274#p3887274"]Вот и мне интересно... К тому же
jcxz писал(а):силами самого МК без всяких дополнительных железок.
[/uquote]А что такого сложного? Можно взять любой готовый программный кодек и декодировать MP3 с помощью него.
Например: Helix кодек. Он умеет не только MPEG, но и AAC-формат умеет декодировать. Доступен как в си-исходниках, так и оптимизированный на ассемблере под разные платформы (в том числе ARM).
На Cortex-M с тактовой 130 МГц у меня например декодирование MP3-потока 320Кб/с занимает всего около ~20% производительности CPU - несущественная величина. AAC+ на 128Кб/сек требует раза в 2 больше ресурсов. Но ведь Ваш чип вообще AAC не умеет?

PS: Хотя для будильника с батарейным питанием это может и не очень подходит. Но надо посмотреть. Если например на STM32L4xx - серии, да играть нужно только иногда - то может нормально будет.

PPS: Вроде кроме Helix есть ещё и другие кодеки с открытым кодом, но я их не смотрел.
Novice user
Мудрый кот
Сообщения: 1704
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

Re: DF Player mini (MP3-TF-16P)мои грабли

Сообщение Novice user »

Давайте кокретный пример,написать как вы ("взять аттини13,записать mp3-декодер и все") любой смогет
MOHCTEP
Опытный кот
Сообщения: 768
Зарегистрирован: Вс янв 19, 2014 00:55:09

Re: DF Player mini (MP3-TF-16P)мои грабли

Сообщение MOHCTEP »

jcxz, Верю.
jcxz писал(а):На Cortex-M с тактовой 130 МГц
можно наверное и видео кодек вставить и все запоет и заиграет. А здесь АТМега, которая на питании в 3.3 вольта и 12 мГц кварц не тянет, максимум 8. :)
Novice user
Мудрый кот
Сообщения: 1704
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

Re: DF Player mini (MP3-TF-16P)мои грабли

Сообщение Novice user »

[uquote="Novice user",url="/forum/viewtopic.php?p=3887447#p3887447"]Давайте кокретный пример,написать как вы ("взять аттини13,записать mp3-декодер и все") любой смогет[/uquote]
я был прав-после моего поста супермен jcxz с кодеком для авр слился в унитаз вместе со своими арм ))) хоть бы чего путного написал-гавкнул и слился...
Prosperous
Встал на лапы
Сообщения: 129
Зарегистрирован: Ср янв 18, 2012 19:37:10

Re: DF Player mini (MP3-TF-16P)мои грабли

Сообщение Prosperous »

Здравствуйте. Подниму тему. Решил я наладить обратную связь с модулем. Она есть, но какая-то кривая. Грешу на быдлокод. Вопросов два.
1. Работает АЦП 1 канал. Прием по UART долгий (вывод на дисплей) секунд 10. Если работу АЦП закомментировать - UART работает мгновенно. Как оптимизировать?
2. После запуска трека на модуле отправляю команду повтора. Не до конца понимаю как после старта проверить ответ от модуля, и если он положительный - направить команду повтора трека.
Код для atmega328P. Все лишнее убрал. Буду рад любой помощи.
Спойлер

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

#define F_CPU 16000000UL
#define StartConvAdc() ADCSRA |= (1<<ADSC)

#include <util/delay.h>
#include <stdlib.h>
#include <avr/interrupt.h>
unsigned char TX_Counter = 0;
unsigned char buffer_data[8] = {0x7e, 0xff, 0x06, 0x00, 0x01, 0x00, 0x00, 0xef}; // Sending Buffer
unsigned char RX_Buffer[8];
unsigned char RX_Counter = 0;
unsigned char RX_Bait = 0;
unsigned char flag_EN = 0;
unsigned char flag_EN_old = 0;
unsigned char value_cp = 0;
unsigned char flag=0;
unsigned char key=1;
unsigned char key1=1;
unsigned char key_ok = 0;

unsigned char USART_Receive(void)
{
	
	while (!(UCSR0A & (1 << RXC0)))
	;
	
	return UDR0;
}

ISR(USART_RX_vect)
{
	if (RX_Bait<8){
	RX_Buffer[RX_Counter] = USART_Receive();	
	RX_Counter++;
	if (RX_Counter == 8)
	RX_Counter = 0;
	RX_Bait++;
	}
}

void current(void)
{
//инициализация переменных	
	   
	  for (int x=0; x<100;x++)
	  {
		StartConvAdc();
		while(ADIF==0);
		value=ADCH;
		summ = summ + value;
		_delay_ms(3);  
	  }
	  value_cp = summ/100;

	  
	vout=value_cp*0.015039;            //To determine output voltage from sensor

	vin=fabs((2.5-vout)/0.185);          //To determine real current

// вывод на дисплей

}

void Packet_Analyze()
{
unsigned char code;
unsigned char databyte;
	code = RX_Buffer[3];
	databyte = RX_Buffer[6];
	
// вывод на дисплей		
	
	USART_FlushRxBuf();
	
}	

void USART_FlushRxBuf(void)
{
	unsigned char saveSreg = SREG;
	cli();
	RX_Counter = 0;
	RX_Bait = 0;
	SREG = saveSreg;
}

void main(void)
{
	
	usart_init();
	//инициализируем АЦП
	//ион - напряжение питания, выравнивание влево, нулевой канал
	ADMUX = (0<<REFS1)|(1<<REFS0)|(1<<ADLAR)|(0<<MUX3)|(0<<MUX2)|(0<<MUX1)|(0<<MUX0);
	//вкл. ацп, режим одиночного преобразования, разрешение прерывания, частота преобр. = FCPU/128
	ADCSRA = (1<<ADEN)|(0<<ADSC)|(0<<ADATE)|(0<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
	
	sei();

I2C_Init();//инициализируем TWI
LCD_ini();  //инициализируем дисплей
clearlcd();//очистим дисплей

PORTD = 0b00000100;
DDRD = 0x01;	

mp3_status(MODULE_ONLINE); // отправляем запрос на получение статуса устройства


	while(1) {

	current();           //АЦП

	  
key = ~(PIND & _BV(2));
_delay_ms(20);
key1 = ~(PIND & _BV(2));
if (key == 0xff && key1 == 0xff){
		flag_EN = 1;
		
			if (flag_EN!=flag_EN_old)
			{
			flag_EN_old = flag_EN; 
			key_on = 1;
			}
}
else{
flag_EN = 0;	 	
flag_EN_old = 0;
key_on=0;
}

	if (key_on == 1){
	        flag = !flag;
	        if (flag){
	        mp3_play(MODULE_PLAY); //включение трека
                //здесь должна быть проверка, если модуль прислал положительный ответ - направляем команду повтора
	        mp3_repeat(MODULE_REPEAT); //повтор трека
                }
                else
		mp3_stop(MODULE_STOP); //останавливаем трек
	        
	}
	
if (RX_Bait ==8) //анализируем принятый пакет от модуля
Packet_Analyze();

}
	
}
Александр МК
Родился
Сообщения: 6
Зарегистрирован: Пт окт 28, 2022 14:28:02

Re: DF Player mini (MP3-TF-16P)мои грабли

Сообщение Александр МК »

Решил проверить, как модуль запустить. Подал на модуль случайно +5,5 В. Светодиод слегка моргнул и погас. Подключал без Ардуины.
Труп?
Нашел схему модуля. Светодиод светится только когда идет сигнал?
MOHCTEP
Опытный кот
Сообщения: 768
Зарегистрирован: Вс янв 19, 2014 00:55:09

Re: DF Player mini (MP3-TF-16P)мои грабли

Сообщение MOHCTEP »

Александр МК писал(а):Светодиод светится только когда идет сигнал?
Да. Ну и кратковременная подача 5.5 вольт, думаю не повредила модуль.
Александр МК
Родился
Сообщения: 6
Зарегистрирован: Пт окт 28, 2022 14:28:02

Re: DF Player mini (MP3-TF-16P)мои грабли

Сообщение Александр МК »

Во всяком случае, SD карта не повредилась - все файлы на месте и читаются.
Кратковременно - это минута, в моем случае. :)
В выходные соберу с ардуиной, там посмотрим...
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6308
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: DF Player mini (MP3-TF-16P)мои грабли

Сообщение Jack_A »

[uquote="jcxz",url="/forum/viewtopic.php?p=3887022#p3887022"]MP3 можно и программно декодировать и проиграть силами самого МК без всяких дополнительных железок.[/uquote]
"В принципе человека можно передать по проводам. Но текнические трудности, возникающие на этом пути, пока превышают наши возможности". ©
Юморист сказал , имея в виду нашого гуру.
Изображение
Ответить

Вернуться в «Периферия»