找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 39073|回復(fù): 67
收起左側(cè)

單片機(jī)ESP8266無(wú)線(xiàn)傳輸DHT11溫濕度(APP+E4A調(diào)試說(shuō)明與程序設(shè)計(jì))

  [復(fù)制鏈接]
ID:358930 發(fā)表于 2019-1-12 14:32 | 顯示全部樓層 |閱讀模式
1.燒錄固件到ESP8266
2.重啟進(jìn)入運(yùn)行模式(斷開(kāi)IO 0)
3.用電腦收無(wú)線(xiàn)網(wǎng)admin   密碼:12345678 (固件初始的)
4.用電腦打開(kāi)IP網(wǎng)址:10.10.10.208 進(jìn)入設(shè)置
 內(nèi)網(wǎng)IP改為:10.10.10.208  端口:5000
 外網(wǎng)不用動(dòng),其它網(wǎng)絡(luò)名字admin   密碼:12345678 (固件初始的)不用改了
5.安裝手機(jī)APP,點(diǎn)連接。10.10.10.208  端口:5000 (固件初始的)
6.可以操作了。
7.接收溫度和單片串口通訊OK手機(jī)和串口助手都能查看到單片機(jī)的溫度。

制作出來(lái)的實(shí)物圖如下:
20190112_135417.jpg 20190112_135458.jpg 20190112_135520.jpg

APP
Screenshot_2019-01-12-13-53-55.png

ESP8266設(shè)置及說(shuō)明
本設(shè)計(jì)使用ESP8266WIFI模塊實(shí)現(xiàn)單片機(jī)超聲波測(cè)量數(shù)據(jù)向手機(jī)無(wú)線(xiàn)傳輸,讓手機(jī)是顯示測(cè)量結(jié)果。
單片機(jī)與ESP8266通信方式采用AT命令方式,首先由單片機(jī)對(duì)esp8266進(jìn)行初始化,再將手機(jī)連上esp8266的WiFi,然后再通過(guò)手機(jī)端發(fā)送指令,esp8266接收到命令傳入單片機(jī),單片機(jī)再進(jìn)行相應(yīng)的操作。模塊的VCC,GND,TXD,RXD與單片機(jī)的VCC,GND,RXD,TXD接好,以為51單片機(jī)沒(méi)有進(jìn)程和線(xiàn)程的概念,所以就在main函數(shù)的while(1)中放入我們要的主程序,而用串口中斷的方式來(lái)接收esp8266發(fā)過(guò)來(lái)的數(shù)據(jù)信息,從而實(shí)現(xiàn)用esp8266控制單片機(jī)。
ESP8266模塊是3.3V供電! 切記請(qǐng)勿接5V ! 模塊想要從FLASH啟動(dòng)進(jìn)入AT系統(tǒng),只需CH-PD引腳接VCC或接上拉(不接上拉的情況下,串口可能無(wú)數(shù)據(jù)),其余三個(gè)引腳可選擇懸空。(GPIO0為高電平代表從FLASH啟動(dòng),GPIO0為低電平代表進(jìn)入系統(tǒng)升級(jí)狀態(tài),此時(shí)可以經(jīng)過(guò)串口升級(jí)內(nèi)部固件 RST(GPIO16)可做外部硬件復(fù)位使用)。測(cè)試系統(tǒng)不同,接線(xiàn)方法也選擇多多,請(qǐng)各位根據(jù)自己的情況進(jìn)行選擇,推薦接法:只需CH-PD引腳接VCC后,將UTXD,GND,VCC,URXD連上USB-TTL(兩者的TXD和RXD交叉接)即可進(jìn)行測(cè)試。
在本設(shè)計(jì)中,單片機(jī)的串口中斷的波特率設(shè)為9600,記得在將ESP8266模塊與單片機(jī)硬件連接之前,先用USB-TTL模塊連接好ESP8266模塊,將ESP8266模塊用AT命令改為9600的波特率。
使用的命令:
AT+UART=9600,8,1,0,0

AT+CWSAP="wifi_yuan","123456789",11,4 //設(shè)置模塊SSID:WIFI, PWD:密碼 及安全類(lèi)型加密模式(WPA2-PSK)
完成上面兩步后,就可以將ESP8266模塊與單片機(jī)系統(tǒng)連接起來(lái)。原理圖中JP1是ESP8266模塊插座。

參考硬件PCB圖:


網(wǎng)絡(luò)配置固件使用說(shuō)明




Esp8266-01管腳圖

Esp8266程序下載說(shuō)明:1.請(qǐng)將MTDOGPIO0置于低電平,GPIO2置于高電平。
   如果你的模塊沒(méi)有MTDO,請(qǐng)至少將GPIO0置于低電平。
   GPIO0置于低電平是燒寫(xiě)模式,高電平是運(yùn)行模式。
