2026-6-12 14:43:29 [显示全部楼层]
20浏览
查看: 20|回复: 0

[K10项目分享] [行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器

[复制链接]
本帖最后由 loria 于 2026-6-12 16:39 编辑

行空板K10结合ESP-Claw 项目前言:

1.行空板K10适配ESP CLAW —从被动响应到主动智能(出处: DF创客社区 - 分享创造的喜悦)

2.[行空板 K10 + ESP-Claw]:打造主动响应的多模态本地AI桌面助手(出处: DF创客社区 - 分享创造的喜悦)


1.项目简介

通过前面的教程,我们已经学会了如何在 UNIHIKER K10(以及其他 ESP32 系列开发板)上部署 ESP-Claw,并打造一个能够感知环境、理解需求、主动执行任务的 AI Agent。无论是读取传感器数据、控制外设,还是根据环境变化自动做出响应,ESP-Claw 都让这些开发板从简单的硬件平台升级为能够与现实世界交互的智能伙伴。

随着接入的硬件越来越多,你可能会发现一个问题:为什么有些传感器接上后就能直接使用,而有些传感器即使接线完全正确,ESP-Claw 却不知道该如何操作?事实上,ESP-Claw 之所以能够理解并控制这些硬件,是因为它提前掌握了对应模块的 Skill(技能)。Skill 就像 AI Agent 学习硬件知识的教材,它告诉 ESP-Claw:这个传感器应该如何初始化、如何读取或控制硬件,以及如何将这些能力以自然语言的方式提供给 Agent 使用。只有拥有了对应的 Skill,ESP-Claw 才真正“学会”了使用这个硬件。


本文将以 UNIHIKER K10(ESP32-S3)为例进行说明,分享如何借助 espclaw-skill-writer 工具,为任意 DFRobot 传感器快速创建属于自己的 Skill。文中介绍的 Skill 开发流程,同样适用于其他支持 ESP-Claw 的 ESP32 系列开发板。通过本教程,你将不再局限于使用 ESP-Claw 已经支持的传感器模块,而是能够让自己的 ESP-Claw Agent 学会使用更多硬件设备,打造更加个性化、更具扩展能力的 AI Agent。

值得一提的是,如果你已经在电脑上部署了 OpenClaw、Hermes 等 AI Agent,也可以将 espclaw-skill-writer 安装为 Agent 的工具(Skill),通过自然语言自动完成驱动分析、Skill 生成与 Lua 文件补全等工作,将ESP-Claw传感器SKill开发流程进一步简化为一次与 AI 的协作对话。

[行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器图29

2.认识传感器 Skill

如果说 ESP-Claw 是我们的 AI 助手,那么 Skill 就是它的“学习资料”——教会 AI 如何使用某项能力。传感器Skill 可以理解为一份专门针对某个传感器的学习资料。通过学习这份资料,ESP-Claw 就能够认识这个传感器、了解它能做什么,以及知道如何与它进行通信。

例如,当 ESP-Claw 学习了 STCC4 二氧化碳(CO₂)传感器 Skill 后,它就学会了如何读取空气中的 CO₂ 浓度、温度和湿度数据。此时,我们就可以基于 UNIHIKER K10 开发各种与空气质量监测相关的项目,例如:实时显示和监测室内外空气质量、打造一个自动空气净化系统等。可以说当有了对应的传感器Skill,ESP-Claw就能“学会”如何通过ESP32系列主控使用这个硬件。

[行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器图1

那么,一个传感器 Skill 究竟包含哪些内容?当我们开发一个新的传感器Skill 时,要完成哪些工作?带着这些问题,我们先来看看一个完整的传感器 Skill 长什么样。
以ESP- Claw官方的Skills Lab中的 STCC4 二氧化碳传感器 Skill 为例,我们可以看到一个典型传感器 Skill 的结构:

[行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器图2
  1. dfrobot_stcc4_i2c
  2. ├── SKILL.md
  3. └── scripts
  4.     └── read_sensor_data.lua
复制代码
SKILL.md :告诉AI这个传感器是什么。可以理解为给 ESP-Claw 阅读的说明书。这里会告诉 AI:这个传感器是什么;它能提供哪些能力;在什么场景下应该使用;应该如何调用对应功能。

[行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器图3

Lua 脚本:教AI如何驱动这个传感器。仅仅让 AI 知道传感器是什么还不够。AI 还需要真正读取传感器数据。这部分工作由 Lua 脚本完成。ESP-Claw 通过 Lua 模脚本来调用传感器的库函数完成传感器的初始化、读取数据等操作

[行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器图4

3.如何编写传感器 Skill

了解了传感器 Skill 的结构之后,相信你已经明白:只有当 ESP-Claw 拥有了对应传感器的 Skill,它才能真正使用某个传感器。那么问题来了,如果你手上的传感器目前还没有对应的 Skill,该怎么办?

答案很简单:自己为它创建一个 Skill。

听起来像是一件复杂的事情,但实际上,你并不需要从零开始编写所有文件。为了帮助开发者快速接入新的 DFRobot 传感器,DFRobot 官方提供了一个自动化工具:espclaw-skill-writer。它可以自动分析 DFRobot GitHub 上的传感器驱动库,并生成符合 ESP-Claw 规范的 Skill 框架,帮我们完成大部分重复性的工作,包括:搜索传感器对应的官方驱动仓库;下载驱动代码;分析传感器接口;自动生成 SKILL.md;自动生成 Lua 脚本模板。

换句话说,它帮我们完成了 Skill 开发中最繁琐、最容易重复出错的部分,让我们能够把精力集中在真正与传感器相关的逻辑上。

整个开发流程可以简单理解为:
  1. 找到官方驱动
  2.         ↓
  3. 生成 Skill 脚手架
  4.         ↓
  5. 补充传感器lua文件专属逻辑
  6.         ↓
  7. 部署到 ESP-Claw版行空板K10 测试
复制代码
接下来,在本篇文章中,我们将从环境准备开始,使用 espclaw-skill-writer 工具,一步一步完成属于自己的第一个传感器 Skill 开发,并最终部署到 ESP-Claw 版行空板 K10 上进行验证。

提示:如果你的电脑已经部署了 OpenClaw、Hermes 等支持工具调用的 AI Agent,那么你甚至不需要手动执行后面的 Python 命令。你可以直接跳转阅读本文的「4. 为 AI Agent 安装 espclaw-skill-writer Skill」,通过自然语言让 AI Agent 自动完成驱动分析、Skill 生成和 Lua 文件补全等工作。

3.1环境准备
打开espclaw-skill-writer仓库地址:YeezB/espclaw-skill-writer,点击下载。

[行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器图5

下载完成,点击解压,解压后如下图所示。

[行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器图6

3.2 生成你的第一个 传感器Skill

接下来,我们将使用 espclaw-skill-writer,一步一步完成属于自己的第一个传感器 Skill。
为了演示完整流程,本文以 DFRobot 甲醛传感器 为例。完成本章后,你将获得一个可运行的甲醛传感器 Skill,并成功部署到 ESP-Claw 版 UNIHIKER K10 中,让 AI Agent 能够直接使用连接在行空板K10上的甲醛传感器,读取甲醛浓度数据检测环境。

整个过程只需要四个步骤:

  1. 搜索传感器对应驱动库
  2.     ↓
  3. 生成 Skill文件
  4.     ↓
  5. 手动完善Lua文件
  6.     ↓
  7. 部署到 Esp-Claw版行空板K10 测试
复制代码
  • 步骤一:搜索传感器对应的驱动仓库

在生成 Skill 之前,我们首先需要找到对应传感器的 DFRobot 官方驱动库。传感器驱动库包含了 DFRobot 官方编写的传感器驱动代码,主要用于告诉单片机如何与 SFA40 通信。对于大多数 DFRobot 传感器,官方都会在 GitHub 上提供开源驱动代码。
以 Gravity: SFA40 甲醛传感器(HCHO) 为例进行演示。当我们在DFRobot商城中打开产品 Wiki 页面时,通常可以在页面底部找到对应的 GitHub 驱动仓库链接。
例如 SFA40 对应的官方驱动仓库为:DFRobot_SFA40 GitHub 仓库 。这里'sfa40'就是甲醛传感器的关键词.以 SFA40 为例,官方驱动库已经实现了传感器检测、启动测量、读取甲醛浓度、温度和湿度等核心功能。而 espclaw-skill-writer 正是通过分析这些驱动文件,自动生成适用于 ESP-Claw 的 Skill 框架。

找到刚刚解压的 espclaw-skill-writer 文件夹,在文件夹空白处输入 cmd 并按下 Enter,即可快速打开当前目录对应的命令行窗口。
[行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器图7

打开 CMD 后,输入以下命令:
  1. python .\scripts\create_espclaw_skill.py --sensor "sfa40" --list-only
复制代码
整条命令的含义就是:在 DFRobot GitHub 中搜索与 SFA40 相关的驱动仓库,并列出结果供我们确认。
执行后,espclaw-skill-writer 会自动到 DFRobot 的 GitHub 仓库中搜索与 SFA40 相关的驱动库,并返回匹配结果。如下图,就代表已经检索到了甲醛传感器对应的驱动库。
[行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器图8

如果是其他传感器怎么办?只需要把 sfa40 替换成对应传感器的关键词即可。一般情况下,关键词就是 DFRobot GitHub 驱动仓库名称中的核心部分。
例如:搜索 BMM350 磁力计:
  1. python .\scripts\create_espclaw_skill.py --sensor "bmm350" --list-only
复制代码
搜索 SSD1306 OLED 显示屏:
  1. python .\scripts\create_espclaw_skill.py --sensor "ssd1306" --list-only
复制代码
  • 步骤二:生成传感器对应的Skill

确认搜索结果中已经找到目标驱动仓库后,就可以开始生成 Skill 了。
以 SFA40 甲醛传感器为例,执行以下命令:
  1. python .\scripts\create_espclaw_skill.py --sensor "sfa40" --repo "DFRobot/DFRobot_SFA40"
复制代码
其中 ‘ --sensor "sfa40" ’表示当前要生成的是 SFA40 甲醛传感器对应的 Skill。
‘--repo "DFRobot/DFRobot_SFA40"’表示使用 DFRobot 官方提供的 SFA40 驱动仓库作为分析对象。
执行后,espclaw-skill-writer 会自动完成以下工作:
  1. 下载驱动仓库
  2.         ↓
  3. 分析传感器驱动代码
  4.         ↓
  5. 提取接口信息
  6.         ↓
  7. 生成 Skill 目录结构
  8.         ↓
  9. 生成 SKILL.md
  10.         ↓
  11. 生成 Lua 脚本模板
复制代码
如果运行成功,你会看到类似如下输出:

[行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器图9

同时,在当前目录下会生成如下文件。发现生成的文件夹存在就代表着一个符合 ESP-Claw 规范的甲醛传感器 Skill 已经创建完成。


[行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器图10
  1. components
  2. └── common
  3.     └── skill_builder
  4.         └── skills
  5.             └── dfrobot_sfa40_i2c
  6.                 ├── SKILL.md
  7.                 └── scripts
  8.                     └── read_sensor_data.lua
复制代码
  • 步骤三 手动完善Lua文件
运行 espclaw-skill-writer 后,已经生成了甲醛传感器对应的 Skill 目录和 Lua 文件,但此时的文件仍然只是一个Skill 脚手架。所谓「脚手架」,可以理解为开发 Skill 的基础框架:它已经帮我们搭建好了 Skill 的目录结构、生成了 SKILL.md 和 read_sensor_data.lua 文件,并完成了 I2C 初始化、参数解析和错误处理等通用代码。仍然需要我们作为开发者去手动填写传感器通讯地址和参数输出形式。如SFA40 的默认 I2C 地址是多少?如何读取甲醛(HCHO)数据?最终应该以什么格式将结果返回给 AI Agent?这些需要我们手动在Lua文件去补全。
打开刚刚生成的dfrobot_sfa40_i2c:

  1. scripts/read_sensor_data.lua
复制代码
可以看到文件顶部默认配置如下:
  1. local DEFAULT_I2C_PORT = 0
  2. local DEFAULT_SDA = 47
  3. local DEFAULT_SCL = 48
  4. local DEFAULT_I2C_FREQ_HZ = 400000
  5. local DEFAULT_ADDR = 0x00
复制代码
其中最需要优先检查的是:传感器地址

  1. local DEFAULT_ADDR = 0x00
复制代码
这里的 0x00 只是工具自动生成的占位地址,并不代表真实的传感器地址。
因此开发任何传感器 Skill 时,第一步都应该去查看官方驱动库,确认传感器实际使用的通信地址。
以 SFA40 为例,在 SFA40的DFRobot 官方驱动库头文件中可以找到:


[行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器图11

  1. #define SFA40_I2C_ADDR 0x5D
复制代码
因此需要将 Lua 文件修改为:

[行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器图12
  1. local DEFAULT_I2C_PORT = 0
  2. local DEFAULT_SDA = 47
  3. local DEFAULT_SCL = 48
  4. local DEFAULT_I2C_FREQ_HZ = 400000
  5. local DEFAULT_ADDR = 0x5D
复制代码
修改完成后,ESP-Claw 才能正确找到连接在行空板 K10 上的 SFA40 传感器。
继续向下查看,会看到如下代码。这段代码只完成了:初始化甲醛传感器I2C 总线、连接传感器设备、 输出调试信息;但是还没有完成: 初始化 SFA40地址 、启动测量读取甲醛浓度、读取温度、读取湿度因此即使上传到 ESP-Claw,也无法真正获取传感器数据。
  1. local function run()
  2.   local i2c_port = parse_int_arg("i2c_port", DEFAULT_I2C_PORT, 0, 1)
  3.   local sda = parse_int_arg("sda", DEFAULT_SDA, 0, 63)
  4.   local scl = parse_int_arg("scl", DEFAULT_SCL, 0, 63)
  5.   local i2c_freq_hz = parse_int_arg("i2c_freq_hz", DEFAULT_I2C_FREQ_HZ, 10000, 1000000)
  6.   local addr = parse_int_arg("addr", DEFAULT_ADDR, 0x08, 0x77)
  7.   local bus = nil
  8.   local dev = nil
  9.   local ok, err = xpcall(function()
  10.     bus = i2c.new(i2c_port, sda, scl, i2c_freq_hz)
  11.     dev = bus:device(addr)
  12.     print(string.format(
  13.       "[dfrobot_sfa40_i2c] scaffold ready sensor=sfa40 addr=0x%02X",
  14.       addr
  15.     ))
  16.     print("[dfrobot_sfa40_i2c] TODO: implement register/protocol reads")
  17.   end, debug.traceback)
  18.   cleanup(dev, bus)
  19. end
复制代码
  • 步骤三:补全Lua文件

接下来就需要根据官方驱动中的实现逻辑,补充真正的传感器读取代码。
如果你熟悉 C++、I2C 和传感器开发,可以直接阅读传感器官方仓库中的h文件和cpp文件找到传感器驱动代码,自行完成 Lua 移植。


[行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器图13
  1. DFRobot_SFA40.cpp
  2. DFRobot_SFA40.h
复制代码
这里,更推荐借助 ChatGPT、Claude 或 Cursor等AI工具 来完成这一步。
将以下文件上传给 AI工具如chatgpt:
  1. DFRobot_SFA40.cpp
  2. DFRobot_SFA40.h
  3. read_sensor_data.lua
复制代码
然后使用下面的提示词:
  1. 这是 DFRobot SFA40 甲醛传感器的官方驱动库。
  2. 请分析驱动实现,并生成适用于 ESP-Claw Skill 的 Lua 文件。
  3. 要求:
  4. 1. 使用 ESP-Claw 的 i2c 模块通讯
  5. 2. 兼容 UNIHIKER K10
  6. 3. 默认地址使用 0x5D
  7. 4. 保留以下参数:
  8. - i2c_port
  9. - sda
  10. - scl
  11. - addr
  12. 5. 完成:
  13. - 初始化传感器
  14. - 启动测量
  15. - 读取 HCHO 数据
  16. - 读取温度
  17. - 读取湿度
  18. 6. 输出 JSON 格式:
  19. {
  20.   "hcho": xxx,
  21.   "temperature": xxx,
  22.   "humidity": xxx
  23. }
  24. 7. 保留错误处理逻辑
  25. 8. 输出完整 read_sensor_data.lua 文件
复制代码
将原来以下提示代码替换成AI给出的代码。找到下面的代码所在位置。
  1. print("[dfrobot_sfa40_i2c] TODO: implement register/protocol reads")
复制代码
替换为 AI 生成的 SFA40 初始化与数据读取代码。
最终结构应类似如下
  1. ------------------------------------------------------------
  2. -- Main
  3. ------------------------------------------------------------
  4. local function run()
  5.   local i2c_port =
  6.     parse_int_arg(
  7.       "i2c_port",
  8.       DEFAULT_I2C_PORT,
  9.       0,
  10.       1
  11.     )
  12.   local sda =
  13.     parse_int_arg(
  14.       "sda",
  15.       DEFAULT_SDA,
  16.       0,
  17.       63
  18.     )
  19.   local scl =
  20.     parse_int_arg(
  21.       "scl",
  22.       DEFAULT_SCL,
  23.       0,
  24.       63
  25.     )
  26.   local i2c_freq_hz =
  27.     parse_int_arg(
  28.       "i2c_freq_hz",
  29.       DEFAULT_I2C_FREQ_HZ,
  30.       10000,
  31.       1000000
  32.     )
  33.   local addr =
  34.     parse_int_arg(
  35.       "addr",
  36.       DEFAULT_ADDR,
  37.       0x08,
  38.       0x77
  39.     )
  40.   local bus = nil
  41.   local dev = nil
  42.   local ok, err = xpcall(function()
  43.     --------------------------------------------------------
  44.     -- Init I2C
  45.     --------------------------------------------------------
  46.     bus = i2c.new(
  47.       i2c_port,
  48.       sda,
  49.       scl,
  50.       i2c_freq_hz
  51.     )
  52.     dev = bus:device(addr)
  53.     if not dev then
  54.       error(
  55.         string.format(
  56.           "SFA40 not found at 0x%02X",
  57.           addr
  58.         )
  59.       )
  60.     end
  61.     --------------------------------------------------------
  62.     -- Start Measurement
  63.     --------------------------------------------------------
  64.     write_command(dev, CMD_START)
  65.     if sys and sys.wait then
  66.       sys.wait(100)
  67.     end
  68.     --------------------------------------------------------
  69.     -- Read Data
  70.     --------------------------------------------------------
  71.     local b = read_measurement(dev)
  72.     --------------------------------------------------------
  73.     -- Status
  74.     --------------------------------------------------------
  75.     local status = b[11]
  76.     if status ~= 0 then
  77.       if (status & 0x01) ~= 0 then
  78.         error("sensor not ready")
  79.       end
  80.       if (status & 0x02) ~= 0 then
  81.         error("sensor out of specification")
  82.       end
  83.       error(
  84.         string.format(
  85.           "sensor status=0x%02X",
  86.           status
  87.         )
  88.       )
  89.     end
  90.     --------------------------------------------------------
  91.     -- CRC Verify
  92.     --------------------------------------------------------
  93.     if calc_crc(b[1], b[2]) ~= b[3] then
  94.       error("HCHO CRC failed")
  95.     end
  96.     if calc_crc(b[4], b[5]) ~= b[6] then
  97.       error("Humidity CRC failed")
  98.     end
  99.     if calc_crc(b[7], b[8]) ~= b[9] then
  100.       error("Temperature CRC failed")
  101.     end
  102.     --------------------------------------------------------
  103.     -- Parse HCHO
  104.     --------------------------------------------------------
  105.     local raw_hcho =
  106.       b[1] * 256 +
  107.       b[2]
  108.     local hcho =
  109.       raw_hcho / 10.0
  110.     --------------------------------------------------------
  111.     -- Parse Humidity
  112.     --------------------------------------------------------
  113.     local raw_humidity =
  114.       b[4] * 256 +
  115.       b[5]
  116.     local humidity =
  117.       125.0 *
  118.       (raw_humidity / 65535.0) -
  119.       6.0
  120.     if humidity < 0 then
  121.       humidity = 0
  122.     end
  123.     if humidity > 100 then
  124.       humidity = 100
  125.     end
  126.     --------------------------------------------------------
  127.     -- Parse Temperature
  128.     --------------------------------------------------------
  129.     local raw_temperature =
  130.       b[7] * 256 +
  131.       b[8]
  132.     local temperature =
  133.       175.0 *
  134.       (raw_temperature / 65535.0) -
  135.       45.0
  136.     --------------------------------------------------------
  137.     -- JSON Output
  138.     --------------------------------------------------------
  139.     print(
  140.       string.format(
  141.         '{"hcho":%.1f,"temperature":%.2f,"humidity":%.2f}',
  142.         hcho,
  143.         temperature,
  144.         humidity
  145.       )
  146.     )
  147.     --------------------------------------------------------
  148.     -- Stop Measurement
  149.     --------------------------------------------------------
  150.     write_command(dev, CMD_STOP)
  151.   end, debug.traceback)
  152.   cleanup(dev, bus)
  153.   if not ok then
  154.     print(
  155.       string.format(
  156.         '{"error":"%s"}',
  157.         tostring(err):gsub('"', "'")
  158.       )
  159.     )
  160.     error(err)
  161.   end
  162. end
  163. run()
复制代码
当完成这一步后,我们就拥有了一个具备真实传感器能力的 Skill。接下来只需要将 Skill 上传到 ESP-Claw 版行空板 K10 中进行测试即可。这样即使未来接入新的气体传感器、环境传感器、磁力计或显示模块,也可以沿用同样的开发流程。

  • 步骤四:部署到 Esp-Claw版行空板K10 测试

完成 Skill 文件的生成与修改后,最后一步就是将它部署到 ESP-Claw 版行空板 K10 中,验证是否能够真正读取 SFA40 传感器的数据。
首先,将电脑连接到ESP-Claw版行空板 K10 显示的 Wi-Fi 热点。
连接成功后,浏览器会自动访问ESP-Claw管理后台,网址为:http://192.168.4.1/
[行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器图14
在左侧菜单栏中,点击'Files',进入文件管理页面。
[行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器图15
随后点击skills,进入 Skill 存储目录。
[行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器图16
默认情况下,Skill 目录处于受保护状态,需要开启开发者模式才能进行编辑。点击右上角‘DevMode’。开启开发者模式。开启后即可对 Skill 文件夹进行创建、上传和修改。
[行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器图17
根据我们生成的 Skill 名称,新建一个文件夹:dfrobot_sfa40_i2c。创建完成后,可以进入该目录。
[行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器图18
将前面修改完善后的SKILL.md,上传:skills/dfrobot_sfa40_i2c/ 。
[行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器图19

目录中。点击‘Upload’,选择本地的 SKILL.md 文件。上传完成后,目录结构变为:
  1. skills
  2. └── dfrobot_sfa40_i2c
  3.     └── SKILL.md
复制代码
[行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器图20

接下来,在 dfrobot_sfa40_i2c 目录下新建文件夹:scripts。用于存放 Lua 脚本。

[行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器图21

将/skills/sfa40/scripts/read_sensor_data.lua上传scripts

[行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器图22

上传完成后,最终目录结构应当如下。如果目录结构与下面一致,说明 Skill 已经成功部署到 ESP-Claw 中。

  1. skills
  2. └── dfrobot_sfa40_i2c
  3.     ├── SKILL.md
  4.     └── scripts
  5.         └── read_sensor_data.lua
复制代码
返回 ESP-Claw 聊天页面。
此时,ESP-Claw 已经拥有了使用 SFA40 传感器的能力。
你可以尝试输入:
  1. 读取当前接在行空板K10的甲醛传感器的数值
复制代码

或者以下命令:
  1. 为我监测室内空气质量
复制代码
如果你的 Skill 描述编写正确,Lua 脚本运行正常,并且 SFA40 已正确连接到行空板 K10,ESP-Claw 就会自动调用刚刚部署的 Skill,读取传感器数据并返回结果。
[行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器图23
至此,你已经成功完成了一个完整的 ESP-Claw 传感器 Skill 开发流程:
  1. 找到官方驱动
  2.         ↓
  3. 生成 Skill 脚手架
  4.         ↓
  5. 完善 Lua 与 SKILL 文件
  6.         ↓
  7. 部署到行空板 K10
  8.         ↓
  9. 通过自然语言调用传感器
复制代码
恭喜你,如果你完成到了这一步,现在,你不仅学会了如何为 SFA40 编写 Skill,也掌握了 ESP-Claw 接入新硬件的通用方法。未来无论是空气质量传感器、磁力计、环境传感器,还是 OLED 显示屏、GPS 等模块,都可以按照同样的流程快速扩展,让你的 ESP-Claw 版行空板 K10 学会使用任意 DFRobot 传感器。

4.为AI Agent安装espclaw-skill-writer Skill

前面的教程中,我们通过命令行一步一步完成了 Skill 的生成流程。如果你已经在电脑上部署了自己的 AI Agent,例如 OpenClaw、Hermes 等,那么其实还有一种更轻松的方式。
你不需要记住 Python 命令,也不需要手动搜索仓库。只需要把 espclaw-skill-writer 的 GitHub 仓库地址交给 AI Agent,它就可以通过自然语言帮助你完成整个流程。
例如,你可以直接对 AI Agent 说:
请帮我安装并使用这个工具:gitee.com/yeezb/espclaw-skill-writer,为 DFRobot 的 SFA40 甲醛传感器生成一个适用于 ESP-Claw 的 Skill。这是SFA40的官方仓库地址:https://github.com/DFRobot/DFRobot_SFA40

[行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器图24
AI Agent 会自动理解你的需求,并完成原本需要手动执行的多个步骤,包括:
  1. 安装 espclaw-skill-writer
  2.         ↓
  3. 分析 DFRobot 官方驱动仓库
  4.         ↓
  5. 生成 SKILL.md
  6.         ↓
  7. 生成 Lua 脚手架
  8.         ↓
  9. 补全传感器初始化逻辑
  10.         ↓
  11. 补全数据读取流程
  12.         ↓
  13. 输出完整 Skill 文件
复制代码
AI Agent 可以直接生成甲醛传感器所需的 Skill 文件,包括:SKILL.md、read_sensor_data.lua文件;参数定义与调用说明\基于官方驱动补全的通信逻辑。
这意味着,你无需理解所有底层驱动代码,也无需手动编写 Lua 文件,只需要通过自然语言描述需求,就能快速获得一个可用于 ESP-Claw 的传感器 Skill。
[行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器图25
可以看到AI Agent一键自动生成甲醛传感器的SKill文件。
[行空板K10+ESP-Claw]让你的AI Agent学会使用DFRobot任意传感器图26
当然,AI 生成的结果仍然建议进行简单验证,例如检查:默认 I2C 地址是否正确;初始化流程是否与官方驱动一致;返回的数据格式是否符合预期;确认无误后,你只需要按照前文介绍的方法,将 AI 生成的 SKILL.md 和 read_sensor_data.lua 上传到 ESP-Claw 后台对应的 Skill 目录中,即可完成部署和测试。
可以看到,通过这种方式,原本需要搜索仓库、编写脚本、阅读驱动代码的过程,被简化成了一次与 AI Agent 的自然语言对话。通过espclaw-skill-writer-master工具, AI 不只是调用硬件,更能够参与硬件能力的学习与扩展。
当你为自己的本地AI Aget安装此技能之后,可以通过一句话快速生成对应的 Skill,让你的 ESP-Claw 版行空板 K10 持续学会新的能力。

5.附件
附件一:教程中开发完成的可以直接使用的甲醛传感器skill文件。
下载附件dfrobot_sfa40_i2c.zip

附件二:使用的Esp-CLaw传感器开发Skill文件——espclaw-skill-writer-master
下载附件espclaw-skill-writer-master.zip



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2026 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail