久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機智能晾衣系統程序電路設計,手機藍牙互聯

  [復制鏈接]
跳轉到指定樓層
樓主
ID:357645 發表于 2019-6-17 21:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
基于藍牙模塊,可以通過手機藍牙助手app控制衣架收放
晾衣架是每個家庭都會用到的工具,我們生活中常用的晾衣架已經經過了多代的發展,從一根竹竿撐起的晾衣時代,到傳統固定晾衣架的時代,再到手搖晾衣架等。它們都存在著易受天氣影響和功能過于單一等缺點。在此基礎上我們借助多種傳感器和低成本小體積的單片機以及無線通信技術,整合而成我們的智能晾衣系統。智能晾衣系統在滿足基本的晾衣需求之余,還可以根據外界環境情況自動控制衣服的送出與收回,以及通過物聯網進行遠程控制監測。讓我們的衣服既能沐浴大自然的和風暖陽又能自動躲避開它的狂風暴雨。讓我們不用再為衣服的晾曬而操心,大大方便我們的生活。

本文主要介紹了光敏模塊,雨滴模塊以及濕度傳感器部分。這三部分也是主要的數據傳入部分,數據傳入后通過單片機分析在控制其他部分驅動。

晾衣架的現狀


我們生活中常用的晾衣架已經經過了多代的發展,從根竹竿撐起的晾衣時代,到傳統固定晾衣架的時代,再到手搖晾衣架等。


圖1.1-1一根繩撐起的晾衣架                圖1.1-2固定的晾衣架


圖1.1-3手搖晾衣架

這些傳統的晾衣架有著結構簡單的優勢,同時也存在著受天氣影響嚴重,功能過于單一的缺點。當遇到刮風下雨天需要依靠人把衣物收回到屋內,晾曬效果也大大折扣。

1.2智能晾衣系統的構想

    現如今電子行業越來越發達,各種傳感器、芯片等也越來越普及。我們可以利用各式的傳感器結合單片機等完成一些智能的控制。智能晾衣系統就是以此為基礎借助雨滴感應模塊、光敏模塊、溫濕度模塊、濕度檢測模塊等感知環境的信息,并將信息交給單片機處理,單片機再通過控制驅動模塊對環境的改變做出機械反應,同時連接顯示模塊把環境信息實時顯示給使用者。使用者還可以通過手機實現和單片機的無線通信從而實現對晾衣架的遠程遙控,并能通過手機得知衣服的晾曬狀況。


  • 基本原理

1.光敏傳感器模塊

光敏傳感器由光敏電阻和lm393雙電壓比較器以及它的外圍電路組成,采用5V直流供電。它一般用來檢測周圍環境的光線亮度。擁有DO(數字量)和AO(模擬量)兩種輸出模式。當環境光線強度達不到設定閥值時DO輸出高電平,當環境光線強度超過閥值時DO輸出低電平。閥值可以通過轉動模塊上的電位器來調節。


                        圖2.1-1光敏模塊



2.雨滴傳感器模塊

雨滴傳感器模塊由雨傳感器和lm393雙電壓比較器以及它的外圍電路組成,采用5V直流供電。可以監測到下雨環境,原理與上一傳感器類似當感應板上沒有雨滴時DO輸出高電平,當感應板上有雨滴時DO輸出低電平給單片機引腳,刷掉感應板上的雨滴DO重新輸出高電平。雨滴傳感器模塊同樣有電位器可以調節閥值。



                  圖2.1-2雨滴傳感器模塊


3.濕度檢測模塊

              濕度監測模塊由濕度傳感器和lm393雙電壓比較器以及它的外圍電路構成,采用5V直流供電。在晾衣系統中用來藏入晾曬的衣服里檢測衣物的晾曬情況。它的用作原理是當檢測到衣服的濕度低于設定值時DO輸出低電平,高于設定值時DO輸出高電平,這個設定值同樣可以通過轉動電位器來調節。


                         圖2.1-3濕度檢測模塊