2.請(qǐng)復(fù)位(復(fù)位是指RST低電平脈沖)或重新上電進(jìn)入燒寫(xiě)模式。
3.請(qǐng)不要使用USB轉(zhuǎn)TTL引出的電源,請(qǐng)使用獨(dú)立電源。
4.燒寫(xiě)成功后,請(qǐng)重新上電。模塊波特率更改為9600115200.
5.燒寫(xiě)中途失敗后,請(qǐng)重新上電燒寫(xiě)。
Esp8266下載模式,降CH_PD接入電源,GPIO0接地重要事情說(shuō)3遍。。。!

分別導(dǎo)入下載數(shù)據(jù)。





點(diǎn)擊下載。
8266下載模式重新啟動(dòng)。
下載過(guò)程中顯示數(shù)據(jù)。

            


等待下載完成。
網(wǎng)頁(yè)配置固件配置:將esp8266運(yùn)行模式運(yùn)行,esp8266將運(yùn)行到sta+ap模式,esp8266熱點(diǎn)的SSID是:admin 密碼:12345678 。連接到esp8266熱點(diǎn)后,打開(kāi)游覽器,網(wǎng)址輸入 10.10.10.208  將進(jìn)入如下配置。連接路由器后可以不用連接esp8266的熱點(diǎn)可以直接輸入IP地址配置,具體介紹請(qǐng)看靜態(tài)IP地址設(shè)置。此功能很方便



1.    esp8266熱點(diǎn)名字與密碼修改:
如圖所示,修改帳號(hào)與密碼直接修改就可以,在熱點(diǎn)中不支持中文不支持符號(hào),密碼最少8。



2.    esp8266連接路由器修改:如圖所示,修改連接路由器的的帳號(hào)與密碼和是否連接。帳號(hào)和密碼不支持中文和符號(hào)。
選擇是否連接則會(huì)連接到相應(yīng)的路由器。





3.    通信協(xié)議的設(shè)置:1.    TCP SERVER 服務(wù)器模式設(shè)置:
在tcp 服務(wù)器模式下IP地址無(wú)用靜態(tài)IP如果要用就選擇不用則不選擇功能下面則會(huì)說(shuō)明,只需要設(shè)置相應(yīng)的端口號(hào)則為服務(wù)器的端口號(hào),如果要連接esp8266服務(wù)器模式 IP地址輸入10.10.10.208 輸入其相應(yīng)的端口號(hào)則
進(jìn)入透?jìng)髂J。直接用串口發(fā)送任何消息服務(wù)器都會(huì)接收,反之也是一樣。
2.    TCP Client 客戶(hù)端模式:
在TCP 客戶(hù)端模式中靜態(tài)IP如果要用就選擇不用則不選擇功能下面則會(huì)說(shuō)明,在IP地址中輸入其要連接服務(wù)器的IP地址與端口號(hào)則就可以配置。配置完成后esp8266進(jìn)入透?jìng)。直接用串口發(fā)送消息客戶(hù)端就會(huì)向服務(wù)器發(fā)送消息。(TCP 客戶(hù)端模式必須要連接到路由器才可以開(kāi)啟此功能
3.    UDP: 在UDP中不分客戶(hù)端模式與服務(wù)器模式靜態(tài)IP如果要用就選擇不用則不選擇功能下面則會(huì)說(shuō)明,他是以廣播形式發(fā)送消息。在UDP模式中不管是連接到路由器或者沒(méi)連接到路由器IP地址則輸入的IP是要發(fā)送信息目標(biāo)地址的IP(如果所有的UDP都要接收到IP地址則 255.255.255.255),端口號(hào)則是目標(biāo)的端口號(hào)。4.靜態(tài)IP:
靜態(tài)IP 地址的作用是:連接路由器后固定分配的IP地址,xxx.xxx.xxx.yyy ,xxx是路由器決定(如:192.168.0.yyy),yyy則是你想分配的IP地址,如果要啟動(dòng)靜態(tài)IP地址必須要勾上。
靜態(tài)IP地址設(shè)置后在局域網(wǎng)內(nèi)可以不必連接esp8266的熱點(diǎn)一樣可以配置8266.在連接到路由器后可以直接打開(kāi)路由器在路由器地址輸入設(shè)置的靜態(tài)IP則可以進(jìn)入配置界面。靜態(tài)IP是必須在連接路由器后可以使用。


備注:在使用過(guò)程中不能使用80端口,目前v1.020160531版本IP地址不支持域名解析,下一個(gè)則支持域名解析,在配置完成后要點(diǎn)擊保存就可以了,如果要復(fù)位則電機(jī)復(fù)位就可以了。每種配置完成后都是透?jìng),直接發(fā)送數(shù)據(jù)及可。
如果對(duì)此固件有其他BUG或者要修改固件功能可以直接聯(lián)系作者,如果有更好的設(shè)置方案也可以和作者討論。



