The title of the post hopefully provides some indication of the content. I thought of continuing the discussion on Ralph Yamamoto post JQ6500 MP3 Player but reconsidered. Why should RY have to do the heavy lifting for a subject matter I have a particular interest in. I appreciate ralphjy efforts in starting a discussion on this product. I'm also looking to bend the discussion in a specific direction. I recently purchased a few of the modules to do some testing, looking for a possible replacement for the SD card DFPlayer module.
The DFPlayer module uses an SD card to store files. The Asian knock-off DFPlayer modules are inexpensive but after I factor in the price of an SD card, way oversized for a few files stored, I went looking for a replacement. My JR6001 module attempt failed and is documented in this post Looking for member insight into the JR6001 Serial MP3 Custom Programmable Sound Recorder Module . It did motivated RY and scottiebabe to generate some interest.
The depreciating statement "I'm not the sharpest knife in the drawer" is my acknowledgement that I need more help when it comes to tech stuff. It takes a while for me to catch on. I have fragments of knowledge and incomplete understanding of some technology that leaves me struggling. I'm using this blog post to express my understanding, fill in some blanks and accept challenges to ensure I got it right. I hope to solidify the knowledge.
My initial testing of the JQ6500 has given me some insight, offered some disappointments and generated more questions. I had hoped that in my DFPlayer module replacement search I would find something simple. Simple meaning it worked the same as the DFPlayer without the SD card. The SD card enables an individual with little technical skill to manage audio files. If they have managed files on on the thumb drive managing files on an SD card is not difficult. RY JQ6500 post had me believing it was simple. I discovered it is less simple and more complex.
Here is my understanding. RY or any other member please jump in an correct any statement I make in error.
This is from the module documentation https://components101.com/sites/default/files/component_datasheet/JQ6500-MP3-Player-Module-Datasheet.pdf
JQ6500 MP3 is a hardware decoder providing serial MP3 chip, perfectly integrating MP3 and
WMV. Meanwhile, the software supports TF card driver, spi flash update on the computer, and
FAT16, FAT32 file system. Through simple serial commands, it can execute music playing.
Easy-to-use without cumbersome underlying operations, stability and reliability are the most
important features of this product. Also the chip is uniquely customized as a low-cost solution for
specific voice playing field.
As RY indicated when you purchase cheaper modules (at least some of mine) they may not work. The JQ6500 has a small file space that contains MS Windows compatible files. Those files you can't see if the module is not accessible by your MS operating system. One of those files is an EXE for managing files on the module. Wait, I can read the module file system that contains the EXE that allows me to put files on the card. A pat on the back RY, for providing the resource links to the solution.
The solution is a toolset for restoring the modules integrity. It restores the modules small MS file space and the much needed EXE file. Now you have the EXE to put wav & mp3 files on the module. For MS operating system peoples, the toolset is provided as an ISO file that is loaded in a Virtual machine, to get the tools i.e jq6500. For Linux peoples you can download some files do a .make command and you have the jq6500 tool.
If you are not familiar with .make and how to use it in Linux, you will need to do some reading, well I had to do some reading to sharpen my skillset. The command line tool is a few years old. Run a jq6500 -help and you will discover some things it does. The description still alludes to that simple file system. No, it does not enable you to list the sound files on the module. At least I didn't find it. It is purely a maintenance tool.
./jq6500 -help
Usage: jq6500 <command> [OPTION]... [FILE]...
Write files to an MP3 player based on the JQ6500 chip that is connected
via USB. Files can be written in raw mode or as a simple file system which
is created on the fly.
The file system is needed by the device in order to play MP3 or WAV
files. Raw mode can be used to overwrite the ISO image in the first
256kiB of the device or to flash an existing file system image with audio
files.
Commands:
-L List available JQ6500 devices
-S detect and print the size of the onboard flash chip
-R read from flash
-W write to flash
-E erase flash
-X write embedded rescue ISO image to flash
(no other options allowed)
Options:
-d device SCSI generic device or file to write to (default: autodetect)
-r raw mode: read/write flash contents to/from a single file
-o offset default: 0x40000
-s size default: 4096 for read and erase, actual file size for write
-f force operation (disables some sanity checks, use with care!)
-v level set the verbosity level (default: 1)
-p patch the detected size into config.ini of the given image before
flashing
-q be quiet
Project home page: http://m4x.de/jq6500
I restored the module using the toolset in Linux and then plugged the module it into a MS Windows operating system computer. It displayed the module as a CD ROM drive. In Linux I couldn't find the module in the filesystem so I relied on the MS O/S EXE to put sound files on the card. You can load sound files on the card in Linux. I haven't tried that yet. Again it is command line.
Fast forward....Does it work?
Using the above drawing for a hardware configuration and https://github.com/sleemanj/JQ6500_Serial Arduino modules I was able to run examples provided except for one that used the file number. It is specific on how the files need to be identified. I may have an error that is causing the problem. Yes, I know it is not a good idea to use the Arduino to power external devices. It was down and dirty and it worked. That again is simple:)
I also confirmed the operation of the K# trigger pins. If you short the pin to ground the module will play a specific file. This is real easy to use in an Arduino sketch. You don't need the Arduino module to communicate with the module. You don't need serial com pins and setup to work. Just ground an Arduino pin connected to a K pin and sound plays. Now that simple!
Below is a list of resources I used to expand my knowledge and secure an understanding to get the module working on a breadboard.
https://www.youtube.com/watch?v=9h_RWsfRnY4
https://github.com/NikolaiRadke/JQ6500-rescue-tool/blob/master/README.md
http://www.lucadentella.it/en/2018/04/11/recuperiamo-un-modulo-jq6500/
https://github.com/NikolaiRadke/JQ6500-rescue-tool
https://github.com/sleemanj/JQ6500_Serial
Unanswered questions:
- How can you read the sound file system? i.e a listing of directories and sound files on the module
- What file numbering that works with the index example?
- How do you get the module small MS file system to be seen by Linux?
- How do use the ADC-R & ADC-L channels? I couldn't get audio to play.
In conclusion, once again I want acknowledge the post JQ6500 MP3 Player by ralphjy without his efforts this post would never have been created.