RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

RT-Thread記錄(十七、 AT組件-使用at軟件包)

矜辰所致 ? 來源:矜辰所致 ? 作者:矜辰所致 ? 2022-07-06 20:33 ? 次閱讀
AT 組件:RT-Thread 一個(gè)比較典型的組件,
解決了不同網(wǎng)絡(luò)模塊AT命令之間的差異導(dǎo)致的重復(fù)開發(fā)的問題,大幅度簡(jiǎn)化了MCU+無線模塊方案開發(fā)。

目錄

前言
一、AT 組件簡(jiǎn)介
二、at_device 軟件包使用步驟
2.1 at_device 軟件包
2.2 使用步驟
三、 測(cè)試問題
3.1 問題的出現(xiàn)(未解決)
3.2 需要DMA問題?(測(cè)試不是)
3.3 ESP8266固件問題?(應(yīng)該也不是)
3.4 正常情況(以前的程序)
結(jié)語(yǔ)

前言

上文我們開始接觸 RT-Thread 的組件與軟件包,在專欄的這部分,我并不計(jì)劃深入分析這些組件與軟件包的理論基礎(chǔ)。即便如此,在介紹 SFUD組件的時(shí)候,我還是做了簡(jiǎn)單介紹。

正好手頭有一個(gè) ESP8266 的模塊,就想著測(cè)試記錄一下 AT 組件的使用。

今天我們要介紹的 AT 組件相對(duì)來說,比 SFUD 組件復(fù)雜一些,這次真的不介紹理論了,因?yàn)槲夷芸吹降睦碚?a href="http://hljzzgx.com/soft/special/" target="_blank">資料,大家都能看到,我會(huì)把自己的參考的一些文檔放出鏈接,供大家參考。

本文用到的不僅僅是 AT 組件,還用到了基于 AT 組件的軟件包,理論性的東西不是 RT-Thread 專欄組件與軟件包部分的重點(diǎn),我的目的在于記錄使用我們的開發(fā)環(huán)境如何快速的使用這些組件與軟件包進(jìn)行我們產(chǎn)品的實(shí)際應(yīng)用。

??
本 RT-Thread 專欄記錄的開發(fā)環(huán)境:
RT-Thread記錄(一、RT-Thread 版本、RT-Thread Studio開發(fā)環(huán)境 及 配合CubeMX開發(fā)快速上手)
RT-Thread記錄(二、RT-Thread內(nèi)核啟動(dòng)流程 — 啟動(dòng)文件和源碼分析)
??
RT-Thread 內(nèi)核篇系列博文鏈接:
RT-Thread記錄(三、RT-Thread 線程操作函數(shù)及線程管理與FreeRTOS的比較)
RT-Thread記錄(四、RT-Thread 時(shí)鐘節(jié)拍和軟件定時(shí)器
RT-Thread記錄(五、RT-Thread 臨界區(qū)保護(hù))
RT-Thread記錄(六、IPC機(jī)制之信號(hào)量、互斥量和事件集)
RT-Thread記錄(七、IPC機(jī)制之郵箱、消息隊(duì)列)
RT-Thread記錄(八、理解 RT-Thread 內(nèi)存管理)
RT-Thread記錄(九、RT-Thread 中斷處理與階段小結(jié))
??
STM32L051C8 上使用 RT-Thread 應(yīng)用篇系列博文連接:
RT-Thread 應(yīng)用篇 — 在STM32L051上使用 RT-Thread (一、無線溫濕度傳感器 之 新建項(xiàng)目)
RT-Thread 應(yīng)用篇 — 在STM32L051上使用 RT-Thread (二、無線溫濕度傳感器 之 CubeMX配置)
RT-Thread 應(yīng)用篇 — 在STM32L051上使用 RT-Thread (三、無線溫濕度傳感器 之 I2C通訊)
RT-Thread 應(yīng)用篇 — 在STM32L051上使用 RT-Thread (四、無線溫濕度傳感器 之 串口通訊)
??
RT-Thread 設(shè)備篇系列博文鏈接:
RT-Thread記錄(十、全面認(rèn)識(shí) RT-Thread I/O 設(shè)備模型)
RT-Thread記錄(十一、I/O 設(shè)備模型之UART設(shè)備 — 源碼解析)
RT-Thread記錄(十二、I/O 設(shè)備模型之UART設(shè)備 — 使用測(cè)試)
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 組件簡(jiǎn)介

為了方便用戶使用 AT 命令,并且適配不同廠家的不同設(shè)備, RT-Thread 提供了 AT 組件用于 AT 設(shè)備的連接和數(shù)據(jù)通訊。

AT 組件理論知識(shí)參考文章:

RT-Thread 官方 AT 組件說明

RT-Thread 官方文檔:應(yīng)用 AT 組件連接 ESP8266 模塊

rt-thread AT組件學(xué)習(xí)梳理

AT 命令集是一種應(yīng)用于 AT 服務(wù)器(AT Server)與 AT 客戶端(AT Client)間的設(shè)備連接與數(shù)據(jù)通信的方式。

AT 組件的使用包括客戶端的和服務(wù)器,對(duì)于嵌入式設(shè)備而言,更多的情況下設(shè)備使用 AT 組件作為客戶端連接服務(wù)器設(shè)備,如下圖:

poYBAGLFgR6ATE06AADD5-Rkpwc520.png

如果有些 AT 模塊可以跑 RT-Thread,那么他們可以使用 AT 組件作為服務(wù)器端的設(shè)備,如圖:

pYYBAGLFgR6AOQNbAACvb0IKsck149.png

二、at_device 軟件包使用步驟

樂鑫 ESP8266 大家應(yīng)該很熟悉,一款性價(jià)比極高的 WIFI 模塊,正因?yàn)樗男詢r(jià)比高,所以很收歡迎,所以很通用,這也是為什么官方以及很多文章都是使用 ESP8266 作為測(cè)試。

