Đài FM với Arduino Nano và chip RDA5807M

10/04/2021
dai-fm-voi-arduino-nano-va-chip-rda5807m

III. Sơ đồ mạch

 

 

IV. Lập trình

Tại vì mỗi nút có nhiều chức năng tương ứng với trạng thái hiện tại của thiết bị nên mình dùng state machine để điều khiển các trang hiển thị và các hoạt động tương ứng khi bấm nút.

Nguyên lý là sẽ liên tục check nút bấm, khi bấm nút thì sẽ check trạng thái hiện tại là gì và đưa ra các hành động tương ứng. Các bạn có thể tham khảo trên diễn đàn về state machine ở đây

 

1. Giải thích các hàm trong thư viện RDA5807M

 

- Radioinit ()  Hàm này sẽ khởi tạo chip RDA5807M, khởi tạo chip và trả về kết quả True nếu tìm thấy chip trên I2C bus và Fail nếu không tìm thấy chip.

- SetBand(byte BankSet) Hàm này sẽ set band FM làm việc cho chip FM, Band của Việt Nam là từ 87–108 MHz. Các giá trị của BankSet như bên dưới

00 = 87–108 MHz (US/Europe)

01 = 76–91 MHz (Japan)

10 = 76–108 MHz (world wide)

11 = 65 –76 MHz (East Europe) or 50-65MHz

 

SetFrequency(unsigned int FreqSet,byte VolumeSet) Hàm này sẽ set tần số thu FM và bắt đầu play với VolumeSet. Volume là từ 0 đến 15 và

 giá trị Tần số = FreqSet x 10 Khz. Ví dụ muốn thu tần số  87Mhz   thì giá trị FreqSet  là 8700

 

GetRSSI_FMInfo() Hàm này trả về giá trị  1byte bao gồm 1 bit đầu báo kênh đó có phải là 1 đài đang phát hay không và 7 bit độ mạnh của tín hiệu.

 

SetVolume(byte VolumeSet) Hàm này set giá trị vollumn khi đang phát FM VolumeSet từ 0 đến 15.

 

- ResetChip() Hàm này reset chip.

 

SetMute(bool OnOff) Hàm này set ngắt tiếng hay không. OnOff = 0 -> ngắt tiếng, OnOff = 1 -> phát bình thường.

 

- SeekUp() Hàm này tự động dò tới 1 tần số mà có đài đang phát và dừng lại.

 

2. Lập trình chức năng của thiết bị

- Trạng Thái khởi động: Khởi tạo chip. Nếu không tim thấy Chip RDA5807M thì báo là không tim thấy chip.

- Sau khi khởi tạo chip thành công thì kiểm tra trong ROM đã có lưu trữ thông tin kênh chưa. Nếu chưa thì sẽ hỏi người dùng dò kênh hay tự động load các kênh của Việt Nam vào ROM.

- Sau khi khởi động và đã có thông tin kênh lưu trữ thì bắt đầu phát kênh đang lưu.

 

 Trong Quá trình Phát FM:

- Nhấn Next sẽ chuyển sang kênh tiếp theo được lưu, Nhấn Prev sẽ chuyền về kênh kề trước.

- Nhấn Mute sẽ ngắt tiếng và nhấn Mute lần nữa sẽ hủy ngắt tiếng

- Nhấn và giữ Vol- sẽ giảm âm lượng, nhấn và giữ Vol+ để tăng âm lượng

- Nhấn và giữ Menu sẽ  hiển thị các thông số tín hiệu của kênh. Nhấn và giữ Menu lần nữa sẽ hiển thị thông tin bình thường.

- Nhấn và giữ Seek để tự động dò tới kênh tiếp theo.

- Nhấn Menu để vào Menu sau đó chọn các chức năng tương ứng bằng phím F1, F2. nhấn menu lần nữa để chuyển trang Menu.

 

Trong Quá trình Dò Kênh FM:

- Nhấn Next sẽ chuyển sang kênh tiếp theo được lưu, Nhấn Prev sẽ chuyền về kênh kề trước. - Nhấn Mute sẽ ngắt tiếng và nhấn Mute lần nữa sẽ hủy ngắt tiếng - Nhấn và giữ Vol- sẽ giảm âm lượng, nhấn và giữ Vol+ để tăng âm lượng - Nhấn và giữ Menu sẽ  hiển thị các thông số tín hiệu của kênh. Nhấn và giữ Menu lần nữa sẽ hiển thị thông tin bình thường. - Nhấn và giữ Seek để tự động dò tới kênh tiếp theo.

- Nhấn Save để lưu lại kênh, sau khi nhấn Save con trỏ sẽ cho phép nhập tên kênh. Dùng Up,Down để đổi ký tự và Enter để chuyển sang ký tự tiếp theo. Nhấn Save lần nữa để lưu kênh và trở về chức năng phát bình thường.

 

Chức năng phát đài FM theo tần số :

- Nhấn Up và Down để tăng giảm tần số.

- Nhấn và giữ Enter để chuyển đổi giữa phần nguyên và thập phân tần số

- Nhấn nút Save để lưu lại thành kênh phát

 

Các chức năng khác trong Menu.

- Load kênh set sẵn cho FM ở Hồ chí Minh

- Xóa kênh

- chỉnh sửa tên kênh

- Load thông số mặt định

- Xóa toàn bộ EEPROM

- Điều chỉnh thời gian sáng đèn nền LCD

 

V. Code

Các bạn có thể download Codetại đây.

 

VI. Kết Luận

Sau 1 hồi nghiên cứu thì mình đã có 1 chiếc Radio để nghe quà tặng âm nhạc . Các  bạn có  thể thay đổi 1 vài chức năng hoặc code lại để hiển thị giao diện tiếng việt nhé và thêm 1 cái vỏ để hoàn thiện. 

Các chi tiết về chi RDA5807M các bạn có thể đọc datasheet hoặc tra cứu trên mạng nhé. Có thời gian mình sẽ viết chi tiết về con này.

 

Bình luận
Nội dung này chưa có bình luận, hãy gửi bình luận đầu tiên của bạn.
VIẾT BÌNH LUẬN CỦA BẠN