AT 命令采用標(biāo)準(zhǔn)串口進(jìn)行數(shù)據(jù)收發(fā),將以前復(fù)雜的設(shè)備通訊方式轉(zhuǎn)換成簡單的串口編程,大大簡化了產(chǎn)品的硬件設(shè)計和軟件開發(fā)成本,這使得幾乎所有的網(wǎng)絡(luò)模組如GPRS、3G/4G 、NB-IoT、藍(lán)牙、WiFi 、GPS 等模組都采用AT命令。
隨著物聯(lián)網(wǎng)時代的發(fā)展,AT 命令被廣泛的用于單片機(jī)(MCU)+ 網(wǎng)絡(luò)模塊 這樣的物聯(lián)網(wǎng)開發(fā)模式,但是對于不同設(shè)備的 AT 命令,其數(shù)據(jù)的收發(fā)和解析方式都大不相同,這直接提高開發(fā)的復(fù)雜度,也不利于代碼的維護(hù)和重用。
為了解決不同網(wǎng)絡(luò)模塊 AT 命令之間的差異導(dǎo)致的重復(fù)開發(fā)的問題,RT-Thread 發(fā)布了 AT 組件用于 AT 設(shè)備開發(fā)。

RT-Thread AT 組件解決方案
RT-Thread AT 組件介紹
我們的 AT 組件,是基于 RT-Thread 系統(tǒng)的 AT 客戶端和服務(wù)器的實現(xiàn)。

