欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6834|回復: 5
打印 上一主題 下一主題
收起左側

單片機+WiFi模塊做的溫度計

[復制鏈接]
跳轉到指定樓層
樓主
         用USR-WIFI232-T串口聯網模塊和51單片機能做成一個可以無線上網的數字溫度計,圖1是該溫度計的實物照片。溫度計采用3.3V電池供電,可置于任何一個需要測量溫度的地方,通過網絡或手機即可讀取測得的溫度數據,十分方便。

1.1 WiFi溫度計的硬件電路
圖2 WiFi溫度計電路原理圖
              圖2是WiFi溫度計的電路原理圖,圖中溫度傳感器采用TMP102低功耗溫度傳感器,單片機是AT89C2051。
1.2 WiFi溫度計的編程
              從圖2可以看出,單片機的串口和USR-WIFI232-T模塊的串口連在一起,來自網絡的命令可以通過USR-WIFI232-T模塊串口傳送給單片機;單片機的數據也可以通過串口經USR-WIFI232-T模塊傳送到網絡,USR-WIFI232-T模塊是WiFi溫度計無線上網的信道。WiFi溫度計通過單片機串口接收來自網絡的命令,然后根據命令把TMP102溫度傳感器測得的數據通過單片機串口發送給USR-WIFI232-T模塊,USR-WIFI232-T模塊把數據傳到網絡上。單片機收到網絡命令即通過串口發送溫度數據,這是WiFi溫度計編程的關鍵,實際就是單片機串口編程,下面列出部分程序。
WiFi溫度計編程
// WiFi溫度計TMP102
  1. #include <reg51.H>
  2. #include <INTRINS.H>//_nop_()
  3. #include <IIC.H>              // IIC總線函數包

  4. #define AddWr 0x90              //tmp102 WRITE ADD
  5. #define AddRd 0x91              //tmp102 READ ADD

  6. uchar dis_buf[4]={1,2,3,4};              //顯示數據緩存數組
  7. uchar RS232_BUF[7];                                 //RS2232發送緩存
  8. //-------------------------------------
  9. //串口初始化
  10.               void Init_UART(void)
  11. {
  12.               SCON=0x50;              //串口工作方式1
  13.               //PCON=0x80;//SMOD=1波特率=19200
  14.               TMOD=0x20;              //定時器1設置為定時器方式1
  15.               TH1=0xFD;               //波特率=9600                                         
  16.               TL1=0xFD;
  17.               TR1=1;            
  18. }
  19. //串口與上位機通信
  20. //-----------------------------------------------
  21. void TX_Byte(uchar message)//串口發送字節
  22. {
  23.               SBUF=message;
  24.               while(TI==0);
  25.               TI=0;
  26. }
  27. //-----------------------------------------------
  28. uchar Recive(void) //串口接收
  29. {
  30.               uchar x;
  31.                 while(RI==0);
  32.               RI=0;
  33.                 x=SBUF;
  34.                 return x;
  35. }
  36. //--------------------------------------
  37. void del_ms(uint x) //延時
  38. {
  39.               uchar j;
  40.               while(x--)
  41.               {for(j=0;j<125;j++);}
  42. }

  43. //------------------------------------------------------------------------
  44. void TX_Temp(void)//返回溫度數據
  45. {
  46.     union
  47.   {
  48.     uchar c[2];
  49.     uint x;
  50.   }temp2;   

  51.     del_ms(10);                       
  52.     temp2.x=tmp102_rd();             //讀兩字節溫度數據

  53.         if(temp2.c[0]&0x80)                                 //若為負數
  54.           {
  55.             temp2.x=~(temp2.x)+1;                             //取反加1           
  56.             RS232_BUF[2]='-';                     //負號           
  57.           }

  58.           dis_buf[3]=temp2.c[0]/100;     //百位  
  59.           dis_buf[2]=(temp2.c[0]%100)/10;//十位
  60.           dis_buf[1]=temp2.c[0]%10;      //個位
  61.           temp2.c[1]>>=4;
  62.           dis_buf[0]=xiaoshu(temp2.c[1]);//小數
  63.                                          

  64.           RS232_BUF[2]=dis_buf[3]+0x30;                          
  65.           RS232_BUF[3]=dis_buf[2]+0x30;
  66.           RS232_BUF[4]=dis_buf[1]+0x30;
  67.           RS232_BUF[5]=dis_buf[0]+0x30;

  68.         //發送4位溫度數據,溫度為十進制格式
  69.                             TX_Byte(RS232_BUF[2]);                     //溫度整數部分百位
  70.                             TX_Byte(RS232_BUF[3]);                     //十位
  71.         TX_Byte(RS232_BUF[4]);                     //個位
  72.         TX_Byte('.');                                                 //小數點
  73.         TX_Byte(RS232_BUF[5]);                     //小數
  74.         TX_Byte(' ');                                                 //空格
  75.                                           

  76. }
  77. //-------------------------------------------------------------------
  78. void TX_Strings(char *string)//發送字符串
  79. {
  80.     while (*string) {
  81.          TX_Byte(*string++);
  82.     }
  83. }
  84. //++++++++++++++++++++++++++++++++++++++++++++++++++
  85. void main()
  86. {
  87.               uchar cmd;
  88.               Init_UART();//串口初始化
  89.               del_ms(100);              

  90.               while(1)
  91.               {
  92.                 cmd=Recive();
  93.                 del_ms(20);
  94.                 //TX_Byte(cmd);

  95.                             switch (cmd)
  96.                             {                                                                 //根據收到的命令返回
  97.         case '1':                                   
  98.           TX_Strings("Wifi Thermometer\r\n");//返回標題
  99.           TX_Strings("tanggong\r\n");
  100.             break;
  101.         case '2':   
  102.           TX_Temp();                        //返回溫度數據
  103.           TX_Strings("\r\n");                                      //換行
  104.             break;
  105.         case '3':                                   
  106.           TX_Byte(cmd);                                //返回收到的命令
  107.           TX_Strings("\r\n");                                      //換行
  108.             break;
  109.         default:break;
  110.                             }
  111.               }

  112. }
