官方源码添加4G支持

示例代码版本:小智2.1.0

地址:V2.1.0【whble/xiaozhi-esp32 - xiaozhi-esp32 - Gitea: Git with a cup of tea

V2.1.0官方源码

修改版源码

搭建Vscode开发环境

请自行搭建环境,示例IDF版本5.5.2

修改源码说明

  1. 复制WiFi版本源码,该名称为lichuang-dev-dual,意思为WiFi+4G的支持。
    7.png
  2. 修改Kconfig.projbuild,增加dual板子的支持。
    在BOARD_TYPE下添加BOARD_TYPE_LICHUANG_DEV_S3_DUAL
    1.png

    config BOARD_TYPE_LICHUANG_DEV_S3_DUAL
     bool "立创·实战派 ESP32-S3-DUAL"
     depends on IDF_TARGET_ESP32S3

    在USE_DEVICE_AEC中添加BOARD_TYPE_LICHUANG_DEV_S3_DUAL
     2.png
     完成上述两项后保存文件。

  3. 修改CMakeLists.txt文件,增加编译项。
     4.png

    elseif(CONFIG_BOARD_TYPE_LICHUANG_DEV_S3_DUAL)
        set(BOARD_TYPE "lichuang-dev-dual")
        set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
        set(BUILTIN_ICON_FONT font_awesome_20_4)
        set(DEFAULT_EMOJI_COLLECTION twemoji_64)

    修改完成后保存。

  4. 接下来修改lichuang_dev_board.cc文件。
     修改成dual的头文件
     Pasted image 20260302150758.png
     增加WiFi管理头文件
     Pasted image 20260302150633.png
     TAG改成LichuangDevBoard-Dual

    #define TAG "LichuangDevBoard-Dual"

    板子名称修改成LichuangDevBoardDual
    Pasted image 20260302151006.png
    修改Boot按键部分的代码:

      void InitializeButtons() {
            // 启动或者联网状态下单击BOOT按钮进入wifi配置模式,其他状态单击BOOT按钮切换聊天状态
            boot_button_.OnClick([this]() {
                auto& app = Application::GetInstance();
                // During startup (before connected), pressing BOOT button enters Wi-Fi config mode without reboot
                if (GetNetworkType() == NetworkType::WIFI) {
                    if (app.GetDeviceState() == kDeviceStateStarting && !WifiManager::GetInstance().IsConnected()) {
                        auto& wifi_board = static_cast<WifiBoard&>(GetCurrentBoard());
                        wifi_board.EnterWifiConfigMode();
                        return;
                    }
                }
                app.ToggleChatState();
            });
            
            // 四次唤醒切换wifi 4g网络
            boot_button_.OnMultipleClick([this]() {
                auto& app = Application::GetInstance();
                if (app.GetDeviceState() == kDeviceStateStarting || app.GetDeviceState() == kDeviceStateIdle || app.GetDeviceState() == kDeviceStateWifiConfiguring) {
                    SwitchNetworkType();
                }
            },4);
    
    #if CONFIG_USE_DEVICE_AEC
            boot_button_.OnDoubleClick([this]() {
                auto& app = Application::GetInstance();
                if (app.GetDeviceState() == kDeviceStateIdle) {
                    app.SetAecMode(app.GetAecMode() == kAecOff ? kAecOnDeviceSide : kAecOff);
                }
            });
    #endif
        }

    屏蔽MCPtool语音切换网络模式的代码
    Pasted image 20260302151445.png
    最后修改下板子初始化代码

    LichuangDevBoardDual() :
            DualNetworkBoard(ML307_PIN_TX, ML307_PIN_RX, GPIO_NUM_NC, 0),  // 0是wifi模式,1是ML307网络,启动后可以通过四击BOOT按钮切换网络
            boot_button_(BOOT_BUTTON_GPIO) {
            InitializeI2c();
            InitializeSpi();
            InitializeSt7789Display();
            InitializeTouch();
            InitializeButtons();
            InitializeCamera();
           // InitializeTools();    
            GetBacklight()->RestoreBrightness();
        }
  5. 修改配置文件config.h,增加4G接口配置。
    Pasted image 20260302152012.png
  6. 修改config.json,修改名称
    Pasted image 20260302152046.png

完成后可以开始编译

摄像头配置

V2.1.0 摄像头库已经修改成了espressif__esp_video,需要在SDK中打开配置。
实战派摄像头规格GC0308,格式需要选择“YUV422 320x240 20fps”
Pasted image 20260302171021.png

编译配置

在Xiaozhi Assistant中选择板子

需要实时打断要勾选Enable Device-Side AEC

需要不同语言支持,在Default Language中选择

浏览 95
点赞 0