当前位置: 首页 > news >正文

齐护机器人小智AI_MCP图形化编程控制Arduino_ESP32

齐护机器人小智AI_MCP图形化编程控制Arduino_ESP32

齐护AiTall

在项目实践里,我们常常期望达成这样一种场景:借助智能体(例如小智 AI)来远程操控其他开发板上的设备,这类似于智能家居系统中智能音箱与各类家电的互动模式。以往,实现这样的功能可能面临诸多技术难题与复杂操作。

而现在,齐护机器人的 MCP 图形化编程为我们提供了便捷高效的解决方案。通过这一工具,我们能够轻松实现智能体对远方设备的控制。无论你的 AI 智能体部署在何处,只要它接入网络,就能突破空间限制,随心所欲地控制远在千里之外的 ESP32 设备,让远程设备操控变得简单又可靠。

齐护AiTall mini AI智能体积木模块 小智AI

一、 MCP协议简介

MCP(Model Context Protocol)是新一代推荐用于物联网控制的协议,通过标准 JSON-RPC 2.0 格式在后台与设备间发现和调用"工具"(Tool),实现灵活的设备控制。

二、齐护MCP_Arduino编程库图形块功能说明

适用的芯片:本编程库齐护团队测试适用于:齐护全系列ESP32开发板、ESP32S及ESP32S3 两种模块芯片,其它未知或没有测试的请用户自行调试应用!

适用的软件:编程库可以在【齐护教育版本Mixly 1.2.Q55】的所有Arduino_ESP32主板或在Mixly2-3 Arduino_ESP32导入云端库【齐护AiTall小智AI对话库】使用。

注:使用库前请一定要了解MCP的工程原理,控制过程,及软硬件要求,保持耐心,细心,不着急的学习态度!

2-1【初始接入点】

连接AiTall_MCP接入点(需要先连接WIFI),在连接或断开时会执行连接断开内的程序。

功能块应该置于初始化中,且在WIFI连接成功之后执行。
在这里插入图片描述

MCP接入点地址获取:

登录https://xiaozhi.me/,进入【控制台】–【配置角色】,在右下角找到MCP接入点复制,并粘贴到编程块地址中

在这里插入图片描述

2-2 【服务器连接状态】

用于在初始接入点块内判断服务器是否连接上,只能在【初始接入点】内使用。

在这里插入图片描述

2-3 【AiTall MCP 运行】

AiTall MCP 更新数据,必须放在程序循环LOOP内执行

在这里插入图片描述

2-4 【注册设备】

AiTall MCP 注册设备 (要控制的设备),设备类型及控制参数不限制,可以定义成任意你能定义出并能用文字描述出来的设备。

【名称】:以英文命名,必须要有意义并与后面的【描述】对应,如:living_room

【描述】:对设备的简短描述,可中英文,要有意义,AI会自动判断识别,如:客厅的灯。

【属性】:定义设备的控制属性,放后面的【属性描述块】,对设备的属性进行定义。

【固定返回属性】:智能控制必须返回项。

【接收数据处理】:处理收到的指令信息,并执行相应的控制。

【回应】:将设备执行的状态反馈给AiTall。

在这里插入图片描述

2-5 【属性描述】

用于描述设备的属性

① 属性描述

名称:用于标识属性能力,要有意义,表明属性的用途,比如灯的开关状态应该命名为state或power,风扇的风速应该命名为speed.

类型:有字符串,整数和布尔,用于定义AiTall返回数据类型。

其它属性:使用②对属性进行补充说明 ,主要为整数限制最大最小值,和字符串的枚举。

枚举点齿轮可以添加多个项。

注:如上编程的专业词或写法请自行查找相关知识点!
在这里插入图片描述

软件使用技巧:

当拼接程序时可以对着图形块点鼠标【右键】切换图形块的显示方式为外部输入或显示为一行:
在这里插入图片描述

在这里插入图片描述

