diff --git a/code/ai_main.py b/code/ai_main.py
index 9536c92..f20915f 100644
--- a/code/ai_main.py
+++ b/code/ai_main.py
@@ -1,5 +1,4 @@
 import sim
-from usr.ui import SelectWindow, ChatWindow
 from usr.jobs import scheduler
 from usr import pypubsub as pub
 
@@ -33,20 +32,16 @@ def ai_callback(args):
     global GPIO39
     event = args[0]
     msg = args[1]
-    global chat_win
     if event == 1:
         print('TIKTOK_RTC_EVENT_START')
         GPIO39.write(1)
-        chat_win.update_status("Please speak to me")
     elif event == 2:
         print('TIKTOK_RTC_EVENT_STOP')
         GPIO39.write(0)
     elif event == 3:
-        #chat_win.update_status("AI speaking . . .")
         print('TIKTOK_RTC_EVENT_TTS_TEXT {}'.format(msg))
         #call.stopAudioService()
     elif event == 4:
-        #chat_win.update_status("AI listening . . .")
         print('TIKTOK_RTC_EVENT_ASR_TEXT {}'.format(msg))
         #call.stopAudioService()
     elif event == 5:
@@ -54,38 +49,11 @@ def ai_callback(args):
     else:
         print('TIKTOK_RTC_EVENT UNKNOWN {}'.format(event))
 
-def update_status_with_animation(chat_win, base_message, steps=3, delay_ms=400, final_wait=2):
-    # 更新动画
-    for i in range(steps + 1):
-        chat_win.update_status(base_message + " " + " ." * i)
-        time.sleep_ms(delay_ms)
-    time.sleep(final_wait)
-
-def perform_initialization(chat_win, tiktok):
-    # 初始化动画加载状态
-    print('start rtc') 
-    chat_win.show()
-    tiktok.active(True)
-
-    # 需要展示的状态列表
-    status_list = [
-        "Connecting to the server",
-        "Building the AI engine",
-        "Joining the AI room",
-        "Loading AI personality",
-        "Creating AI characters"
-    ]
-
-    # 依次遍历状态并显示动画
-    for status in status_list:
-        update_status_with_animation(chat_win, status)
 def ai_task():
     global rtc_queue
     global extint1
     global extint2
     global tiktok
-    global chat_win
-    global selsct_win
     while True:
         lte = dataCall.getInfo(1, 0)
         if lte[2][0] == 1:
@@ -99,16 +67,16 @@ def ai_task():
     extint1.enable()
     extint2.enable()
     print('ai task running')
+
     while True:
         data = rtc_queue.get()
         print('rtc_queue key event {}'.format(data))
         if data == 1:
-            perform_initialization(chat_win, tiktok)
+            print('start rtc')
+            tiktok.active(True)
         elif data == 2:
             print('stop rtc')
-            selsct_win.show()
             tiktok.active(False)
-            
 
 if __name__ == "__main__":
 
@@ -118,25 +86,17 @@ def ai_task():
     sim.setSimDet(1, 1)
 
     # 设置按键中断
-    extint1 = ExtInt(ExtInt.GPIO13, ExtInt.IRQ_FALLING, ExtInt.PULL_PU, key1, filter_time=50)
-    extint2 = ExtInt(ExtInt.GPIO12, ExtInt.IRQ_FALLING, ExtInt.PULL_PU, key2, filter_time=50)
+    extint1 = ExtInt(ExtInt.GPIO45, ExtInt.IRQ_FALLING, ExtInt.PULL_PU, key1, filter_time=50)
+    extint2 = ExtInt(ExtInt.GPIO46, ExtInt.IRQ_FALLING, ExtInt.PULL_PU, key2, filter_time=50)
 
     rtc_queue = Queue()
-
-    # 初始化界面
-    selsct_win = SelectWindow()
-    selsct_win.show()
-    
-    chat_win = ChatWindow()
     
     # 启动后台任务调度器
     scheduler.start()
