Funpack2-5期基于ESP32-S3-BOX-LITE天气显示播报站
本文项目采用ESP32-S3-BOX-LITE AI语音开发套件,通过ESP32-S3-BOX-Lite联网wifi功能和网络功能 获取心知天气本地天气信息和温度信息并显示、播报,完成任务一相关功能。
标签
嵌入式系统
Funpack活动
ESP32-S3
小屁孩06
更新2023-08-02
915

Funpack2-5期基于ESP32-S3天气显示播报站


1. 项目介绍

本文项目采用ESP32-S3-BOX-LITE AI语音开发套件,该套件是乐鑫打造的一个智能语音设备开发平台,ESP32-S3-BOX-Lite 是目前对应的 AIoT 应用开发板,搭载支持 AI 加速的 ESP32-S3 Wi-Fi + Bluetooth 5 (LE) SoC。
为用户提供了一个基于语音助手、传感器、红外控制器和智能 Wi-Fi 网关等功能开发和控制智能家居设备的平台。开发板出厂支持离线语音交互功能,用户通过乐鑫丰富的 SDK 和解决方案,能够轻松构建在线和离线语音助手、智能语音设备、HMI 人机交互设备、控制面板、多协议网关等多样的应用。
本项目通过ESP32-S3-BOX-Lite联网wifi功能和网络功能 获取心知天气本地天气信息和温度信息并显示、播报,完成任务一相关功能。

Funpack第二季第五期指定完成的任务 :
* 任务一:使用ESP32的WiFi和TTS功能,实现一个语音播报系统,如联网获取粉丝数并播报或者获取天气并播报。 * 任务二:使用ESP32的声学前端算法,实现一个短时录音并处理后回放,如按下按键录制5秒音频,进行降噪和增益处理后输出。 * 任务三:使用板卡的屏幕和联网功能,实现一个在线电子书浏览器,从网络上获取文本并显示在屏幕上,通过按键翻页。 * 任务四:若您针对这个板卡有更好的创意,可自命题完成(难度不能低于以上任务)

二、项目设计思路(含设计框图)

乐鑫ESP32-BOX-LITE开发套件采用 乐鑫 IoT 开发框架 (esp-idf) ,属于ESP32-S3 SoC 系列芯片支持2.4 GHz Wi-Fi功能,本项目使用该Wi-Fi功能进行网络初始化,并联网获取天气信息。
同时该套件支持乐鑫语音识别库esp-sr,带有语音识别模型和语音通话模型,语音识别模型支持语音唤醒等,本项目用语间通话模型进行文本分析相关功能实现。
官方自带例程对于lvgl 组件进行了移值,初始化等操作,本例中直接使用官方demo中实现在显示组件初始化相关功能及代码实现相关显示功能。
本项目用到程序结构流程图如下图所示,语音分析模型在flash中加载xiaole模型进行资源初始化准备工作,硬件设备初始化主要是调用移植esp-box项目的bsp组件进行各个部分组件准备和初始化工作。主要有板卡初始化bsp_board_init, nv_flash初始化和文本转语音初始化tts_init,还有网络初始化wifi_init_station, 完成上述硬件及设备初化化后,进行界面初始化显示和循环进行显示更新操作,同时进行左键和中键按键回调函数注册,最后,通过按键触发显示更新和语音播报功能。
图片1

三、硬件介绍


图片2
开发板配备一块 2.4 寸 LCD 显示屏、双麦克风、一个扬声器、两个用于硬件拓展的 Pmod™ 兼容接口、结合三个独立按键,可构建多样的 HMI 人机交互应用。
核心微控制器:ESP32-S3

