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

標(biāo)題: 單片機(jī)智能晾衣系統(tǒng)程序電路設(shè)計(jì),手機(jī)藍(lán)牙互聯(lián) [打印本頁]

作者: SSsilenc    時(shí)間: 2019-6-17 21:14
標(biāo)題: 單片機(jī)智能晾衣系統(tǒng)程序電路設(shè)計(jì),手機(jī)藍(lán)牙互聯(lián)
基于藍(lán)牙模塊,可以通過手機(jī)藍(lán)牙助手app控制衣架收放
晾衣架是每個(gè)家庭都會(huì)用到的工具,我們生活中常用的晾衣架已經(jīng)經(jīng)過了多代的發(fā)展,從一根竹竿撐起的晾衣時(shí)代,到傳統(tǒng)固定晾衣架的時(shí)代,再到手搖晾衣架等。它們都存在著易受天氣影響和功能過于單一等缺點(diǎn)。在此基礎(chǔ)上我們借助多種傳感器和低成本小體積的單片機(jī)以及無線通信技術(shù),整合而成我們的智能晾衣系統(tǒng)。智能晾衣系統(tǒng)在滿足基本的晾衣需求之余,還可以根據(jù)外界環(huán)境情況自動(dòng)控制衣服的送出與收回,以及通過物聯(lián)網(wǎng)進(jìn)行遠(yuǎn)程控制監(jiān)測(cè)。讓我們的衣服既能沐浴大自然的和風(fēng)暖陽又能自動(dòng)躲避開它的狂風(fēng)暴雨。讓我們不用再為衣服的晾曬而操心,大大方便我們的生活。

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

晾衣架的現(xiàn)狀


我們生活中常用的晾衣架已經(jīng)經(jīng)過了多代的發(fā)展,從根竹竿撐起的晾衣時(shí)代,到傳統(tǒng)固定晾衣架的時(shí)代,再到手搖晾衣架等。


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


圖1.1-3手搖晾衣架

這些傳統(tǒng)的晾衣架有著結(jié)構(gòu)簡(jiǎn)單的優(yōu)勢(shì),同時(shí)也存在著受天氣影響嚴(yán)重,功能過于單一的缺點(diǎn)。當(dāng)遇到刮風(fēng)下雨天需要依靠人把衣物收回到屋內(nèi),晾曬效果也大大折扣。

1.2智能晾衣系統(tǒng)的構(gòu)想

    現(xiàn)如今電子行業(yè)越來越發(fā)達(dá),各種傳感器、芯片等也越來越普及。我們可以利用各式的傳感器結(jié)合單片機(jī)等完成一些智能的控制。智能晾衣系統(tǒng)就是以此為基礎(chǔ)借助雨滴感應(yīng)模塊、光敏模塊、溫濕度模塊、濕度檢測(cè)模塊等感知環(huán)境的信息,并將信息交給單片機(jī)處理,單片機(jī)再通過控制驅(qū)動(dòng)模塊對(duì)環(huán)境的改變做出機(jī)械反應(yīng),同時(shí)連接顯示模塊把環(huán)境信息實(shí)時(shí)顯示給使用者。使用者還可以通過手機(jī)實(shí)現(xiàn)和單片機(jī)的無線通信從而實(shí)現(xiàn)對(duì)晾衣架的遠(yuǎn)程遙控,并能通過手機(jī)得知衣服的晾曬狀況。


1.光敏傳感器模塊

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


                        圖2.1-1光敏模塊



2.雨滴傳感器模塊

雨滴傳感器模塊由雨傳感器和lm393雙電壓比較器以及它的外圍電路組成,采用5V直流供電?梢员O(jiān)測(cè)到下雨環(huán)境,原理與上一傳感器類似當(dāng)感應(yīng)板上沒有雨滴時(shí)DO輸出高電平,當(dāng)感應(yīng)板上有雨滴時(shí)DO輸出低電平給單片機(jī)引腳,刷掉感應(yīng)板上的雨滴DO重新輸出高電平。雨滴傳感器模塊同樣有電位器可以調(diào)節(jié)閥值。



                  圖2.1-2雨滴傳感器模塊


3.濕度檢測(cè)模塊

              濕度監(jiān)測(cè)模塊由濕度傳感器和lm393雙電壓比較器以及它的外圍電路構(gòu)成,采用5V直流供電。在晾衣系統(tǒng)中用來藏入晾曬的衣服里檢測(cè)衣物的晾曬情況。它的用作原理是當(dāng)檢測(cè)到衣服的濕度低于設(shè)定值時(shí)DO輸出低電平,高于設(shè)定值時(shí)DO輸出高電平,這個(gè)設(shè)定值同樣可以通過轉(zhuǎn)動(dòng)電位器來調(diào)節(jié)。


                         圖2.1-3濕度檢測(cè)模塊


