Created
March 24, 2023 06:19
-
-
Save tai/aa0d41d93c7ee57040118d1b0affce55 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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