ESP8266調(diào)試總結(jié)
ESP8266可以配置成station 、AP、station+AP三種模式,就是說(shuō)模塊可以當(dāng)成一個(gè)設(shè)備(client)連接局域網(wǎng)內(nèi)的路由,也可以設(shè)置成是一個(gè)路由(sever),也可以既作為局域網(wǎng)里面的client同時(shí)又是其它c(diǎn)lient的sever


1、ESP8266 Client模式(Station):

AT+RST                        //復(fù)位模塊
AT+CWMODE=1                    //設(shè)置為station模式
AT+RST                        //重啟生效
AT+CWLAP                    //查看可以連接到的無(wú)線(xiàn)路由
AT+CWJAP="yuan","456852123"            //連接上無(wú)線(xiàn)路由
AT+CIFSR                    //查詢(xún)模塊的IP地址
AT+CIPMUX=1                    //打開(kāi)多連接,否則會(huì)報(bào)錯(cuò)Link typ error
AT+CIPSTART=0,"TCP","192.168.1.111",6060    //連接到TCP Server上 使用網(wǎng)絡(luò)調(diào)試助手創(chuàng)建一個(gè)TCP Server
AT+CIPSEND=0,7                    //發(fā)送字符長(zhǎng)度   
testrun                        //發(fā)送7個(gè)字符給Server端
                        同時(shí)Server端也可以發(fā)數(shù)據(jù)給Client端


單鏈接方式
AT+RST                        //復(fù)位模塊
AT+CWMODE=1                    //設(shè)置為station模式
AT+RST                        //重啟生效
AT+CWLAP                    //查看可以連接到的無(wú)線(xiàn)路由
AT+CWJAP="JSZZSJ3","********"            //連接上無(wú)線(xiàn)路由
AT+CIFSR                    //查詢(xún)模塊的IP地址
AT+CIPMUX=0                    //打開(kāi)單連接,否則會(huì)報(bào)錯(cuò)Link typ error
AT+CIPSTART="TCP","192.168.1.111",6060        //連接到TCP Server上  使用網(wǎng)絡(luò)調(diào)試助手創(chuàng)建一個(gè)TCP Server
AT+CIPSEND=7                    //發(fā)送字符長(zhǎng)度   
testrun                        //發(fā)送7個(gè)字符給Server端
                        同時(shí)Server端也可以發(fā)數(shù)據(jù)給Client端


2、ESP8266 Server模式(Station+AP):
AT+RST                        //復(fù)位模塊
AT+CWMODE=3                    //設(shè)置為AP模式
AT+RST                        //重啟生效
AT+CWLAP                    //查看可以連接到的無(wú)線(xiàn)路由
AT+CWJAP="JSZZSJ3","********"            //連接上無(wú)線(xiàn)路由
AT+CIFSR                    //查詢(xún)模塊的IP地址
AT+CIPMUX=1                    //打開(kāi)多連接
AT+CIPSERVER=1,6060                //建立Server

使用網(wǎng)絡(luò)調(diào)試助手創(chuàng)建一個(gè)TCP Client,設(shè)置好要連接到的Server的IP和端口號(hào),即可連接
Client就可以發(fā)送數(shù)據(jù)給Server端了
如果同時(shí)想Server發(fā)數(shù)據(jù)給Client只要如下命令
AT+CIPSEND=0,7    //發(fā)送字符長(zhǎng)度
就可以發(fā)送數(shù)據(jù)了


3、串口透?jìng)髂J剑═CP模式)
AT+RST                        //復(fù)位模塊
AT+CWMODE=3或者1                 //設(shè)置為AP+Station模式或Station模式
AT+CWLAP                    //查看可以連接到的無(wú)線(xiàn)路由
AT+CWJAP="yuan","456852123"            //連接上無(wú)線(xiàn)路由
AT+CIFSR                    //查詢(xún)模塊的IP地址
AT+CIPSTART="TCP","192.168.1.176",9999        //用手機(jī)做服務(wù)器,打開(kāi)網(wǎng)絡(luò)調(diào)試助手,建一個(gè)TCP server
AT+CIPMODE=1
AT+CIPSEND

接下來(lái)就可以透?jìng)髁?br /> 如果要關(guān)閉透?jìng)飨劝l(fā)送三個(gè)“+”,提示CLOSE后,再勾選發(fā)送新行


