齊護機器人小智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.pswp.cn/bicheng/92549.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92549.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92549.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CPO-SVM分類預測+特征貢獻SHAP分析,通過特征貢獻分析增強模型透明度,Matlab代碼實現,引入SHAP方法打破黑箱限制,提供全局及局部雙重解釋視角

代碼功能 該Matlab代碼實現了一個基于CPO-SVM冠豪豬算法優化支持向量機的數據分類模型,結合了SHAP可解釋性分析,CPO選擇最佳的SVM參數c和g。 SVM模型有兩個非常重要的參數C與gamma。其中 C是懲罰系數,即對誤差的寬容度。c越高,說明…

Failed to restart docker.service: Unit docker.service is masked.

docker.service 被標記為 "masked" 意味著 systemd 已阻止該服務被啟動或運行。這通常發生在 Docker Desktop 安裝過程中,因為它使用自己的服務管理機制。以下是解決方法: 解決方案: 解除服務的 mask 狀態: bash sudo systemctl unmask docker.service sudo sys…

2025 藍橋杯C/C++國B 部分題解

P12836 [藍橋杯 2025 國 B] 翻倍 題目描述 給定 nnn 個正整數 A1,A2,…,AnA_1, A_2, \ldots, A_nA1?,A2?,…,An?,每次操作可以選擇任意一個數翻倍。 請輸出讓序列單調不下降,也就是每個數都不小于上一個數,最少需要操作多少次?…

os標準庫

os標準庫os包提供了操作系統函數,但和操作系統無關。 os包的接口規定為在所有操作系統中都是一致的。 設計為Unix風格的。1. 權限說明 os標準庫有大量的文件操作,在創建文件等操作中,需要指的perm。 在go語言中perm是一個uint32類型 在go語言…

QtC++ 中使用 qtwebsocket 開源庫實現基于websocket的本地服務開發詳解

前言 當前實時通信功能越來越受到重視,無論是在線聊天、實時數據監控還是多人協作工具,都離不開高效、穩定的實時通信技術。WebSocket 作為一種全雙工通信協議,為實時通信提供了良好的解決方案。而在 QtC 開發環境中,qtwebsocket …

小程序實時保存優化

背景。避免數據存儲后丟失。要求實時保存。問題:保存時出現卡斷,輸入的內容會被抹除。問題原因。輸入頻繁速度塊,會影響cpu處理速度。解決方案。用戶停止輸入500ms后開始保存,否則不保存。這里是保存方法:當500ms以內有…

國產化Excel處理組件Spire.XLS教程:使用 C# 將 DataTable 導出為 Excel 文件

在 C# 中將 DataTable 導出為 Excel 文件,是 .NET 開發中常見的任務,廣泛應用于報表生成、日志導出、系統間數據共享等場景。通過使用獨立的組件庫,開發者可以輕松將 DataTable 數據寫入 Excel 文件,并應用格式設置,生…

C語言學習筆記——編譯和鏈接

目錄1 C程序的執行流程2 翻譯環境2.1 預編譯2.2 編譯2.2.1 詞法分析2.2.2 語法分析2.2.3 語法分析2.3 匯編2.4 鏈接1 C程序的執行流程 用戶編寫好的C程序不能直接被計算機識別并執行,在執行前,要先將源文件和頭文件進行編譯,生成目標文件&am…

Flink-1.19.0源碼詳解9-ExecutionGraph生成-后篇

《Flink-1.19.0源碼詳解8-ExecutionGraph生成-前篇》前篇已從Flink集群端調度開始解析ExecutionGraph生成的源碼,解析了ExecutionGraph的ExecutionJobVertex節點、ExecutionVertex節點、IntermediateResult數據集、IntermediateResultPartition數據集分區與封裝Task…

19、閾值分割+blob分析

目錄 一、仿射變換 1.變換矩陣 2.在矩陣的基礎上添加各種變換形式 3.開始變換 4.計算變換矩陣參數 新算子 二、閾值分割 新算子 三、blob分析案例 1.焊點 2.石頭 3.木材 4.車牌 5.骰子 新算子 一、仿射變換 1.變換矩陣 // 產生仿射變換矩陣hom_mat2d_identity…