以上三種模塊均有AO輸出,AO為模擬量輸出可接在單片機AD口檢測被測量的大小,但使用AO口輸出系統結構和代碼難度會更復雜,而DO口輸出已經滿足了使用要求,所以以上三個模塊全部使用DO輸出。

三個模塊原理也相同 原理:當傳感器接收到雨滴時傳給單片機一個高電平,然后驅動步進電機轉動。

代碼如附錄


  •        具體實現

天氣良好狀態下光敏模塊和雨滴模塊檢測到光照充足且沒有雨滴,并把信息傳給單片機,單片機控制步進電機正轉,連接傳動裝置將衣物晾曬到屋外。

當天氣變壞即光敏模塊和雨滴模塊檢測到陰天或下雨有一個條件出現時,就會把信息傳給單片機,單片機控制步進電機反轉,連接傳動裝置自動將衣物收回屋內,以免被雨淋濕。



3-1電路原理圖

第四章 結果

經過小組成員反復的調試和對環境狀況的模擬實驗并對各個模塊進行整合我們一步步實現了設想的功能要求,最終完成了作品,基本達到了我們的預想,實現了功能要求。但系統也依然存在一點小問題如:當手機控制步進電機正轉,步進電機在完成正轉停下之前手機發送其他指令系統不會運行,只有到電機做完正轉任務手機發送最指令才能正常運行,這是需要我們進一步去完善的地方。


第五章 結論

我們小組的智能晾衣系統以智能家居為主題,以讓生活更美好為目標,借助光敏傳感器、雨滴傳感器檢測環境狀況把數據交給單片機,通過單片機進一步控制步進電機對衣物收回和放出。借助溫濕度模塊監測環境溫濕度并通過液晶屏顯示。通過藍牙模塊讓使用者可以通過手機對晾衣系統進行遙控和查看衣物的晾曬情況。省去了下雨天需要的手動收衣服,并提高了人們對環境信息的感知,以較低的成本大大方便了人們的生活。同時使用藍牙進行通信存在通信距離過短的缺陷,未來借助wifi遠程通信是我們的發展方向。