4、串口透?jìng)髂J剑║DP模式)
AT+RST                        //復(fù)位模塊
AT+CWMODE=3或者1                 //設(shè)置為AP+Station模式或Station模式
AT+CWLAP                    //查看可以連接到的無(wú)線(xiàn)路由
AT+CWJAP="JSZZSJ3","********"            //連接上無(wú)線(xiàn)路由
AT+CIFSR                    //查詢(xún)模塊的IP地址
AT+CIPSTART="UDP","192.168.1.176",9999,5000,0    //用手機(jī)做服務(wù)器,打開(kāi)網(wǎng)絡(luò)調(diào)試助手,建一個(gè)UDP server
AT+CIPMODE=1
AT+CIPSEND

接下來(lái)就可以透?jìng)髁?br /> 如果要關(guān)閉透?jìng)飨劝l(fā)送三個(gè)“+”,提示CLOSE后,再勾選發(fā)送新行


AT+RESTORE
AT+CIPSTART="UDP","255.255.255.255",5000,5000
AT+CIPMODE=0                    //0  表示單距連接
AT+CIPSEND=5                            //5  是數(shù)據(jù)長(zhǎng)度






給你一個(gè)雙向傳輸?shù)氖纠?br />
A模塊和B模塊先執(zhí)行:
AT+CWMODE=3

A模塊:
AT+CWLAP//列出附近的AP得到B模塊的SSID
AT+CWJAP="B模塊的SSID","PWD"
AT+CIPMUX=0
AT+CIPSTART="UDP","255.255.255.255",6060,6060,0
AT+CIPMODE=1
AT+CIPSEND

B模塊
AT+CIPMUX=0
AT+CIPSTART="UDP","255.255.255.255",6060,6060,0
AT+CIPMODE=1
AT+CIPSEND

