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