一、前言
分享的很多項(xiàng)目里使用了ESP8266-WIFI模塊,通過(guò)WIFI模塊連接了物聯(lián)網(wǎng)平臺(tái),利用MQTT協(xié)議完成數(shù)據(jù)通信。
ESP8266-WIFI模塊 要能夠正常上網(wǎng),需要上電之后,連接熱點(diǎn)(也就是可以上網(wǎng)的WIFI),然后它才可以連接互聯(lián)網(wǎng),才可以去連接MQTT服務(wù)器。
那么這篇文章就是解決關(guān)于ESP8266-WIFI無(wú)法連接熱點(diǎn)或者硬件檢測(cè)錯(cuò)誤的問(wèn)題進(jìn)行處理。
二、ESP8266問(wèn)題解決
2.1 ESP8266-WIFI模塊 購(gòu)買(mǎi)
常見(jiàn)的ESP8266-WIFI就是下面的這款模塊。
2.2 與STM32單片機(jī)連線
一般項(xiàng)目里,ESP8266-WIFI模塊與單片機(jī)的連線如下說(shuō)明。
PA2----->ESP8266的RXD
PA3----->ESP8266的TXD
GND----->GND 地
VCC----->5.0V
要認(rèn)真檢查接線是否正確。
如果接線不正確,或者 模塊壞了。
那么顯示屏上會(huì)顯示ESP8266 ERROR
。 或者 卡在WIFI Init
這樣的字樣。
再檢查一下電源模塊的接線,確認(rèn)電源是否正常:
https://blog.csdn.net/xiaolong1126626497/article/details/146071578
如果最終測(cè)試還是不行?
就按下面的視頻去測(cè)試下。
【ESP8266-WIFI模塊串口調(diào)試過(guò)程講解】
ESP8266-WIFI模塊串口調(diào)試過(guò)程講解
按下面的命令順序配置,測(cè)試WIFI的鏈接。 (串口調(diào)試助手記得勾選新行)
AT
ATE0
AT+CWMODE=1
AT+RST
ATE0
AT+CWLAP
AT+CWJAP="abc","12345678"
AT+CIPMUX=0
AT+CIPMODE=1
AT+CIPSTART="TCP","117.78.5.125",1883
AT+CIPSEND
以下是每個(gè)指令的解釋?zhuān)?/strong>
(1)“ATrn”:這是用于測(cè)試ESP8266模塊是否正常工作的基本指令。發(fā)送此指令后,模塊應(yīng)該回復(fù) “OKrn”。
(2)“ATE0rn”:這個(gè)指令用于關(guān)閉回顯功能。當(dāng)回顯功能關(guān)閉時(shí),模塊不會(huì)將接收到的指令發(fā)送回串口?;貜?fù) “OKrn” 表示指令執(zhí)行成功。
(3)“AT+CWMODE=1rn”:這個(gè)指令設(shè)置ESP8266模塊為STA(站點(diǎn))模式,即將其配置為連接到現(xiàn)有無(wú)線網(wǎng)絡(luò)的客戶(hù)端?;貜?fù) “OKrn” 表示指令執(zhí)行成功。
(4)“AT+RSTrn”:這個(gè)指令用于重啟ESP8266模塊。模塊將重新啟動(dòng)并返回 “readyrn” 表示準(zhǔn)備就緒。
(5)“ATE0rn”:同第二條指令一樣,這個(gè)指令再次關(guān)閉回顯功能。
(6)“AT+CWLAPrn”:這個(gè)指令用于查詢(xún)附近可連接的無(wú)線網(wǎng)絡(luò)。模塊將返回一個(gè)列表,包含可用網(wǎng)絡(luò)的信息。
(7)“AT+CWJAP=“abc”,“12345678”rn”:這個(gè)指令用于連接到指定的無(wú)線網(wǎng)絡(luò)。在此示例中,通過(guò)SSID為 “abc” 的無(wú)線網(wǎng)絡(luò),并使用密碼 “12345678” 進(jìn)行連接?;貜?fù) “OKrn” 表示指令執(zhí)行成功。
(8)“AT+CIPMUX=0rn”:這個(gè)指令用于禁用多連接模式?;貜?fù) “OKrn” 表示指令執(zhí)行成功。
(9)“AT+CIPMODE=1rn”:這個(gè)指令用于設(shè)置傳輸模式為透明傳輸模式。在透明傳輸模式下,ESP8266模塊將直接將串口數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)連接中。回復(fù) “OKrn” 表示指令執(zhí)行成功。
(10)“AT+CIPSTART=“TCP”,“117.78.5.125”,1883rn”:這個(gè)指令用于建立與指定TCP服務(wù)器的連接。在此示例中,將與IP地址為 “117.78.5.125”、端口號(hào)為1883的服務(wù)器建立連接。回復(fù) “OKrn” 表示指令執(zhí)行成功。
(11)“AT+CIPSENDrn”:這個(gè)指令用于發(fā)送數(shù)據(jù)到已建立的TCP連接。發(fā)送此指令后,模塊將進(jìn)入發(fā)送模式,并等待用戶(hù)輸入要發(fā)送的數(shù)據(jù)??梢酝ㄟ^(guò)向模塊發(fā)送數(shù)據(jù)來(lái)進(jìn)行通信。
如果測(cè)試也還是不行,就只能重新買(mǎi)新的模塊了。
2.3 熱點(diǎn)如何設(shè)置?
ESP8266-WIFI模塊只能連接2.4GHZ的WIFI熱點(diǎn)。
如果你是用手機(jī)開(kāi)啟熱點(diǎn),那么設(shè)置一定要正確。
如果正常設(shè)置了還是連接不上。 就按下面的截圖這樣設(shè)置。再去測(cè)試。
也就是關(guān)閉安全性,不要設(shè)置密碼(單片機(jī)的代碼不用改
)。
2.4 正常的WIFI上電過(guò)程如下
ESP8266WIFI+OLED顯示屏演示上云初始化過(guò)程
三、ESP8266-WIFI介紹
ESP8266是一款低成本、高性能的Wi-Fi模塊,由樂(lè)鑫科技(Espressif Systems)開(kāi)發(fā)。其核心是一顆集成了32位Tensilica L106微處理器的芯片,主頻可達(dá)80MHz或160MHz(超頻模式),同時(shí)內(nèi)置了Wi-Fi通信功能和TCP/IP協(xié)議棧。該模塊支持IEEE 802.11 b/g/n無(wú)線標(biāo)準(zhǔn),工作頻段為2.4GHz,能夠?qū)崿F(xiàn)STA(客戶(hù)端)、AP(熱點(diǎn))或STA+AP混合模式,適合構(gòu)建物聯(lián)網(wǎng)設(shè)備的無(wú)線連接。
模塊通過(guò)串口(UART)與主控設(shè)備通信,支持AT指令集,可快速實(shí)現(xiàn)網(wǎng)絡(luò)配置與數(shù)據(jù)傳輸。開(kāi)發(fā)者也可直接在其上編程,利用豐富的SDK開(kāi)發(fā)包或第三方平臺(tái)(如Arduino、Lua、MicroPython)進(jìn)行深度開(kāi)發(fā),無(wú)需外接主控芯片。其GPIO、PWM、I2C、SPI等接口擴(kuò)展了傳感器、顯示屏等外設(shè)的連接能力,適用于智能家居、遠(yuǎn)程監(jiān)控等場(chǎng)景。
ESP8266的供電電壓為3.3V,典型功耗在持續(xù)工作時(shí)約80mA,支持深度睡眠模式(電流低至20μA),適合電池供電設(shè)備。模塊尺寸小巧,常見(jiàn)封裝包括ESP-01、ESP-12E等,不同型號(hào)對(duì)應(yīng)不同引腳數(shù)量和板載天線設(shè)計(jì)(如PCB天線或外接天線接口)。
其開(kāi)源生態(tài)系統(tǒng)和活躍的社區(qū)支持(如ESP-Open-SDK、PlatformIO)降低了開(kāi)發(fā)門(mén)檻。通過(guò)OTA(空中升級(jí))功能可遠(yuǎn)程更新固件,而內(nèi)置的Flash存儲(chǔ)器(通常4MB)支持程序存儲(chǔ)與文件系統(tǒng)。盡管存在內(nèi)存限制和并發(fā)處理能力較弱的問(wèn)題,但其性?xún)r(jià)比仍使其成為物聯(lián)網(wǎng)入門(mén)級(jí)項(xiàng)目的首選方案之一。
四、MQTT協(xié)議
MQTT(Message Queuing Telemetry Transport)是一種輕量級(jí)的即時(shí)通信協(xié)議,專(zhuān)為低帶寬、高延遲或不穩(wěn)定的網(wǎng)絡(luò)環(huán)境設(shè)計(jì),尤其適用于物聯(lián)網(wǎng)(IoT)場(chǎng)景。其核心采用發(fā)布/訂閱(Pub/Sub)模式,通過(guò)**主題(Topic)**實(shí)現(xiàn)消息的過(guò)濾與路由,發(fā)布者(Publisher)將消息發(fā)送到指定主題,訂閱者(Subscriber)通過(guò)訂閱主題接收相關(guān)消息,代理服務(wù)器(Broker)負(fù)責(zé)中轉(zhuǎn)和管理通信過(guò)程。這種機(jī)制有效解耦了設(shè)備間的直接依賴(lài),提升了系統(tǒng)的靈活性和擴(kuò)展性。
MQTT協(xié)議定義了三種服務(wù)質(zhì)量等級(jí)(QoS):QoS 0(最多一次,不保證送達(dá))、QoS 1(至少一次,需確認(rèn))和QoS 2(恰好一次,嚴(yán)格確保可靠性),開(kāi)發(fā)者可根據(jù)場(chǎng)景需求平衡效率與可靠性。協(xié)議頭部極簡(jiǎn),最小僅需2字節(jié),顯著降低了網(wǎng)絡(luò)開(kāi)銷(xiāo)。同時(shí),MQTT支持心跳機(jī)制(Keep Alive),用于維持長(zhǎng)連接并檢測(cè)設(shè)備狀態(tài)異常,還提供**遺囑消息(Last Will)**功能,可在設(shè)備意外離線時(shí)自動(dòng)通知其他客戶(hù)端。
安全性方面,MQTT支持基于SSL/TLS的加密通信,以及用戶(hù)名/密碼認(rèn)證,但需開(kāi)發(fā)者主動(dòng)配置以規(guī)避未授權(quán)訪問(wèn)風(fēng)險(xiǎn)。協(xié)議本身無(wú)狀態(tài),但可通過(guò)Clean Session標(biāo)志控制是否保留會(huì)話信息(如未完成的消息隊(duì)列)。其輕量化特性使其廣泛應(yīng)用于智能家居、工業(yè)傳感器、車(chē)聯(lián)網(wǎng)等場(chǎng)景,例如遠(yuǎn)程設(shè)備監(jiān)控、實(shí)時(shí)數(shù)據(jù)采集與推送。
MQTT協(xié)議的常見(jiàn)實(shí)現(xiàn)包括開(kāi)源代理服務(wù)器Mosquitto、EMQ X,以及客戶(hù)端庫(kù)如Eclipse Paho。2019年發(fā)布的MQTT 5.0版本新增了會(huì)話過(guò)期、原因碼、共享訂閱等功能,進(jìn)一步優(yōu)化了大規(guī)模部署能力。盡管協(xié)議簡(jiǎn)單,其設(shè)計(jì)哲學(xué)“以最少資源實(shí)現(xiàn)可靠通信”使其成為物聯(lián)網(wǎng)領(lǐng)域事實(shí)上的標(biāo)準(zhǔn)協(xié)議之一。