單片機(jī)源程序如下:

  1. [code]/********************************************************************/
  2. /*         WIFI無(wú)線(xiàn)傳輸手機(jī)顯示                                                                        */
  3. /********************************************************************/
  4. #include <reg51.h>
  5. #include<intrins.h>
  6. #include <stdio.h>
  7. #define uint unsigned int
  8. #define uchar unsigned char
  9. #define ulong  unsigned long

  10. /*****************相關(guān)變量**************/

  11. uint Receive,i,xm0,xm1,xm2; //溫度傳送用
  12. long s;

  13. uint xm3,xm4,xm5; //濕度傳送用
  14. long s1;




  15. uchar Recive_table[40];                  //用于接收wifi模塊反饋到MCU上的數(shù)據(jù)
  16. uchar code ta[]="0123456789- "; //測(cè)試一下
  17. uchar table[]="溫度:00.0 C  濕度:00.0 %";//傳送用定位模板





  18. void delay (int a)//毫秒級(jí)延時(shí)
  19. {
  20. int x,y;
  21. for(x=a;x>0;x--)
  22.         for(y=110;y>0;y--);
  23. }
  24. void delayus(int t)//微秒級(jí)延時(shí)
  25. {
  26. while(t--);
  27. }
  28. /*******************************************************************
  29. 名稱(chēng):延時(shí)函數(shù)  作用:毫秒級(jí)延時(shí),微妙級(jí)延時(shí)函數(shù),為數(shù)據(jù)收發(fā)完成作等待.......  
  30. ********************************************************************/
  31. void ms_delay(uint t)
  32. {  
  33.         uint i,j;  
  34.         for(i=t;i>0;i--)   
  35.         for(j=110;j>0;j--);
  36. }   

  37. void us_delay(uchar t)
  38. {  
  39.         while(t--);
  40. }         
  41. /*------------------------------------------------
  42. uS延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無(wú)返回值
  43. unsigned char 是定義無(wú)符號(hào)字符變量,其值的范圍是
  44. 0~255 這里使用晶振12M,精確延時(shí)請(qǐng)使用匯編,大致延時(shí)
  45. 長(zhǎng)度如下 T=tx2+5 uS
  46. ------------------------------------------------*/
  47. void DelayUs2x(unsigned char t);
  48. /*------------------------------------------------
  49. mS延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無(wú)返回值
  50. unsigned char 是定義無(wú)符號(hào)字符變量,其值的范圍是
  51. 0~255 這里使用晶振12M,精確延時(shí)請(qǐng)使用匯編
  52. ------------------------------------------------*/
  53. void DelayMs(unsigned char t);
  54. /*------------------------------------------------
  55. uS延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無(wú)返回值
  56. unsigned char 是定義無(wú)符號(hào)字符變量,其值的范圍是
  57. 0~255 這里使用晶振12M,精確延時(shí)請(qǐng)使用匯編,大致延時(shí)
  58. 長(zhǎng)度如下 T=tx2+5 uS
  59. ------------------------------------------------*/
  60. void DelayUs2x(unsigned char t)
  61. {   
  62.          while(--t);
  63. }
  64. /*------------------------------------------------
  65. mS延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無(wú)返回值
  66. unsigned char 是定義無(wú)符號(hào)字符變量,其值的范圍是
  67. 0~255 這里使用晶振12M,精確延時(shí)請(qǐng)使用匯編
  68. ------------------------------------------------*/
  69. void DelayMs(unsigned char t)
  70. {
  71.           while(t--)                 //大致延時(shí)1mS
  72.          {
  73.              DelayUs2x(245);
  74.                  DelayUs2x(245);
  75.          }
  76. }



  77. sbit Data=P3^7;   //定義數(shù)據(jù)線(xiàn)
  78. uchar rec_dat[11];   //用于顯示的接收數(shù)據(jù)數(shù)組

  79. uchar R_H,R_L,T_H,T_L,RH,RL,TH,TL,revise;


  80. void DHT11_delay_us(uchar n)
  81. {
  82.     while(--n);
  83. }

  84. void DHT11_delay_ms(uint z)
  85. {
  86.    uint i,j;
  87.    for(i=z;i>0;i--)
  88.       for(j=110;j>0;j--);
  89. }
  90. void DHT11_start()
  91. {
  92.    Data=1;
  93.    DHT11_delay_us(2);
  94.    Data=0;
  95.    DHT11_delay_ms(20);   //延時(shí)18ms以上
  96.    Data=1;
  97.    DHT11_delay_us(30);
  98. }
  99. uchar DHT11_rec_byte()      //接收一個(gè)字節(jié)
  100. {
  101.    uchar i,dat=0;
  102.   for(i=0;i<8;i++)    //從高到低依次接收8位數(shù)據(jù)
  103.    {         
  104.       while(!Data);   ////等待50us低電平過(guò)去
  105.       DHT11_delay_us(8);     //延時(shí)60us,如果還為高則數(shù)據(jù)為1,否則為0
  106.       dat<<=1;           //移位使正確接收8位數(shù)據(jù),數(shù)據(jù)為0時(shí)直接移位
  107.       if(Data==1)    //數(shù)據(jù)為1時(shí),使dat加1來(lái)接收數(shù)據(jù)1
  108.          dat+=1;
  109.       while(Data);  //等待數(shù)據(jù)線(xiàn)拉低   
  110.     }  
  111.     return dat;
  112. }  



  113. void Uart_Init()                                //使用定時(shí)器1作為波特率發(fā)生器(STC89C52、STC89C51、AT89C51等均可)
  114. {  
  115.     TMOD = 0x21;
  116.     SCON = 0x50;                                 //設(shè)置串行方式
  117.     TH1 = 0xFD;                                         //波特率9600
  118.     TL1 = TH1;
  119.     PCON = 0x00;
  120.     EA = 1;                                                //總中斷打開(kāi)
  121.     ES = 1;                                                //開(kāi)串口中斷  
  122.     TR1 = 1;                                        //啟動(dòng)定時(shí)器1
  123. }

  124. /********************************************************************
  125. 名稱(chēng):串口發(fā)送函數(shù)  功能:MCU向無(wú)線(xiàn)WIFI模塊ESP8266發(fā)送數(shù)據(jù)  
  126. ********************************************************************/
  127. void Send_Uart(uchar value)
  128. {  
  129.         ES=0;                                                  //關(guān)閉串口中斷  
  130.         TI=0;                                           //清發(fā)送完畢中斷請(qǐng)求標(biāo)志位   
  131.         SBUF=value;                                 //發(fā)送  
  132.         while(TI==0);                                 //等待發(fā)送完畢   
  133.         TI=0;                                           //清發(fā)送完畢中斷請(qǐng)求標(biāo)志位   
  134.         ES=1;                                                  //允許串口中斷
  135.         TH0=0;
  136.         TL0=0;  
  137. }  

  138. /********************************************************************
  139. 名稱(chēng):WIFI模塊設(shè)置函數(shù)  作用: 啟動(dòng)模塊,以便可以實(shí)現(xiàn)無(wú)線(xiàn)接入和控制  
  140. ********************************************************************/

  141. void ESP8266_Set(uchar *puf)         // 數(shù)組指針*puf指向字符串?dāng)?shù)組               
  142. {   
  143.         while(*puf!='\0')                    //遇到空格跳出循環(huán)  
  144.         {   
  145.                 Send_Uart(*puf);                  //向WIFI模塊發(fā)送控制指令。   
  146.                 us_delay(5);   
  147.                 puf++;   
  148.         }  
  149.         us_delay(5);  
  150.         Send_Uart('\r');                         //回車(chē)  
  151.         us_delay(5);  
  152.         Send_Uart('\n');                           //換行  
  153. }

  154. /********************************************************************
  155. 名稱(chēng):主函數(shù)  作用:程序的執(zhí)行入口  
  156. ********************************************************************/

  157. void main()
  158. {         
  159.         Uart_Init();                                                                                        //波特率發(fā)生器
  160.         ms_delay(10);
  161.         ESP8266_Set("AT+CWMODE=2");                                                         //設(shè)置路由器模式1 station,模式2 AP,模式3 station+AP混合模式   
  162.         ms_delay(500);
  163. //        ESP8266_Set("AT+RST");                                                                         //重新啟動(dòng)wifi模塊            
  164. //  ms_delay(1000);
  165.         ESP8266_Set("AT+CWSAP=\"wifi_yuan\",\"123456789\",11,4");          //AT+CWSAP="wifi_yuan","123456789",11,4  設(shè)置模塊SSID:WIFI, PWD:密碼 及安全類(lèi)型加密模式(WPA2-PSK)
  166.         ms_delay(500);
  167.         ESP8266_Set("AT+CIPMUX=1");                                                                //開(kāi)啟多連接模式,允許多個(gè)各客戶(hù)端接入
  168.         ms_delay(500);
  169.         ESP8266_Set("AT+CIPSERVER=1,5000");                                          //啟動(dòng)TCP/IP 實(shí)現(xiàn)基于網(wǎng)絡(luò)//控制         ESP8266_Set("AT+CIPSERVER=1,5000");  
  170.         ms_delay(500);
  171.         ESP8266_Set("AT+CIPSTO=0");                                                         //永遠(yuǎn)不超時(shí)
  172.         ms_delay(500);         
  173.         ES=1;                                                                                           //允許串口中斷                 

  174.         while(1)   
  175.         {               
  176.             
  177.                
  178. ///////////////////////////////////////////////////////////////////////////               
  179.     DHT11_start();//讀溫度               
  180.     if(Data==0)
  181.     {
  182.        while(Data==0);   //等待拉高     
  183.       DHT11_delay_us(40);  //拉高后延時(shí)80us
  184.        R_H=DHT11_rec_byte();    //接收濕度高八位  
  185.        R_L=DHT11_rec_byte();    //接收濕度低八位  
  186.         T_H=DHT11_rec_byte();    //接收溫度高八位  
  187.      T_L=DHT11_rec_byte();    //接收溫度低八位
  188.         revise=DHT11_rec_byte(); //接收校正位

  189.         DHT11_delay_us(25);    //結(jié)束

  190.         if((R_H+R_L+T_H+T_L)==revise)      //校正
  191.         {
  192.             RH=R_H;
  193.             RL=R_L;
  194.             TH=T_H;
  195.             TL=T_L;
  196.         }
  197.                 }
  198. /////////////////////////////////////////////////////////////////////////////////               
  199.                                 
  200.                   ms_delay(500);
  201.      //處理溫度部分               
  202.                   s=T_H*10;        
  203.                   xm0=(s/100)%10;//存放百位數(shù)據(jù)
  204.                   xm1=(s/10)%10;  //存放十位數(shù)據(jù)
  205.                   xm2=s%10;  //存放個(gè)位數(shù)據(jù)
  206.                
  207.                   table[6]=ta[xm0];
  208.                   table[7]=ta[xm1];
  209.                   table[9]=ta[xm2];  
  210.            
  211.      //處理濕度部分               
  212.                   s1=R_H*10;               
  213.                   xm3=(s1/100)%10;//存放百位數(shù)據(jù)
  214.                   xm4=(s1/10)%10;  //存放十位數(shù)據(jù)
  215.                   xm5=s1%10;  //存放個(gè)位數(shù)據(jù)
  216.                
  217.                   table[20]=ta[xm3];
  218.                   table[21]=ta[xm4];
  219.                   table[23]=ta[xm5];
  220.                
  221.                                 
  222.                   ESP8266_Set(table);//數(shù)據(jù)發(fā)送出去
  223.             ms_delay(500);
  224.                
  225.         }   
  226. }   

  227. /*********************************************************************  
  228. 名稱(chēng):串行通訊中斷  作用:發(fā)送或接收結(jié)束后進(jìn)入該函數(shù),對(duì)相應(yīng)的標(biāo)志位軟件清0,實(shí)現(xiàn)模塊對(duì)數(shù)據(jù)正常的收發(fā)。  
  229. ********************************************************************/

  230. void Uart_Interrupt() interrupt 4         
  231. {   
  232.         static uchar i=0;  
  233.         if(RI==1)  
  234.         {   
  235.                 RI=0;   
  236.                 Receive=SBUF;                                                        //MCU接收wifi模塊反饋回來(lái)的數(shù)據(jù)      
  237.                 Recive_table[i]=Receive;   
  238.                 if((Recive_table[i]=='\n'))
  239.                 {                     
  240.                         i=0;
  241.                 }   
  242.                 else i++;                                                                                  //遇到換行 重新裝值
  243. ……………………

  244. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
0.png

所有資料51hei提供下載:
STC89溫濕度DHT11+APP+E4A+ESP8266無(wú)線(xiàn)OK.zip (4.06 MB, 下載次數(shù): 1112)

評(píng)分

參與人數(shù) 4黑幣 +127 收起 理由
blywq + 9 很給力!
郝同學(xué) + 6 贊一個(gè)!
WFX777888 + 12 我用的是8266 12F去哪里下載固件啊
admin + 100 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:358930 發(fā)表于 2019-1-12 14:37 | 顯示全部樓層
這是同時(shí)傳輸兩個(gè)變量的程序,含源代碼和E4A和手機(jī)APP全部都打包調(diào)試通過(guò),這個(gè)傳輸有點(diǎn)像GPS一次傳個(gè)一串,然后再顯示自己要的,本來(lái)下位機(jī)還要做個(gè)OLED顯示的,下次升級(jí)哈
回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2019-1-12 17:45 | 顯示全部樓層
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

ID:34643 發(fā)表于 2019-1-12 18:11 | 顯示全部樓層
樓主,這個(gè)好像不是你的源創(chuàng),溫濕度的程序,卻配上了超聲波測(cè)距的PCB圖、原理圖,容易誤導(dǎo)。。。。。。。文章中細(xì)述也有錯(cuò)誤。
回復(fù)

使用道具 舉報(bào)

ID:358930 發(fā)表于 2019-1-12 19:18 來(lái)自手機(jī) | 顯示全部樓層
51mcu 發(fā)表于 2019-1-12 18:11
樓主,這個(gè)好像不是你的源創(chuàng),溫濕度的程序,卻配上了超聲波測(cè)距的PCB圖、原理圖,容易誤導(dǎo)。。。。。。。 ...

對(duì)的,其他程序改的,只是實(shí)現(xiàn)功能,PCB什么的這個(gè)程序也沒(méi)有什么實(shí)用性,我就沒(méi)時(shí)間去改了,還是請(qǐng)各位自行訂證。!哈哈哈哈,因?yàn)槲乙獙W(xué)的東西還很多,總感覺(jué)時(shí)間太短了,只有有實(shí)用價(jià)值的我才會(huì)去弄下,因?yàn)槲蚁氚褧r(shí)間留給明天。。。。。。謝謝指證
回復(fù)