以前我們?cè)诼銠C(jī)使用 ESP8266,需要根據(jù)文檔根據(jù)自己的需求自己一點(diǎn)一點(diǎn)實(shí)現(xiàn)模塊的驅(qū)動(dòng)程序,現(xiàn)在使用了 RT-Thread 系統(tǒng),我們可以基于 RT-Thread 提供的 AT 組件進(jìn)行 ESP8266 的操作。

2.1 at_device 軟件包

在使用 RT-Thread 系統(tǒng)的時(shí)候,我們有 AT 組件可以進(jìn)行 ESP8266 的操作,因?yàn)?AT 組件是通用的驅(qū)動(dòng),它并不區(qū)分不同芯片,即便我們有 AT 組件可以使用,但是按理來說還是得自己根據(jù) ESP8266 本身的資料基于 AT 組件實(shí)現(xiàn)操作 ESP8266 的驅(qū)動(dòng)程序。

但是,我們說過 RT-Thread 相對(duì)于其他的 RTOS 來說,他的生態(tài)做得很好,開發(fā)者可以根據(jù) RT-Thread 標(biāo)準(zhǔn)的框架,寫好各種各樣的開源軟件包,提供給大家使用。

正式因?yàn)?ESP8266 通用,所以已經(jīng)有開發(fā)者基于 RT-Thread 的AT組件,寫好了支持 ESP8266 的軟件包 at_device。我們可以直接使用:

poYBAGLFgR6AF9StAACZLIb8Tpk570.png

2.2 使用步驟

基本的介紹完畢,我們直接來說明一下如何使用 RT-Thread 的組件與軟件包,簡(jiǎn)單的使用我們的 ESP8266 WIFI 模塊。

☆ 先說明一個(gè)依賴關(guān)系, AT 組件需要使用 libc ,at_device 軟件包又是基于 AT 組件設(shè)計(jì),所以我們?cè)?RT-Thread 配置中,需要使能 AT組件,libc,添加 at_device 軟件包 3 個(gè)大步驟 ?!?/strong>

當(dāng)然,因?yàn)?ESP8266 是使用串口和 MCU相連,不要忘記定義好 WIFI 模塊使用的 UART 設(shè)備。因?yàn)槲覀兦懊嫖恼碌臅r(shí)候已經(jīng)使能了 ESP8266 使用的 uart3 設(shè)備,所以這里無需額外操作。

我們按照順序,使用圖文說明:

1、使能 WIFi 模塊串口:

根據(jù)我們以前博文 RT-Thread記錄(十二、I/O 設(shè)備模型之UART設(shè)備 — 使用測(cè)試) 操作即可。

對(duì)于在 RT-Thread Settings 中設(shè)置的這些步驟,可以一次性完成,我這里使用的是分開說明,但是實(shí)際上使能組件與軟件包這些操作可以同時(shí)進(jìn)行,不沖突。

2、打開 RT-Thread Settings,使能 AT 組件和 libc組件,如下圖所示:

pYYBAGLFgR6AdxucAAB7d2uJJR4991.png

其中可以查看一下 AT 的配置項(xiàng),在基礎(chǔ)知識(shí)中應(yīng)該了解到, 下圖中的 CLI 命令行接口,就是可以通過 shell 命令行直接向 WIFI 模塊發(fā)送指令做測(cè)試:

pYYBAGLFgR-APcqCAAB9Tz7yNno620.png

勾選了這兩個(gè)組件可以直接進(jìn)行下面的步驟,作為測(cè)試,也可以先看看什么效果,在命令行中多了 at 的操作命令:

poYBAGLFgR-ACklgAABocA6RJwY112.png

3、 還是在 RT-Thread Settings 中,點(diǎn)擊添加軟件包,通過搜索找到 at_device 軟件包添加 :

pYYBAGLFgR-AdCo_AACRoLbp588278.png

4、 配置 at_device 軟件包 :

可以看到現(xiàn)在 at_device 軟件包已經(jīng)支持很多常用的模塊,使用起來非常方便:

poYBAGLFgR-ABA8pAADPugKh5i4837.png

我們本次測(cè)試使用的是 ESP8266,所以在 ESP8266中進(jìn)行配置:

pYYBAGLFgSCAfF7WAABjs7eOSeU852.png

設(shè)置完畢可通過工程查看,軟件包的位置都在 packages 文件夾下面:

poYBAGLFgSCAHyAYAABTC6KX_1E140.png

到此,我們的設(shè)置就完成了,可以直接編譯進(jìn)行燒錄測(cè)試。

三、 測(cè)試問題

最后測(cè)試結(jié)果,一言難盡啊…… ,嘗試了好幾個(gè)小時(shí),最終在這個(gè)上面居然失敗了……

好難過,因?yàn)槲彝瑯拥?a href="http://hljzzgx.com/v/tag/1751/" target="_blank">硬件,用以前的版本程序,也是用 at_device 軟件包一切正常 (灬? ?灬)

我一點(diǎn)一點(diǎn)記錄一下:

3.1 問題的出現(xiàn)(未解決)

最開始按照上面的設(shè)置,第一現(xiàn)象是:

pYYBAGLFgSCAapnUAAB3-Q3U0og464.png

上面提示沒有足夠的緩存接收數(shù)據(jù),這里指的是串口接收緩存,以前我們測(cè)試時(shí)候一直是使用的是 64大小,需要改大一點(diǎn),改大一點(diǎn)比如 512 如圖:

poYBAGLFgSCAK4gnAAAuUYmWETo279.png

改了以后不會(huì)有警告了,但是還是會(huì)聯(lián)網(wǎng)失敗,有時(shí)候是這樣:

pYYBAGLFgSCAfA3WAAEMIdRHECg700.png

有時(shí)候是這樣:

poYBAGLFgSGAR776AAC8mJxevq4009.png

有時(shí)候又是這樣:

pYYBAGLFgSGAH0reAADB6PxbYjM653.png

期間也網(wǎng)上找了一些說法,也參考了一些文章,反正就是各種嘗試,各種都不成功 = =!

3.2 需要DMA問題?(測(cè)試不是)

有的說得用DMA ,下面是使用了 DMA 的結(jié)果(緩存512 和1024 都一樣):

pYYBAGLFgSKAcr5dAAEgQwSjXGY308.png

3.3 ESP8266固件問題?(應(yīng)該也不是)

網(wǎng)上也有文章說 ESP8266 的固件版本會(huì)影響測(cè)試結(jié)果,我手頭并沒有可以燒錄 ESP8266 的設(shè)備。

我是根據(jù)什么來判斷固件沒問題的呢,在以前沒有 RT-Thread Studio 的時(shí)候,我也使用過 RT-Thread ,同樣的硬件嗎,也是使用了 at_device 軟件包,其 ENV 配置如下:

poYBAGLFgSKAc3_RAADK1GJi6bQ490.png

同樣的硬件同樣的 WIFI 環(huán)境,使用上面配置是能夠正常驅(qū)動(dòng) ESP8266的,如下圖所示:

pYYBAGLFgSKAflBgAACE_L-pm_k718.png

對(duì)應(yīng)的,我們現(xiàn)在的 RT-Thread Studio 環(huán)境,我設(shè)置成一樣的就會(huì)出錯(cuò):

