前言: 市面上的智能家居大都依赖云端:断网就变智障,说话还可能有隐私泄露风险。 作为一名全栈开发者,我决定不信邪——用树莓派 5 (8GB) + NPU 加速模块 + 本地大模型,手搓一个完全离线、毫秒级响应的“钢铁侠”同款中控系统。
由于硬件还在路上,不过我已经完成了“数字孪生”架构的仿真验证。本文将分享如何用 FastAPI + Ollama + Vue3 构建这套系统的软件灵魂。
🛠️为什么要做边缘计算 AIoT?
在 AI 大火的今天,调用 OpenAI 的 API 写个聊天机器人不难。难的是把大模型塞进算力受限的边缘设备,并让它控制物理世界。
我的目标架构如下:
- 大脑 (Brain) :运行在树莓派上的轻量级 LLM (Qwen/DeepSeek),负责理解自然语言。
- 视觉 (Vision) :利用 Hailo NPU 运行 YOLOv8,负责“看”见环境。
- 躯干 (Body) :FastAPI 后端 + GPIO 接口,控制灯光、风扇等硬件。
- 交互 (Face) :Vue3 编写的实时 Web 控制台。
🧠模型选型:如何在 8GB 内存里“螺蛳壳里做道场”?
树莓派 5 只有 8GB 内存,这不仅要跑系统,还要跑大模型和 NPU 驱动。经过多轮测试,我制定了**“双阶段”模型策略**:
阶段一:逻辑验证(PC 仿真)
- 模型:
DeepSeek-R1-8B - 理由:利用 R1 强大的思维链 (CoT) 能力,验证系统提示词(System Prompt)的健壮性。实测发现,R1 在提取复杂 JSON 指令时准确率极高。
阶段二:落地部署(树莓派实机)
- 模型:
Qwen2.5-1.5B (Int4 量化) - 理由:为了追求 <200ms 的语音交互延迟。
- 性能预测:理论上1.5B 模型在树莓派 CPU 上推理速度可达 15+ Tokens/s,且内存占用仅约 2GB,为 NPU 视觉模块留出了宝贵的生存空间。
核心架构实现
1. 后端设计:FastAPI + 异步架构
为了保证硬件控制不阻塞 AI 推理,我选用了 Python 的 FastAPI 框架。
核心代码逻辑:自然语言 -> LLM 清洗 -> JSON 指令 -> 硬件执行。
# main.py 核心逻辑片段
from fastapi import FastAPI
import ollama
import json
# 注入灵魂的 System Prompt
SYSTEM_PROMPT = """
你是一个智能家居控制中枢。你的唯一任务是将用户的自然语言转化为 JSON 控制指令。
不要输出任何闲聊内容,只输出 JSON。
可用设备:light (灯), fan (风扇), ac (空调)
输出格式示例:{"device": "light", "action": "on"}
"""
@app.post("/api/control")
async def control_home(request: ChatRequest):
# 1. 调用本地 Ollama 接口
response = ollama.chat(model='qwen2.5:1.5b', messages=[
{'role': 'system', 'content': SYSTEM_PROMPT},
{'role': 'user', 'content': request.command},
])
# 2. 提取并清洗 JSON
ai_raw = response['message']['content']
clean_json = ai_raw.replace("```json", "").replace("```", "").strip()
action = json.loads(clean_json)
# 3. (Todo) 驱动 GPIO
# gpio.output(pin, HIGH) ...
return {"status": "success", "action": action}`
2. 前端设计:赛博朋克风格仪表盘
使用 Vue 3 编写了一个单文件组件,通过 REST API 与后端通信。
仿真效果展示: 还没连上硬件,但我已经构建了完整的 Web 控制台。
当前端发送“把风扇打开”时,右侧仪表盘实时同步状态,延迟极低。
.API 联调验证
利用 FastAPI 自带的 Swagger 文档进行压力测试,验证 DeepSeek/Qwen 对指令提取的稳定性。
成功将自然语言“把灯打开”转化为结构化 JSON 数据。
🚀 下一步计划:肉体注入
软件架构已经闭环,万事俱备,只欠东风。
我的 树莓派 5 (8GB) + AI Kit (NPU 模块) + USB 音频模块 正在快递路上。
下篇预告:
- NPU 视觉加速:手把手教你在树莓派上部署 YOLOv8,帧率从 2fps 暴涨到 60fps。
- 物理连接:GPIO 点灯实战,让代码真正控制物理世界。
- 完全体演示:语音控制 + 视觉识别的最终效果视频。
如果你对 边缘计算、嵌入式 AI、树莓派 感兴趣,欢迎关注我,见证这个项目的落地全过程! GitHub 仓库:Pi-AIoT-Central)
喜欢在这个项目的话,请给个 Star ⭐️ 支持一下!