使用道具 舉報(bào)

ID:424598 發(fā)表于 2019-1-13 00:57 | 顯示全部樓層
贊,只有天天學(xué)習(xí)的人才會(huì)覺(jué)得時(shí)間太少。做些自己感興趣的事情,人生才充滿(mǎn)意義。
回復(fù)

使用道具 舉報(bào)

ID:283315 發(fā)表于 2019-1-13 15:35 | 顯示全部樓層
這個(gè)可以實(shí)現(xiàn)溫濕度檢測(cè)數(shù)據(jù)遠(yuǎn)程傳輸?shù)缴衔粰C(jī)嗎
回復(fù)

使用道具 舉報(bào)

ID:283315 發(fā)表于 2019-1-13 15:38 | 顯示全部樓層
大佬還有用STM32實(shí)現(xiàn)實(shí)時(shí)遠(yuǎn)程視頻傳輸?shù)某晒?xiàng)目嗎?可以分享一下嗎?
回復(fù)

使用道具 舉報(bào)

ID:63317 發(fā)表于 2019-1-15 08:03 | 顯示全部樓層
謝謝分享資料
回復(fù)

使用道具 舉報(bào)

ID:468611 發(fā)表于 2019-1-15 17:00 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:304849 發(fā)表于 2019-1-15 19:49 | 顯示全部樓層
謝謝樓主,請(qǐng)問(wèn)在哪可以學(xué)習(xí)STM32驅(qū)動(dòng)ESP8266程序?
回復(fù)