ESP32-S3 是一款集成 2.4 GHz Wi-Fi 和 Bluetooth 5 (LE) 的 MCU 芯片,支持远距离模式 (Long Range)。ESP32-S3 搭载 Xtensa® 32 位 LX7 双核处理器,主频高达 240 MHz,内置 512 KB SRAM (TCM),具有 45 个可编程 GPIO 管脚和丰富的通信接口。ESP32-S3 支持更大容量的高速 Octal SPI flash 和片外 RAM,支持用户配置数据缓存与指令缓存。

  • Xtensa® 32 位 LX7 双核处理器,主频高达 240 MHz
  • 内置 512 KB SRAM、384 KB ROM 存储空间,并支持多个外部 SPI、Dual SPI、 Quad SPI、Octal SPI、QPI、OPI flash 和片外 RAM
  • 额外增加用于加速神经网络计算和信号处理等工作的向量指令 (vector instructions)
  • 45 个可编程 GPIO,支持常用外设接口如 SPI、I2S、I2C、PWM、RMT、ADC、UART、SD/* MMC 主机控制器和 TWAITM 控制器等
  • 基于 AES-XTS 算法的 Flash 加密和基于 RSA 算法的安全启动,数字签名和 HMAC 模块,“世界* 控制器 (World Controller)”模块
    图片3

四、ESP32-S3系列使用IDF框架开发流程介绍

4.0 开发环境的安装

mkdir -p ~/esp
cd ~/esp
git clone https://github.com/espressif/esp-idf.git
cd esp-idf
git fetch
git checkout 2bdea81b2a
git submodule update --init --recursive
./install.sh
cd esp-idf
. ./export.sh

4.1. get esp-box project:

git clone --recursive https://github.com/espressif/esp-box.git

4.2. switch to branch tag 0.3.0 -> esp-idf release/0.4.0

git checkout  a45ee1e
git submodule update --init --recursive

4.3. build the project

cd examples/factory_demo
idf.py set-target esp32s3
idf.py build

4.4. flash the elf :

idf.py -p /dev/cu.usbmodem14101 flash

4.5. Monitor ESP LOG:

export IDF_PATH=/Users/haibi/esp/esp-idf
python /Users/haibi/esp/esp-idf/tools/idf_monitor.py
 -p /dev/cu.usbmodem14101 -b 115200 --toolchain-prefix xtensa-esp32s3-elf- --target esp32s3 /Users/haibi/CPP_Projects/esp-box-lite/build/esp-b
ox-lite.elf

五、项目主要功能及代码段说明

5.0 BSP硬件设备组件驱动:

BSP硬件设备组件驱动使用ESP-BOX项目,使用同级项目目录下的ESP-BOX项目,在项目目录CMakeLists.txt文件中添加 set(EXTRA_COMPONENT_DIRS ../esp-box/components) 即可,同时,main目录下的CMakeLists.txt文件中也要添加小乐文本解析模型文件部分:

5.1 终端联网功能:

终端联网需要初始化网络模块联网,这部分主要参考esp-idf项目 示例 ./examples/wifi/getting_started/station/main/station_example_main.c 实现 static void _wifi_event_handler(void *arg, esp_event_base_t event_base, int32_t event_id, void *event_data)void wifi_init_station(void)函数,注意初始化网络之前要对nvs_flash进行初始化。

5.2 天气信息获取功能:

这一部分http 功能主要参考esp-idf/examples/protocols/esp_http_client/main/esp_http_client_example.c的联网功能,实现esp_err_t _http_event_handler(esp_http_client_event_t *evt)static void http_rest_with_url(void)函数,具体代码修改如下图所示:

由于https请求有TLS安全认证,这里通过.skip_cert_common_name_check = true跳过安全检查,但是这里设置后,仍然会报错,参考https://www.esp32.com/viewtopic.php?t=19200讨论方法,对menuconfig进行配置后方可有效:


即添加配置:

CONFIG_ESP_TLS_INSECURE=y
CONFIG_ESP_TLS_SKIP_SERVER_CERT_VERIFY=y

修改配置后,调试信息如下图所示,可以访问心知天气获取到天气数据:

5.3 天气信息分析功能:

天气信息分析功能通过cJSON库对心知天气返回的json数据进行分析,最后得到城市天气温度等信息:

5.4 按键功能:

按键功能通过注册按键回调函数来实现相关功能,相关注册函数过程如下图所示:

5.5 遇到的问题和总结:

https联网功能获取网络数据时,总是TLS失败,开始没有头绪解决,后来沉下心来找各个讨论和论坛找到解决办法,以后,遇到问题要多多查找资源深入研究,深入其原理进行分析,这个问题其实还可以通过添加证书解决,但是暂时没有实验成功,后续进一步实验测试。

六、功能展示及说明

6.1初始界面显示:

初始界面没有城市,天气,温度等信息,如下图所示:

6.2取得天气信息后界面显示:

按第一个按键得到城市,天气,温度等信息并进行显示,如下图所示:

七、对本活动的心得体会

通过对本项目的学习,我对esp32模块物联网ESP-IDF开发框架有了初步了解,以后学习和工作用到该框架可以更快捷地上手完成相关工作,在此非常感谢硬禾学堂和得捷电子举办的该类活动,不但能丰富相关知识锻炼了我的动手能力和编程能力,对嵌入式开发有了新的体会,受益匪浅。未来期望再次参加活动,了解并学习更多的知识,掌握更多的技能。

附件下载
Box-Lite.zip
代码
团队介绍
个人
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号