2-6 【固定返回属性】

定义固定返回属性,可用可不用,用于描述AiTall每次控制必须返回的属性名,点齿轮可以添加多个标签。

在这里插入图片描述

2-7 【数据处理】

用于处理从AiTall传回的数据,先判断数据中是否包含属性名的数据,然后再解析数据为对应格式。

在这里插入图片描述

2-8 【回应数据】

回应数据,传回AiTall本地执行完成的数据,如命令控制风扇的速度为50,而你实际只执行了30可将这个数据告知AiTall。通常用于传感器的数据回传。

在这里插入图片描述

三、注册设备示例

注:每次上传程序(新注册设备)后,要重启/复位一下AiTall,否则可能识别不到新注册的设备,而无法控制!

3-1 设备注册参数使用说明

在连接到服务器时,向服务器声明自身身份、功能,以便AI服务器能识别并管理该设备。

在注册时要提供设备的设备标识和功能声明。
在这里插入图片描述

① 设备名称

含义: 工具的唯一标识符(用英文表达功能与设备实际相同的含义)
作用: 服务器通过这个ID来识别和调用对应的工具
要求: 应该是字符串类型,在同一MCP实例中必须唯一
示例: “led_blink” 表示这是一个控制LED闪烁的工具
② 描述

含义: 工具的文字描述,让AI理解的一句话或设备的特有说明,让AI能理解你的设备是什么功能。
作用: 提供工具功能的可读说明,可能用于服务器端生成API文档或管理界面
要求: 人类可读的字符串,无特殊格式要求
示例: 简单说明了这是一个控制板载LED的工具
③ 属性描述

名称:属性的标识,名称要有意义,与他实际的用处要一致,如灯的属性状态(state),推荐使用英文。

类型:表示属性内容的数据类型

其它属性:添加对属性的描述,如限制数值大小(整数类型)和枚举(通常为字符串类型,限定返回枚举中的数据)。

可定义多个的属性

④ 固定返回属性

设定每次控制设备必定返回的属性

⑤ 返回数据

返回数据的是你定义的属性名称,判断数据内是否包含该标签数据后解析

⑥ 回应数据

可以回复实际执行的状态,如收到了开灯指令,而实际由于某种原因无法打开灯,就可以回复state:false(图中所示程序为例),告诉AiTall实际的灯并没有打开,或回应成功为否。

3-2 检查设备是否有正常连接MCP小智服务

当上传程序后,复位设备,并确认连网正常后,可以在小智后台的【配置角色】中,MCP查看接入点状态,在这里可以看到正常连接的注册设备。

在这里插入图片描述

四、MCP控制设备程序示例

4-1 控制LED灯

完整程序
在这里插入图片描述

① 串口初始化

② 连接WIFI

③ 等待WIFI连接成功

④ 打印IP地址

⑤ 连接AiTall MCP

⑥ 当MCP连接成功后才开始注册设备

⑦ 名称 设备的名称,推荐用英文。描述使用中文,决定了你用何种语音指令控制,注意不要与AiTall本身带的设备名称相同。

⑧ 对于设备属性的描述

名称:定义属性的名称,回传的数据就会以这个名称命名(命名一定要有意义)。

LED只需要一个状态,开“on”或关“off”,这里都以字符串类型传回。在枚举中你也可以增加别的状态,比如blink等。

⑨ 固定返回属性,为要求AiTall每次必须返回属性,可以选择多个。

⑩ 判断AiTall返回的数据是否包含属性名称的数据。

⑪ 声明全局变量用于保存状态字符串。

⑫ 解析字符串内容,并赋值给变量。

⑬ 判断收到的内容是否是对应枚举,并执行相关动作。

⑭ 将状态回传给AiTall告诉它控制成功,也可以只返回成功。

⑮ AiTall MCP 更新数据,必须放在LOOP内执行

4-2 RGB灯带控制