破解 Django N+1 查詢困境:使用 select_related 與 prefetch_related 實踐指南

破解 Django N+1 查詢困境:使用 select_related 與 prefetch_related 實踐指南 開篇引入 數據庫查詢性能常常是 Web 應用性能瓶頸中的重中之重。Django ORM 以簡潔直觀的 API 層將 Python 代碼與數據庫打通,卻也可能因默認的惰性加載帶來 N+1 查詢問題,造成不必要的網絡往…

深入解析K-means聚類:從原理到調優實戰

一、聚類分析與K-means的核心價值在無監督學習領域,聚類分析是探索數據內在結構的核心技術。?K-means算法因其簡潔高效成為最廣泛使用的聚類方法,在客戶分群、圖像壓縮、生物信息學等領域應用廣泛。其核心目標是將數據集劃分為K個簇,實現“簇…

數據結構基礎:哈希表、排序和查找算法

目錄 一、哈希表 1.哈希算法 2.哈希碰撞 3.哈希表 4.哈希表相關操作 哈希表插入 哈希表遍歷 元素查找 哈希表銷毀 二、排序算法 1. 排序算法對比 2. 排序算法實現 冒泡排序 選擇排序 插入排序 希爾排序 快速排序 三、查找算法 1. 查找算法對比 2. 查找算法實…

Linux內核參數調優:為K8s節點優化網絡性能

在高并發微服務環境中,網絡性能往往成為K8s集群的瓶頸。本文將深入探討如何通過精細化的Linux內核參數調優,讓你的K8s節點網絡性能提升30%以上。引言:為什么網絡調優如此重要?作為一名在生產環境中維護過數千節點K8s集群的運維工程…

全家桶” 戰略如何重塑智能服務標準?無憂秘書 AI + 智腦 + 數字人協同模式的底層架構解析

在數字化浪潮的推動下,企業對智能化服務的需求日益增長。然而,單一的技術或產品往往難以滿足復雜場景下的多樣化需求。近年來,“全家桶”戰略成為科技行業的一大趨勢,通過整合多維度技術與服務,為企業提供全方位的支持…

前端后端之爭?JavaScript和Java的特性與應用場景解析

一、名字相似,本質迥異 1.1 歷史淵源與命名背景 在編程世界中,很少有兩種語言像JavaScript和Java這樣,僅僅因為名字的相似性就引發了無數初學者的困惑。然而,這種相似性純屬巧合——或者說是一種營銷策略的產物。 JavaScript誕…

【文獻分享】Machine learning models提供數據和代碼

數據輸入及前期信息:ChronoGauge 需要一個基因表達矩陣,其中包括來自多個時間進程 RNA-測序實驗的觀測數據,用于訓練,并且需要有關每個基因在連續光照(LL)條件下經過光暗(LD)周期調整…

PHP MySQL Delete 操作詳解

PHP MySQL Delete 操作詳解 引言 在Web開發中,數據庫是存儲和管理數據的重要工具。PHP作為一種流行的服務器端腳本語言,與MySQL數據庫結合使用可以高效地處理數據。本文將詳細介紹PHP中如何使用DELETE語句刪除MySQL數據庫中的數據。 什么是DELETE語句&am…

計組-大/小端存放區別

在計算機系統中,大端存放(Big-Endian)和小端存放(Little-Endian)是兩種不同的多字節數據存儲方式,主要區別在于字節在內存中的排列順序。理解它們對底層編程(如網絡通信、二進制文件處理、硬件交…

線程同步相關知識

文章目錄一、線程同步的核心目標二、線程安全的判定條件三、同步方式一:synchronized 關鍵字1. 同步代碼塊2. 同步方法四、鎖的釋放與不釋放場景1. 自動釋放鎖的場景2. 不會釋放鎖的場景五、同步方式二:ReentrantLock(顯式鎖)1. 核…