Lập trình M5Go phát âm thanh

Giới thiệu

M5GO là một bộ Kit học lập trình dành cho trẻ em từ 7 tuổi trở lên. M5Stack M5GO sử dụng MCU chính là ESP32, có khả năng kết nối WiFi, Bluetooth. Bên trong cũng có tích hợp cảm biến 9 trục (9DOF) – MPU9250. Màn hình hiển thị 2 inch TFT LCD – ILI9342 đầy đủ màu sắc.

M5GO có thể lập trình thông qua Arduino, MicroPython, bộ công cụ ESP-IDF và đặc biệt là lập trình Blockly (kéo-thả) từ trang web http://flow.m5stack.com/.

Trong ví dụ này, chúng tôi sẽ hướng dẫn các bước để lập trình M5Go phát ra các file âm thanh có định dạng wav đã được lưu sẵn trong thẻ nhớ.

Bạn làm lần lượt theo các bước dưới đây hoặc xem clip.

Kết nối wifi cho M5Go

Để lập trình M5Go, người dùng phải kết nối M5Go với M5Flow (một trang web hỗ trợ lập trình M5Go) bằng API key, quá trình kết nối được thực hiện như sau.

Khởi động lại M5Go, ở màn hình chính của M5Go, nhấn nút C (nút thứ ba từ bên trái qua) để vào phần cài đặt (setup).

Trong màn hình cài đặt, chọn Switch to internet mode để cài đặt kết nối wifi, sau đó dùng điện thoại hoặc máy tính có thể kết nối wifi, kết nối vào SSID mà màn hình M5Go hiển thị.

Sau khi kết nối vào wifi của M5Go, mở trình duyệt web và đi đến URL: http://192.168.4.1, rồi chọn wifi phù hợp cho M5Go.

Nếu kết nối thành công, M5Go sẽ tự khởi động lại vào màn hình chính, lúc này, nhấn nút A (nút đầu tiên ở bên trái màn hình) để vào chế độ lập trình.

Trên trang M5Flow, nhập vào API key được hiển thị trên màn hình M5Go.

Chuẩn bị file âm thanh và thẻ nhớ

Trước khi bắt tay vào lập trình, các bạn nên chuẩn bị cho mình một thẻ nhớ microSD và copy một vài file âm thanh có định dạng wav vào thẻ nhớ.

Trong ví dụ này, chúng tôi dùng các file wav được tải từ trang web https://file-examples.com/index.php/sample-audio-files/sample-wav-download/.

Trường hợp không có thẻ nhớ, bạn cũng có thể dùng file wav có sẵn trong bộ nhớ của M5Go và bỏ qua bước này.

Lập trình M5Go phát ra âm thanh

M5Go được tích hợp sẵn một loa (speaker) bên trong cho nên chúng ta sẽ không cần phải tốn thời gian để kết nối M5Go với loa hoặc phần cứng khác để phát âm thanh.

Đầu tiên, chúng ta cần phải khai báo các thư viện hoặc module được dùng để lập trình cho M5Go:

from machine import I2S
import os, uos, wave

I2S là một tiêu chuẩn kết nối để các thiết bị âm thanh kỹ thuật số kết nối với nhau, os và uos được dùng để làm việc với thẻ nhớ, và wave được dùng để đọc hoặc ghi âm thanh với định dạng wav.

Tiếp theo, chúng ta sẽ thiết lập I2S để có thể sử dụng speaker của M5Go:

i2s = I2S(  mode = I2S.MODE_MASTER | I2S.MODE_TX | I2S.MODE_DAC_BUILT_IN, rate = 16000, bits = 16,channel_format = I2S.CHANNEL_ONLY_RIGHT, data_format = I2S.FORMAT_I2S_MSB)

Chúng ta tiếp tục mount thẻ nhớ để có thể đọc các file wav trong thẻ nhớ:

uos.sdconfig(uos.SDMODE_SPI,clk=18,mosi=23,miso=19,cs=4)
try:
   uos.mountsd()
except:
   lcd.print('sd card not mounted',0,50,0xffffff)
   pass

sau đó, tạo một hàm để phát ra âm thanh:

def wav_player(fname):
   wav = wave.open(fname)
   i2s.set_dac_mode(I2S.DAC_RIGHT_EN)
   i2s.sample_rate(wav.getframerate())
   i2s.bits(wav.getsampwidth() * 8)
   i2s.nchannels(wav.getnchannels())
   i2s.volume(20)
   while True:
       data = wav.readframes(1024)
       if len(data) > 0:
           i2s.write(data)
       else:
           wav.close()
           break

Trong hàm này, chúng ta cần truyền vào đường dẫn đến file âm thanh, module wav sẽ đọc dữ liệu của file và trả về kết quả để speaker phát ra âm thanh, quá trình này lặp đi lặp lại cho đến khi nào không còn dữ liệu để đọc nữa thì ngừng lại.

Cuối cùng, chúng ta sẽ lập trình để 3 nút trên M5Go phát ra các âm thanh tương ứng khi được nhấn:

while True:
   if btnA.wasPressed():
       wav_player('/flash/res/mix.wav')
       i2s.stop()
   if btnB.wasPressed():
       wav_player('/sd/sample-1.wav')
       i2s.stop()
   if btnC.wasPressed():
       wav_player('/sd/sample-2.wav')
       i2s.stop()

Related posts

Lập trình điều khiển M5Go từ xa

Lập trình M5Go thu âm

4 Bình luận

Lập trình M5Go thu âm - share4happy .com Tháng mười 29, 2019 - 7:14 sáng
[…] Bài trước Previous post: […]
Lập trình điều khiển M5Go từ xa - share4happy .com Tháng mười một 16, 2019 - 2:05 sáng
[…] M5GO […]
professional recover center 1.4 build 1927h33tdontbannewspaper Tháng Một 23, 2020 - 12:15 sáng
Useful info. Lucky me I discovered your web site by accident, and I'm surprised why this twist of fate didn't happened earlier! I bookmarked it.| а
phần cứng kiotviet Tháng ba 20, 2020 - 3:02 sáng
Hi there friends, nice post and pleasant arguments commented at this place, I am truly enjoying by these.
Add Comment