以上三種模塊均有AO輸出,AO為模擬量輸出可接在單片機(jī)AD口檢測(cè)被測(cè)量的大小,但使用AO口輸出系統(tǒng)結(jié)構(gòu)和代碼難度會(huì)更復(fù)雜,而DO口輸出已經(jīng)滿足了使用要求,所以以上三個(gè)模塊全部使用DO輸出。

三個(gè)模塊原理也相同 原理:當(dāng)傳感器接收到雨滴時(shí)傳給單片機(jī)一個(gè)高電平,然后驅(qū)動(dòng)步進(jìn)電機(jī)轉(zhuǎn)動(dòng)。

代碼如附錄


天氣良好狀態(tài)下光敏模塊和雨滴模塊檢測(cè)到光照充足且沒有雨滴,并把信息傳給單片機(jī),單片機(jī)控制步進(jìn)電機(jī)正轉(zhuǎn),連接傳動(dòng)裝置將衣物晾曬到屋外。

當(dāng)天氣變壞即光敏模塊和雨滴模塊檢測(cè)到陰天或下雨有一個(gè)條件出現(xiàn)時(shí),就會(huì)把信息傳給單片機(jī),單片機(jī)控制步進(jìn)電機(jī)反轉(zhuǎn),連接傳動(dòng)裝置自動(dòng)將衣物收回屋內(nèi),以免被雨淋濕。



3-1電路原理圖

第四章 結(jié)果

經(jīng)過小組成員反復(fù)的調(diào)試和對(duì)環(huán)境狀況的模擬實(shí)驗(yàn)并對(duì)各個(gè)模塊進(jìn)行整合我們一步步實(shí)現(xiàn)了設(shè)想的功能要求,最終完成了作品,基本達(dá)到了我們的預(yù)想,實(shí)現(xiàn)了功能要求。但系統(tǒng)也依然存在一點(diǎn)小問題如:當(dāng)手機(jī)控制步進(jìn)電機(jī)正轉(zhuǎn),步進(jìn)電機(jī)在完成正轉(zhuǎn)停下之前手機(jī)發(fā)送其他指令系統(tǒng)不會(huì)運(yùn)行,只有到電機(jī)做完正轉(zhuǎn)任務(wù)手機(jī)發(fā)送最指令才能正常運(yùn)行,這是需要我們進(jìn)一步去完善的地方。


第五章 結(jié)論

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


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


  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)           /*正轉(zhuǎn)*/
  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)        /*反轉(zhuǎn)*/
  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. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:

智能晾衣系統(tǒng).rar (1.98 KB, 下載次數(shù): 63)

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




作者: honeymoon84    時(shí)間: 2019-6-18 00:25
太厲害
作者: superIOT    時(shí)間: 2019-6-18 11:03
感謝樓主共享精神,智能晾衣架目前越來越多人開始使用,不過目前都是配合智能家居應(yīng)用的。
作者: dhasj    時(shí)間: 2019-10-15 17:45
感謝樓主分享
作者: Solace——z    時(shí)間: 2019-10-24 11:17
感謝樓主分享
作者: lushiyi    時(shí)間: 2019-10-25 00:41
這個(gè)我們最近單片機(jī)課剛好講到,挺好。




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日日摸日日碰夜夜爽亚洲精品蜜乳 | 一区二区三区回区在观看免费视频 | 欧美黑人一级爽快片淫片高清 | 欧美国产精品 | 国产视频在线观看一区二区三区 | 日韩成人免费av | 日韩欧美在线视频观看 | 国产精品久久久久久久久图文区 | 麻豆changesxxx国产 | 99免费视频| 黄色一级免费 | 夜色www国产精品资源站 | 中文字幕国产视频 | 在线午夜 | 日韩在线综合网 | 日本亚洲精品成人欧美一区 | 日本三级播放 | 精品色| 一区二区在线看 | 99热在这里只有精品 | 日日日日操 | 欧美成人精品一区二区男人看 | 国产成人综合一区二区三区 | 国产成人99久久亚洲综合精品 | 国产在线aa | av性色全交蜜桃成熟时 | 精品视频在线播放 | 亚洲美乳中文字幕 | 国产一级电影网 | 久久国产欧美日韩精品 | av入口 | 在线视频99 | 国产91丝袜在线熟 | 欧美精品一区二区蜜桃 | 日韩在线一区二区三区 | 黄色大片视频 | 久久不卡 | 欧美三级电影在线播放 | 91精品国产91久久综合桃花 | 97国产在线观看 | 国产精品福利视频 |