RT-Thread AT 組件介紹
1.AT 命令客戶端
主要應(yīng)用 MCU + AT 模塊的場景,MCU 內(nèi)部為 AT 命令客戶端。其主要功能特點(diǎn)如下:
-
URC 數(shù)據(jù)處理: 完備的 URC 數(shù)據(jù)的處理方式;
-
數(shù)據(jù)解析: 支持自定義響應(yīng)數(shù)據(jù)的解析方式,方便獲取響應(yīng)數(shù)據(jù)中相關(guān)信息;
-
調(diào)試模式: 提供命令行交互模式,主要用于設(shè)備調(diào)試;
-
AT Socket:提供標(biāo)準(zhǔn)的網(wǎng)絡(luò)編程接口;
URC: 全稱是非請求結(jié)果碼(Unsolicited Result Code),特指 AT 服務(wù)器主動發(fā)送給 AT 客戶端的數(shù)據(jù)。一般在特殊情況才會發(fā)送,具有一定的隨機(jī)性。
2.AT命令服務(wù)器
常應(yīng)用于 AT 模塊內(nèi)部,使 AT 模塊可以內(nèi)置一些 AT 命令。其主要功能特點(diǎn)如下:
-
基礎(chǔ)命令: 實現(xiàn)多種通用基礎(chǔ)命令;
-
命令兼容: 命令支持忽略大小寫,提高命令兼容性;
-
命令檢測: 命令支持自定義參數(shù)表達(dá)式,并實現(xiàn)對接收的命令參數(shù)自檢測功能;
-
命令注冊: 提供簡單的用戶自定義命令添加方式;
-
調(diào)試模式: 提供命令行交互模式,主要用于設(shè)備調(diào)試。
-
低資源占用: 4.0K ROM 和 2.5K RAM。
AT 組件的創(chuàng)新
RT-Thread 的 AT 組件不僅僅有全面、完善的功能,還在用戶使用、調(diào)試測試等細(xì)節(jié)方面做了充分的考慮。保證了資源占用低的同時,也能讓用戶用起來非常順手。下面這些都是我們做出來的創(chuàng)新:
1.靈活的響應(yīng)數(shù)據(jù)解析方式
響應(yīng)數(shù)據(jù)的解析作為 AT 模塊開發(fā)的另一大難題,不同設(shè)備的命令、同一設(shè)備的不同命令的響應(yīng)數(shù)據(jù)解析方式都可能大不相同,這大大增加開發(fā)者從響應(yīng)數(shù)據(jù)中獲取有效數(shù)據(jù)的難度。
RT-Thread 對于響應(yīng)數(shù)據(jù)的解析方式,提供了多種解析接口。比如:可以通過行號解析,也可以通過關(guān)鍵字查找解析。解析的方式還使用了標(biāo)準(zhǔn) scanf 的表達(dá)式,它支持 正則表達(dá)式。使開發(fā)者在保存原始響應(yīng)數(shù)據(jù)的同時,輕松的解析出想要的重要數(shù)據(jù)。
2.完備的URC 數(shù)據(jù)的處理機(jī)制
URC 數(shù)據(jù)為服務(wù)器主動下發(fā)的數(shù)據(jù),一般在特殊情況才會發(fā)送,比如:開機(jī)日志,網(wǎng)絡(luò)連接提示等。對于這些特殊情況,開發(fā)者往往都非常頭疼。
因為 URC 數(shù)據(jù)一般沒有固定格式,并且可能隨機(jī)發(fā)送,處理不好很容易影響到整個數(shù)據(jù)的交互流程。所以對于 URC 的處理需要一個非常完善的機(jī)制。
目前, AT 組件已具備強(qiáng)大的 URC 處理框架,確保每個 URC 數(shù)據(jù)都能得到合理的處理,并且支持對每一個 URC 數(shù)據(jù)執(zhí)行自定義的操作。
3.簡化 AT 命令的收發(fā)流程
對于傳統(tǒng)的 AT 模塊開發(fā)流程,一個 AT 命令收發(fā)的整個流程可能需要多個步驟的處理,包括命令發(fā)送、發(fā)送結(jié)果判斷、接收響應(yīng)數(shù)據(jù)、響應(yīng)結(jié)果判斷等多個步驟。且不同命令的處理方式不同,導(dǎo)致代碼很難被重用。
AT 組件中命令收發(fā),只需要通過 一個函數(shù) 實現(xiàn),且該函數(shù)返回響應(yīng)結(jié)果并處理了響應(yīng)數(shù)據(jù),方便后續(xù)使用。極大的簡化了交互流程。
4.提供標(biāo)準(zhǔn)的網(wǎng)絡(luò)編程接口
在使用 AT 模塊后,一般的單片機(jī)可以通過 AT 命令,完成設(shè)備的網(wǎng)絡(luò)連接、數(shù)據(jù)透傳等功能。但是很難復(fù)用之前已開發(fā)過的,基于標(biāo)準(zhǔn) BSD Socket API 的代碼,例如: MQTT、HTTP、Web Socket 等。即使在一個模塊上實現(xiàn)了上網(wǎng)功能,但是最終又很難復(fù)用到其他的產(chǎn)品上。
RT-Thread 的 AT 組件在 AT 客戶端的基礎(chǔ)上實現(xiàn)了 AT Socket 功能,該功能是 SAL (Socket 抽象層)的一種實現(xiàn)。為上層提供標(biāo)準(zhǔn)的 BSD Socket 網(wǎng)絡(luò)編程接口。在使用 AT 模塊的產(chǎn)品上,極大的簡化了網(wǎng)絡(luò)開發(fā)代碼并增強(qiáng)了軟件可重用性。
RT-Thread 已對接常用的 AT 模塊
當(dāng)前RT-Thread 已提供針對于移遠(yuǎn)的 M26 GPRS 模塊、樂鑫的 ESP8266 WiFi 模塊的對接文件。其他熱門的無線模組,RT-Thread也將會優(yōu)先支持(歡迎留言說說你希望RT-Thread優(yōu)先支持的AT模塊),開發(fā)者可以根據(jù)RT-Thread提供的AT組件編程手冊(https://www.rt-thread.org/document/site/rtthread-development-guide/rtthread-manual-doc/zh/1chapters/14-chapter_at/)方便快捷的自行完成對接。
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2945文章
47818瀏覽量
414798 -
GPRS
+關(guān)注
關(guān)注
21文章
986瀏覽量
133084 -
RT-Thread
+關(guān)注
關(guān)注
32文章
1613瀏覽量
44818 -
ESP8266
+關(guān)注
關(guān)注
51文章
970瀏覽量
49472
發(fā)布評論請先 登錄
RT-Thread記錄(一、版本開發(fā)環(huán)境及配合CubeMX)
RT-Thread設(shè)備驅(qū)動開發(fā)指南基礎(chǔ)篇—以先楫bsp的hwtimer設(shè)備為例
如何更好地使用RT-Thread AT組件?
如何使用RT-Thread AT組件
RT-Thread編程指南
RT-Thread開發(fā),如何有效學(xué)習(xí)RT-Thread的五個步驟
RT-Thread軟件包定義和使用
RT-Thread AI kit開源:輕松實現(xiàn)一鍵部署AI模型至 RT-Thread
RT-Thread 應(yīng)用筆記 - RTC Alarm 組件的使用
RT-Thread學(xué)習(xí)筆記 RT-Thread的架構(gòu)概述
RT-Thread v5.0.2 發(fā)布
RT-Thread發(fā)布AT組件,讓AT設(shè)備開發(fā)更簡單
評論