pYYBAGLFgSOAXjhZAAFhaimPVTI009.png

同樣的硬件同樣的 WIFI 環(huán)境,就會(huì)出問題,情況如下:

poYBAGLFgSOAHL5YAACo51v18dY153.png

反正我是感覺今天是解決不了了… …

3.4 正常情況(以前的程序)

反正也是使用的 AT 組件,只不過版本(V1.3.0)與現(xiàn)在的版本(V1.3.1)不同,使用了at_device 軟件包默認(rèn)的 ESP8266 示例,測(cè)試可以正常的連上WIFi,而且可以正常 ping 通網(wǎng)絡(luò):

pYYBAGLFgSOAMjzZAADgvr87MXc531.png

結(jié)語(yǔ)

本文雖然只是測(cè)試一下基于RT-Thread AT組件的 at_device 軟件包,但是在測(cè)試過程中遇到了問題,因?yàn)槭诸^的 ESP8266 是好些年前的模塊找出來的,對(duì)于他的一些開發(fā)工具,都已經(jīng)沒有了,所以沒有對(duì)模塊進(jìn)行版本更換。

不過話說回來,同樣的系統(tǒng),同樣的組件和軟件包,基本上就是版本有點(diǎn)區(qū)別,結(jié)果卻不一樣,這個(gè)問題,我最終還是沒能解決 = =! 我猜想是自己哪里設(shè)置有點(diǎn)問題? 還是哪里出了問題?

最近都不會(huì)使用 ESP8266 WIFI 模塊,找出來本來也只是為了說明一下 RT-Thread AT組件與軟件包的使用,本來以為簡(jiǎn)簡(jiǎn)單單,沒想到翻車了……

這次文章的結(jié)尾輕松不起來了,遇到個(gè)沒解決的問題,但是我希望說明是到位了,還有如果有知道問題的朋友還望告知 。