完整程序
在这里插入图片描述

① 串口初始化

② 连接WIFI

③ 等待WIFI连接成功

④ 打印IP地址

⑤ 连接AiTall MCP

⑥ 当MCP连接成功后才开始注册设备

⑦ 名称 设备的名称,推荐用英文。描述使用中文,决定了你用何种语音指令控制,注意不要与AiTall本身带的设备名称相同。

⑧ 对于设备属性的描述

名称:定义属性的名称,回传的数据就会以这个名称命名(命名一定要有意义)。

这里定义的彩灯属性有开始和结束序列号,可以这样控制说“把客厅灯带1~10号的颜色调成红色”。

⑨ 固定返回属性,为要求AiTall每次必须返回属性,这里选择返回所有的属性。

⑩ 解析数据

⑪ 将状态回传给AiTall告诉它控制成功,也可以只返回成功。

⑫ AiTall MCP 更新数据,必须放在LOOP内执行

4-3 风扇控制

完整程序
在这里插入图片描述

① 串口初始化

② 连接WIFI

③ 等待WIFI连接成功

④ 打印IP地址

⑤ 连接AiTall MCP

⑥ 当MCP连接成功后才开始注册设备

⑦ 名称 设备的名称,推荐用英文。描述使用中文,决定了你用何种语音指令控制,注意不要与AiTall本身带的设备名称相同。

⑧ 对于设备属性的描述

名称:定义属性的名称,回传的数据就会以这个名称命名(命名一定要有意义)。

定义的风扇的开关、风速和摇头属性,对应不同的数据类型。

⑨ 风扇可以不固定其返回值,收到什么属性执行什么命令。

⑩ 判断AiTall返回的数据是否包含属性名称的数据。

⑪ 解析数据内容,并赋值给变量。

⑫ 返回成功给AiTall告诉它控制成功。

⑬ AiTall MCP 更新数据,必须放在LOOP内执行。

4-4 控制空调

完整程序
在这里插入图片描述

① 串口初始化

② 连接WIFI

③ 等待WIFI连接成功

④ 打印IP地址

⑤ 连接AiTall MCP

⑥ 当MCP连接成功后才开始注册设备

⑦ 名称 设备的名称,推荐用英文。描述使用中文,决定了你用何种语音指令控制,注意不要与AiTall本身带的设备名称相同。

⑧ 对于设备属性的描述

名称:定义属性的名称,回传的数据就会以这个名称命名(命名一定要有意义)。

空调属性:

电源:布尔类型,开或关

温度:数值类型,限制范围16~30

模式:字符串类型,制冷,制热、除湿、送风

风速:字符串类型,高、中、低

定义空调的电源、温度、模式、风速属性,对应不同的数据类型。

⑨ 空调可以不固定其返回值,收到什么属性执行什么命令。

⑩ 判断AiTall返回的数据是否包含属性名称的数据。

⑪ 解析数据内容,并赋值给变量。

⑫ 返回成功给AiTall告诉它控制成功。

⑬ AiTall MCP 更新数据,必须放在LOOP内执行。

4-5 灯的亮度调节

完整程序
在这里插入图片描述

① 串口初始化

② 连接WIFI

③ 等待WIFI连接成功

④ 打印IP地址

⑤ 连接AiTall MCP

⑥ 当MCP连接成功后才开始注册设备

⑦ 名称 设备的名称,推荐用英文。描述使用中文,决定了你用何种语音指令控制,注意不要与AiTall本身带的设备名称相同。

⑧ 对于设备属性的描述

名称:定义属性的名称,回传的数据就会以这个名称命名(命名一定要有意义)。

定义灯返回的属性为亮度。

⑨ 必须返回亮度值

⑩ 判断AiTall返回的数据是否包含属性名称的数据。

⑪ 解析数据内容,并赋值给变量。

⑫ 返回成功给AiTall告诉它控制成功。

