UART MP3 Voice Module with 8MB Flash Memory / DFR0534
Dependents: DFR0534_MP3_Test_os5 TYBLE16_MP3_Air
see /users/kenjiArai/notebook/mp3--voice-module-dfr0534/
drf0534.h@0:466200f304c9, 2019-12-29 (annotated)
- Committer:
- kenjiArai
- Date:
- Sun Dec 29 02:55:07 2019 +0000
- Revision:
- 0:466200f304c9
1st working sample (need to update)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kenjiArai | 0:466200f304c9 | 1 | /* |
kenjiArai | 0:466200f304c9 | 2 | * Mbed Library program |
kenjiArai | 0:466200f304c9 | 3 | * UART MP3 Voice Module with 8MB Flash Memory / DFR0534 |
kenjiArai | 0:466200f304c9 | 4 | * |
kenjiArai | 0:466200f304c9 | 5 | * Copyright (c) 2019 Kenji Arai / JH1PJL |
kenjiArai | 0:466200f304c9 | 6 | * http://www.page.sannet.ne.jp/kenjia/index.html |
kenjiArai | 0:466200f304c9 | 7 | * https://os.mbed.com/users/kenjiArai/ |
kenjiArai | 0:466200f304c9 | 8 | * Created: December 28th, 2019 |
kenjiArai | 0:466200f304c9 | 9 | * Revised: December 29th, 2019 |
kenjiArai | 0:466200f304c9 | 10 | */ |
kenjiArai | 0:466200f304c9 | 11 | |
kenjiArai | 0:466200f304c9 | 12 | /* |
kenjiArai | 0:466200f304c9 | 13 | Reference information: |
kenjiArai | 0:466200f304c9 | 14 | http://akizukidenshi.com/catalog/g/gM-13708/ |
kenjiArai | 0:466200f304c9 | 15 | https://wiki.dfrobot.com/Voice_Module_SKU__DFR0534 |
kenjiArai | 0:466200f304c9 | 16 | */ |
kenjiArai | 0:466200f304c9 | 17 | |
kenjiArai | 0:466200f304c9 | 18 | #ifndef DFR0534_H |
kenjiArai | 0:466200f304c9 | 19 | #define DFR0534_H |
kenjiArai | 0:466200f304c9 | 20 | |
kenjiArai | 0:466200f304c9 | 21 | #include "mbed.h" |
kenjiArai | 0:466200f304c9 | 22 | |
kenjiArai | 0:466200f304c9 | 23 | #define VOL_MIN 0 |
kenjiArai | 0:466200f304c9 | 24 | #define VOL_MAX 30 |
kenjiArai | 0:466200f304c9 | 25 | |
kenjiArai | 0:466200f304c9 | 26 | enum simple_commands{ |
kenjiArai | 0:466200f304c9 | 27 | Play = 0x02, |
kenjiArai | 0:466200f304c9 | 28 | Pause, |
kenjiArai | 0:466200f304c9 | 29 | Playstop, |
kenjiArai | 0:466200f304c9 | 30 | Prev_Audio, |
kenjiArai | 0:466200f304c9 | 31 | Next_Audio, |
kenjiArai | 0:466200f304c9 | 32 | The_Directory_of_the_previous_folder = 0x0e, |
kenjiArai | 0:466200f304c9 | 33 | The_directory_of_the_next_folder, |
kenjiArai | 0:466200f304c9 | 34 | End_to_play, |
kenjiArai | 0:466200f304c9 | 35 | Increase_the_volume = 0x14, |
kenjiArai | 0:466200f304c9 | 36 | Reduce_the_volume, |
kenjiArai | 0:466200f304c9 | 37 | End_Combination_Play = 0x1c, |
kenjiArai | 0:466200f304c9 | 38 | End_repetition = 0x21, |
kenjiArai | 0:466200f304c9 | 39 | End_to_send_the_playing_time = 0x26 |
kenjiArai | 0:466200f304c9 | 40 | }; |
kenjiArai | 0:466200f304c9 | 41 | |
kenjiArai | 0:466200f304c9 | 42 | /** UART MP3 Voice Module with 8MB Flash Memory / DFR0534 |
kenjiArai | 0:466200f304c9 | 43 | * @code |
kenjiArai | 0:466200f304c9 | 44 | * #include "mbed.h" |
kenjiArai | 0:466200f304c9 | 45 | * #include "drf0534.h" |
kenjiArai | 0:466200f304c9 | 46 | * |
kenjiArai | 0:466200f304c9 | 47 | * DFR0534 mp3(PA_0, PA_1, PA_4); // tx, rx, busy |
kenjiArai | 0:466200f304c9 | 48 | * |
kenjiArai | 0:466200f304c9 | 49 | * int main() { |
kenjiArai | 0:466200f304c9 | 50 | * mp3.volume_setting(VOL_MAX / 2); |
kenjiArai | 0:466200f304c9 | 51 | * uint32_t num = mp3.total_num_of_audio(); |
kenjiArai | 0:466200f304c9 | 52 | * while(true) { |
kenjiArai | 0:466200f304c9 | 53 | * for (uint32_t i = 1; i < num + 1; i++) { |
kenjiArai | 0:466200f304c9 | 54 | * mp3.play_one(i); |
kenjiArai | 0:466200f304c9 | 55 | * mp3.get_file_name(name_buf); |
kenjiArai | 0:466200f304c9 | 56 | * printf("File name = %s\r\n", name_buf); |
kenjiArai | 0:466200f304c9 | 57 | * } |
kenjiArai | 0:466200f304c9 | 58 | * } |
kenjiArai | 0:466200f304c9 | 59 | * } |
kenjiArai | 0:466200f304c9 | 60 | * @endcode |
kenjiArai | 0:466200f304c9 | 61 | */ |
kenjiArai | 0:466200f304c9 | 62 | |
kenjiArai | 0:466200f304c9 | 63 | class DFR0534 |
kenjiArai | 0:466200f304c9 | 64 | { |
kenjiArai | 0:466200f304c9 | 65 | public: |
kenjiArai | 0:466200f304c9 | 66 | /** Create the DFR0534 object |
kenjiArai | 0:466200f304c9 | 67 | * @param PinName communication line TX & RX & Busy signal input |
kenjiArai | 0:466200f304c9 | 68 | */ |
kenjiArai | 0:466200f304c9 | 69 | DFR0534(PinName tx, PinName rx, PinName busy); |
kenjiArai | 0:466200f304c9 | 70 | |
kenjiArai | 0:466200f304c9 | 71 | /** Play specific truck |
kenjiArai | 0:466200f304c9 | 72 | * @param truck number |
kenjiArai | 0:466200f304c9 | 73 | */ |
kenjiArai | 0:466200f304c9 | 74 | void play_one(uint16_t track_num); |
kenjiArai | 0:466200f304c9 | 75 | |
kenjiArai | 0:466200f304c9 | 76 | /** set volume |
kenjiArai | 0:466200f304c9 | 77 | * @param volume value(VOL_MIN to VOL_MAX, 0 to 30) |
kenjiArai | 0:466200f304c9 | 78 | */ |
kenjiArai | 0:466200f304c9 | 79 | void volume_setting(uint8_t vol); |
kenjiArai | 0:466200f304c9 | 80 | |
kenjiArai | 0:466200f304c9 | 81 | /** increase volume |
kenjiArai | 0:466200f304c9 | 82 | * @param none |
kenjiArai | 0:466200f304c9 | 83 | */ |
kenjiArai | 0:466200f304c9 | 84 | void volume_increase(); |
kenjiArai | 0:466200f304c9 | 85 | |
kenjiArai | 0:466200f304c9 | 86 | /** decrease volume |
kenjiArai | 0:466200f304c9 | 87 | * @param none |
kenjiArai | 0:466200f304c9 | 88 | */ |
kenjiArai | 0:466200f304c9 | 89 | void volume_decrease(); |
kenjiArai | 0:466200f304c9 | 90 | |
kenjiArai | 0:466200f304c9 | 91 | /** direct command (simple type -> No parameter & no return value) |
kenjiArai | 0:466200f304c9 | 92 | * @param command |
kenjiArai | 0:466200f304c9 | 93 | */ |
kenjiArai | 0:466200f304c9 | 94 | void command(enum simple_commands cmds); |
kenjiArai | 0:466200f304c9 | 95 | |
kenjiArai | 0:466200f304c9 | 96 | /** Check the total number of audio track |
kenjiArai | 0:466200f304c9 | 97 | * @param none |
kenjiArai | 0:466200f304c9 | 98 | * @return total number of audio |
kenjiArai | 0:466200f304c9 | 99 | */ |
kenjiArai | 0:466200f304c9 | 100 | uint16_t total_num_of_audio(); |
kenjiArai | 0:466200f304c9 | 101 | |
kenjiArai | 0:466200f304c9 | 102 | /** Check the current audio track number |
kenjiArai | 0:466200f304c9 | 103 | * @param none |
kenjiArai | 0:466200f304c9 | 104 | * @return number |
kenjiArai | 0:466200f304c9 | 105 | */ |
kenjiArai | 0:466200f304c9 | 106 | uint16_t current_num_of_audio(); |
kenjiArai | 0:466200f304c9 | 107 | |
kenjiArai | 0:466200f304c9 | 108 | /** get file name |
kenjiArai | 0:466200f304c9 | 109 | * @param buffer pointer (buffer size > 32) |
kenjiArai | 0:466200f304c9 | 110 | * @return name into buffer |
kenjiArai | 0:466200f304c9 | 111 | */ |
kenjiArai | 0:466200f304c9 | 112 | void get_file_name(char *buf); |
kenjiArai | 0:466200f304c9 | 113 | |
kenjiArai | 0:466200f304c9 | 114 | /** get play time |
kenjiArai | 0:466200f304c9 | 115 | * @param none |
kenjiArai | 0:466200f304c9 | 116 | * @return time[seconds] |
kenjiArai | 0:466200f304c9 | 117 | */ |
kenjiArai | 0:466200f304c9 | 118 | uint32_t get_play_time(); |
kenjiArai | 0:466200f304c9 | 119 | |
kenjiArai | 0:466200f304c9 | 120 | /** get play back time |
kenjiArai | 0:466200f304c9 | 121 | * @param none |
kenjiArai | 0:466200f304c9 | 122 | * @return time[seconds] |
kenjiArai | 0:466200f304c9 | 123 | */ |
kenjiArai | 0:466200f304c9 | 124 | uint32_t get_play_back_time(); |
kenjiArai | 0:466200f304c9 | 125 | |
kenjiArai | 0:466200f304c9 | 126 | private: |
kenjiArai | 0:466200f304c9 | 127 | RawSerial _mp3; |
kenjiArai | 0:466200f304c9 | 128 | DigitalIn _bsy; |
kenjiArai | 0:466200f304c9 | 129 | |
kenjiArai | 0:466200f304c9 | 130 | void _rx_handler(void); |
kenjiArai | 0:466200f304c9 | 131 | void _command(uint8_t cmd_no); |
kenjiArai | 0:466200f304c9 | 132 | void _command_w_para(uint8_t cmd_no, uint8_t *parameter, uint8_t len); |
kenjiArai | 0:466200f304c9 | 133 | void _wait_busy(void); |
kenjiArai | 0:466200f304c9 | 134 | uint32_t get_time(void); |
kenjiArai | 0:466200f304c9 | 135 | |
kenjiArai | 0:466200f304c9 | 136 | CircularBuffer<char, 32> _rxbuf; // small ring buffer |
kenjiArai | 0:466200f304c9 | 137 | uint8_t _sum; |
kenjiArai | 0:466200f304c9 | 138 | char _buf[32]; |
kenjiArai | 0:466200f304c9 | 139 | |
kenjiArai | 0:466200f304c9 | 140 | }; |
kenjiArai | 0:466200f304c9 | 141 | |
kenjiArai | 0:466200f304c9 | 142 | #endif // DFR0534_H |