單片機源程序如下:


  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. # define  dianping P1
  5. uchar code zheng[4]={0x08,0x04,0x02,0x01};
  6. uchar code fan[4]  ={0x01,0x02,0x04,0x08};
  7. uchar DHT11[5],RTflag=0;
  8. uchar  FLAG,flag_q,num,gg,t,j,s;
  9. uint flag_k=0;
  10. sbit key1=P2^0;/*回收*/
  11. sbit key2=P2^1;        /*送出*/
  12. sbit guan=P2^6;
  13. sbit shidu=P2^7;
  14. sbit yudi=P2^5;
  15. sbit Beep=P2^3;
  16. sbit dat=P2^4;
  17. sbit IN1=P3^2;
  18. sbit IN2=P3^3;
  19. sbit EN=P3^4;
  20. sbit RS=P3^5;
  21. sbit RW=P3^6;         
  22. uchar table[5];
  23. void key();
  24. uint wd,sd;
  25. void HH_H();
  26. void Init();
  27. void zhengzhuan();
  28. void fanzhuan();
  29. void tingzhi();
  30. unsigned char flag_z,k,n;
  31. void Delay_t(uint j)
  32. {      uchar i;
  33.             for(;j>0;j--)
  34.           {         
  35.                 for(i=0;i<27;i++);        
  36.           }
  37. }
  38. void  Delay_10us(void)
  39. {
  40.         uchar i;
  41.          i--;
  42.          i--;
  43.          i--;
  44.          i--;
  45.          i--;
  46.          i--;
  47. }

  48. void delay(uint z)
  49. {
  50.    uint x,y;
  51.    for(x=z;x>0;x--)
  52.     for(y=110;y>0;y--);
  53. }

  54. void lcd_write_com(uchar com)
  55. {
  56.    RS=0;
  57.    RW=0;
  58.    EN=1;
  59.    P0=com;
  60.    delay(1);
  61.    EN=0;

  62. }
  63. void lcd_init()
  64. {

  65.   lcd_write_com(0x38);
  66.   delay(1);
  67.   lcd_write_com(0x08);
  68.   delay(1);
  69.   lcd_write_com(0x01);
  70.   delay(1);
  71.   lcd_write_com(0x06);
  72.   delay(1);
  73.   lcd_write_com(0x0C);
  74.   delay(1);

  75. }
  76. void lcd_write_data(uchar date)
  77. {
  78.    RS=1;
  79.    RW=0;
  80.    EN=1;
  81.    P0=date;
  82.    delay(1);
  83.    EN=0;
  84. }
  85. void write_str(uchar x,uchar y,uchar *s)
  86. {
  87.           if(y==0)                                                                                 
  88.           lcd_write_com(0x80+x);
  89.           else
  90.           lcd_write_com(0xc0+x);
  91.         while(*s)
  92.         {
  93.            lcd_write_data(*s);
  94.            s++;
  95.         }



  96. }
  97. void write_shu(uchar x,uchar y,uchar num)
  98. {
  99.          
  100.           uchar s,g;
  101.           if(y==0)
  102.           lcd_write_com(0x80+x);
  103.           else
  104.           lcd_write_com(0xc0+x);
  105.           s=num/10;
  106.           lcd_write_data(0x30+s);
  107.           g=num%10;
  108.           lcd_write_data(0x30+g);
  109. }

  110. uchar  write_byte1()
  111. {
  112.            uchar i,comdata,temp1;
  113.        for(i=0;i<8;i++)           
  114.             {
  115.                        FLAG=2;        
  116.                    while((!dat)&&FLAG++);
  117.                         Delay_10us();
  118.                     Delay_10us();
  119.                         Delay_10us();
  120.                           temp1=0;
  121.              if(dat)temp1=1;        
  122.                     FLAG=2;
  123.                  while((dat)&&FLAG++);
  124.                      
  125.                     if(FLAG==1)break;        
  126.                            
  127.                      
  128.         
  129.                    comdata<<=1;
  130.                       comdata|=temp1;
  131.              }
  132.                  return (comdata);  
  133. }
  134. void DHT11_5()
  135. {
  136.    
  137.           uchar i,temp;
  138.        dat=0;
  139.               t=temp;
  140.            Delay_t(180);
  141.            dat=1;
  142.            Delay_10us();
  143.            Delay_10us();
  144.            Delay_10us();
  145.            Delay_10us();
  146.            dat=1;         
  147.            if(!dat)                           
  148.            {
  149.                 FLAG=2;                                    
  150.                 while((!dat)&&FLAG++);
  151.                         FLAG=2;
  152.                         
  153.                 while((dat)&&FLAG++);
  154.                         for(i=0;i<5;i++)
  155.                         {
  156.                                 DHT11[i]=write_byte1();        
  157.                         }                 
  158.                         dat=1;        
  159.                  
  160.                         temp=(DHT11[0]+DHT11[1]+DHT11[2]+DHT11[3]);
  161.                         if(temp==DHT11[4])        
  162.                         {                       
  163.                                 RTflag=1;                  
  164.                         }
  165.                         if(RTflag==1)
  166.                    {                          
  167.                                 RTflag=0;
  168.                                 write_str(0,0,"   shidu  : ");
  169.                                 write_shu(12,0,DHT11[0]);
  170.                                 t=DHT11[0];
  171.                                 if(DHT11[0]>=60)
  172.                    {
  173.                      Beep=0;
  174.                    }
  175.                                 write_str(14,0,"RH");
  176.                                 write_str(0,1,"   wendu  : ");                                
  177.                             write_shu(12,1,DHT11[2]);
  178.                                 if(DHT11[2]<=10)
  179.                                 {
  180.                                  Beep=0;
  181.                                 }
  182.                             write_str(14,1,"^C");                                
  183.                    }

  184.                 }

  185. }

  186. void main()
  187. {
  188.   lcd_init();  
  189.   delay(1000);

  190.   while(1)
  191.     {
  192.         
  193.    delay(1000);//
  194.    write_byte1();
  195.    DHT11_5();
  196.    delay(1000);
  197.       key();
  198.       HH_H();

  199.      }   
  200.         
  201.    }

  202.                   
  203. void delayms(uint z)
  204. {
  205.   uint i , j;
  206.   for(i=z;i>0;i--)
  207.       for(j=110;j>0;j--);
  208. }
  209. void delayus(uint x)
  210.          {
  211.             uint t, y;
  212.                 for(t=x;t>0;t--)
  213.                      for(y=110;y>0;y--);
  214.         
  215.         }         
  216. void key()
  217.     {
  218.            
  219.                                                          
  220.           {
  221.            if((guan==0&&flag_k==0)||key2==0)                                                                                
  222.            {
  223.                for(j=300;j>0;j--)
  224.                    {
  225.                    fanzhuan();
  226.                    }
  227.                             flag_k=1;
  228.            }   
  229.            
  230.               if(guan==0&&flag_k==1)
  231.            {
  232.                tingzhi();               
  233.            }
  234.            

  235.                    if((guan==1&&flag_k==1)||(yudi==0)||(key1==0))
  236.            {
  237.             
  238.                     for(j=200;j>0;j--)
  239.                    {
  240.                    zhengzhuan();
  241.                    }
  242.                                 
  243.                             flag_k=0;
  244.            
  245.            }
  246.            if((guan==1&&flag_k==0))
  247.            {
  248.               tingzhi();               
  249.            }   
  250.                 }
  251.            }
  252.            
  253. void zhengzhuan(void)           /*正轉*/
  254.     {
  255.            uchar a;
  256.                    for(s=10;s>0;s--)
  257.                 {
  258.            for(a=0;a<4;a++)
  259.            {
  260.            dianping=zheng[a];
  261.            delayms(3);
  262.                 }
  263.                  }
  264.         }
  265.         void  fanzhuan(void)        /*反轉*/
  266.         {
  267.            uchar a;
  268.           for(s=40;s>0;s--)
  269.           {
  270.           for(a=0;a<4;a++)
  271.           {
  272.           dianping=fan[a];
  273.            delayms(3);
  274.           }        
  275.         }
  276.         }
  277.         void tingzhi()                                /*停止*/
  278.         {
  279.             dianping=0x00;
  280.         }
  281.    

  282. void HH_H()
  283. {

  284.         TMOD=0x21;
  285.         TH1=0xfd;
  286.         TL1=0xfd;
  287.         TH0=(65536-50000)/255;
  288.         TL0=(65536-50000)%255;
  289.         TR1=1;
  290.         ET0=1;
  291.         SM0=0;
  292.         SM1=1;                                                                                                                                          
  293.         REN=1;
  294.         EA=1;
  295.         ES=1;
  296.           }

  297. void chuankou (void) interrupt 4
  298. {
  299.     unsigned char Temp,q;         
  300.    ES=0;
  301.    if(RI)                        
  302.      {
  303.           RI=0;                    
  304.           Temp=SBUF;
  305.          
  306.           q=0;            
  307.           if(Temp=='1'&&q==0)
  308.             {

  309.                    SBUF='a';
  310.                    {
  311.                            for(j=100;j>0;j--)
  312.                    {
  313.                    fanzhuan();
  314.                    }
  315.                         delayus(1000);
  316.                    }
  317.                    q=1;
  318.                    if(Temp=='1'&&q==1)
  319.                    {
  320.                
  321.                       tingzhi();
  322.                              q=0;
  323.                    }
  324.                 }
  325.                  if(Temp=='2'&&q==0)
  326.             {
  327.                   {
  328.                   for(j=100;j>0;j--)
  329.                    {
  330.                    zhengzhuan();
  331.                    }
  332.                
  333.                    q=1;
  334.                   }
  335.                         SBUF='b';
  336.                  if(Temp=='2'&&q==1)
  337.                  {
  338.                  
  339.                  tingzhi();
  340.                           q=0;
  341.                  }
  342.                 }
  343.                  if(Temp=='3')
  344.                 {
  345.                 SBUF='s';
  346.                 while(!TI);        
  347.                 TI=0;
  348.             SBUF='h';
  349.                 while(!TI);        
  350.                 TI=0;
  351.                 SBUF='i';
  352.                 while(!TI);        
  353.                 TI=0;
  354.                 SBUF='3';
  355.                 while(!TI);        
  356.                 TI=0;

  357.                 SBUF='5';
  358.                 while(!TI);        
  359.                 TI=0;
  360.                 SBUF='R';
  361.                 while(!TI);        
  362.                 TI=0;
  363.                 SBUF='H';
  364.                 while(!TI);        
  365.                 TI=0;
  366.                 }
  367.                 if(Temp=='4')
  368.                 {
  369.                 SBUF='w';
  370.                 while(!TI);        
  371.                 TI=0;
  372.             SBUF='e';
  373.                 while(!TI);        
  374.                 TI=0;
  375.                 SBUF='n';
  376.                 while(!TI);        
  377.                 TI=0;
  378. ……………………

  379. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:

智能晾衣系統.rar (1.98 KB, 下載次數: 63)

智能晾衣系統 文檔.rar (1.81 MB, 下載次數: 50)



評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:301551 發表于 2019-6-18 00:25 | 只看該作者
太厲害
回復

使用道具 舉報

板凳
ID:372939 發表于 2019-6-18 11:03 | 只看該作者
感謝樓主共享精神,智能晾衣架目前越來越多人開始使用,不過目前都是配合智能家居應用的。
回復

使用道具 舉報

地板
ID:164041 發表于 2019-10-15 17:45 | 只看該作者
感謝樓主分享
回復

使用道具 舉報

5#
ID:627486 發表于 2019-10-24 11:17 | 只看該作者
感謝樓主分享
回復

使用道具 舉報

6#
ID:627771 發表于 2019-10-25 00:41 | 只看該作者
這個我們最近單片機課剛好講到,挺好。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产精品久久久久秋霞不卡 | 成人做爰69片免费观看 | 国产激情在线播放 | 欧美一区二区三区在线观看 | 国产在线视频一区二区董小宛性色 | 国产视频三区 | 成人国产精品一级毛片视频毛片 | 青青久草 | 九色视频网站 | 欧美成人免费在线视频 | 在线成人免费av | 日韩综合色 | 成人免费在线视频 | 一级一级一级毛片 | 国产在线一区二区 | 久久久青草婷婷精品综合日韩 | 国产成人综合久久 | 国产欧美在线观看 | 欧美一级二级在线观看 | 久久久国产精品一区 | 成人亚洲网 | 91久久国产综合久久91精品网站 | 亚洲精品视频网站在线观看 | 国产在线精品一区二区三区 | 亚洲成av人片在线观看 | 国产精品久久久久久久久久久久久久 | 91视频正在播放 | 精品三级在线观看 | 日韩久久网 | 亚洲福利一区二区 | 中国一级特黄真人毛片免费观看 | 99精品视频在线 | 又黄又爽的网站 | 成人免费视频在线观看 | 国产一级一片免费播放 | 欧美日韩中文字幕在线播放 | 成年男女免费视频网站 | 国产日韩一区二区三区 | 欧美久久久久久 | 日韩二区| 欧美精品日韩 |