Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.
|
Forum Index : Microcontroller and PC projects : $2 MP3/WAV player module with on-board flash...
Page 1 of 2 | |||||
Author | Message | ||||
Grogster Admin Group Joined: 31/12/2012 Location: New ZealandPosts: 9061 |
This looks to be an interesting module: MP3/WAV file player for $2... I have ordered a couple to play with. No pun intended. Supports playback control via buttons, UART, OneWire or 8-bit parallel - very versatile! Most modules have UART and many also have button control, but the OneWire and parallel control methods are interesting and useful. Seven different operating modes are supported. 32Mb on-board flash storage(4MB) for music or sound files, and on-board audio amplifier for driving a speaker. I would not put much faith in the 5W rating, but it will no doubt output plenty of volume to be heard. The DAC output is on the pins, so you can couple into your own amplifier arrangement if you wanted to. 5v supply, with 3v3 output pin for powering other stuff(80mA max) This would look to be perfect for embedded sound-effect type applications or any other annunciator type project. Not really suited to music playback, cos of the limited storage space, but there are a plethora of modules that use micro-SD cards for those kinds of jobs. Small, at only 26mm x 23mm, with the connections on a standard 2.54mm(0.1") grid. I found the manual(and a whole heap of other docs) for this module with a bit of a poke around on the net, so I upload it to this thread. DY-SV17F module functions introduction.pdf If anyone is interested in the extended docs past this post, let me know and I can post a zip file. Smoke makes things work. When the smoke gets out, it stops! |
||||
Volhout Guru Joined: 05/03/2018 Location: NetherlandsPosts: 3527 |
I have no previous experience, but I remember owning a MP3 player in the early days that had 32Mbyte flash and could only store 6-7 songs on it. In 4Mbyte you will probably only store one song. This maybe more suited to play some spoken word (short phrases), or play action sounds. PicomiteVGA PETSCII ROBOTS |
||||
Grogster Admin Group Joined: 31/12/2012 Location: New ZealandPosts: 9061 |
Smoke makes things work. When the smoke gets out, it stops! |
||||
athlon1900 Regular Member Joined: 10/10/2019 Location: AustriaPosts: 48 |
Very interesting , thanks for this info Changing the flash to a W25q256 is not a problem, I think. Then you would have 32MB onboard. The question is whether the controller supports it. |
||||
Grogster Admin Group Joined: 31/12/2012 Location: New ZealandPosts: 9061 |
That's an interesting idea. As I have four modules coming, I might do just that, and see what happens. The hard-coding in the controller/playback chip might be factory set for that specific 32Mb(4MB) capacity chip, but it would not hurt to find out. EDIT: Can't get the W25Q256 in 8-pin SOIC, it is only available in 16-pin SOIC or 8-pin WSON/WFLGA (QFN-like) package, so that one is out, but you CAN get the W25Q128 in SOIC-8, so I might get a few of those to play with. If it worked, that would increase the file storage to 16MB instead of 4MB. This may or may not work, but one way to find out is to..... It is more academic then practical, as the effort to replace the FLASH memory chip on a $2 module is questionable, but there you go. EDIT: Opps! W25W128 is the wide-SOIC(1.2mm wider package), which would be difficult to force-fit onto the narrow-SOIC footprint, so that idea is now out. MIGHT be able to use the likes of a W25Q64(giving 8MB of storage), but would need to check the footprint-vs-package size thing again. Might simply not be worth the effort. EDIT: Hold the phone..... Looking at the module again, it would seem that they DO use the wide-SOIC flash chip, so I CAN try out a W25Q128, but not the W25Q256, as it is not available in the SOIC-8 footprint. You can easily see the size difference on the photo of the module in the PDF. Edited 2022-11-18 10:21 by Grogster Smoke makes things work. When the smoke gets out, it stops! |
||||
Mixtel90 Guru Joined: 05/10/2019 Location: United KingdomPosts: 5726 |
$1.35 and $1.40 postage to the UK. :) Mick Zilog Inside! nascom.info for Nascom & Gemini Preliminary MMBasic docs & my PCB designs |
||||
athlon1900 Regular Member Joined: 10/10/2019 Location: AustriaPosts: 48 |
EDIT: Hold the phone..... Looking at the module again, it would seem that they DO use the wide-SOIC flash chip, so I CAN try out a W25Q128, but not the W25Q256, as it is not available in the SOIC-8 footprint. You can easily see the size difference on the photo of the module in the PDF. What about this one : 32MB MX25L25645 SOP8 Seems to be pin compatible according to the data sheet. Does it always have to be winbond ? |
||||
Grogster Admin Group Joined: 31/12/2012 Location: New ZealandPosts: 9061 |
Nice find. I will grab a couple of those to experiment with, along with some 25Q128's. Neither may work if the controller is hard-coded for the 25Q32, but there's no harm in trying just for the hell of it! Smoke makes things work. When the smoke gets out, it stops! |
||||
pwillard Senior Member Joined: 07/06/2022 Location: United StatesPosts: 274 |
"Please allow for up to 1cm size error!" What are they measuring with, toddler finger widths? |
||||
stanleyella Guru Joined: 25/06/2022 Location: United KingdomPosts: 1643 |
Looks interesting. I have a couple but play track 123 is easy, no way to read the track info ie artist though. |
||||
athlon1900 Regular Member Joined: 10/10/2019 Location: AustriaPosts: 48 |
I will grab a couple of those to experiment with, along with some 25Q128's. Neither may work if the controller is hard-coded for the 25Q32, but there's no harm in trying just for the hell of it! I also ordered one to play. Found also the DY-SV8F board. Seems to be the big brother. There is the same controller (DY1703a) and a 25Q64 flash onboard. Think (hopefully) there is a good chance for upgrading the flash. |
||||
Grogster Admin Group Joined: 31/12/2012 Location: New ZealandPosts: 9061 |
Yes, that is encouraging, considering it is the exact same controller chip. I have looked all over google, I cannot find ANY data on the DY1703A chip. If any member reading this has had better luck, please can you post a link here. Normally, you can track down even a Chinese language version of a datasheet for chip X, but in this case, I can't find anything at all. This despite the date-code on the chip in the pictures being 201903, suggesting it was made in 2019 or 2020 depending on how you want to interpret the code. Normally just four digits, YYWW so 19th week of 2020, but could also be 3rd week of 2019. I could also be neither of those at all! Smoke makes things work. When the smoke gets out, it stops! |
||||
Quazee137 Guru Joined: 07/08/2016 Location: United StatesPosts: 522 |
http://www.icstation.com/player-module-audio-voice-board there is some data here hope it helps. |
||||
stanleyella Guru Joined: 25/06/2022 Location: United KingdomPosts: 1643 |
there is some data here hope it helps. Looks useful. Lots of info. Anyone used one? They are just files on my from picaxe sd player, which is ok to use but no artist info which you get in win or linux. Edited 2022-11-20 01:39 by stanleyella |
||||
TassyJim Guru Joined: 07/08/2011 Location: AustraliaPosts: 5903 |
They are just files on my from picaxe sd player, which is ok to use but no artist info which you get in win or linux. Not the simplest thing to do but the required info is out there to achieve in MMBasic if you want to try. http://mpgedit.org/mpgedit/mpeg_format/mpeghdr.htm As a start, look at my File Manager for CMM2 program. Down the bottom of the mmedit page. Jim VK7JH MMedit  MMBasic Help |
||||
Quazee137 Guru Joined: 07/08/2016 Location: United StatesPosts: 522 |
Looks like two flavors here flash or SD |
||||
athlon1900 Regular Member Joined: 10/10/2019 Location: AustriaPosts: 48 |
I successfully swapped the flash to a W25Q128. What I can say is that the Mini Player behaves like a USB stick. Windows formats the flash with FAT and then correctly shows 16 MB. I copied a 5MB mp3 file and it works. The copying process takes longer, since it is writing into the flash. Next step a 25Q256 when these arrive |
||||
Grogster Admin Group Joined: 31/12/2012 Location: New ZealandPosts: 9061 |
Well done! My modules have just arrived, but I am still playing about with the standard chip arrangement. As I only ever wanted THESE modules for an annunciator project, having more then 4MB of storage is not an issue - for me. But it is nice to see that you CAN swap the chip to get more space. Please do keep us informed of what happens with the 256 chip. I had visions of a couple of things with changing the flash memory chip, and they were: (1) The DY controller chip may not support anything other then 4MB, and (2) the flash memory chip may have to be factory-formatted, meaning you put a bigger blank one in there, and Windoze won't be able to format it, as the DY controller does not know how or have the ability to mimic to the OS how to format it kind of thing. Glad to see neither of those turned out to be the case. Good to know. Smoke makes things work. When the smoke gets out, it stops! |
||||
jwettroth Regular Member Joined: 02/08/2011 Location: United StatesPosts: 70 |
I've used a device like this with MMBASIC. The modules that I used, used a TF card but its all the same main IC. You might have to adjust the init string in the code below to tell it to use the flash vs. TF. Documentation is available but is a bit confusing. They work well. I use them in systems that play bird calls. Watch grounding so you don't get a lot of noise injected onto the audio out. I brought grounds back to a common point so it didn't have to go through same return as digital stuff. Below is my code snippet- I hope its clear. ' DF PLAYER ----------------------------- Sub DFINIT Pin(14)=0 'TURN ON AUDIO SYSTEM Pause 100 Open "COM1:" As #1 DFCOMM("080001") 'NORMAL DFCOMM("090002") 'SD SOURCE DFCOMM("060030") 'SET VOL =30 DFCOMM("070000") 'SET EQ NORM 'IF DBMD%=2 Print "DFINIT" 'leave port open End Sub Sub DFPLAY DFCOMM("110001") 'PLAY IN A LOOP- DFINIT BEFORE 'If DBMD%=2 Then Print "DFPLAY" End Sub Sub DFSTOP Pin(14)=1 Close #1 'If DBMD%=2 Then Print "DFSTOP" End Sub '---------------------- 'COMMS WITH DF PLAYER--------- 'assumes that power is applied, com1 is open Sub DFCOMM(A$,R)'A$ COMMAND P1,P2, R IS OPTIONAL RESPONSE 1/0 If R=1 Then CC$="01" Else CC$="00"'R FLAG? DFSTR$="FF06"+Left$(A$,2)+CC$+Right$(A$,4)'BUILD UP STRING J=Len(DFSTR$) CKSUM%=65536 Print #1,Chr$(&H7E); If R=1 Then Print "7E"; For I=1 To J Step 2 K$=Mid$(DFSTR$,I,2)'VALUES ARE ASCII HEX H=Val("&H"+ K$) 'TURN INTO BINARY CKSUM%=CKSUM%-H Print #1,Chr$(H); If R=1 Then Print K$; Next I 'DONE WITH COMMAND- NOW APPEND CHECK SUM AND AND Print #1,Chr$(CKSUM%\256);:Print #1,Chr$(CKSUM%-256*(CKSUM%\256)); Print #1,Chr$(&HEF); If R=1 Then Print Hex$(CKSUM%)+"EF"; Pause 100 If R=1 Then GETRSP Pause 1000 End Sub '------------------------------------ Sub GETRSP 'get response from dfplayer- debug use Print " RESP:"; If Loc(#1) <> 0 Then L$=Input$(20,#1) J=Len(L$) For P=1 To J Print Hex$(Asc(Mid$(L$,P,1)),2); Next P End If End Sub Good luck. John Wettroth |
||||
Pluto Guru Joined: 09/06/2017 Location: FinlandPosts: 329 |
Received a DY-SV17F module yesterday. Made a small test program to see how it works. Works quite nicely with a small laptop speaker attached to the onboard amplifier(mono). For stereo you need to use the DACL/DACR outputs to a separate amplifier; not tested. 'DY-SV17F Audio Module Mini MP3 Player. 'Fredrik Nissfolk 15 dec 2022 ' 'DY_SV17F PicoMite ' 1 1k GP13 ' 2 1k GP12 ' 9 GND ' 10 10k GND ' 11 10k GND ' 12 10k 3.3V (pin 14 on DY_SV17F) ' 13 VBUS (5V) ' 17 speaker- ' 18 speaker+ dim as integer a(11) 'command parts as hexadecimal dim as string b$(11) 'coomand or message parts as string dim as integer L 'nbr of bytes to send or received DIM as string rcvd$ 'received string SetPin GP13,GP12,COM1 Open "COM1:9600" As #1 dat$=Input$(10, #1) 'remove possible rubbish from RX-buffer ?"" ?"Volume 10:" a(1)=&HAA:a(2)=&H13:a(3)=&H01:a(4)=&H15: L=4 '4 bytes excluding the CRC-byte Tx(L) Pause 1000 '---------------------- ?"" ?"Equalizer:" a(1)=&HAA:a(2)=&H1A:a(3)=&H01:a(4)=&H02: L=4 Tx(L) Pause 1000 '---------------------- ?"" Print "Current device:" 'Print #1,Chr$(&HAA);Chr$(&H09);Chr$(&H00);Chr$(&HB3) 'Query current online drive a(1)=&HAA:a(2)=&H0A:a(3)=&H00: L=3 Tx(L) Pause 1000 'wait for response RX if a(4)=2 then print "....flash" if a(4)=0 then print "....usb" IF a(4)=1 then print "....sd" if a(4)=&HFF then print "....no device" '---------------------- pause 1000 ?"" ?"Nbr of songs:" 'Print #1,chr$(&HAA);Chr$(&H0C);Chr$(&H00);Chr$(&HB6) 'Query number of songs a(1)=&HAA:a(2)=&H0C:a(3)=&H00: L=3 Tx(L) Pause 1000 'Print "LOC(#1) nbr of songs:";LOC(#1) RX Print"Number of stored songs:";a(5) '---------------------- pause 1000 do ?"Specified song:" a(1)=&HAA:a(2)=&H07:a(3)=&H02:a(4)=&H00:a(5)=&H0A: L=5 'a(5) is the song nbr Tx(L) Pause 3000 '---------------------- ?"" Print "Play:" 'Print #1,Chr$(&HAA);Chr$(&H02);Chr$(&H00);Chr$(&HAC) 'Play a(1)=&HAA:a(2)=&H02:a(3)=&H00: L=3 Tx(L) Pause 1000 '---------------------- CheckPlayState '---------------------- '---------------------- pause 1000 ?"" ?"Next song:" 'Print #1,Chr$(&HAA);Chr$(&H06);Chr$(&H00);Chr$(&HB0) 'Next a(1)=&HAA:a(2)=&H06:a(3)=&H00: L=3 Tx(L) '---------------------- CheckPlayState '---------------------- '---------------------- Pause 1000 Loop end sub CheckPlayState 'stays in this loop until song is played ?"" Print "Check Play State:" do a(1)=&HAA:a(2)=&H01:a(3)=&H00: L=3 Tx(L) Pause 1000 RX loop until a(4)=0 end sub SUB Tx L 'sends the command sum=0 print "TX: "; for i=1 to L b$(i)=CHR$(a(i)) print #1,b$(i); print " 0x";hex$(a(i),2); sum=sum+a(i) next i CRC=sum and &HFF print #1,CHR$(CRC); print " 0x";hex$(CRC,2) end sub sub RX 'receives and decodes the received message rcvd$=input$(LOC(#1),#1) L=len(rcvd$):print "Len:";L for i=1 to 10 a(i)=0 b$(i)="" next i print "RX: "; for i=1 to L b$(i)=MID$(rcvd$,i,1) a(i)=str2bin(UINT8,b$(i)) print " 0x";HEX$(a(i),2); next i sum=0 for i=1 to L-1 sum=sum+a(i) next i crc=sum and &HFF print " CRC= 0x";hex$(crc) end sub |
||||
Page 1 of 2 |
Print this page |