毕业设计| 智能WIFI LED灯设计

发布时间:2023-04-26  

智能LED灯基于STC89C52RC单片机设计,拥有自动与手动两种模式:

1)自动模式,可以过热释红外传感器检测是否有人,采用光敏电阻构成的电路检测环境光的强度,从而自动实现灯的自动开启和关闭;

2)手动模式,可以使用WIFI连接手机,通过手机App手动控制不同灯的开启和关闭,并可控制各LED灯的光亮度。


智能LED灯采用可移动充电式电源供电,满足不同场景的需求。系统简单易行、控制方便,可用于传统照明的节能改造。


设计思路

可实现灯具的自动控制;同时,结合ESP8266 WIFI模块,通过安卓手机端App与Wifi模块进行数据通信,实现对被控对象的无线连接手动控制。



系统框图


硬件设计

1)Wifi模块:

采用ESP8266对Wifi模块进行配置,就需要使用到AT指令集。其最基础的一些AT指令集在下面贴出,部分会在代码中使用到。

    WIFIAT+CIPMUX=1AT+CIPSERVER=1,80  //修改端口号


    若想深入研究自行找资料学习AT指令集。


    2)热释电传感器

    HC-SR501 人体红外传感器模块是基于红外技术的自动控制模块,它可以检测人或某些动物发出的红外辐射并输出电信号我们使用的 。

    3)电源模块

    电源模块采用18650可充电电池,由于其供电电压为3.6V,不能很好的为电路工作,所以我们通过升压模块对其进行电压放大,以达到标准供电电压5V。并能通过变压充电模块为18650电池充电。

    4)驱动电路

    由于单片机的IO口驱动能力较弱,无法满足大型LED灯的需要,所以在这里通过三极管进行电流放大。


    该驱动电路通过电阻对单片机IO口进行降压,使得三极管得以导通,并对单片机IO口电流进行放大,以达到驱动该大型灯泡的能力,并给每一个LED灯串联一个限流电阻,已达到保护LED灯延长使用寿命的作用。该电路共使用六个大型LED灯照明,三黄三白,不同颜色交替摆放,已保证单种颜色灯光的照明范围。

    要注意的是实物硬件电路板对led灯的一个布局,以及合理跳线的一个问题。


    代码实施

    程序主要模块是通过单片机串口与蓝牙进行通信。由于STC89c52没有独立的波特率发生器,所以将定时计数器T1改装成波特率发生器,产生9600的标准波特率,并通过串口中断函数对读取数据进行接收,并将串口中断优先级调到最高。

    下面是手机APP与单片机的简单通信协议,创建单独协议的目的是为了对以后项目扩展,技术升级留下足够的预留空间,并可以保证产品的加密安全性。

    通过对程序的算法设计,该智能灯泡可达到黑夜可自动控制,有人经过则自动开起,并保持最大可调时间10分钟后自动熄灭。通过手机APP控制LED的开关以及亮度调节,若夜晚通过手机APP开起灯光,人经过后无需手机关闭即可自动关闭,以防止由于忘关造成的电力浪费。以下是主程序流程图:


    main.c:


    #include "reg52.h"

    #include"uart.h"

    #include"led.h"

    #include 


    sbit MAN=P1^4;  


    int main()

    {

      unsigned char dat=0;

      NewLineReceived = 0;

      MAN=1;

      ColorLED_Init();    //LED灯初始化  

      Serial_Init();    //串口初始化  

      ms_delay(1000);

      WIFI_Init();      //WIFI模块初始化     

      timer0_init();    //定时计数器零初始化

      color_led_pwm(0, 0);  

      while(1)

      {

        if(MAN==0)

        {

          color_led_pwm(255, 255);

          while(MAN==0) ;

          color_led_pwm(0, 0);

        } 

        if(NewLineReceived == 1)

        {

          uart_send_string("Init OK!");

          serial_led();//调用串口解析函数

          NewLineReceived = 0;

        }

      }  

    }

    led.c:


    #include "reg52.h"

     sbit LED_W = P1^0;

     sbit LED_W1=P1^1;

     sbit LED_W2=P1^2; 

     sbit LED_Y = P1^5;

     sbit LED_Y1 = P1^6;

     sbit LED_Y2 = P1^7;

      unsigned char whitenum=0;

      unsigned char yellownum=0; 

      unsigned char ledWnum=0;

      unsigned char ledYnum=0;

      void ColorLED_Init()

    {          

          LED_W = 1;  

          LED_W1 = 1;  

          LED_W2 = 1;     

          LED_Y = 1;  

          LED_Y1 = 1;  

          LED_Y2 = 1;

        }

     void color_led_pwm(unsigned char v_iwhite, unsigned char v_iyellow)//点亮相应颜色的灯

    {  

           whitenum = v_iwhite;  

           yellownum = v_iyellow; 

        }

      /*** Function       ledRPwmWrite* @author        Danny* @date          2017.08.16* @brief         LED_R产生pwm* @param         void* @retval        void* @par History   无*/ 

     void ledWPwmWrite()

     {  

       if((whitenum != 0) && (whitenum!=255))  

         {    

            if(ledWnum <=  whitenum)    

              {        

                 LED_W=1;

                 LED_W1=1;

                 LED_W2=1;    

               }   

            else    

               {        

                 LED_W=0;      

                 LED_W1=0;      

                 LED_W2=0;    

                }  

         }            

       else if(whitenum==0)    

         {        

           LED_W=0;      

           LED_W1=0;      

           LED_W2=0;    

          }  

        else if(whitenum==255)       

          {        

            LED_W=1;      

            LED_W1=1;      

            LED_W2=1;    

           }

      } 

     /*** Function       ledGPwmWrite* @author        Danny* @date          2017.08.16* @brief         LED_G产生pwm* @param         void* @retval        void* @par History   无*/ 

     void ledYPwmWrite()

    {  

        if((yellownum != 0)&&(yellownum!=255))  

         {    

            if(ledYnum<=yellownum)    

               {      

                  LED_Y=1;      

                  LED_Y1=1;     

                  LED_Y2=1;    

                }   

              else    

                {     

                   LED_Y=0;      

                   LED_Y1=0;      

                   LED_Y2=0;    

                 }  

           }  

          else if(yellownum==0)     

            {      

               LED_Y=0;      

               LED_Y1=0;      

               LED_Y2=0;    

             }  

             else if(yellownum==255)     

             {      

                LED_Y=1;      

                LED_Y1=1;      

                LED_Y2=1;    

              }

        }   

     void Update_ColorPWM()

    {  

          ledWPwmWrite();  

          ledYPwmWrite();

       } 

     void timer0_init()

    {  

         TMOD|=0X01;  //定时器T0工作方式1,定时器T1工作方式2    

         TH0=0XFF;    //100us定时,装入初值    

         TL0=0XA4;  

         TR0=1;    //启动T0工作    

         ET0=1;    //允许T0中断    

         EA =1;      //开总中断  

         PT0=0; 

       }  

      void timer0() interrupt 1  

    {     

          TH0=0XFF;    //50us定时,装入初值   

          TL0=0XD2;    //控制pwmled  

          ledWnum++;  

          ledYnum++;  

          Update_ColorPWM(); 

        }

    uart.c:


    #include "reg52.h"

    #include

    #include

    #include

     #include"led.h"

     bit NewLineReceived = 0;       //串口接收完成标志位

     bit StartBit  = 0;             //协议开始标志

     int g_num=0;           //定义变量

     int g_packnum=0;

     char InputString[50] = {0};    //用来储存接收到的内容 


    可自行制作或下载第三方软件WiFi调试助手。建议使用安卓平台。安卓平台允许开发者根据自己的喜好和应用需求,设计出具有不同特色的实用软件。同时,安卓平台还能够适配多种硬件开发平台,对于硬件开发门槛要求低,极大地方便了用户对其进行相关的开发研究。此外,凭借其巨大的优势,安卓平台在当前开发平台领域中呈现逐年上升的趋势。因此在本设计中采用安卓平台进行本项目的设计开发。


    文章来源于:电子工程世界    原文链接
    本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

    相关文章

    我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

    利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

    充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

    我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

    我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

    凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

    我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>