在编译和运行本项目之前,请确保您的开发环境满足以下要求

1. 硬件要求

  • 主控:任何能够运行C代码并驱动显示屏的微控制器或开发板(如 ESP32、STM32、Raspberry Pi 等)。本项目基于 GEC6818 开发板
  • 显示屏:带触摸功能的 LCD 显示屏,并已正确配置 LVGL 驱动
  • 网络模块:具备网络连接能力(Wi-Fi 或以太网),用于连接 MQTT 服务器
  • 可选传感器/执行器:LED 灯、蜂鸣器、温湿度传感器、继电器模块等,用于与物理世界交互

2. 嵌入式端软件要求

在开发主机(如 Linux PC)上安装以下软件:

  • Git:用于克隆仓库和子模块。

  • CMake (>= 3.16):用于构建项目。

  • GCC 或交叉编译工具链:C 编译器。

    • 在 Linux PC 上模拟运行:gcc
    • 嵌入式目标编译:arm-none-eabi-gcc 等交叉编译器
  • Make(或其他构建工具):执行 CMake 生成的构建指令

  • SDL2(可选):在 PC 上模拟嵌入式程序运行时需要

1
2
3
# Debian/Ubuntu 安装示例
sudo apt-get update
sudo apt-get install build-essential git cmake libsdl2-dev

配置好环境后,即可编译并运行

3. Web端软件要求

  • Node.js (LTS版本):JavaScript 运行环境
  • npm 或 yarn:包管理器

4. MQTT服务器

本项目通过 MQTT 协议进行设备间的通信,因此您需要一个正在运行的 MQTT 服务器。您可以根据需求选择以下任意一种方式进行部署

步骤 1:选择并部署 MQTT 服务器

您可以选择使用公共云服务,也可以在本地或服务器上自行部署

选项 A:使用公共云服务 (推荐新手)

对于快速开发和测试,可以直接使用成熟的云服务,无需自己维护服务器

选项 B:本地自行部署 (推荐局域网开发)

在本地(如PC、虚拟机或树莓派)部署 MQTT 服务器,适合在局域网内进行开发和调试。这里我们推荐使用 Mosquitto,它轻量、开源且稳定

  • 推荐软件Mosquitto
  • 备选软件EMQX。请注意,EMQX 从版本 5 开始其开源协议有所变更,部分高级功能可能需要商业许可。

下面以在 Ubuntu/Debian 系统上安装并配置 Mosquitto 为例:

  1. 安装 Mosquitto

    1
    2
    sudo apt-get update
    sudo apt-get install -y mosquitto mosquitto-clients
  2. 配置密码验证 (推荐)
    为了安全,我们启用密码验证。创建或编辑配置文件 /etc/mosquitto/conf.d/local.conf

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # MQTT 默认端口
    listener 1883
    protocol mqtt

    # WebSocket 端口 (如果需要)
    listener 8083
    protocol websockets

    # 禁止匿名访问
    allow_anonymous false
    # 指定密码文件路径
    password_file /etc/mosquitto/passwd
  3. 创建用户和密码
    使用 mosquitto_passwd 工具创建一个用户(例如 test)。-c 参数表示创建新文件,仅在首次添加用户时使用。

    1
    2
    3
    4
    5
    # 首次创建密码文件时使用 -c
    sudo mosquitto_passwd -c /etc/mosquitto/passwd test

    # 之后再添加新用户,请不要带 -c 参数
    # sudo mosquitto_passwd /etc/mosquitto/passwd new_user

    执行后,根据提示输入两次密码(例如 123456)。

  4. 修改权限并重启服务

    1
    2
    3
    4
    5
    6
    # 确保密码文件归 mosquitto 用户所有
    sudo chown mosquitto:mosquitto /etc/mosquitto/passwd
    sudo chmod 640 /etc/mosquitto/passwd

    # 重启 Mosquitto 服务使配置生效
    sudo systemctl restart mosquitto

步骤 2:在项目中配置 MQTT 连接信息

无论您选择哪种方式部署服务器,都需要将服务器的地址、端口和凭据信息配置到项目中。

编辑 obj/Include/config.h 文件,修改以下宏定义:

1
2
3
4
5
#define MQTT_BROKER_HOST "192.168.1.100"  // MQTT 服务器的 IP 地址或域名
#define MQTT_BROKER_PORT 1883 // 端口,默认为 1883
#define MQTT_KEEPALIVE 60 // 心跳超时时间
#define MQTT_USERNAME "test" // 用户名 (如果服务器需要)
#define MQTT_PASSWORD "123456" // 密码 (如果服务器需要)

提示:如果您的服务器部署在运行代码的同一台机器上,地址可以是 "127.0.0.1"。如果是局域网内的另一台设备,请填写其局域网IP地址。

步骤 3:测试服务器连通性

在运行主项目前,您可以使用命令行工具 mosquitto_submosquitto_pub 来验证服务器是否正常工作。

  1. 打开一个终端,订阅主题
    该命令会监听多个主题,等待消息。

    1
    2
    mosquitto_sub -h 127.0.0.1 -p 1883 -u test -P 123456 \
    -t "smart_home/#" -q 1 -v
    • -h: 主机地址
    • -p: 端口
    • -u, -P: 用户名和密码
    • -t "smart_home/#": 订阅 smart_home/下的所有主题
    • -v: 打印主题和消息内容
  2. 打开另一个终端,发布消息
    smart_home/light 主题发送一条消息。

    1
    2
    mosquitto_pub -h 127.0.0.1 -p 1883 -u test -P 123456 \
    -t "smart_home/light" -m "turn on"

如果在第一个终端(订阅端)能看到成功打印出 smart_home/light turn on,说明您的 MQTT 服务器已配置成功并正常工作:

在WSL测试成功

5. 天气API

这个项目使用了心知天气API ,可以点击进入官网注册,免费使用

注册并申请了免费版产品后,获得自己的私钥,配置到项目的obj\Include\config.h里面:

1
2
#define WEATHER_CITY "guangzhou"      // 城市名
#define WEATHER_API_KEY "xxxxxxxxx" // 自己的私钥

6. AI API

这个项目使用的DeepseekAPI,需要付费使用,但已经是所有平台当中最便宜的了

DeepseekAPI申请地址:https://platform.deepseek.com/api_keys

实测演示一次效果花费不超过两分钱,往里面充一块钱就可以使用

消费记录

获取到APIkey后,将APIkey配置到项目的obj\Include\config.h里面:

1
#define OPENAI_API_KEY "sk-xxxxxxxxx"

如果需要用其它平台的ai,可以:

  • obj\AI\src\chat.c文件的第43行左右调整api接口地址
  • obj\screen\screen_ai_chat.c文件的第126行左右调整模型类型