⑬ AiTall MCP 更新数据,必须放在LOOP内执行。

4-6 查询温湿度传感器

完整程序
在这里插入图片描述

① 串口初始化

② 连接WIFI

③ 等待WIFI连接成功

④ 打印IP地址

⑤ 连接AiTall MCP

⑥ 当MCP连接成功后才开始注册设备

⑦ 名称 设备的名称,推荐用英文。描述使用中文,决定了你用何种语音指令控制,注意不要与AiTall本身带的设备名称相同。

⑧ 对于设备属性的描述

名称:定义属性的名称,回传的数据就会以这个名称命名(命名一定要有意义)。

定义属性名为查询(query),查询的值为枚举中的一个,温度、湿度和所有。

⑨ 必须要返回查询这个属性

⑩ 判断AiTall返回的数据是否包含属性名称的数据。

⑪ 判断查询的内容,将对应的内容通过回应数据返回给AiTall。

⑫ 如果前面的任何一项都没有则返回读取失败。

⑬ AiTall MCP 更新数据,必须放在LOOP内执行。

4-7 多设备注册应用

多设备与单设备应用是一样的,只是把多个注册设备编程块拼在一起就好,但一定要注册变量(参数)的处理,不要重复,特别是设备名称及功能的定义不要太相似,要有明显的区分,否则AI将无法识别或错误混乱。

下面我们以一个设备同时注册LED和RGB灯带为例学习其用法:
在这里插入图片描述

4-8 查看播报设备的消息

可以把设备上运行的变量值或提示字符串,组成新的消息内容放到一个参数中,让AiTall去查询播报,比如当一些条件达到时可以存放不同的消息在上面,给予一些动作或当前情况的提示。

在这里插入图片描述

五、教程例程源文件下载

注:源文件采用的是【齐护教育版Mixly 1.2.Q55】制作的,请打开文件前确使用此软件并版本在55或以上!

【齐护AiTall小智AI_MCP_Arduino应用例程Mixly】

http://www.dtcms.com/a/318900.html

相关文章:

  • 亚远景-ISO 42001:汽车AI安全的行业标准新趋势
  • 网站 博客遭遇DDoS,CC攻击应该怎样应对?
  • crew AI笔记[2] - 如何选型
  • MCU-TC397的UCB初识
  • 初识 MQ:从同步到异步,聊聊消息队列那些事
  • OpenCv对图片视频的简单操作
  • 深度学习(2):自动微分
  • 学深度学习,有什么好的建议或推荐的书籍?
  • MobileNetV3: 高效移动端深度学习的前沿实现
  • 从“炼金术”到“工程学”:深度学习十年范式变迁与未来十年路线图
  • 深度学习之opencv篇
  • HashMap寻址算法
  • QT项目 -仿QQ音乐的音乐播放器(第五节)
  • 《算法导论》第 10 章 - 基本数据结构
  • 深入剖析Java线程:从基础到实战(上)
  • ubuntu cloud init 20.04LTS升级到22.04LTS
  • vue3接收SSE流数据进行实时渲染日志
  • Web开发模式 前端渲染 后端渲染 身份认证
  • 第三章:【springboot】框架介绍MyBatis
  • Spring AOP动态代理核心原理深度解析 - 图解+实战揭秘Java代理设计模式
  • 前端百分比展示导致后端 BigDecimal 转换异常的排查与解决
  • 多账号管理方案:解析一款免Root的App分身工具
  • 【RabbitMQ面试精讲 Day 13】HAProxy与负载均衡配置
  • HTTP 协议升级(HTTP Upgrade)机制
  • winform中的listbox实现拖拽功能
  • 基于ubuntu搭建gitlab
  • KDE Connect
  • 一篇文章入门TCP与UDP(保姆级别)
  • 02电气设计-安全继电器电路设计(让电路等级达到P4的安全等级)
  • C语言strncmp函数详解:安全比较字符串的实用工具