Skip to content

Instantly share code, notes, and snippets.

@tai
Created March 24, 2023 06:19
Show Gist options
  • Save tai/aa0d41d93c7ee57040118d1b0affce55 to your computer and use it in GitHub Desktop.
Save tai/aa0d41d93c7ee57040118d1b0affce55 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python3
"""
Quick script to test DFPlayer Mini MP3 module
- https://wiki.dfrobot.com/DFPlayer_Mini_SKU_DFR0299
"""
import sys
from serial import Serial
CMD_NEXT = 0x01
CMD_PREV = 0x02
CMD_TRACK = 0x03
CMD_VOLUP = 0x04
CMD_VOLDOWN = 0x05
CMD_VOLSET = 0x06
CMD_MUSICMODE = 0x07
CMD_PLAYMODE = 0x08
CMD_SOURCE = 0x09
CMD_SLEEP = 0x0A
CMD_WORK = 0x0B
CMD_RESET = 0x0C
CMD_PLAY = 0x0D
CMD_PAUSE = 0x0E
CMD_FOLDER = 0x0F
CMD_VOLADJ = 0x10
CMD_REPEAT = 0x11
def dfcmd(cmd, feedback, para1, para2):
buf = bytearray(b'\x7E\xFF\x06\x00\x00\x00\x00\xFF\xFF\xEF')
buf[3] = cmd
buf[4] = feedback
buf[5] = para1
buf[6] = para2
cksum = 0xFFFF - sum(buf[1:7]) + 1
buf[7] = cksum >> 8
buf[8] = cksum & 0xFF
return buf
def cmd_next():
return dfcmd(CMD_NEXT, 0, 0, 0)
def cmd_prev():
return dfcmd(CMD_PREV, 0, 0, 0)
def cmd_track():
return dfcmd(CMD_TRACK, 0, 0, 2)
def cmd_volup():
return dfcmd(CMD_VOLUP, 0, 0, 0)
def cmd_voldown():
return dfcmd(CMD_VOLDOWN, 0, 0, 0)
def cmd_volset():
return dfcmd(CMD_VOLSET, 0, 0, 25)
def cmd_playmode():
return dfcmd(CMD_PLAYMODE, 0, 0, 3)
def cmd_sleep():
return dfcmd(CMD_SLEEP, 0, 0, 0)
def cmd_work():
return dfcmd(CMD_WORK, 0, 0, 0)
def cmd_reset():
return dfcmd(CMD_RESET, 0, 0, 0)
def cmd_play():
return dfcmd(CMD_PLAY, 0, 0, 0)
def cmd_pause():
return dfcmd(CMD_PAUSE, 0, 0, 0)
def main():
p = sys.argv[0]
if len(sys.argv) < 3:
print("Usage: {p} <port> (play|pause|next|prev|...)".format(**locals()))
sys.exit(0)
port = sys.argv[1]
cmd = sys.argv[2]
sp = Serial(port=port)
buf = eval("cmd_" + cmd)()
sp.write(buf)
sp.close()
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment