您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>電子元器件>芯片引腳圖>

esp8266中文資料匯總(esp8266引腳圖_與單片機(jī)連接_串口wifi實(shí)例)

2018年05月24日 08:36 網(wǎng)絡(luò)整理 作者: 用戶評(píng)論(0

  esp8266引腳圖及功能

esp8266中文資料匯總(esp8266引腳圖_與單片機(jī)連接_串口wifi實(shí)例)
esp8266中文資料匯總(esp8266引腳圖_與單片機(jī)連接_串口wifi實(shí)例)
esp8266中文資料匯總(esp8266引腳圖_與單片機(jī)連接_串口wifi實(shí)例)

  ESP8266特性

  *802.11 b/g/n

  *內(nèi)置低功耗32位CPU:可以兼作應(yīng)用處理器

  *內(nèi)置10 bit高精度ADC

  *內(nèi)置TCP/IP協(xié)議棧

  *內(nèi)置TR開(kāi)關(guān)、balun、LNA、功率放大器和匹配網(wǎng)絡(luò)

  *內(nèi)置PLL、穩(wěn)壓器和電源管理組件

  *支持天線分集

  *STBC、1x1 MIMO、2x1 MIMO

  *A-MPDU、A-MSDU的聚合和0.4 s的保護(hù)間隔

  *WiFi @ 2.4 GHz,支持 WPA/WPA2 安全模式

  *支持STA/AP/STA+AP工作模式

  *支持Smart Config功能(包括AndroidiOS設(shè)備)

  *SDIO 2.0、(H) SPI、UARTI2C、I2S、IR Remote Control、PWM、GPIO

  *深度睡眠保持電流為10 uA,關(guān)斷電流小于5 uA

  *2 ms之內(nèi)喚醒、連接并傳遞數(shù)據(jù)包

  *802.11b模式下+20 dBm的輸出功率

  *待機(jī)狀態(tài)消耗功率小于1.0 mW (DTIM3)

  *工作溫度范圍:-40°C - 125°C

  *通過(guò) FCC, CE, TELEC, WiFi Alliance 及 SRRC 認(rèn)證

  5V單片機(jī)與3.3V的ESP8266串口連接

esp8266中文資料匯總(esp8266引腳圖_與單片機(jī)連接_串口wifi實(shí)例)

  ESP8266最小系統(tǒng)與單片機(jī)最小系統(tǒng)連接

esp8266中文資料匯總(esp8266引腳圖_與單片機(jī)連接_串口wifi實(shí)例)

  在正常使用的時(shí)候,固件刷寫開(kāi)關(guān)不需要打開(kāi),如果需要熱刷寫固件,可以考慮將刷寫固件的引腳與單片機(jī)的引腳相連。

  ESP8266內(nèi)是一塊單片機(jī),也可以通過(guò)模塊本身直接控制開(kāi)關(guān),本文僅使用模塊的TCP透?jìng)鞴δ?,這里不再展開(kāi)。

  單片機(jī)程序編寫

 ?。?)首先定義如下變量/常量:

  /**********類型定義**************/

  #define u8 unsigned char

  #define u16 unsigned int

  #define u32 unsigned long

  #define code const

  /***********IO定義***************/

  //定義P5.5口 LED指示燈

  sbit LED=P2^4;

  /**********緩存變量**************/

  //串口接受緩存

  u8 xdata RX_buffer[tbuf];

  //接收計(jì)數(shù)變量

  u8 RX_num;

  /**********預(yù)定義字符串**************/

  //握手連接指令,返回“OK”

  u8 code esp_at[]=“AT ”;

  //設(shè)置ESP8266的工作模式1 Station,返回“OK”或者“no change”

  u8 code esp_cwmode[]=“AT+CWMODE=1 ”;

  //連接到WiFi熱點(diǎn)或無(wú)線路由上,NXP為無(wú)線路由名稱,12345678為密碼;連接成功返回“OK”

  u8 code esp_cwjap[]=“AT+CWJAP=”NXP“,”123456789“ ”;

  //本機(jī)IP地址查詢指令

  u8 code esp_cifsr[]=“AT+CIFSR ”;

  //連接到TCP服務(wù)器,返回“Linked”

  //192.168.0.149為服務(wù)器IP地址 6000為服務(wù)器端口號(hào) 不同電腦不同軟件可能會(huì)不一樣的

  u8 code esp_cipsta[]=“AT+CIPSTART=”TCP“,”192.168.0.149“,6000 ”;

  // 設(shè)置發(fā)送數(shù)據(jù)長(zhǎng)度

  u8 code esp_cipsend[]=“AT+CIPSEND=5 ”;

  //設(shè)置多鏈接

  u8 code esp_DuoLianjie []=“AT+CIPMUX=1 ”;

  //設(shè)置端口號(hào)

  u8 code esp_Port []=“AT+CIPSERVER=1,3122 ”;

  //查詢模塊自身IP,返回IP地址

  u8 code esp_IP []=“AT+CIFSR ”;

  //服務(wù)器發(fā)送 握手?jǐn)?shù)據(jù)

  u8 code esp_Woshou []=“:test”;

  //服務(wù)器發(fā)送 LED檢測(cè)數(shù)據(jù)

  u8 code esp_test_LED []=“:LED”;

  //服務(wù)器發(fā)送 打開(kāi)LED

  u8 code esp_LED_ON []=“:LED ON”;

  //服務(wù)器發(fā)送 關(guān)閉LED

  u8 code esp_LED_OFF []=“:LED OFF”;

  //復(fù)位重啟

  u8 code esp_Rst []=“AT+RST ”;

  //發(fā)送數(shù)據(jù)長(zhǎng)度

  u8 code esp_DATA []=“AT+CIPSEND=1024 ”; 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152

  接下來(lái)是緩存字符串比較函數(shù),用于判斷返回值中是否含有OK等來(lái)自ESP8266模塊的工作標(biāo)識(shí)。如需用到更復(fù)雜的匹配,可以將之替換為正則表達(dá)式引擎。

  //指定字符串與緩存數(shù)組數(shù)據(jù)進(jìn)行數(shù)據(jù)比較

  //*p 要比較的指定字符串指針數(shù)據(jù)

  //返回:1 數(shù)據(jù)一致 0 數(shù)據(jù)不一致

  u8 Data_compare(u8 *p)

  {

  if(strstr(RX_buffer,p)!=NULL)

  return 1;

  else

  return 0;

  }12345678910

  程序的變量已經(jīng)定義完,接下來(lái)是介紹主程序的部分。

  (2)端口初始化

  51單片機(jī)部分無(wú)需初始化端口,另一部分需要初始化端口才能使用:

  //針對(duì) IAP15W4K61S4 STC15W4K56S4 系列 IO口初始化

  //io口初始化 P0 P1 P2 P3 P4 為準(zhǔn)雙向IO口

  //注意: STC15W4K32S4系列的芯片,上電后所有與PWM相關(guān)的IO口均為

  // 高阻態(tài),需將這些口設(shè)置為準(zhǔn)雙向口或強(qiáng)推挽模式方可正常使用

  //相關(guān)IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2

  // P2.3/P2.7/P3.7/P4.2/P4.4/P4.5

  void IO_init(void)

  {

  P0M0 = 0X00;

  P0M1 = 0X00;

  P1M0 = 0X00;

  P1M1 = 0X00;

  P2M0 = 0X00;

  P2M1 = 0X00;

  P3M0 = 0X00;

  P3M1 = 0X00;

  P4M0 = 0X00;

  P4M1 = 0X00;

  }1234567891011121314151617181920212223

  串口配置及中斷配置:

  void UartInit(void)

  {

  S2CON = 0x50; //8位數(shù)據(jù),可變波特率

  AUXR |= 0x04; //定時(shí)器2時(shí)鐘1為FOSC,即1T

  T2L=(65536-(11059200/4/115200)); //設(shè)置定時(shí)初值

  T2H=(65536-(11059200/4/115200))》》8; //設(shè)置定時(shí)初值

  AUXR |= 0x10; //啟動(dòng)定時(shí)器2

  }

  //串口2發(fā)送串口數(shù)據(jù)(字節(jié))

  void Uart2SendByte(u8 ch)

  {

  S2BUF = ch; //寫數(shù)據(jù)到UART2數(shù)據(jù)寄存器

  while(?。⊿2CON&S2TI));

  S2CON&=~S2TI;

  }

  //串口2發(fā)送字符串

  void Uart2SendStr(u8 *s)

  {

  IE2 = 0x00;

  while (*s) //檢測(cè)字符串結(jié)束標(biāo)志

  {

  Uart2SendByte(*s++); //發(fā)送當(dāng)前字符

  }

  IE2 = 0x01;

  }

  //串口2中斷

  void Uart2() interrupt 8 using 1

  {

  IE2 = 0x00; //關(guān)閉串口2中斷

  if (S2CON & S2RI)

  {

  S2CON &= ~S2RI;

  RX_buffer[RX_num] = S2BUF;

  RX_num++;

  if(RX_num》tbuf) RX_num = 0;

  }

  if (S2CON & S2TI)

  {

  S2CON &= ~S2TI;

  }

  IE2 = 0x01; //開(kāi)啟串口2中斷

  }

  1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950

  調(diào)用這一段代碼中的UartInit(void) 函數(shù)初始化串口。

  全部初始化完畢后,就可以使用代碼對(duì)ESP8266配置了。

  // 1 發(fā)送AT 進(jìn)行握手

  while(1)

  {

  Uart2SendStr(esp_at); //串口2對(duì)wifi模塊發(fā)送握手指令 即AT

  if(Data_compare(“OK”))break;

  else Uart1SendStr(“ERROR1,some problems with ESP8266 ”);

  delay1ms(600);

  }

  Uart1SendStr(“OK,mcu connection success with ESP8266! ”);

  memset(RX_buffer, 0, tbuf);//清緩存數(shù)據(jù)

  RX_num=0; //接收計(jì)數(shù)變量清0

  // 2 配置wifi工作模式為SA模式

  while(1)

  {

  Uart2SendStr(esp_cwmode); //串口2對(duì)wifi模塊工作模式進(jìn)行設(shè)置

  if(Data_compare(“OK”)||Data_compare(“no change”))break;

  delay1ms(600);

  }

  memset(RX_buffer, 0, tbuf);//清緩存數(shù)據(jù)

  RX_num=0; //接收計(jì)數(shù)變量清0

  // 3 連接熱點(diǎn)wifi wifi名 密碼 如果失敗 延時(shí)繼續(xù)連接

  while(1)

  {

  Uart2SendStr(esp_cwjap); //串口2發(fā)送 指點(diǎn)wifi名 密碼 等待模塊連接

  if(Data_compare(“OK”))break;

  delay1ms(3000);

  }

  memset(RX_buffer, 0, tbuf);//清緩存數(shù)據(jù)

  RX_num=0; //接收計(jì)數(shù)變量清0

  // 4 設(shè)置多鏈接

  while(1)

  {

  Uart2SendStr(esp_DuoLianjie); //設(shè)置多鏈接

  if(Data_compare(“OK”))break;

  delay1ms(3000);

  }

  memset(RX_buffer, 0, tbuf);//清緩存數(shù)據(jù)

  RX_num=0; //接收計(jì)數(shù)變量清0

  // 5 設(shè)置端口號(hào)

  while(1)

  {

  Uart2SendStr(esp_Port); //設(shè)置端口號(hào)

  if(Data_compare(“OK”))

  {

  delay1ms(3000);

  break;

  }

  delay1ms(3000);

  }

  Uart1SendStr(“OK,Succeed esp_Port ”);

  memset(RX_buffer, 0, tbuf);//清緩存數(shù)據(jù)

  RX_num=0; //接收計(jì)數(shù)變量清0

  esp8266串口wifi實(shí)例

esp8266中文資料匯總(esp8266引腳圖_與單片機(jī)連接_串口wifi實(shí)例)

  引腳連接:

  GND:接地

  GPIO16:其實(shí)是RST,低電平復(fù)位,所以為了正常工作,直接連接VCC即可

  VCC:接3.3V,看過(guò)其他教程說(shuō)不能接5V,不過(guò)小編有試過(guò)直接用5V來(lái)把玩,玩了一段時(shí)間都沒(méi)啥問(wèn)題,可以正常使用。但是有個(gè)問(wèn)題就是芯片很燙,所以用久了可能會(huì)燒壞模塊,而且wifi模塊一過(guò)熱,連接會(huì)很慢。所以,盡量用3.3V。

  UTXD、URXD:前者接單片機(jī)或USB轉(zhuǎn)串口模塊的RXD,后者接TXD。這兩個(gè)可以和5V單片機(jī)的RXD、TXD連接,經(jīng)測(cè)試通信正常,無(wú)需5V轉(zhuǎn)3,3V

  GPIO2、GPIO0:懸空

  CH_PD:看一些教程說(shuō)可以直接接VCC,但經(jīng)測(cè)試不行,電流太大了,所以要經(jīng)電阻連接到VCC,也就是串聯(lián)個(gè)電阻然后電阻再接到VCC,電阻的阻值:數(shù)k。小編用4.7k,其實(shí)這個(gè)沒(méi)什么嚴(yán)格限制

  調(diào)試:

  調(diào)試用的是USB轉(zhuǎn)串口模塊,根據(jù)上面的引腳連接配合面包板進(jìn)行連接。然后就可以插電腦開(kāi)串口助手來(lái)調(diào)試了。波特率的話得自己試,有可能是9600或115200,甚至是其他的。小編有一塊是9600一塊是115200。怎么試呢?在串口助手勾發(fā)送新行,然后發(fā)送AT+RST,如果先出現(xiàn)一堆亂碼最后帶個(gè)ready則說(shuō)明試對(duì)了。然后說(shuō)明該模塊正常是什么大問(wèn)題了,還不放心的話還可以嘗試其他AT指令配合TCP調(diào)試工具來(lái)測(cè)試。

esp8266中文資料匯總(esp8266引腳圖_與單片機(jī)連接_串口wifi實(shí)例)

  示例:

  用單片機(jī)通過(guò)該模塊和上位機(jī)通信的例子(AP模式)

  code uchar at_1[14]={‘A’,‘T’,‘+’,‘C’,‘I’,‘P’,‘M’,‘U’,‘X’,‘=’,‘1’,0x0D,0x0A,‘