ESP8266串口wifi模塊
簡介
ESP8266 是一種低成本、高性能的 Wi-Fi 模塊,內(nèi)置了 TCP/IP 協(xié)議棧,它可以作為單獨(dú)的無線網(wǎng)絡(luò)控制器,或者與其他微控制器進(jìn)行串口通信。它具有以下特點(diǎn):
1、采用CH340芯片,是一款高性價(jià)比開發(fā)板;
2、設(shè)計(jì),使USB接口更加牢固;
3、文檔資料齊全,任何人可免費(fèi)獲取,僅供傳閱;
4、每一塊出貨板子都是經(jīng)過嚴(yán)格測試(測試一塊板子需2-5分鐘),嚴(yán)格把控質(zhì)量。
支持無線802.11 b/g/n標(biāo)準(zhǔn);
支持STA/AP/STA+AP三種工作模式;
內(nèi)置TCP/IP協(xié)議棧,支持多路TCPClient連接(5MAX);
傳輸速率:110-460800bps:支持UART/GPIO數(shù)據(jù)通信接口;支持遠(yuǎn)程固件升級(jí)(OTA);工作溫度:-40℃~+125℃;驅(qū)動(dòng)形式:雙路大功率H橋驅(qū)動(dòng)
在本次實(shí)驗(yàn)中實(shí)現(xiàn)ESP8266手機(jī)點(diǎn)燈,即通過手機(jī) APP 控制 ESP8266 來實(shí)現(xiàn)點(diǎn)亮LED和熄滅LED。
實(shí)驗(yàn)準(zhǔn)備
ESP8266模塊 | 1個(gè) |
---|---|
LED | 1個(gè) |
Microusb數(shù)據(jù)線(用于板子下載程序和供電) | 1條 |
杜邦線 | 若干 |
網(wǎng)絡(luò)調(diào)試助手APP | 1個(gè) |
硬件接線
首先確定led要連接在esp8266的哪個(gè)引腳,查看esp8266引腳定義:
本次實(shí)驗(yàn)點(diǎn)亮LED使用esp8266模塊的D2引腳,通過引腳定義可以知道它為GPIO4. 所以在arduino中定義led引腳為4, 其中l(wèi)ed正極固定接vin給高電平,led負(fù)極通過D2引腳給高低電平變化,控制led的亮滅。硬件連接圖如下:
程序下載
#include <ESP8266WiFi.h>
#define led 4 //led接在esp8266的GPIO4上
const char *ssid = "YXDZ_8266"; //要連接的wifi名稱
const char *password = "12345678"; //連接的wifi密碼
const char *host = "172.21.150.2"; //要連接的手機(jī)端IP,手機(jī)和8266要在同一網(wǎng)絡(luò)下
WiFiClient client; //創(chuàng)建WiFiClient對(duì)象client,用于處理TCP連接
const int tcpPort = 8080; //創(chuàng)建服務(wù)器時(shí)指定的端口號(hào)
void setup()
{
Serial.begin(9600); //初始化串口通信,波特率為9600
pinMode(led,OUTPUT); //將LED引腳設(shè)置為輸出模式
delay(10);
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid); //通過串口顯示連接的wifi名稱
WiFi.begin(ssid, password); //建立WiFi連接
//等待連接建立
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
}
//連接成功信息及打印8266ip地址
Serial.println("");
Serial.println("Connection established!");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void loop()
{
while (!client.connected()) //若未連接到主機(jī),則客戶端進(jìn)行連接
{
if (!client.connect(host, tcpPort))//如果客戶端未連接,使用client.connect()函數(shù)嘗試連接主機(jī)并在500毫秒后再次嘗試
{
Serial.println("connection....");
delay(500);
}
}
while (client.available()) //如果客戶端連接成功,使用while (client.available())循環(huán)處理從主機(jī)接收到的數(shù)據(jù)
{
char val = client.read(); //將接收到的字符存儲(chǔ)在變量val中
if(val=='1'){ //如果val等于'1',則通過將LED引腳設(shè)置為LOW來關(guān)閉LED
digitalWrite(led, LOW);
}
if(val=='0') //如果val等于'0',則通過將LED引腳設(shè)置為HIGH來打開LED
{
digitalWrite(led, HIGH);
}
}
}
上面的代碼實(shí)現(xiàn)了以下功能:
WiFi連接:通過WiFi.begin(ssid, password)語句連接到指定的WiFi網(wǎng)絡(luò)。在setup()函數(shù)中,代碼會(huì)一直等待,直到成功連接到WiFi網(wǎng)絡(luò)為止。連接成功后,通過WiFi.localIP()獲取并打印ESP8266的IP地址。
與手機(jī)端通信:使用client.connect(host, tcpPort)建立與手機(jī)端的TCP連接。在loop()函數(shù)中,代碼會(huì)檢測是否已連接到手機(jī)端。如果未連接,則通過延遲等待一段時(shí)間,并重試連接。一旦成功連接,代碼會(huì)繼續(xù)執(zhí)行。
接收和處理數(shù)據(jù):通過client.available()檢測是否有數(shù)據(jù)可用。如果有數(shù)據(jù)可用,通過client.read()讀取數(shù)據(jù)。在這個(gè)例子中,代碼會(huì)判斷接收到的數(shù)據(jù)是否為1或0,并根據(jù)接收到的值點(diǎn)亮或熄滅連接到ESP8266的LED。
綜上所述,上述代碼實(shí)現(xiàn)了通過ESP8266連接到指定的WiFi網(wǎng)絡(luò),并與手機(jī)端建立TCP連接進(jìn)行數(shù)據(jù)交互。通過接收來自手機(jī)端的指令,控制LED的亮滅。這個(gè)代碼可以作為一個(gè)簡單的遠(yuǎn)程控制示例,可用于控制遠(yuǎn)程設(shè)備的開關(guān)狀態(tài)。
程序完成后我們將程序上傳至esp8266模塊:
程序下載后esp8266會(huì)連接wifi,通過串口可以查看wifi連接相關(guān)信息:
手機(jī)連接與esp8266連接的同一wifi,
手機(jī)上打開網(wǎng)絡(luò)調(diào)試助手,新建服務(wù)器:
點(diǎn)擊新建的服務(wù)器進(jìn)入,會(huì)自動(dòng)監(jiān)聽,顯示已連接,表示手機(jī)端與esp8266已經(jīng)連接成功,此時(shí)就可以通過手機(jī)與esp8266通信了,
選中最下面的紙飛機(jī)可以進(jìn)行快捷發(fā)送,這樣就能比較方便的控制led的亮滅了。
實(shí)驗(yàn)效果:
注意事項(xiàng)
在使用以上代碼實(shí)現(xiàn)功能時(shí),請(qǐng)注意以下幾點(diǎn):
-
替換ssid和password變量的值為您要連接的WiFi網(wǎng)絡(luò)的憑據(jù)。確保憑據(jù)正確,以便ESP8266能夠成功連接到WiFi網(wǎng)絡(luò)。
-
替換host變量的值為您要連接的主機(jī)的IP地址。確保IP地址正確,以便ESP8266能夠成功建立TCP連接。
-
確保連接的主機(jī)在指定的端口上監(jiān)聽TCP連接。在代碼中,端口號(hào)為8080,如果您的主機(jī)使用了不同的端口,請(qǐng)相應(yīng)地修改tcpPort常量的值。
-
根據(jù)您的硬件連接,確保將LED正確連接到ESP8266模塊的指定引腳。在代碼中,LED連接到引腳4,如果您將LED連接到其他引腳,請(qǐng)相應(yīng)地修改led常量的值。
-
如果您的主機(jī)發(fā)送的數(shù)據(jù)是按照不同的格式或協(xié)議進(jìn)行的,請(qǐng)根據(jù)您的需求修改loop()函數(shù)中處理接收數(shù)據(jù)的代碼。目前的代碼只是簡單地根據(jù)接收到的字符來控制LED的狀態(tài)。
-
如果手機(jī)上沒有對(duì)應(yīng)的網(wǎng)絡(luò)調(diào)試助手,也可以通過電腦PC端的網(wǎng)絡(luò)調(diào)試助手進(jìn)行連接,這里推薦一個(gè)方便好用的軟件NetAssist,支持快捷指令發(fā)送,和手機(jī)上的實(shí)驗(yàn)效果一樣。
在使用代碼之前,確保您已經(jīng)安裝了適用于ESP8266開發(fā)板的Arduino開發(fā)環(huán)境,并正確配置了開發(fā)環(huán)境。這包括選擇正確的開發(fā)板和端口,并安裝了ESP8266庫。
總結(jié)
本文主要介紹了ESP8266連接WiFi并與手機(jī)端通信的功能。使用ESP8266WiFi庫來連接WiFi網(wǎng)絡(luò),并使用WiFiClient庫與手機(jī)端進(jìn)行通信。代碼中定義了一個(gè)LED連接到ESP8266的GPIO4上,然后在setup()函數(shù)中初始化串口、LED引腳和WiFi連接。在loop()函數(shù)中,首先檢測是否已連接到服務(wù)端,并在連接成功后開始接收來自手機(jī)端的數(shù)據(jù)。如果收到的數(shù)據(jù)是1,則點(diǎn)亮LED,如果是0,則熄滅LED。文章來源:http://www.zghlxwxcb.cn/news/detail-615178.html
通過本文,我們學(xué)習(xí)了如何使用ESP8266模塊連接到WiFi網(wǎng)絡(luò),并通過與主機(jī)建立TCP連接來控制LED。這是一個(gè)簡單的示例,說明了ESP8266在物聯(lián)網(wǎng)應(yīng)用中的潛力。您可以根據(jù)自己的需求和創(chuàng)意,進(jìn)一步擴(kuò)展該示例,實(shí)現(xiàn)更復(fù)雜的功能。希望這篇文章對(duì)您有所幫助,以上如有錯(cuò)誤,歡迎各位留言指正!謝謝閱讀!文章來源地址http://www.zghlxwxcb.cn/news/detail-615178.html
到了這里,關(guān)于基于ESP8266+網(wǎng)絡(luò)調(diào)試助手點(diǎn)燈實(shí)驗(yàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!