esp8266与51单片机通信(看完不会你打我)用手机控制led灯的亮灭
第一步:所需材料:
我錄制了關(guān)于此課程的視頻,在b站,大家可以前往b站觀看視頻bandicam 2022-05-16 11-45-49-495_嗶哩嗶哩_bilibili
既然你刷到我這篇學(xué)習(xí)總結(jié)了
那說(shuō)明你必然有
1、51單片機(jī)(多數(shù)然應(yīng)該是開(kāi)發(fā)板,我用的是普中A7)————最好還有最小開(kāi)發(fā)系統(tǒng)板
2、esp8266-01S
3、USB轉(zhuǎn)TTL模塊:這個(gè)模塊并不是一定得有,你有開(kāi)發(fā)板那就說(shuō)明可以打開(kāi)串口給單片機(jī)燒錄程序了,但是有了也挺好,可以了解到這個(gè)模塊接線的快樂(lè),還可能遇到因?yàn)殡妷翰蛔銦o(wú)法正常運(yùn)行esp8266的問(wèn)題,不踩坑就沒(méi)辦法進(jìn)步,反正我是踩過(guò)了(無(wú)語(yǔ))
4、杜邦線若干
5、數(shù)據(jù)線——進(jìn)行數(shù)據(jù)傳送,兩根最好,但是要有開(kāi)發(fā)板的電源線也是一樣的,一根數(shù)據(jù)線一根電源線或數(shù)據(jù)線
附圖一張👇
?第二步:PC端通過(guò)USB轉(zhuǎn)TTl配置esp8266——AT指令
1、先說(shuō)USB轉(zhuǎn)TTL與esp8266的接法
| ?USB轉(zhuǎn)TTL模塊 | esp8266 |
| RXD | TX |
| TXD | RX |
| GND | GND |
| 3.3V | 3.3V |
| VCC | EV |
說(shuō)明:
1.TXD發(fā)送引腳、RXD接收引腳,發(fā)送對(duì)接收,所以USB轉(zhuǎn)TTL與esp8266的RXD、TXD交叉相接。
2.3.3V相接后可能無(wú)法啟動(dòng)esp8266,這是因?yàn)閁SB轉(zhuǎn)TTL的3.3V引腳并沒(méi)有真的達(dá)到3.3V,不要慌直接將esp8266的3.3V引腳接入U(xiǎn)SB轉(zhuǎn)TTL的5V引腳,如果esp8266突然就發(fā)熱并且燙的無(wú)法觸摸,立馬拔掉,如果說(shuō)溫度你的觸感還能接受,那就沒(méi)問(wèn)題,畢竟牛X的esp8266沒(méi)那么脆弱。
3.esp8266的EV引腳有些可能會(huì)標(biāo)注成CH_PD,不要怕功能一樣的,接線方式也是一樣的
附圖一張👇
?既然連接好了就說(shuō)說(shuō)怎么用吧
? ? ? ? 連接好之后插入電腦的USB接口,然后打開(kāi)XCOM(串口助手)串口助手網(wǎng)絡(luò)上有好多種,說(shuō)這個(gè)好用那個(gè)好用的,我只相信官方,去安信可科技官網(wǎng)下載串口助手,好不好用是否適合你不清楚,但是我知道他是官方的!!!官方的!!!
? ? ? ? 下載好之后直接可以打開(kāi),串口會(huì)自動(dòng)刷新已連接的串口號(hào),但是可能你電腦連接了多個(gè),那你打開(kāi)自己的計(jì)算機(jī)管理器->設(shè)備管理器->端口查看就行,一般情況下直接刷新了串口點(diǎn)擊選擇即可,我的端口是COM4,波特率115200就可以,因?yàn)閑sp8266出場(chǎng)固件波特率就是115200,而后打開(kāi)串口,如下圖👇
?而后直接點(diǎn)擊發(fā)送就行,然后巴拉巴拉的返回一些數(shù)據(jù)最后返回ready!就說(shuō)明你已經(jīng)連接成功了,很恭喜恭喜!如果不返回?cái)?shù)據(jù),仔細(xì)檢查你線路連接,如果都連接正確,還是不返回?cái)?shù)據(jù),把線拔了在連一次,還是無(wú)法發(fā)送,把EV引腳拔了,還是不行,去安信可科技官網(wǎng)重新刷一遍你的固件。要注意的是:在使用多個(gè)軟件使用串口時(shí)需關(guān)閉其他軟件串口,因?yàn)橐粋€(gè)串口只能被一個(gè)軟件打開(kāi)。如果串口打不開(kāi)可能是電腦缺少CH340驅(qū)動(dòng)。
安信可科技官網(wǎng)里面這些基礎(chǔ)的資料都有自己慢慢探索~~~
?現(xiàn)在進(jìn)行用電腦對(duì)esp8266進(jìn)行At指令配置(我只講我用的AT指令,至于每條AT指令什么意思自己多去看看AT指令集,網(wǎng)上很多自己查吧)
1——首先發(fā)送? AT+CWMODE=3 既然是WiFi模塊 他就既可以作為客戶(hù)端連接別人的熱點(diǎn),也可以做服務(wù)端讓別人連接它的熱點(diǎn) 。
| AT+CWMODE=1 | 1 Station 模式 |
| AT+CWMODE=2 | 2 AP 模式 |
| AT+CWMODE=3 | 3 AP 兼 Station 模式 |
AP模式:提供無(wú)線網(wǎng)絡(luò)接入服務(wù),允許其他無(wú)線設(shè)備連接其網(wǎng)絡(luò),類(lèi)似無(wú)線路由器。
Station模式:本身不提供無(wú)線接入服務(wù),可以連接AP,類(lèi)似無(wú)線終端設(shè)備。
先跟著我的步驟走,連接成功了在一步一步嘗試別的模式
2——其次發(fā)送? ?AT+CWSAP="ESP8266","12345678",11,3(里面的參數(shù)可以自行修改)
該指令的說(shuō)明如下圖👇
?3——因?yàn)閱纹瑱C(jī)的波特率最高就9600,所以為了后面單片機(jī)和esp8266正常通信,還要發(fā)送一條指令修改esp8266的波特率?AT+CIOBAUD=9600,8,1,0,0 返回ok后? 記得將串口先斷開(kāi)然后把串口助手的波特率也進(jìn)行修改 9600
4——最后一步 發(fā)送AT+RST 重啟esp8266就完事了? 然后你就可以把USB轉(zhuǎn)TTL的線全部拆了? 突然感覺(jué)輕松好多吧哈哈哈
第三步:單片機(jī)與esp8266通信
? ? ? ? 網(wǎng)上有好多示例點(diǎn)燈的,他們的側(cè)重點(diǎn)好像都是在程序上,程序自然很重要,但是程序要與實(shí)際的開(kāi)發(fā)板電路原理圖相匹配才可以,要不然你程序?qū)懙臒o(wú)論多么規(guī)范,都完成不了你所需要實(shí)現(xiàn)的內(nèi)容。
? ? ? ? 也是因?yàn)椴殚喓枚噘Y料都在講程序怎么樣怎么樣,導(dǎo)致我一直覺(jué)得是我程序的問(wèn)題,也是廢了好大的勁才完成最最最基本的點(diǎn)燈實(shí)驗(yàn)。下面就開(kāi)始講我遇到的坑吧。
? ? ? ? 為了寫(xiě)這篇文章,我自己編寫(xiě)了一個(gè)最最最簡(jiǎn)單的點(diǎn)燈程序(別人的程序都是判斷這個(gè)判斷哪個(gè) 一共七八個(gè)燈一起亮,太麻煩了 對(duì)我這樣的小白來(lái)說(shuō)就像天書(shū)一樣)
#include<reg51.h>#define uint unsigned int #define uchar unsigned charsbit led1=P1^1; sbit led2=P1^2; sbit led3=P1^3;uchar Recive_table[15]; uint i; void delay_ms(uint ms) {uchar i,j;for(i=ms;i>0;i--)for(j=120;j>0;j--); }void delay_us(uchar us) {while(us--); }void Usart_Init()//初始化51單片機(jī) {SCON = 0x50;//串行口中斷方式一,且啟動(dòng)串行口接受(REN=1)TMOD = 0x20;//計(jì)數(shù)器1工作方式2,自動(dòng)重裝載TH1 = 0xfd;//設(shè)置波特率與esp8266達(dá)成一致TL1 = TH1;PCON = 0;//波特率不加倍TR1 = 1;//啟動(dòng)計(jì)數(shù)器EA = 1;//開(kāi)總中斷 }void SENT_At(uchar *At_Comd)//指針指向At指令 {ES = 0;//關(guān)閉串口中斷while(*At_Comd!='\0'){SBUF = *At_Comd;while(!TI);//等待該字節(jié)發(fā)送完畢,發(fā)送完后硬件自動(dòng)置一TITI = 0;//硬件之以后必須軟件置零才能進(jìn)行下一次數(shù)據(jù)傳送delay_us(5);At_Comd++;//指向下一個(gè)字節(jié)} } void WIFI_Init()//通過(guò)單片機(jī)配置AT指令 {SENT_At("AT+CIPMUX=1\r\n");//多連接模式delay_ms(1000);led1=0;//發(fā)送成功后亮燈SENT_At("AT+CIPSERVER=1,8080\r\n");//設(shè)置端口號(hào)delay_ms(1000);led2=0;//設(shè)置成功后亮2號(hào)燈ES = 1; }void main() {Usart_Init();WIFI_Init();while(1); }void Uart() interrupt 4 //中斷程序 {if(RI==1)//接受一幀完成后由硬件置一{RI = 0;//軟件清零,防止下次未接收完成就執(zhí)行程序Recive_table[i] = SBUF; //將接受數(shù)據(jù)存入數(shù)組if(Recive_table[0]=='+')i++;elsei = 0;if(i>=10){if((Recive_table[0]=='+')&&(Recive_table[1]=='I')&&(Recive_table[2]=='P')&&(Recive_table[3]=='D')){if(Recive_table[9]=='1')//輸入1亮燈led3 = 0;if(Recive_table[9]=='0')//輸入0關(guān)燈led3 = 1;}i = 0;//如果不清零 就無(wú)法達(dá)到變化}}elseTI = 0; }是時(shí)候講講我遇到的最大的坑了,就是我開(kāi)發(fā)板(普中A7)
?由圖我們可以看得出單片機(jī)的TXD、RXD兩個(gè)引腳分別要出兩個(gè)公引腳? 一對(duì)是P3^0/P3^1 還有一對(duì)是開(kāi)發(fā)板上USB轉(zhuǎn)TTl的J44、J39排針上,所以當(dāng)你USB轉(zhuǎn)TTL上的跳線帽沒(méi)有摘的時(shí)候,你把esp8266上的RXD、TXD引腳接入P3^0/P3^1引腳上的時(shí)候單片機(jī)就不知道你到底要給誰(shuí)發(fā)送數(shù)據(jù)了,單片機(jī)也不知道自己到要接受誰(shuí)的數(shù)據(jù),單片機(jī)就會(huì)說(shuō),這啥啊這是!!!哈哈哈
? ? ? ? 所以正確的做法是把開(kāi)發(fā)板上USB轉(zhuǎn)TTL的跳線帽拔掉然后,插上esp8266的數(shù)據(jù)線就可以啦
????????但是有些開(kāi)發(fā)板可能沒(méi)有跳線帽是PCB內(nèi)部接線,這就是開(kāi)頭所說(shuō)到的,要一個(gè)開(kāi)發(fā)板最小系統(tǒng)
?
第四步:網(wǎng)絡(luò)調(diào)試助手
最后一步啦
打開(kāi)手機(jī)上的網(wǎng)絡(luò)調(diào)試助手,這個(gè)時(shí)候是不是又在想用哪一款網(wǎng)絡(luò)調(diào)試助手呢,回答是一樣的安信可科技,自己上官網(wǎng)搜索,雖然它里面有些性能真的不太好,但是他的界面我太愛(ài)了,官網(wǎng)就是牛X!
打開(kāi):點(diǎn)擊左側(cè)三條杠? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 點(diǎn)擊TCP Client? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?輸入以下IP地址 和 端口號(hào)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?發(fā)送1led3亮? ?發(fā)送0led3 滅?
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?注意:打開(kāi)手機(jī)上網(wǎng)絡(luò)助手時(shí),應(yīng)該先連接esp8266所建立的熱點(diǎn),進(jìn)入網(wǎng)絡(luò)助手后記得單片機(jī)重新上電,使單片機(jī)程序At指令重新配置esp8266.連接esp8266wifi后記得關(guān)閉自己手機(jī)的流量!!!
最后說(shuō)明:::
? ? ? ? 我也是查了好多資料總完成的通信,每個(gè)人的開(kāi)發(fā)板都不同,所用元器件也不一樣,但是原理是一樣的,特別感謝? ?趕路人的星光? 他寫(xiě)的文章中有一篇也是關(guān)于點(diǎn)燈的 超級(jí)詳細(xì)?
? ? ? ? 這個(gè)文章也是我剛剛完成點(diǎn)燈后寫(xiě)的學(xué)習(xí)記錄心得,肯定有說(shuō)錯(cuò)講錯(cuò)的地方,如果本人有讓您刷到這篇文章了,可以積極評(píng)論,指出我的不足或者您的疑問(wèn),看到消息后會(huì)第一時(shí)間回復(fù)
剛開(kāi)始使用博客,如果本文章對(duì)大家有用,希望大家關(guān)注走一波,有機(jī)會(huì)共同學(xué)習(xí)進(jìn)步。
總結(jié)
以上是生活随笔為你收集整理的esp8266与51单片机通信(看完不会你打我)用手机控制led灯的亮灭的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: css中字体下划线样式,css下划线 浅
- 下一篇: Beosin EOS-IDE 升级用户体