-    
-    print('window show over')
 
     tiktok = TiktokRTC(300000, ai_callback)
     GPIO39 = Pin(PA, Pin.OUT, Pin.PULL_DISABLE, 0)
-    tiktok.config(volume=6)
+    tiktok.config(volume=11)
     print('volume: {}'.format(tiktok.config('volume')))
 
     _thread.start_new_thread(ai_task, ())
diff --git a/code/img/battery/bat_00.png b/code/img/battery/bat_00.png
deleted file mode 100644
index b8010e6..0000000
Binary files a/code/img/battery/bat_00.png and /dev/null differ
diff --git a/code/img/battery/bat_01.png b/code/img/battery/bat_01.png
deleted file mode 100644
index 21c6310..0000000
Binary files a/code/img/battery/bat_01.png and /dev/null differ
diff --git a/code/img/battery/bat_02.png b/code/img/battery/bat_02.png
deleted file mode 100644
index 2bb73d2..0000000
Binary files a/code/img/battery/bat_02.png and /dev/null differ
diff --git a/code/img/battery/bat_03.png b/code/img/battery/bat_03.png
deleted file mode 100644
index ed50555..0000000
Binary files a/code/img/battery/bat_03.png and /dev/null differ
diff --git a/code/img/battery/bat_04.png b/code/img/battery/bat_04.png
deleted file mode 100644
index 26651db..0000000
Binary files a/code/img/battery/bat_04.png and /dev/null differ
diff --git a/code/img/battery/bat_05.png b/code/img/battery/bat_05.png
deleted file mode 100644
index 5b56a16..0000000
Binary files a/code/img/battery/bat_05.png and /dev/null differ
diff --git a/code/img/battery/bat_06.png b/code/img/battery/bat_06.png
deleted file mode 100644
index 933f9e3..0000000
Binary files a/code/img/battery/bat_06.png and /dev/null differ
diff --git a/code/img/battery/bat_07.png b/code/img/battery/bat_07.png
deleted file mode 100644
index 21181ab..0000000
Binary files a/code/img/battery/bat_07.png and /dev/null differ
diff --git a/code/img/battery/bat_08.png b/code/img/battery/bat_08.png
deleted file mode 100644
index 8a7eb09..0000000
Binary files a/code/img/battery/bat_08.png and /dev/null differ
diff --git a/code/img/battery/bat_09.png b/code/img/battery/bat_09.png
deleted file mode 100644
index 6a58084..0000000
Binary files a/code/img/battery/bat_09.png and /dev/null differ
diff --git a/code/img/image1.png b/code/img/image1.png
deleted file mode 100644
index 6d404ff..0000000
Binary files a/code/img/image1.png and /dev/null differ
diff --git a/code/img/image1_80.png b/code/img/image1_80.png
deleted file mode 100644
index 1364150..0000000
Binary files a/code/img/image1_80.png and /dev/null differ
diff --git a/code/img/image2.png b/code/img/image2.png
deleted file mode 100644
index 867b316..0000000
Binary files a/code/img/image2.png and /dev/null differ
diff --git a/code/img/image2_80.png b/code/img/image2_80.png
deleted file mode 100644
index 26340eb..0000000
Binary files a/code/img/image2_80.png and /dev/null differ
diff --git a/code/img/signal/signal_00.png b/code/img/signal/signal_00.png
deleted file mode 100644
index eb7de6d..0000000
Binary files a/code/img/signal/signal_00.png and /dev/null differ
diff --git a/code/img/signal/signal_01.png b/code/img/signal/signal_01.png
deleted file mode 100644
index edd3f67..0000000
Binary files a/code/img/signal/signal_01.png and /dev/null differ
diff --git a/code/img/signal/signal_02.png b/code/img/signal/signal_02.png
deleted file mode 100644
index 4e92430..0000000
Binary files a/code/img/signal/signal_02.png and /dev/null differ
diff --git a/code/img/signal/signal_03.png b/code/img/signal/signal_03.png
deleted file mode 100644
index ab2ed95..0000000
Binary files a/code/img/signal/signal_03.png and /dev/null differ
diff --git a/code/img/signal/signal_04.png b/code/img/signal/signal_04.png
deleted file mode 100644
index ea3a891..0000000
Binary files a/code/img/signal/signal_04.png and /dev/null differ
diff --git a/code/img/signal/signal_05.png b/code/img/signal/signal_05.png
deleted file mode 100644
index 7be8fde..0000000
Binary files a/code/img/signal/signal_05.png and /dev/null differ
diff --git a/code/lcd_config.py b/code/lcd_config.py
deleted file mode 100644
index 2754245..0000000
--- a/code/lcd_config.py
+++ /dev/null
@@ -1,129 +0,0 @@
-INIT_RAW_DATA = (
-    2, 0, 120,
-    0, 0, 0x11,
-    0, 1, 0x36,
-    1, 1, 0x00,
-    # 0, 1, 0x36,
-    # 1, 1, 0x00,
-    0, 1, 0x3A,
-    1, 1, 0x05,
-    0, 0, 0x21,
-    0, 5, 0xB2,
-    1, 1, 0x05,
-    1, 1, 0x05,
-    1, 1, 0x00,
-    1, 1, 0x33,
-    1, 1, 0x33,
-    0, 1, 0xB7,
-    1, 1, 0x23,
-    0, 1, 0xBB,
-    1, 1, 0x22,
-    0, 1, 0xC0,
-    1, 1, 0x2C,
-    0, 1, 0xC2,
-    1, 1, 0x01,
-    0, 1, 0xC3,
-    1, 1, 0x13,
-    0, 1, 0xC4,
-    1, 1, 0x20,
-    0, 1, 0xC6,
-    1, 1, 0x0F,
-    0, 2, 0xD0,
-    1, 1, 0xA4,
-    1, 1, 0xA1,
-    0, 1, 0xD6,
-    1, 1, 0xA1,
-    0, 14, 0xE0,
-    1, 1, 0x70,
-    1, 1, 0x06,
-    1, 1, 0x0C,
-    1, 1, 0x08,
-    1, 1, 0x09,
-    1, 1, 0x27,
-    1, 1, 0x2E,
-    1, 1, 0x34,
-    1, 1, 0x46,
-    1, 1, 0x37,
-    1, 1, 0x13,
-    1, 1, 0x13,
-    1, 1, 0x25,
-    1, 1, 0x2A,
-    0, 14, 0xE1,
-    1, 1, 0x70,
-    1, 1, 0x04,
-    1, 1, 0x08,
-    1, 1, 0x09,
-    1, 1, 0x07,
-    1, 1, 0x03,
-    1, 1, 0x2C,
-    1, 1, 0x42,
-    1, 1, 0x42,
-    1, 1, 0x38,
-    1, 1, 0x14,
-    1, 1, 0x14,
-    1, 1, 0x27,
-    1, 1, 0x2C,
-    0, 0, 0x29,
-    0, 4, 0x2a,
-    1, 1, 0x00,
-    1, 1, 0x00,
-    1, 1, 0x00,
-    1, 1, 0xef,
-    0, 4, 0x2b,
-    1, 1, 0x00,
-    1, 1, 0x00,
-    1, 1, 0x01,
-    1, 1, 0x3f,
-    0, 0, 0x2c,
-
-)
-
-XSTART_H = 0xf0
-XSTART_L = 0xf1
-YSTART_H = 0xf2
-YSTART_L = 0xf3
-XEND_H = 0xE0
-XEND_L = 0xE1
-YEND_H = 0xE2
-YEND_L = 0xE3
-
-XSTART = 0xD0
-XEND = 0xD1
-YSTART = 0xD2
-YEND = 0xD3
-
-
-INIT_DATA = bytearray(INIT_RAW_DATA)
-
-
-INVALID_DATA = bytearray((
-    0, 4, 0x2a,
-    1, 1, XSTART_H,
-    1, 1, XSTART_L,
-    1, 1, XEND_H,
-    1, 1, XEND_L,
-    0, 4, 0x2b,
-    1, 1, YSTART_H,
-    1, 1, YSTART_L,
-    1, 1, YEND_H,
-    1, 1, YEND_L,
-    0, 0, 0x2c,
-))
-
-
-DISPLAY_OFF_DATA = bytearray((
-    0, 0, 0x28,
-    2, 0, 120,
-    0, 0, 0x10,
-))
-
-
-DISPLAY_ON_DATA = bytearray((
-    0, 0, 0x11,
-    2, 0, 20,
-    0, 0, 0x29,
-))
-
-
-LCD_WIDTH = 240
-LCD_HEIGHT = 240
diff --git a/code/ui.py b/code/ui.py
deleted file mode 100644
index 75e334f..0000000
--- a/code/ui.py
+++ /dev/null
@@ -1,221 +0,0 @@
-from usr import pypubsub as pub
-import lvgl as lv
-from machine import LCD
-from usr.lcd_config import *
-from usr.jobs import update_signal, update_time
-
-
-# init lcd
-lcd = LCD()
-lcd.lcd_init(INIT_DATA, 240, 320, 26000, 1, 4, 0, INVALID_DATA, DISPLAY_ON_DATA, DISPLAY_OFF_DATA, None)
-
-# init lvgl
-lv.init()
-# init display driver
-disp_buf = lv.disp_draw_buf_t()
-buf_length = LCD_WIDTH * LCD_HEIGHT * 2
-disp_buf.init(bytearray(buf_length), None, buf_length)
-# disp_buf1.init(bytearray(buf_length), bytearray(buf_length), buf_length)  # 双buffer缓冲,占用过多RAM
-disp_drv = lv.disp_drv_t()
-disp_drv.init()
-disp_drv.draw_buf = disp_buf
-disp_drv.flush_cb = lcd.lcd_write
-disp_drv.hor_res = LCD_WIDTH
-disp_drv.ver_res = LCD_HEIGHT
-# disp_drv.sw_rotate = 1  # 此处设置是否需要旋转
-# disp_drv.rotated = lv.DISP_ROT._270  # 旋转角度
-disp_drv.register()
-# image cache
-lv.img.cache_invalidate_src(None)
-lv.img.cache_set_size(50)
-# start lvgl thread
-lv.tick_inc(5)
-lv.task_handler()
-
-
-# 创建字体
-arial_12_style = lv.style_t()
-arial_12_style.init()
-arial_12_style.set_text_color(lv.color_white())
-arial_12_style.set_text_font_v2("arial_12.bin", 18, 0)
-
-
-arial_16_style = lv.style_t()
-arial_16_style.init()
-arial_16_style.set_text_color(lv.color_white())
-arial_16_style.set_text_font_v2("arial_16.bin", 24, 0)
-
-arial_22_style = lv.style_t()
-arial_22_style.init()
-arial_22_style.set_text_color(lv.color_white())
-arial_22_style.set_text_font_v2("arial_22.bin", 33, 0)
-
-
-class SelectWindow(object):
-
-    def __init__(self):
-        self.obj = lv.obj(None)
-        self.obj.set_style_bg_color(lv.color_black(), lv.PART.MAIN)
-
-        self.batt = lv.img(self.obj)
-        self.batt.set_src("U:/img/battery/bat_09.png")
-        self.batt.align(lv.ALIGN.TOP_RIGHT, -10, 10)
-
-        self.signal = lv.img(self.obj)
-        self.signal.set_size(16, 16)
-        self.signal.set_src("U:/img/signal/signal_00.png")
-        self.signal.align(lv.ALIGN.TOP_LEFT, 10, 10)
-        self.signal.set_offset_y(-20 * 0)
-        pub.subscribe("update_signal", lambda level: self.set_signal_level(level))
-        update_signal.run()  # first update signal
-
-        self.time = lv.label(self.obj)
-        self.time.set_text("00:00")
-        self.time.add_style(arial_16_style, lv.PART.MAIN | lv.STATE.DEFAULT)
-        self.time.align(lv.ALIGN.TOP_MID, 0, 10)
-        pub.subscribe("update_time", lambda time: self.time.set_text(time))
-        update_time.run()  # first update time
-
-        self.main_icon = lv.img(self.obj)
-        self.main_icon.set_src("U:/img/image1_80.png")
-        self.main_icon.set_size(80, 80)
-        self.main_icon.align(lv.ALIGN.TOP_RIGHT, -20, 85)
-
-        self.main_icon1 = lv.img(self.obj)
-        self.main_icon1.set_src("U:/img/image2_80.png")
-        self.main_icon1.set_size(80, 80)
-        self.main_icon1.align(lv.ALIGN.TOP_LEFT, 20, 85)
-
-        self.name = lv.label(self.obj)
-        self.name.add_style(arial_22_style, lv.PART.MAIN | lv.STATE.DEFAULT)
-        self.name.set_style_text_color(lv.palette_main(lv.PALETTE.BLUE), lv.PART.MAIN | lv.STATE.DEFAULT)
-        self.name.set_text("Ding")
-        self.name.align_to(self.main_icon, lv.ALIGN.OUT_TOP_MID, 0, -10)
-
-        self.name = lv.label(self.obj)
-        self.name.add_style(arial_22_style, lv.PART.MAIN | lv.STATE.DEFAULT)
-        self.name.set_style_text_color(lv.palette_main(lv.PALETTE.RED), lv.PART.MAIN | lv.STATE.DEFAULT)
-        self.name.set_text("Wei")
-        self.name.align_to(self.main_icon1, lv.ALIGN.OUT_TOP_MID, 0, -10)
-
-        self.choose = lv.label(self.obj)
-        self.choose.add_style(arial_22_style, lv.PART.MAIN | lv.STATE.DEFAULT)
-        self.choose.set_style_text_color(lv.palette_main(lv.PALETTE.YELLOW), lv.PART.MAIN | lv.STATE.DEFAULT)
-        self.choose.set_text("Choose her")
-        self.choose.align_to(self.main_icon1, lv.ALIGN.OUT_BOTTOM_MID, 0, 10)
-
-        self.content = lv.label(self.obj)
-        self.content.add_style(arial_22_style, lv.PART.MAIN | lv.STATE.DEFAULT)
-        self.content.set_text("")
-        self.content.align_to(self.main_icon, lv.ALIGN.OUT_BOTTOM_MID, 0, 10)
-
-        pub.subscribe("update_status", self.update_status)
-
-    def update_status(self, status):
-        self.content.set_text(status)
-        self.content.align_to(self.main_icon, lv.ALIGN.OUT_BOTTOM_MID, 0, 10)
-
-    def show(self):
-        lv.scr_load(self.obj)
-
-    def set_signal_level(self, level):
-        """level 分 6 档, [0, 5], 其中 0 表示无信号, 5表示满信号"""
-        self.signal.set_src("U:/img/signal/signal_{:02d}.png".format(level))
-
-    def set_batt_level(self, level):
-        """level 分 10 档, [0, 9], 其中 0 表示电池异常馈电, 8表示满电池, 9表示电池充电"""
-        self.batt.set_src("U:/img/battery/bat_{:02d}.png".format(level))
-    def update_status(self, status):
-        self.content.set_text(status)
-        self.content.align_to(self.main_icon, lv.ALIGN.OUT_BOTTOM_MID, 0, 10)
-
-    def show(self):
-        lv.scr_load(self.obj)
-
-    def set_signal_level(self, level):
-        """level 分 6 档, [0, 5], 其中 0 表示无信号, 5表示满信号"""
-        self.signal.set_src("U:/img/signal/signal_{:02d}.png".format(level))
-
-    def set_batt_level(self, level):
-        """level 分 10 档, [0, 9], 其中 0 表示电池异常馈电, 8表示满电池, 9表示电池充电"""
-        self.batt.set_src("U:/img/battery/bat_{:02d}.png".format(level))
-
-
-class ChatWindow(object):
-
-    def __init__(self):
-        self.obj = lv.obj(None)
-        self.obj.set_style_bg_color(lv.color_black(), lv.PART.MAIN)
-
-        self.batt = lv.img(self.obj)
-        self.batt.set_src("U:/img/battery/bat_09.png")
-        self.batt.align(lv.ALIGN.TOP_RIGHT, -10, 10)
-
-        self.signal = lv.img(self.obj)
-        self.signal.set_size(16, 16)
-        self.signal.set_src("U:/img/signal/signal_00.png")
-        self.signal.align(lv.ALIGN.TOP_LEFT, 10, 10)
-        self.signal.set_offset_y(-20 * 0)
-        pub.subscribe("update_signal", lambda level: self.set_signal_level(level))
-        update_signal.run()  # first update signal
-
-        self.time = lv.label(self.obj)
-        self.time.set_text("00:00")
-        self.time.add_style(arial_16_style, lv.PART.MAIN | lv.STATE.DEFAULT)
-        self.time.align(lv.ALIGN.TOP_MID, 0, 10)
-        pub.subscribe("update_time", lambda time: self.time.set_text(time))
-        update_time.run()  # first update time
-
-        self.main_icon = lv.img(self.obj)
-        self.main_icon.set_src("U:/img/image2.png")
-        self.main_icon.set_size(128, 128)
-        self.main_icon.align(lv.ALIGN.CENTER, 0, 10)
-
-        self.name = lv.label(self.obj)
-        self.name.add_style(arial_22_style, lv.PART.MAIN | lv.STATE.DEFAULT)
-        self.name.set_style_text_color(lv.palette_main(lv.PALETTE.ORANGE), lv.PART.MAIN | lv.STATE.DEFAULT)
-        self.name.set_text("Wei")
-        self.name.align_to(self.main_icon, lv.ALIGN.OUT_TOP_MID, 0, -10)
-
-        self.content = lv.label(self.obj)
-        self.content.add_style(arial_22_style, lv.PART.MAIN | lv.STATE.DEFAULT)
-        self.content.set_text("")
-        self.content.align_to(self.main_icon, lv.ALIGN.OUT_BOTTOM_MID, 0, 10)
-
-        pub.subscribe("update_status", self.update_status)
-
-    def update_status(self, status):
-        self.content.set_text(status)
-        self.content.align_to(self.main_icon, lv.ALIGN.OUT_BOTTOM_MID, 0, 10)
-
-    def show(self):
-        lv.scr_load(self.obj)
-
-    def set_signal_level(self, level):
-        """level 分 6 档, [0, 5], 其中 0 表示无信号, 5表示满信号"""
-        self.signal.set_src("U:/img/signal/signal_{:02d}.png".format(level))
-
-    def set_batt_level(self, level):
-        """level 分 10 档, [0, 9], 其中 0 表示电池异常馈电, 8表示满电池, 9表示电池充电"""
-        self.batt.set_src("U:/img/battery/bat_{:02d}.png".format(level))
-    def update_status(self, status):
-        self.content.set_text(status)
-        self.content.align_to(self.main_icon, lv.ALIGN.OUT_BOTTOM_MID, 0, 10)
-
-    def show(self):
-        lv.scr_load(self.obj)
-
-    def set_signal_level(self, level):
-        """level 分 6 档, [0, 5], 其中 0 表示无信号, 5表示满信号"""
-        self.signal.set_src("U:/img/signal/signal_{:02d}.png".format(level))
-
-    def set_batt_level(self, level):
-        """level 分 10 档, [0, 9], 其中 0 表示电池异常馈电, 8表示满电池, 9表示电池充电"""
-        self.batt.set_src("U:/img/battery/bat_{:02d}.png".format(level))
-
-
-if __name__ == '__main__':
-    selsct_win = SelectWindow()
-    chat_win = ChatWindow()
-    selsct_win.show()
-    chat_win.show()
\ No newline at end of file
diff --git a/docs/zh/media/wire_connection.jpg b/docs/zh/media/wire_connection.jpg
index 8d6db0a..2b52b10 100644
Binary files a/docs/zh/media/wire_connection.jpg and b/docs/zh/media/wire_connection.jpg differ
diff --git a/nvm/audio_gain.nvm b/nvm/audio_gain.nvm
new file mode 100644
index 0000000..0758093
Binary files /dev/null and b/nvm/audio_gain.nvm differ
diff --git a/nvm/audio_ve.nvm b/nvm/audio_ve.nvm
new file mode 100644
index 0000000..6d8bcb6
Binary files /dev/null and b/nvm/audio_ve.nvm differ
diff --git a/readme.md b/readme.md
index 113ec77..f075d0a 100644
--- a/readme.md
+++ b/readme.md
@@ -12,6 +12,7 @@
 - [贡献](#贡献)
 - [许可证](#许可证)
 - [支持](#支持)
+- [致谢](#致谢)
 
 ## 介绍
 
@@ -43,14 +44,9 @@ QuecPython 推出了基于豆包 webRTC 的 AI 聊天机器人解决方案。该
 在开始之前,请确保您具备以下先决条件:
 
 - **硬件:**
-  - [EC600MCNLE QuecPython 标准开发板](https://python.quectel.com/doc/Getting_started/zh/evb/ec600x-evb.html)(含天线、Type-C 数据线等)
-    > - 点击查看开发板的[原理图](https://images.quectel.com/python/2023/05/EC600X_EVB_V3.2-SCH.pdf)和[丝印图](https://images.quectel.com/python/2023/05/EC600X_EVB_V3.2-丝印.pdf)文档。
-    > - [移远商城购买链接](https://www.quecmall.com/goods-detail/2c90800c916a8eb501918d85528b017b)
+  - EC800MCNLE QuecDuino 开发板(含天线、Type-C 数据线等)
+    > - [点此购买开发板套件](https://www.quecmall.com/goods-detail/2c90800c94028da20194824724370127)
   - 电脑(Windows 7、Windows 10 或 Windows 11)
-  - LCD 显示屏
-    - 型号:ST7789
-    - 分辨率:240×240
-    - [移远商城购买链接](https://www.quecmall.com/goods-detail/2c90800b9488359c01951d6700700116)
   - 喇叭
     - 任意 2-5W 功率的喇叭即可
     - [移远商城购买链接](https://www.quecmall.com/goods-detail/2c90800c94028da201948249e9f4012d)
@@ -58,7 +54,7 @@ QuecPython 推出了基于豆包 webRTC 的 AI 聊天机器人解决方案。该
 - **软件:**
   - QuecPython 模块的 USB 驱动:[QuecPython_USB_Driver_Win10_ASR](https://images.quectel.com/python/2023/04/Quectel_Windows_USB_DriverA_Customer_V1.1.13.zip)
   - 调试工具 [QPYcom](https://images.quectel.com/python/2022/12/QPYcom_V3.6.0.zip)
-  - QuecPython [固件](https://github.com/QuecPython/AIChatBot-Volcengine-webRTC/releases/download/v1.0.0/EC600MCNLER06A01M08_OCPU_QPY_TEST0213.zip)
+  - QuecPython [固件](https://github.com/QuecPython/AIChatBot-Volcengine-webRTC/releases/download/v1.0.1/EC800MCNLER06A08M08_OCPU_QPY_TEST0219.zip)
   - Python 文本编辑器(例如,[VSCode](https://code.visualstudio.com/)、[Pycharm](https://www.jetbrains.com/pycharm/download/))
 
 ### 安装
@@ -67,6 +63,7 @@ QuecPython 推出了基于豆包 webRTC 的 AI 聊天机器人解决方案。该
    ```bash
    git clone https://github.com/QuecPython/AIChatBot-Volcengine-webRTC.git
    cd AIChatBot-Volcengine-webRTC
+   git checkout ec800m-quecduino
    ```
 
 2. **安装 USB 驱动**
@@ -83,10 +80,9 @@ QuecPython 推出了基于豆包 webRTC 的 AI 聊天机器人解决方案。该
    按照下图进行硬件连接:
    <img src="./docs/zh/media/wire_connection.jpg" style="zoom:67%;" /> 
    1. 将喇叭连接至图中标识有`SPK+`和`SPK-`的排针上。
-   2. 将 LCD 屏连接至标识有 `LCD` 字样的排针上。
-   3. 在图示位置插入可用的 Nano SIM 卡。
-   4. 将天线连接至标识有`LTE`字样的天线连接座上。
-   5. 使用 Type-C 数据线连接开发板和电脑。
+   2. 在图示位置插入可用的 Nano SIM 卡。
+   3. 将天线连接至标识有`LTE`字样的天线连接座上。
+   4. 使用 Type-C 数据线连接开发板和电脑。
 
 2. **将代码下载到设备:**
    - 启动 QPYcom 调试工具。
@@ -94,6 +90,8 @@ QuecPython 推出了基于豆包 webRTC 的 AI 聊天机器人解决方案。该
    - 按下开发板上的 **PWRKEY** 按钮启动设备。
    - 按照[说明](https://python.quectel.com/doc/Application_guide/zh/dev-tools/QPYcom/qpycom-dw.html#%E4%B8%8B%E8%BD%BD%E8%84%9A%E6%9C%AC)将 `code` 文件夹中的所有文件导入到模块的文件系统中,保留目录结构。
 
+> 注意: 如果需要提高mic的灵敏度,避免说话识别错误,请将 nvm 文件夹下的 audio_gain.nvm 和 audio_ve.nvm 文件导入到模块文件系统的 /usr 目录中。
+
 3. **运行应用程序:**
    - 选择 `File` 选项卡。
    - 选择 `ai_main.py` 脚本。
@@ -103,12 +101,11 @@ QuecPython 推出了基于豆包 webRTC 的 AI 聊天机器人解决方案。该
 ```python
 import example
 >>> example.exec('/usr/ai_main.py')
-window show over
-volume: 6
+volume: 11
 >>> lte network normal
 ai task running
 
-# 按KEY1键进入智能体
+# 按KEY S3键进入智能体
 rtc_queue key event 1
 start rtc
 TIKTOK_RTC_EVENT_START
@@ -125,7 +122,7 @@ TIKTOK_RTC_EVENT_TTS_TEXT 你好有什么可以帮到你
 TIKTOK_RTC_EVENT_TTS_TEXT 你好有什么可以帮到你的
 TIKTOK_RTC_EVENT_TTS_TEXT 你好有什么可以帮到你的吗
 
-# 按KEY2键退出智能体
+# 按KEY S2键退出智能体
 rtc_queue key event 2
 stop rtc
 ```
@@ -154,7 +151,6 @@ solution-AI/
 │   └── examples_ai.py
 ├── docs/zh/media/
 │           └── wire_connection.jpg
-├── EC600MCNLER06A01M08_OCPU_QPY_TEST0213.zip
 ├── LICENSE
 ├── readme.md
 └── readme_zh.md
@@ -176,4 +172,8 @@ solution-AI/
 
 ## 支持
 
-如果您有任何问题或需要支持,请参阅 [QuecPython 文档](https://python.quectel.com/doc) 或在本仓库中打开一个 issue。
\ No newline at end of file
+如果您有任何问题或需要支持,请参阅 [QuecPython 文档](https://python.quectel.com/doc) 或在本仓库中打开一个 issue。
+
+## 致谢
+
+感谢 [yfpan](https://github.com/kkongling) 对本仓库的贡献,帮助支持了 EC800M QuecDuino 开发板!
\ No newline at end of file