AT 組件:RT-Thread 一個比較典型的組件,
解決了不同網(wǎng)絡(luò)模塊AT命令之間的差異導致的重復開發(fā)的問題,大幅度簡化了MCU+無線模塊方案開發(fā)。
目錄
前言
一、AT 組件簡介
二、at_device 軟件包使用步驟
2.1 at_device 軟件包
2.2 使用步驟
三、 測試問題
3.1 問題的出現(xiàn)(未解決)
3.2 需要DMA問題?(測試不是)
3.3 ESP8266固件問題?(應該也不是)
3.4 正常情況(以前的程序)
結(jié)語
前言
上文我們開始接觸 RT-Thread 的組件與軟件包,在專欄的這部分,我并不計劃深入分析這些組件與軟件包的理論基礎(chǔ)。即便如此,在介紹 SFUD組件的時候,我還是做了簡單介紹。
正好手頭有一個 ESP8266 的模塊,就想著測試記錄一下 AT 組件的使用。
今天我們要介紹的 AT 組件相對來說,比 SFUD 組件復雜一些,這次真的不介紹理論了,因為我能看到的理論資料,大家都能看到,我會把自己的參考的一些文檔放出鏈接,供大家參考。
本文用到的不僅僅是 AT 組件,還用到了基于 AT 組件的軟件包,理論性的東西不是 RT-Thread 專欄組件與軟件包部分的重點,我的目的在于記錄使用我們的開發(fā)環(huán)境如何快速的使用這些組件與軟件包進行我們產(chǎn)品的實際應用。
??
本 RT-Thread 專欄記錄的開發(fā)環(huán)境:
RT-Thread記錄(一、RT-Thread 版本、RT-Thread Studio開發(fā)環(huán)境 及 配合CubeMX開發(fā)快速上手)
RT-Thread記錄(二、RT-Thread內(nèi)核啟動流程 — 啟動文件和源碼分析)
??
RT-Thread 內(nèi)核篇系列博文鏈接:
RT-Thread記錄(三、RT-Thread 線程操作函數(shù)及線程管理與FreeRTOS的比較)
RT-Thread記錄(四、RT-Thread 時鐘節(jié)拍和軟件定時器)
RT-Thread記錄(五、RT-Thread 臨界區(qū)保護)
RT-Thread記錄(六、IPC機制之信號量、互斥量和事件集)
RT-Thread記錄(七、IPC機制之郵箱、消息隊列)
RT-Thread記錄(八、理解 RT-Thread 內(nèi)存管理)
RT-Thread記錄(九、RT-Thread 中斷處理與階段小結(jié))
??
在STM32L051C8 上使用 RT-Thread 應用篇系列博文連接:
RT-Thread 應用篇 — 在STM32L051上使用 RT-Thread (一、無線溫濕度傳感器 之 新建項目)
RT-Thread 應用篇 — 在STM32L051上使用 RT-Thread (二、無線溫濕度傳感器 之 CubeMX配置)
RT-Thread 應用篇 — 在STM32L051上使用 RT-Thread (三、無線溫濕度傳感器 之 I2C通訊)
RT-Thread 應用篇 — 在STM32L051上使用 RT-Thread (四、無線溫濕度傳感器 之 串口通訊)
??
RT-Thread 設(shè)備篇系列博文鏈接:
RT-Thread記錄(十、全面認識 RT-Thread I/O 設(shè)備模型)
RT-Thread記錄(十一、I/O 設(shè)備模型之UART設(shè)備 — 源碼解析)
RT-Thread記錄(十二、I/O 設(shè)備模型之UART設(shè)備 — 使用測試)
RT-Thread記錄(十三、I/O 設(shè)備模型之PIN設(shè)備)
RT-Thread記錄(十四、I/O 設(shè)備模型之ADC設(shè)備)
RT-Thread記錄(十五、I/O 設(shè)備模型之SPI設(shè)備)
??
RT-Thread 組件與軟件包系列博文鏈接:
RT-Thread記錄(十六、SFUD組件 — SPI Flash的讀寫)
一、AT 組件簡介
為了方便用戶使用 AT 命令,并且適配不同廠家的不同設(shè)備, RT-Thread 提供了 AT 組件用于 AT 設(shè)備的連接和數(shù)據(jù)通訊。
AT 組件理論知識參考文章:
RT-Thread 官方 AT 組件說明
RT-Thread 官方文檔:應用 AT 組件連接 ESP8266 模塊
rt-thread AT組件學習梳理
AT 命令集是一種應用于 AT 服務器(AT Server)與 AT 客戶端(AT Client)間的設(shè)備連接與數(shù)據(jù)通信的方式。
AT 組件的使用包括客戶端的和服務器,對于嵌入式設(shè)備而言,更多的情況下設(shè)備使用 AT 組件作為客戶端連接服務器設(shè)備,如下圖:
如果有些 AT 模塊可以跑 RT-Thread,那么他們可以使用 AT 組件作為服務器端的設(shè)備,如圖:
二、at_device 軟件包使用步驟
樂鑫 ESP8266 大家應該很熟悉,一款性價比極高的 WIFI 模塊,正因為他的性價比高,所以很收歡迎,所以很通用,這也是為什么官方以及很多文章都是使用 ESP8266 作為測試。
以前我們在裸機使用 ESP8266,需要根據(jù)文檔根據(jù)自己的需求自己一點一點實現(xiàn)模塊的驅(qū)動程序,現(xiàn)在使用了 RT-Thread 系統(tǒng),我們可以基于 RT-Thread 提供的 AT 組件進行 ESP8266 的操作。
2.1 at_device 軟件包
在使用 RT-Thread 系統(tǒng)的時候,我們有 AT 組件可以進行 ESP8266 的操作,因為 AT 組件是通用的驅(qū)動,它并不區(qū)分不同芯片,即便我們有 AT 組件可以使用,但是按理來說還是得自己根據(jù) ESP8266 本身的資料基于 AT 組件實現(xiàn)操作 ESP8266 的驅(qū)動程序。
但是,我們說過 RT-Thread 相對于其他的 RTOS 來說,他的生態(tài)做得很好,開發(fā)者可以根據(jù) RT-Thread 標準的框架,寫好各種各樣的開源軟件包,提供給大家使用。
正式因為 ESP8266 通用,所以已經(jīng)有開發(fā)者基于 RT-Thread 的AT組件,寫好了支持 ESP8266 的軟件包 at_device。我們可以直接使用:
2.2 使用步驟
基本的介紹完畢,我們直接來說明一下如何使用 RT-Thread 的組件與軟件包,簡單的使用我們的 ESP8266 WIFI 模塊。
☆ 先說明一個依賴關(guān)系, AT 組件需要使用 libc ,at_device 軟件包又是基于 AT 組件設(shè)計,所以我們在 RT-Thread 配置中,需要使能 AT組件,libc,添加 at_device 軟件包 3 個大步驟 。☆
當然,因為 ESP8266 是使用串口和 MCU相連,不要忘記定義好 WIFI 模塊使用的 UART 設(shè)備。因為我們前面文章的時候已經(jīng)使能了 ESP8266 使用的 uart3 設(shè)備,所以這里無需額外操作。
我們按照順序,使用圖文說明:
1、使能 WIFi 模塊串口:
根據(jù)我們以前博文 RT-Thread記錄(十二、I/O 設(shè)備模型之UART設(shè)備 — 使用測試) 操作即可。
對于在 RT-Thread Settings 中設(shè)置的這些步驟,可以一次性完成,我這里使用的是分開說明,但是實際上使能組件與軟件包這些操作可以同時進行,不沖突。
2、打開 RT-Thread Settings,使能 AT 組件和 libc組件,如下圖所示:
其中可以查看一下 AT 的配置項,在基礎(chǔ)知識中應該了解到, 下圖中的 CLI 命令行接口,就是可以通過 shell 命令行直接向 WIFI 模塊發(fā)送指令做測試:
勾選了這兩個組件可以直接進行下面的步驟,作為測試,也可以先看看什么效果,在命令行中多了 at 的操作命令:
3、 還是在 RT-Thread Settings 中,點擊添加軟件包,通過搜索找到 at_device 軟件包添加 :
4、 配置 at_device 軟件包 :
可以看到現(xiàn)在 at_device 軟件包已經(jīng)支持很多常用的模塊,使用起來非常方便:
我們本次測試使用的是 ESP8266,所以在 ESP8266中進行配置:
設(shè)置完畢可通過工程查看,軟件包的位置都在 packages 文件夾下面:
到此,我們的設(shè)置就完成了,可以直接編譯進行燒錄測試。
三、 測試問題
最后測試結(jié)果,一言難盡啊…… ,嘗試了好幾個小時,最終在這個上面居然失敗了……
好難過,因為我同樣的硬件,用以前的版本程序,也是用 at_device 軟件包一切正常 (灬? ?灬)
我一點一點記錄一下:
3.1 問題的出現(xiàn)(未解決)
最開始按照上面的設(shè)置,第一現(xiàn)象是:
上面提示沒有足夠的緩存接收數(shù)據(jù),這里指的是串口接收緩存,以前我們測試時候一直是使用的是 64大小,需要改大一點,改大一點比如 512 如圖:
改了以后不會有警告了,但是還是會聯(lián)網(wǎng)失敗,有時候是這樣:
有時候是這樣:
有時候又是這樣:
期間也網(wǎng)上找了一些說法,也參考了一些文章,反正就是各種嘗試,各種都不成功 = =!
3.2 需要DMA問題?(測試不是)
有的說得用DMA ,下面是使用了 DMA 的結(jié)果(緩存512 和1024 都一樣):
3.3 ESP8266固件問題?(應該也不是)
網(wǎng)上也有文章說 ESP8266 的固件版本會影響測試結(jié)果,我手頭并沒有可以燒錄 ESP8266 的設(shè)備。
我是根據(jù)什么來判斷固件沒問題的呢,在以前沒有 RT-Thread Studio 的時候,我也使用過 RT-Thread ,同樣的硬件嗎,也是使用了 at_device 軟件包,其 ENV 配置如下:
同樣的硬件同樣的 WIFI 環(huán)境,使用上面配置是能夠正常驅(qū)動 ESP8266的,如下圖所示:
對應的,我們現(xiàn)在的 RT-Thread Studio 環(huán)境,我設(shè)置成一樣的就會出錯:
同樣的硬件同樣的 WIFI 環(huán)境,就會出問題,情況如下:
反正我是感覺今天是解決不了了… …
3.4 正常情況(以前的程序)
反正也是使用的 AT 組件,只不過版本(V1.3.0)與現(xiàn)在的版本(V1.3.1)不同,使用了at_device 軟件包默認的 ESP8266 示例,測試可以正常的連上WIFi,而且可以正常 ping 通網(wǎng)絡(luò):
結(jié)語
本文雖然只是測試一下基于RT-Thread AT組件的 at_device 軟件包,但是在測試過程中遇到了問題,因為手頭的 ESP8266 是好些年前的模塊找出來的,對于他的一些開發(fā)工具,都已經(jīng)沒有了,所以沒有對模塊進行版本更換。
不過話說回來,同樣的系統(tǒng),同樣的組件和軟件包,基本上就是版本有點區(qū)別,結(jié)果卻不一樣,這個問題,我最終還是沒能解決 = =! 我猜想是自己哪里設(shè)置有點問題? 還是哪里出了問題?
最近都不會使用 ESP8266 WIFI 模塊,找出來本來也只是為了說明一下 RT-Thread AT組件與軟件包的使用,本來以為簡簡單單,沒想到翻車了……
這次文章的結(jié)尾輕松不起來了,遇到個沒解決的問題,但是我希望說明是到位了,還有如果有知道問題的朋友還望告知 。
我們接下來還要測試幾個簡單的軟件包,我們在設(shè)備模型中沒有講過 I2C 設(shè)備模型,因為我們可以直接使用現(xiàn)成的I2C設(shè)備軟件包。
-
AT
+關(guān)注
關(guān)注
2文章
194瀏覽量
65304 -
RT-Thread
+關(guān)注
關(guān)注
31文章
1305瀏覽量
40386 -
ESP8266
+關(guān)注
關(guān)注
50文章
962瀏覽量
45329 -
SFUD
+關(guān)注
關(guān)注
0文章
5瀏覽量
1079
發(fā)布評論請先 登錄
相關(guān)推薦
評論