使用道具 舉報(bào)

ID:304849 發(fā)表于 2019-1-15 20:26 | 顯示全部樓層
內(nèi)容邏輯明了
回復(fù)

使用道具 舉報(bào)

ID:478556 發(fā)表于 2019-2-21 11:46 | 顯示全部樓層
下載學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

ID:486614 發(fā)表于 2019-3-7 23:32 | 顯示全部樓層
感謝分享
回復(fù)

使用道具 舉報(bào)

ID:480682 發(fā)表于 2019-3-8 00:03 | 顯示全部樓層
為什么我下載到51后,網(wǎng)絡(luò)助手收不到數(shù)據(jù),但是51串口可以呀。這是什么問(wèn)題呀
回復(fù)

使用道具 舉報(bào)

ID:453264 發(fā)表于 2019-4-10 20:16 | 顯示全部樓層
這樣復(fù)雜了吧,esp8266自帶mcu外加一個(gè)wifi,直接編程燒錄進(jìn)esp8266就很好了啊,有失偏薄之處望指出
回復(fù)

使用道具 舉報(bào)

ID:503093 發(fā)表于 2019-4-28 15:21 | 顯示全部樓層

謝謝分享資料
回復(fù)

使用道具 舉報(bào)

ID:527695 發(fā)表于 2019-5-5 15:26 | 顯示全部樓層
8266調(diào)試很不穩(wěn)定
回復(fù)

