AT 命令采用標準串口進行數據收發,將以前復雜的設備通訊方式轉換成簡單的串口編程,大大簡化了產品的硬件設計和軟件開發成本,這使得幾乎所有的網絡模組如GPRS、3G/4G 、NB-IoT、藍牙、WiFi 、GPS 等模組都采用AT命令。
隨著物聯網時代的發展,AT 命令被廣泛的用于單片機(MCU)+ 網絡模塊 這樣的物聯網開發模式,但是對于不同設備的 AT 命令,其數據的收發和解析方式都大不相同,這直接提高開發的復雜度,也不利于代碼的維護和重用。
為了解決不同網絡模塊 AT 命令之間的差異導致的重復開發的問題,RT-Thread 發布了 AT 組件用于 AT 設備開發。
RT-Thread AT 組件解決方案
RT-Thread AT 組件介紹
我們的 AT 組件,是基于 RT-Thread 系統的 AT 客戶端和服務器的實現。
RT-Thread AT 組件介紹
1.AT 命令客戶端
主要應用 MCU + AT 模塊的場景,MCU 內部為 AT 命令客戶端。其主要功能特點如下:
-
URC 數據處理: 完備的 URC 數據的處理方式;
-
數據解析: 支持自定義響應數據的解析方式,方便獲取響應數據中相關信息;
-
調試模式: 提供命令行交互模式,主要用于設備調試;
-
AT Socket:提供標準的網絡編程接口;
URC: 全稱是非請求結果碼(Unsolicited Result Code),特指 AT 服務器主動發送給 AT 客戶端的數據。一般在特殊情況才會發送,具有一定的隨機性。
2.AT命令服務器
常應用于 AT 模塊內部,使 AT 模塊可以內置一些 AT 命令。其主要功能特點如下:
-
基礎命令: 實現多種通用基礎命令;
-
命令兼容: 命令支持忽略大小寫,提高命令兼容性;
-
命令注冊: 提供簡單的用戶自定義命令添加方式;
-
調試模式: 提供命令行交互模式,主要用于設備調試。
-
低資源占用: 4.0K ROM 和 2.5K RAM。
AT 組件的創新
RT-Thread 的 AT 組件不僅僅有全面、完善的功能,還在用戶使用、調試測試等細節方面做了充分的考慮。保證了資源占用低的同時,也能讓用戶用起來非常順手。下面這些都是我們做出來的創新:
1.靈活的響應數據解析方式
響應數據的解析作為 AT 模塊開發的另一大難題,不同設備的命令、同一設備的不同命令的響應數據解析方式都可能大不相同,這大大增加開發者從響應數據中獲取有效數據的難度。
RT-Thread 對于響應數據的解析方式,提供了多種解析接口。比如:可以通過行號解析,也可以通過關鍵字查找解析。解析的方式還使用了標準 scanf 的表達式,它支持 正則表達式。使開發者在保存原始響應數據的同時,輕松的解析出想要的重要數據。
2.完備的URC 數據的處理機制
URC 數據為服務器主動下發的數據,一般在特殊情況才會發送,比如:開機日志,網絡連接提示等。對于這些特殊情況,開發者往往都非常頭疼。
因為 URC 數據一般沒有固定格式,并且可能隨機發送,處理不好很容易影響到整個數據的交互流程。所以對于 URC 的處理需要一個非常完善的機制。
目前, AT 組件已具備強大的 URC 處理框架,確保每個 URC 數據都能得到合理的處理,并且支持對每一個 URC 數據執行自定義的操作。
3.簡化 AT 命令的收發流程
對于傳統的 AT 模塊開發流程,一個 AT 命令收發的整個流程可能需要多個步驟的處理,包括命令發送、發送結果判斷、接收響應數據、響應結果判斷等多個步驟。且不同命令的處理方式不同,導致代碼很難被重用。
AT 組件中命令收發,只需要通過 一個函數 實現,且該函數返回響應結果并處理了響應數據,方便后續使用。極大的簡化了交互流程。
4.提供標準的網絡編程接口
在使用 AT 模塊后,一般的單片機可以通過 AT 命令,完成設備的網絡連接、數據透傳等功能。但是很難復用之前已開發過的,基于標準 BSD Socket API 的代碼,例如: MQTT、HTTP、Web Socket 等。即使在一個模塊上實現了上網功能,但是最終又很難復用到其他的產品上。
RT-Thread 的 AT 組件在 AT 客戶端的基礎上實現了 AT Socket 功能,該功能是 SAL (Socket 抽象層)的一種實現。為上層提供標準的 BSD Socket 網絡編程接口。在使用 AT 模塊的產品上,極大的簡化了網絡開發代碼并增強了軟件可重用性。
RT-Thread 已對接常用的 AT 模塊
當前RT-Thread 已提供針對于移遠的 M26 GPRS 模塊、樂鑫的 ESP8266 WiFi 模塊的對接文件。其他熱門的無線模組,RT-Thread也將會優先支持(歡迎留言說說你希望RT-Thread優先支持的AT模塊),開發者可以根據RT-Thread提供的AT組件編程手冊(https://www.rt-thread.org/document/site/rtthread-development-guide/rtthread-manual-doc/zh/1chapters/14-chapter_at/)方便快捷的自行完成對接。
-
物聯網
+關注
關注
2909文章
44701瀏覽量
373959 -
GPRS
+關注
關注
21文章
984瀏覽量
129473 -
RT-Thread
+關注
關注
31文章
1293瀏覽量
40193 -
ESP8266
+關注
關注
50文章
962瀏覽量
45083
發布評論請先 登錄
相關推薦
評論