復制代碼

1.3 WiFi溫度計的使用
              用電腦或手機上網都可以控制WiFi溫度計,讀者可以自己編寫電腦或手機使用的軟件控制WiFi溫度計,也可以使用網上現成的軟件。限于篇幅這里只介紹如何用現成的手機軟件來控制WiFi溫度計,使用的手機軟件是“網絡調試助手”,可在網上下載。
              由于USR-WIFI232-T模塊設置在AP+STA模式,故此兩種模式都可以工作,在這兩種模式時USR-WIFI232-T模塊的端口號是相同的,都是8899,但兩種模式的IP地址是不同的,在AP模式USR-WIFI232-T模塊的IP地址是固定的“10.10.100.254”;在STA模式USR-WIFI232-T模塊的IP地址是由網絡隨機分配的一個不固定地址,需要用搜索軟件搜索模塊,獲得這個IP地址,按照這個IP地址才能和模塊建立連接。因此兩種模式的使用方法不同,下面分述在兩種工作模式時的使用方法。
16.4.1 WiFi模塊在AP模式
              給WiFi溫度計通電,待模塊啟動狀態指示燈D2亮了以后,打開手機在WLAN無線網絡連接列表中看是否有USR-WIFI232-T模塊,無線信號強度是否正常,若正常則按以下步驟進行:
  • 接USR-WIFI232-T模塊。如圖3所示。
圖3 手機連接模塊
②顯示“已連接”之后,打開手機中安裝的“網絡調試助手”應用軟件,在“tcp client ”選項卡下面點“增加”,設置IP地址為模塊的默認IP地址10.10.100.254,端口為8899,如圖4所示,在左邊會顯示連接的IP地址和端口號,說明已連接到WiFi溫度計。
③在下面的發送文本框中輸入發送命令,命令1是返回標題,命令2是返回溫度值。單擊發送按鈕,就會收到返回的數據,顯示在手機屏幕中間,如圖4所示。“031.1”是返回的溫度數據。
圖4 手機發命令接收溫度計數據
完整的Word格式文檔51黑下載地址:
WiFi模塊做的溫度計.docx (230.65 KB, 下載次數: 42)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:464966 發表于 2019-1-8 22:33 | 只看該作者
謝謝
回復

使用道具 舉報

板凳
ID:104846 發表于 2019-5-4 19:37 | 只看該作者
不錯,要是有本地顯示就完美了
回復

使用道具 舉報

地板
ID:1053064 發表于 2022-11-23 15:27 | 只看該作者
很不錯,只是剛開始有問題
回復

使用道具 舉報

5#
ID:1053064 發表于 2022-11-23 15:28 | 只看該作者
很不錯,但是代碼是要改過
回復

使用道具 舉報

6#
ID:433219 發表于 2022-11-23 21:12 | 只看該作者
  本地局域網顯示?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表