使用道具 舉報(bào)

ID:527695 發(fā)表于 2019-5-5 15:32 | 顯示全部樓層
下載學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

ID:527695 發(fā)表于 2019-5-5 15:32 | 顯示全部樓層
很想知道E4A怎么用
回復(fù)

使用道具 舉報(bào)

ID:33544 發(fā)表于 2019-6-3 22:51 | 顯示全部樓層

很想知道E4A怎么用
回復(fù)

使用道具 舉報(bào)

ID:432200 發(fā)表于 2019-6-6 09:50 | 顯示全部樓層
很好,非常好用
回復(fù)

使用道具 舉報(bào)

ID:540379 發(fā)表于 2019-6-7 01:21 | 顯示全部樓層
感謝樓主,十分需要
回復(fù)

使用道具 舉報(bào)

ID:358930 發(fā)表于 2019-6-9 20:36 來(lái)自手機(jī) | 顯示全部樓層
51King 發(fā)表于 2019-5-5 15:32
很想知道E4A怎么用

看教程就能編輯一些簡(jiǎn)單的了,這就是給英文不好的人用的,中文編程,有點(diǎn)C語(yǔ)言的影子
回復(fù)

使用道具 舉報(bào)

ID:373720 發(fā)表于 2019-6-13 15:43 | 顯示全部樓層
感謝分享
回復(fù)

使用道具 舉報(bào)

ID:585455 發(fā)表于 2019-7-24 12:13 | 顯示全部樓層
現(xiàn)在正要做,感謝。
回復(fù)

使用道具 舉報(bào)

ID:330829 發(fā)表于 2019-7-26 16:22 | 顯示全部樓層
感謝分享
回復(fù)

使用道具 舉報(bào)

ID:119977 發(fā)表于 2019-8-13 16:05 | 顯示全部樓層
敢問(wèn)樓主要更改 8266固件嗎
回復(fù)

使用道具 舉報(bào)

ID:119977 發(fā)表于 2019-8-15 09:14 | 顯示全部樓層
樓主我下載了ESP8266固件后斷開(kāi)GPIO0重新上電  怎么搜不到admin網(wǎng)絡(luò)
回復(fù)

使用道具 舉報(bào)

ID:119977 發(fā)表于 2019-8-15 09:32 | 顯示全部樓層
跪求樓主我下載了ESP8288固件   可是無(wú)線(xiàn)搜不到admin啊啊啊AT也沒(méi)反應(yīng)
回復(fù)

使用道具 舉報(bào)

ID:303693 發(fā)表于 2019-8-15 11:41 | 顯示全部樓層
學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

ID:119977 發(fā)表于 2019-8-16 08:02 | 顯示全部樓層
跪求樓主我下載了ESP8288固件   可是無(wú)線(xiàn)搜不到admin啊啊啊AT也沒(méi)反應(yīng)
回復(fù)

使用道具 舉報(bào)

ID:600197 發(fā)表于 2019-8-16 11:34 | 顯示全部樓層
謝謝樓主分享
回復(fù)

使用道具 舉報(bào)

ID:58925 發(fā)表于 2019-9-27 14:45 | 顯示全部樓層
請(qǐng)問(wèn)樓主, 手機(jī)端接收數(shù)據(jù)會(huì)不會(huì)出現(xiàn)丟包或數(shù)據(jù)錯(cuò)亂的現(xiàn)象?
回復(fù)

使用道具 舉報(bào)

ID:615493 發(fā)表于 2019-9-27 20:22 | 顯示全部樓層

謝謝分享資料
回復(fù)

使用道具 舉報(bào)

ID:78151 發(fā)表于 2019-10-14 22:57 | 顯示全部樓層
謝謝分享資料
回復(fù)

使用道具 舉報(bào)

ID:577423 發(fā)表于 2019-10-15 22:18 | 顯示全部樓層
不能控制溫度濕度啊,加油在增加功能
回復(fù)

使用道具 舉報(bào)

ID:67344 發(fā)表于 2019-10-24 21:07 | 顯示全部樓層
有用的料一律下載保存
回復(fù)

使用道具 舉報(bào)

ID:229821 發(fā)表于 2019-10-25 21:16 | 顯示全部樓層
謝謝分享啊。謝謝了。收藏下載了。
回復(fù)

使用道具 舉報(bào)

ID:651610 發(fā)表于 2019-11-28 14:50 | 顯示全部樓層
e4a里怎么設(shè)計(jì)?希望可以告知
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表