基于esp32-s3-lite的联网获取粉丝数
通过wifi联网,使用了https协议获取json字符串 使用tts播报粉丝数
标签
嵌入式系统
Funpack活动
ESP32-S3-BOX-LITE
悠悠兹有
更新2023-08-02
481

一.项目介绍

    本任务是由电子森林组织的funpack第二季第五期,使用的模块是esp32-s3-box-lite,小模块很漂亮,制作的很精美,可以称为很好的工艺品了。

    本次要实现的功能为联网获取粉丝数,并播报。本模块具有3个按键,2.4寸的屏幕,可玩性比较高。

    模块到手官方建议首先更新模块的固件,更新的说明资料地址:esp-box/docs/firmware_update_cn.md at master · espressif/esp-box (github.com)

        下载更新固件工具,选项如下图所示

FoaSTYXCeQFqlHF8X65hSye1-BFT

FuEvRFh3Bq3CQJVwMaalx7irsi1-

    烧写完成后,按reset按键,可以试用最新固件的效果。

二.  设计思路

    本项目设计硬件基于esp32-s3-box-lite。首先测试了官方的demo代码,初步掌握板载的IO硬件以及各个外设的功能与实际效果。根据硬件的具体功能,设计本任务功能,代码借鉴了大佬KafCoppelia,向大佬学习,希望自己也能像大佬一样厉害。

     功能设计分三个部分,第一个是tts语音播报,第二个是联网获取粉丝数,第三个部分注册三个按键的回调,实现按键播报功能。

三.  硬件介绍

     下图是硬件结构体,配备一块 2.4 寸 LCD 显示屏、双麦克风、一个扬声器、两个用于硬件拓展的 Pmod™ 兼容接口、三个独立按键,一个boot按键,一个reset按键。lcd显示效果细腻,mcu频率足够高,可以流畅的刷新画面。

FjoJTUKEQ6esVvK6urKFIToZlwJq

    板卡集成了 2.4 GHz Wi-Fi 和 Bluetooth 5 (LE) 的 MCU 芯片,支持远距离模式 (Long Range)。ESP32-S3 搭载 Xtensa® 32 位 LX7 双核处理器,主频高达 240 MHz,内置 512 KB SRAM (TCM),具有 45 个可编程 GPIO 管脚和丰富的通信接口。

四.  功能介绍

      1 开机页面窗口显示:吆嚯信息小框,中间显示show fans,如下图所示

FlSA1dPWAFdGjVQdtBWCY95pswl_

2 上电模块会连接wifi,账号密码是固定写在代码中的,效果如下

Fkq8cL9Y4BQJnJQzbDSifnqHHpX2

可以看出正常获取到了IP地址,此时可以通过http协议获取粉丝数的数据了。

3 按左键获取粉丝数,效果如下图所示。

FnpTxi-WFR-YMeEaWh7DMb5QxjSp

中间和右按键播报了自定义语音,没有实际功能。

五.  主要代码

配置文件,配置wifi的账号密码,和获取粉丝账号的id

#ifndef _CONFIG_H_
#define _CONFIG_H_

#define BILIBILI_VMID "318568697"
#define WIFI_SSID "zsywifi_F264"
#define WIFI_PASSWORD "12312345678"

#endif /* _CONFIG_H_ */

main主函数显示各个模块的初始化,并实现wifi联网。

    /* Initialize TTS */
    ESP_ERROR_CHECK(tts_init());

    /* Connect to WIFI */
    wifi_init_sta();

    /* Initialize LCD & LVGL */
    ESP_ERROR_CHECK(lv_port_init());
    bsp_lcd_set_backlight(true);

完成初始化后,启动三个工作线程,完成本任务的主要功能

    xTaskCreate(&tts_welcome_task, "tts_welcome_task", 4 * 1024, NULL, 5, NULL);
    xTaskCreate(&https_request_task, "https_request_task", 8 * 1024, NULL, 5, NULL);
    xTaskCreate(&lvgl_display_init_task, "lvgl_display_init_task", 4 * 1024, NULL, 6, NULL);

显示模块,具有两个字符显示句柄,并设置了两种句柄,其中项目使用的汉字字体通过网站()转换得到一个c文件,放到box项目的lvgl文件夹中的font目录中。

    lv_obj_set_style_bg_color(lv_scr_act(), lv_color_hex(0xc7edcc), LV_PART_MAIN);

    Hzlabel = lv_label_create(lv_scr_act());
    lv_obj_set_style_text_font(Hzlabel,&SiYuanHeiTi,LV_PART_MAIN);
    lv_label_set_text(Hzlabel, "吆嚯  信息小框");
    lv_obj_set_style_text_color(Hzlabel, lv_palette_main(LV_PALETTE_TEAL), LV_PART_MAIN);
    lv_obj_align(Hzlabel, LV_ALIGN_TOP_LEFT, 10, 10);


    /* Create a white label, set its text and align it to the center */
    label = lv_label_create(lv_scr_act());
    lv_obj_set_style_text_font(label, &lv_font_montserrat_24, LV_PART_MAIN); // Font size 24
    lv_label_set_text(label, "Show Fans: 0");
    lv_obj_set_style_text_color(lv_scr_act(), lv_palette_main(LV_PALETTE_ORANGE), LV_PART_MAIN);
    lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
    vTaskDelete(NULL);

此处是三个按键注册回调

   bsp_btn_register_callback(BOARD_BTN_ID_PREV, BUTTON_PRESS_DOWN, tts_report_cb, NULL);
    bsp_btn_register_callback(BOARD_BTN_ID_ENTER, BUTTON_PRESS_DOWN, tts_welcome_report_cb, NULL);
    bsp_btn_register_callback(BOARD_BTN_ID_NEXT, BUTTON_PRESS_DOWN, tts_lalal_report_cb, NULL);

整个程序的流程图如下:

Fk2Beri2B_vyftIr4Ydw2OLHjybW

 

六.  活动总结与未来计划

    通过对本项目的辛苦学习,对esp32模块一无所知的我有了大概的了解,能够较熟悉esp32的编程架构,一直对esp32的无线能力感兴趣,这次让我初步了解了esp32板卡,受益匪浅。未来期望再次参加活动,像更多大佬学习新技能,学习更多板卡的环境搭建,开拓自己的视野,让自己能够在大佬的道路上前进几步,非常感谢电子森林。在下载程序的过程中,遇到个问题,通过linux虚拟机向串口下载程序,会失败,通过window物理机,则能成功,在群里问过各个大佬,没有解决方案,后续会继续调查一下是否是官方的下载实现方案缺少一些兼容性。

 

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