我們接下來還要測(cè)試幾個(gè)簡(jiǎn)單的軟件包,我們?cè)谠O(shè)備模型中沒有講過 I2C 設(shè)備模型,因?yàn)槲覀兛梢灾苯邮褂矛F(xiàn)成的I2C設(shè)備軟件包。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • AT
    AT
    +關(guān)注

    關(guān)注

    2

    文章

    192

    瀏覽量

    65202
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1285

    瀏覽量

    40079
  • ESP8266
    +關(guān)注

    關(guān)注

    50

    文章

    962

    瀏覽量

    44956
  • SFUD
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    1060
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    RT-Thread記錄(十六、SFUD組件 Flash讀寫)

    從本文開始,測(cè)試學(xué)習(xí)一些 RT-Thread 常用的組件軟件包,先從剛學(xué)完的 SPI 設(shè)備開始。
    的頭像 發(fā)表于 07-06 10:35 ?6220次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>記錄</b>(十六、SFUD<b class='flag-5'>組件</b> Flash讀寫)

    RT-Thread記錄(十八、SHT21與24C02軟件包

    本文學(xué)習(xí)測(cè)試一下幾款典型設(shè)備的 RT-Thread I2C軟件包
    的頭像 發(fā)表于 07-08 11:07 ?3396次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>記錄</b>(十八、SHT21與24C02<b class='flag-5'>軟件包</b>)

    介紹RT-Thread軟件包

    學(xué)習(xí)要點(diǎn)介紹 RT-Thread軟件包;簡(jiǎn)介 nRF24L01 軟件包的使用,講解如何使用此軟件包將數(shù)據(jù)正確發(fā)送和接收;學(xué)習(xí)線程間的通信,IPC 的使用,即獲取溫度的線程 A 與無
    發(fā)表于 07-27 06:07

    使用menuconfig配置基于RT-Thread的NimBLE軟件包

    最近在學(xué)習(xí) RT-Thread 中的 NimBLE 軟件包,使用 menuconfig 配置選中 NimBLE 軟件包,設(shè)置各種選項(xiàng)后,成功通過編譯并且運(yùn)行起來。不過這僅僅只是按照文檔說明運(yùn)行了起來
    發(fā)表于 06-27 11:18

    【原創(chuàng)精選】RT-Thread征文精選技術(shù)文章合集

    、I/O 設(shè)備模型之SPI設(shè)備)RT-Thread記錄(十六、SFUD組件 Flash讀寫)RT-Thread記錄
    發(fā)表于 07-26 14:56

    RT-Thread 軟件包介紹

    。所以,想要成為高級(jí)程序員就快來使用、創(chuàng)造軟件包吧~軟件包的定義RT-Thread 軟件包:運(yùn)行于 RT-Thread 物聯(lián)網(wǎng)操作系統(tǒng)平臺(tái)上
    發(fā)表于 05-21 19:38 ?5552次閱讀

    RT-Thread軟件包定義和使用

    RT-Thread軟件包是運(yùn)行于RT-Thread物聯(lián)網(wǎng)操作系統(tǒng)平臺(tái)上,面向不同應(yīng)用領(lǐng)域的通用軟件組件 。
    的頭像 發(fā)表于 05-21 11:29 ?1w次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>軟件包</b>定義和使用

    RT-Thread社區(qū)上有哪些優(yōu)秀的軟件包

    SX12XX 軟件包是基于 semtech 官網(wǎng) Firmware Drivers V2.1.0代碼庫(kù)的移植實(shí)現(xiàn),目前只支持 SX1278 LoRa設(shè)備。該軟件包在原代碼庫(kù)功能的基礎(chǔ)上,對(duì)接 RT-Thread SPI 設(shè)備驅(qū)動(dòng)
    的頭像 發(fā)表于 04-03 15:35 ?7630次閱讀

    RT-Thread v4.1.0中FAL介紹

    在 V4.1.0 中,將 fal 軟件包重新定義為 RT-Thread 內(nèi)部組件。
    的頭像 發(fā)表于 04-26 13:34 ?3842次閱讀

    2022 RT-Thread全球技術(shù)大會(huì):RT-Thread軟件包

    RT-Thread在2022年上半年新增幾十個(gè)軟件包:rtt-rust、LuatOS、gui-guider-demo。
    的頭像 發(fā)表于 05-27 14:12 ?1052次閱讀
    2022 <b class='flag-5'>RT-Thread</b>全球技術(shù)大會(huì):<b class='flag-5'>RT-Thread</b><b class='flag-5'>軟件包</b>

    RT-Thread全球技術(shù)大會(huì):恩智浦新增100+軟件包

    RT-Thread全球技術(shù)大會(huì):恩智浦新增100+軟件包,支持了很多有用的功能。 ? ? ? ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 14:26 ?954次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術(shù)大會(huì):恩智浦新增100+<b class='flag-5'>軟件包</b>

    RT-Thread在線軟件包改為本地軟件包的方法

    RT-Thread軟件包,使用時(shí)需要手動(dòng)通過 ENV 工具 更新到 本地的 packages 目錄,并且 packages 目錄默認(rèn)不參與 Git 工程管理,軟件包多了,偶爾需要更改軟件包
    的頭像 發(fā)表于 08-11 15:02 ?1210次閱讀
    <b class='flag-5'>RT-Thread</b>在線<b class='flag-5'>軟件包</b>改為本地<b class='flag-5'>軟件包</b>的方法

    RT-Thread使用cjson軟件包發(fā)送64位長(zhǎng)整型數(shù)據(jù)

    開發(fā)環(huán)境:野火的stm32f407,rt-thread studio版本是版本: 2.2.6,stm32f4的資源為0.2.2,rt-thread版本為4.1.1,cjson軟件包使
    的頭像 發(fā)表于 10-11 15:09 ?916次閱讀
    <b class='flag-5'>RT-Thread</b>使用cjson<b class='flag-5'>軟件包</b>發(fā)送64位長(zhǎng)整型數(shù)據(jù)

    RT-Thread中Agile Modbus軟件包的使用方法

    開發(fā)環(huán)境:野火的stm32f407,rt-thread studio版本是版本: 2.2.6,stm32f4的資源為0.2.2,Agile Modbus軟件包版本為v1.1.2。工程使用上一篇
    的頭像 發(fā)表于 10-11 15:37 ?2668次閱讀
    <b class='flag-5'>RT-Thread</b>中Agile Modbus<b class='flag-5'>軟件包</b>的使用方法

    RT-Thread中mymqtt軟件包的使用方法

    在上一篇文章 RT-Thread中Lan8720和lwip協(xié)議棧的使用的工程基礎(chǔ)上添加mymqtt軟件包。 使能mqtt example和mqtt test,保存,等待下載更新軟件包。
    的頭像 發(fā)表于 10-13 10:44 ?974次閱讀
    <b class='flag-5'>RT-Thread</b>中mymqtt<b class='flag-5'>軟件包</b>的使用方法
    RM新时代网站-首页