Arduino en de JQ6500 geluidsmodule
Febr 2017

Voor mijn robot was ik ik opzoek naar een leuke geluidsmodule. Eentje waar ik geluiden door elkaar kon afspelen. Iemand wees me op de JQ6500. Ik heb eens op het internet gekeken wat de prijs was en of er informatie voor beschikbaar was.
De enige uitdaging die er was, is het juiste formaat van de geluiden. Al het andere wordt erg goed beschreven.(Zie onderaan deze pagina bij bronnen)
Sluit je de JQ6500 aan op de USB dan vind je een CD drive
Je klikt op de drive en je ziet als inhoud drie bestanden verschijnen.
Klik op music download en een Chinees menuutje wordt zichtbaar.
Kies voor het 2e tabblad
klik op de knop met chineese text. Kies de ** MP3s die je wil uploaden. De nummers mogen niet groter zijn dan 1068 kb.
klik daarna op het eerste tabblad en druk op de knop met Chineese text.
De balk onderop wordt groen als de bestanden overgeblazen worden.
Als de tekst met Q lijkt te beginnen gaat het goed maar moet je even wachten voordat de overdracht begint.
Als er een andere tekst komt is er iets fout met de bestandsgrote en wordt er niets ge upload. Je moet de JQ 6500 even afsluiten en opnieuw starten.
Een Youtube filmpje vind je hier.
** de MP3s moeten wel een bitrade hebben die gelijk of lager is dan 48. Die bitrade kan je met lame omzetten.

Bij Winlame moet je telkens op next drukken om verder te gaan bij de instellingen en 1x op de pijl om het uit te voeren.
Er staan dan MP3 bestanden op de JQ6500, maar die kan je nergens meer zien. Je moet dus zelf goed in de gaten houden welk bestand welk nummer heeft. In het Youtube filmpje worden de muziek files 001 002 etc. genummerd, ik had 01 02 03 etc. genummerd en dat kan ook. Er kunnen 1000 files op de JQ6500 in 100 mappen, dus 001 is beter.
De MP3 muziekbestanden moeten dus een nummer krijgen als naam en max. 48 bit sampeling hebben. Nu had ik mijn naam in 001muzieknaam.mp3 genoemd en dat geeft zo te merken geen probleem. Dat vond ik makkelijk omdat ik dan later kan kijken welk geluid sample 001.mp3 is.

De volgende sampling rates worden ondersteund 8 / 11.025 / 12 / 16 / 22.05 / 24/32 / 44.1 / 48 kHz

Er zijn 3 versies van de JQ6500. Een versie met 28 pinnen aansluitingen en 2 versies met 16 pinnen aansluitingen.(V2.1 heeft micro en andere heeft mini usb aansluiting). De 28 pins heeft een CD kaart 'onboard'.
Ik heb V2.1 en ga daar in mijn uitleg mee verder.



K1 t/m K5 zijn knoppen om te kiezen uit de eerste 5 geluiden. Verbinden met GND betekend afspelen.
GND is ground is min spanning.
Als je 5 Volt gebruikt als voedingspanning moet er tussen RX en Arduino pin 9 een 1kOhm weerstand geplaatst worden. Als je totale 3,3 V voeding gebruikt (Arduino en JQ6500) hoeft dat niet.
TX kan zonder weerstand aan pin 8 van de Arduino
VCC is + voedingspanning (3,3 of 5 Volt). Aangeraden wordt een externe 5 Volt te gebruiken voor de JQ6500.
DAC_L is aansluiting versterker/koptelefoon links + GND
DAC_R is aansluiting versterker/koptelefoon rechts + GND
SPK+ en SPK- is luidspeaker mono aansluiting
Door een paralelle spanningsdeler te maken aan de ADKEY en die met knoppen aan de GND te verbinden kan je de JQ6500 met externe knoppen bedienen. De eerste 5 voorkeur afspeel samples worden nu weer aangeboden.
SRC is het omschakelen van SD naar interne geheugen. Die kan je dus weg laten bij een 16 pins aansluiting.
PRV is vorige of als je hem ingedrukt houd, volume zachter.
NXT is volgende of als je hem ingedrukt houd, volume harder.
En play, tja waar zal die voor zijn, ;-)

Via infrarood zou het ook mogelijk moeten zijn om de JQ6500 met 38KHz IR ontvanger en een goedkope afstandsbediening te kunnen aansturen. Ik heb nog geen moeite gedaan om te kijken hoe dat aangesloten moet worden.


Het makkelijkste is het af te spelen met de Arduino. Er is een library voor geschreven (zie bronnen sparks.go.go)
Via bestand - Voorbeeld - JQ6500 (onderaan) - Fulldemo kan je een voorbeeld sketch installeren.
Je kan dan (na het instaleren van de LIB) via SERIEEL MONITOR de JQ6500 benaderen en bedienen.
Alle mogelijkheden met Arduino worden beschreven op http://sparks.gogo.co.nz/jq6500/doxygen/class_j_q6500___serial.htm

De mogelijke opdrachten worden dan :
play restart pauze next prev nextFolder prevFolder playFileByindexNumber playFileNumberIn FolderNumber volumeUp volumeDn setVolume setEgualizer setLoopmode setSource sleep reset getStatus getVolume getEqualizer getLoopMode countFiles countFolders currentFileIndexNumber currentFilePositionInSeconds currentFileLengthInSeconds currentFileName



Een instelling is minder makkelijk te maken en dat is de keuze hoe je de file wil afspelen:
1) onmiddelijk de nieuwe keuze gaan afspelen en de vorige keuze stoppen.
2) helemaal alleen laten afspelen
3) helemaal gezamelijk laten afspelen.
4) alleen spelen als de play knop ingedrukt is.
Nu moet er gesoldeerd worden, een weerstand van:
1) leeg meteen de nieuwe keuze spelen en de vorige stoppen.(klopt)
2) 51k volledig alleen afgespeeld wordt,( Hier speelt het geluid 1x af)
3) 33k volledig multi afgespeeld wordt,( ik merk dat het geluid continu afgespeeld wordt. Geen meerder geluiden door elkaar.)
4) 24k afgespeeld wordt als de knop ingedrukt wordt gehouden.(klopt)
Of als je slim bent, soldeer je twee draadjes en een keuze schakelaar. Dan kan je altijd later een andere keuze maken zonder een SMD te moeten solderen.
De weerstand tussen playmode en gnd. Helaas is de 16 pins uitgevoerd met een smd opening op de printplaat en moet je dus een knap soldeerboutje hebben met een dunne punt.
bronnen:
elecfreaks.com/wiki
https://github.com/sleemanj/JQ6500_Serial/
http://sparks.gogo.co.nz/jq6500/index.html
http://www.elecfreaks.com/wiki/ codes voor Arduino.