时间:2017年12月

阶段:大二上学期

背景:单片机原理与应用课设

名称:智能灯控

摘要

本系统实现了多方式控灯功能,有按键控灯、串口指令控灯、点对点无线射频控灯、AI模式控灯。其中AI模式控灯是通过红外模块感应外界是否有人靠近来控制灯的亮灭及通过光敏传感器模块感应外界光照强度进而动态调整PWM占空比的输出来控制灯的亮度。

物联网是新一代信息技术的重要组成部分,也是“信息化”时代的重要发展阶段。互联网是物联网个过渡,物联网将成为新时代的发展灵魂。

处于AI时代来临前的我深感可庆,传统的灯控需要大量的布线,若要实现双控、三控及多控更是需要加大用线量,且开关还需要特别定制,及其麻烦,对于远程控制更是不敢想象。

我们将要设计并打造出一款基于ZigBee模块,多传感器,多方式开关,远程智能控制的灯控系统,达到智能照明的节能、环保、舒适、方便的功能。

关键词  物联网;智能;控制;LED灯

前言

1.1 系统研究背景

传统的灯控需要大量的布线,若要实现双控、三控及多控更是需要加大用线量,且开关还需要特别定制,及其麻烦,对于远程控制更是不敢想象。

1.2 系统研究的意义和目的

设计并打造出一款基于ZigBee模块,多传感器,多方式开关,远程智能控制的灯控系统,达到智能照明的节能、环保、舒适、方便的功能。

系统概述

2.1 系统的结构

本系统有软件和硬件两部分组成。

软件部分:串口调试助手,控制灯的亮灭、打开和关闭AI模式和实时监测灯的变化情况和日志

硬件部分:两个ZigBee模块,其中控制模块可以控制灯的亮灭和打开和关闭AI模式,被控制模块有人体红外感应模块、光敏传感器和LED发光二极管,其本身按键S1可以控制灯的亮灭,S2按键可以控制AI模式的开和关。AI模式是通过红外感应模块和光敏传感器智能控灯。

图2.1  系统结构图

2.2  系统的功能

1)按键控灯:开发板按键S1可以控制灯的亮和灭;

2)串口控灯:串口调试助手可发1开灯,和0关灯,控制灯的亮和灭;

3)无线控灯:一对一无线控制灯的开关,安全,可靠,无线发送模块的按键S1为灯控按键;

4)AI模式控灯:智能灯控的核心,AI模式可以感应周围是否有人经过来控制灯的开和关,并且可以根据外界的光照强度来调节自身灯的亮度,达到了节能、环保、舒适的绝佳效果;

5)多方式AI模式开关:本系统提供多方式控制AI模式的开启和关闭,其方式有:按键S2、串口、无线发送模块按键S2;

6)实时信息:串口助手实时上报灯的亮灭情况和当前受到哪方面的控制,如无线开灯时,串口将会显示“----无线开灯成功-----”和“/AI模式关闭/”信息,以达到最佳安全级别。

2.3  开发环境

IAR Embedded Workbench微型处理器开发环境

硬件系统设计

3.1  Zigbee芯片 CC2530

ZigBee是基于IEEE802.15.4标准的低功耗局域网协议。根据国际标准规定,ZigBee技术是一种短距离、低功耗的无线通信技术。这一名称(又称紫蜂协议)来源于蜜蜂的八字舞,由于蜜蜂(bee)是靠飞翔和“嗡嗡”(zig)地抖动翅膀的“舞蹈”来与同伴传递花粉所在方位信息,也就是说蜜蜂依靠这样的方式构成了群体中的通信网络。其特点是近距离、低复杂度、自组织、低功耗、低数据速率。主要适合用于自动控制和远程控制领域,可以嵌入各种设备。简而言之,ZigBee就是一种便宜的,低功耗的近距离无线组网通讯技术。ZigBee是一种低速短距离传输的无线网络协议。ZigBee协议从下到上分别为物理层(PHY)、媒体访问控制层(MAC)、传输层(TL)、网络层(NWK)、应用层(APL)等。其中物理层和媒体访问控制层遵循IEEE 802.15.4标准的规定。

3.2  LED发光二极管

LED发光二极管采用的是2*5*7MM雾状白蓝色发光二极管,二极管的阳极接在ZigBee模块的P1_0引脚,阴极接ZigBee模块的GND引脚。

图3.1  LED发光二极管实物图

3.3 人体红外感应模块

人体红外感应模块采用的是完整版的HC-SR501人体模块,自动感应,红外感应模块的VCC接在ZigBee模块的5.0vVCC引脚,GND接在ZigBee模块的GND 引脚,out接在ZigBee模块的P1_3引脚。

           

图3.2      人体红外感应模块原理图             图3.3     人体红外感应模块实物图

3.4 光敏电阻传感器

光敏电阻传感器采用的是4线光敏电阻传感器模块,光敏电阻型号为:5516,本产品使用的是AO模拟量输出,光敏电阻传感器的VCC脚接在ZigBee模块的3.3vVCC引脚,GND接在ZigBee模块的GND引脚,AO接在ZigBee模块的P0_5引脚。

            

图3.4   光敏传感器模块原理图                    图 3.5  光敏传感器模块实物图

软件系统设计

4.1系统整体功能设计

ADC环境光照强度魔术转换;PWM多级调光;多中断智能处理;人体红外感应;无线远距离控制。

图4.1  程序流程图

4.2  AI模式

AI模式可以感应周围是否有人经过来控制灯的开和关,并且可以根据外界的光照强度来调节自身灯的亮度,达到了节能、环保、舒适的绝佳效果。

主函数while(1)循环里,if((boozd==1)&&(P1_3==1))(boozd为AI模式是否允许标志位,P1_3==1表示当前有人经过)成立则会不断获取当前ADC环境光照强度魔术转换后的值,然后用if(){}else if(){}方法与标准区间进行比较,若比较成功将会以当前区间所对应的LED亮度动态调整PWM占空比输出,然后将进行新判断、获取、比较。

图 4.2-1

如图 4.2-1,串口调试助手发送 2,收到 CC2530 串口发送的的信息,此时红外人体感应模块和光敏传感器模块两者协调工作,共同控制 LED 灯,也可以通过接收 CC2530 单片机的按键模块的 S2 按键来打开和关闭 AI 模式,也可通过发送CC2530 单片机的按键 S2 来控制 AI 模式的启动与关闭;

图 4.2-2

如图 4.2-2,系统处于 AI 模式时用手握紧光敏传感器模块,让光敏传感器模块处于黑暗的环境下,可见 LED 灯的亮度

图 4.2-3

如图 4.2-3,系统处于 AI 模式时,打开手机闪光灯靠近光敏传感器模块,可见LED 灯的亮度明显降低,当闪光灯更加接近光敏传感器模块时,LED 灯会熄灭

4.3 多中断智能处理

本系统包含3大中断处理函数:

1》》串口接收中断处理函数:

#pragma vector=URX0_VECTOR

__interrupt void urx0(){}

可判断串口接收到的数据,然后进行智能处理,当接收到‘1’时,会以最大亮开灯和关闭AI模式,并且向串口调试助手发送“---串口开灯成功-----”和“----AI模式关闭-----”日志,当收到‘0’时,将向串口发送“/串口关灯成功”日志;当收到‘2’时,模块将会利用标志位判断AI模式是否打开,若打开则进行关闭操作,并向串口发送“----AI模式打开-----”日志;当收到其他数据时,模块将向串口将会发送“!!!无该指令!!!”日志。

图 4.3-1
如图 4.3-1,串口调试助手发送‘1’,LED 灯会以全亮的形式打开,并关闭AI模式

图 4.3-2

如图 4.3-2,串口调试助手发送‘0’,LED 灯熄灭 (2 按键中断处理函数:

#pragma vector=P0INT_VECTOR
__interrupt void p0int(){}
模块按键有 S1 和 S2,分别对应的是 ZigBee 模块的 P0_0 和 P0_1 引脚,S1可以控制灯的亮灭,当按键按下且 if(P0IFG&0x01)成立则表示可进入 S1 中断处理函数,函数里将根据标志位状态进行下一步操作,若标志位显示此时灯是灭的,则将会进行开灯功能,并向串口发送相应日志;S2 可以控制 AI 模式的开和关,当按按下且 if(P0IFG&0x02)成立将进入 S2 中断处理函数,函数里将根据标志位状态进行下一步操作,若标志位显示此时 AI 模式已开启,则会进行关闭 AI 模式操作,并先串口发送相应日志。

图 4.3-3
如图 4.3-3,当按下接收 CC2530 单片机的按键模块的 S2 按键,串口调
试助手收到单片机发来的 AI 模式打开的信息,此时 AI 模式正在运行中。

图 4.3-4
如图 4.3-4,当再次按下接收 CC2530 单片机的按键模块的 S2 按键,串口调试助手收到单片机发来的 AI 模式关闭信息,此时 LED 灯熄灭

图 4.3-5
如图 4.3-5,当按下接收 CC2530 单片机的按键模块的 S1 按键,串口调试
助手收到单片机发来的按键开灯成功和 AI 模式关闭信息,此时 LED 最亮显示

图 4.3-6
如图 4.3-6,当再次按下接收 CC2530 单片机的按键模块的 S1 按键,串口调试助手收到单片机发来的 LED 关闭信息,此时 LED 灯熄灭
3》》RF 中断处理函数

#pragma vector=RF_VECTOR __interrupt void x1(){}

当 ZigBee 模式收到发送模块数据时且 if(RFIRQF0 & 0x40)成立将进入 RF接收处理函数,读取数据包的倒数第 4 和第 3 个有效字节,倒数第 3 位数据对应串口发送‘2’的功能,倒数第 4 位数据对应的是串口发送‘1’的功能

图 4.3-7

如图 4.3-7,当发送 CC2530 单片机模块按下 S1 按键时 ,接受 CC2530 将会进入 RF 中断,并收到“0x0D,0x51,0x88,0x00, 0x07,0x20,0xEF,0xBE,0x20, 0x50,'1','0'” 数据包,经过解析可知是控制灯的亮灭指令,接受单片机模块执行开灯和关闭 AI 模式

图 4.3-8

如图 4.3-8,当发送 CC2530 单片机模块再次按下 S1 按键时 ,接受CC2530 将会再次进入 RF 中断,并再次接收到“0x0D,0x51,0x88,0x00, 0x07,0x20,0xEF,0xBE,0x20, 0x50,'1','0'” 数据包,经过解析可知是控制灯的亮灭指令,接受单片机模块执行关灯操作

图 4.3-9

如图 4.3-9,当发送 CC2530 单片机模块按下 S2 按键时 ,接受 CC2530 将会进入RF 中断,并收到“0x0D,0x51,0x88,0x00,0x07,0x20,0xEF,0xBE,0x20, 0x50,'0','2'” 数据包,经过解析可知是控制 AI 模式的启动与停止指令,接受单片机判断此时 AI 模式是否开启然后继续相反操作。

图 4.3-10

如图 4.3-10,当发送 CC2530 单片机模块再次按下 S2 按键时 ,接受 CC2530将会再次进入 RF 中断,并收到“0x0D,0x51,0x88,0x00,0x07,0x20,0xEF, 0xBE,0x20,0x50,'0','2'” 数据包,经过解析可知是控制 AI 模式的启动与停止指令,接受单片机判断此时 AI 模式是否开启然后进行相反操作。

系统调试

5.1. 系统硬件调试
单个功能一一测试完成后,发现 ZigBee 模块仅有一个 GND 引脚,所以把全
部传感器、二极管等的 GND 引脚一起用 1 根杜邦线引入 ZigBee 模块的 GND 引脚。

5.1 硬件总体实物图

5.2. 系统软件调试
如何更加准确的知道当前环境的光照情况,明暗变化的光照强度 ADC 变化,可以通过:

char str[30];
sprintf(str,"adc 数值为:%d",adc);
uartTX_Send(str);
在主函数实时发送 ADC 的值到串口调试助手里,获取每个光照阶段里 ADC转换的值,计算 PWM 占空比以达到最佳的调光效果。

相关部分代码

RF收

1 #include<iocc2530.h>
2 #include<stdio.h>
3 #include<string.h>
4 #include<stdbool.h>
5 #define LED P1_1
6 #define uint unsigned int
7 bool boozd=1;8 bool boog=1;9 uint pwmx[11]={0x00,0xF7,0xE1,0xC8,0xAF,0x96,0x7D,0x64,0x4B,0x32,0x01};10 uintadc;11 floatadcResu;12 void InitLED(){//*****************初始化LED灯
13 P1SEL &=0xFD;14 P1DIR |=0x02;15 LED=0;16 }17 void InitADC(){//********************初始化ADC
18 P0DIR &=0xDF;//P0_5为输入
19 APCFG |=0x20;//设置为模拟口
20 ADCCON3 =0x75;//0011 0101,端口电压,512抽取率,P0_5
21 adc=0;22 ADCH=0;23 ADCL=0;//清除ADC数据
24 ADCCON1=0x30;//停止ADC转换
25 ADCCON1 |=0x40;//启动ADC转换
26 }27 void Initclock()//*************************************时钟初始化
28 {//32MHz
29  SLEEPCMD &=0xFB;//开启全部RC振荡器,避免16MHZRC振荡器被关闭
30  while((SLEEPSTA&0x40)==0);//等待32MHZ上电稳定
31  CLKCONCMD &=0xBF;//设置32MHZ为系统时钟源
32  while(CLKCONSTA&0x40);//等待32MHZ成功成为系统时钟源
33  CLKCONCMD |=0x38;34  CLKCONCMD &=0xF8;//系统时钟不分频输出,定时器为250KHZ
35  SLEEPCMD |=0x04;//关闭不用的RC振荡器
36 }37
38 void InitUart(){//*******************************串口初始化
39   PERCFG &=0xFE;//将串口0的位置选在P0口
40   P2DIR &=0x3F; //P0口的外设优先级控制设为串口0优先
41   P0SEL |=0x0C;//P0口的2、3管脚设为外设工作方式
42   U0CSR |=0xC0;//USART0工作的UART模式,接收使能
43   U0UCR=0x02;//据格式为8位数据位、1位停止位、没有校验位
44   U0GCR |=11;//波特率为115200
45   U0BAUD |=216;46   EA=1;47   URX0IE=1;//接收中断打开
48   UTX0IF=0;49   URX0IF=0;50 }51  void delay(uint i){//*********************延时函数
52 for(uint j=0;j<i;j++)53 for(uint x=0;x<1000;x++);54 }55 void uartTX_Send(char *strx){//********************串口发送
56  while(*strx!='\0'){57   U0DBUF=*strx;58   while((U0CSR&0x02)==0);//等待发送完成
59    *strx++;60    U0CSR &=0xFD;61 }62 }63 void InitTime(){//**********************pwm64   //输出比较,P1_0
65  P1SEL |=0x01;66  P1DIR &=0xEE;67  PERCFG |=0x40;68  P2DIR |=0xC0;//定时器通道2-3最高优先级
69  T1CTL=0x02;//模模式,0x00-T1CC0!!!!!!!!!!!!!!!!
70  T1CCTL2=0x1C;71  T1CC0H=0x00;72  T1CC0L=0xFA;//周期为1ms,频率为1KHZ 必须设置!!!!
73  T1CC2H=0x00;74  T1CC2L=pwmx[0];75 //0x00 0xF7 0xE1 0xC8 0xAF 0x96 0x7D 0x64 0x4B 0x32 0x19
76 }77 void InitButton(){//*******************按键中断初始化
78 P0SEL &=0xFC;79 P0DIR &=0xFC;80 P0INP &=0xFC;81 P2INP &=0xFC;82 PICTL |=0x01;83 P0IE=1;84 P0IEN |=0x03;85 P0IF=0;86 P0IFG &=0xFC;87 }88 void Initho(){//******************************红外感应初始化89 //P1_3
90 P1SEL &=0xF7;91 P1DIR &=0xF7;92 P1INP &=0xF7;93 P2INP |=0x40;94 }95 void InitWX()//***********************************射频的初始化
96 {97 FRMCTRL0 |=0x60;98 TXFILTCFG =0x09;99 AGCCTRL1 =0x15;100 FSCAL1=0x00;101
102 RFIRQM0 |=0x40;//打开接收中断
103 IEN2 |=0x01;104 FREQCTRL=(11+(25-11)*5);//25号信道可改设置载波为2475M
105
106 PAN_ID0=0x07;107 PAN_ID1=0x20;//PAMID
108
109 RFST=0xEC;//清除接收缓冲器
110 RFST=0xE3;//开启接收使能
111
112 SHORT_ADDR0=0xEF;113 SHORT_ADDR1=0xBE;//设置模块网络地址
114 }115 voidmain(){116 InitLED();117 Initclock();118 InitUart();119 InitADC();120 InitTime();121 InitButton();122 Initho();123 InitWX();124   boozd=1;125   boog=1;126   while(1){127     if(ADCCON1&0x80){128     adc |=(ADCL>>2);129     adc |=(ADCH<<6);130     if((boozd==1)&&(P1_3==1)){131         LED=1;132        if(adc>6191){T1CC2H=0x00;T1CC2L=pwmx[10];}133        else if(adc>5191){T1CC2H=0x00;T1CC2L=pwmx[8];}134        else if(adc>4191){T1CC2H=0x00;T1CC2L=pwmx[6];}135        else if(adc>3191){T1CC2H=0x00;T1CC2L=pwmx[4];}136        else if(adc>2191){T1CC2H=0x00;T1CC2L=pwmx[2];}137        if(adc<2191){T1CC2H=0x00;T1CC2L=pwmx[0];}138     /*char str[30];139 sprintf(str,"adc数值为:%d",adc);140 uartTX_Send(str);*/
141     }else if(boog){142     LED=0;143     T1CC2H=0x00;144     T1CC2L=pwmx[0];145 }146     InitADC();//再次启动
147     delay(1000);148
149 }150 }151 }152 #pragma vector=URX0_VECTOR
153 __interrupt void urx0(){  //*******************串口中断处理函数
154
155   charbufch1;156   bufch1=U0DBUF;157  if(bufch1=='1')158  {boog=0;159   T1CC2H=0x00;160   T1CC2L=pwmx[10];161   boozd=0;162   LED=1;163   uartTX_Send("\r\n   ----串口开灯成功-----  \r\n");164    uartTX_Send("\r\n   ----AI模式关闭-----  \r\n");165 }166  else if(bufch1=='0')167 {boog=0;168 boozd=0;169   LED=0;170  T1CC2H=0x00;171  T1CC2L=pwmx[0];172  uartTX_Send("\r\n   /串口关灯成功  \r\n");173 }174  else if(bufch1=='2'){175    boog=1;176     LED=1;177    boozd=1;178   uartTX_Send("\r\n   ----AI模式打开-----  \r\n");179 }180  else
181 uartTX_Send("\r\n   !!!无该指令!!!  \r\n");182
183
184 }185 #pragma vector=P0INT_VECTOR//**************按键中断处理函数
186 __interrupt voidp0int(){187   if(P0IFG&0x01){188    delay(150);189   if(P0_0==0){190     boog=0;191     if(LED==1){192       LED=0;193      boozd=0;194      T1CC2H=0x00;195      T1CC2L=pwmx[0];196      uartTX_Send("\r\n   /按键关灯成功  \r\n");197
198     }else{199       LED=1;200       boozd=0;201   uartTX_Send("\r\n   ----按键开灯成功-----  \r\n");202   uartTX_Send("\r\n   /AI模式关闭/ \r\n");203   T1CC2H=0x00;204   T1CC2L=pwmx[10];205 }206 }207 }208   if(P0IFG&0x02){209    delay(150);210   if(P0_1==0){211     boog=1;212     if(boozd==0){213       boozd=1;214       LED=1;215     uartTX_Send("\r\n   ----AI模式打开-----  \r\n");216     }else{217      boozd=0;218      LED=0;219     uartTX_Send("\r\n   /AI模式关闭/ \r\n");220 }221 }222 }223 P0IF=0;224 P0IFG &=0xFC;225 }226 #pragma vector=RF_VECTOR//******************RF中断处理函数
227 __interrupt voidx1()228 {229 if(RFIRQF0 & 0x40){230
231 static intlen;232 static charch;233 len=ch=0;234 len=RFD; //第一个字节
235 while(len>0){236   ch=RFD;237 if(len==4){238   if(ch=='1'){239       boog=0;240       if(LED==1){241        LED=0;242        boozd=0;243        T1CC2H=0x00;244      T1CC2L=pwmx[0];245      uartTX_Send("\r\n   /无线关灯成功  \r\n");246
247     }else{248    LED=1;249     boozd=0;250     uartTX_Send("\r\n   ----无线开灯成功-----  \r\n");251     uartTX_Send("\r\n   /AI模式关闭/ \r\n");252     T1CC2H=0x00;253     T1CC2L=pwmx[10];254 }}}255 if(len==3){256   if(ch=='2'){257     boog=1;258     if(boozd==0){259       boozd=1;260       LED=1;261     uartTX_Send("\r\n   ----AI模式打开-----  \r\n");262     }else{263      boozd=0;264      LED=0;265     uartTX_Send("\r\n   /AI模式关闭/ \r\n");266 }}}267 len--;268 }269 RFIRQF0 &=~0x40;270 S1CON=0;271 RFST =0xEC;272 RFST=0xE3;273 }}

RF发

1 #include<iocc2530.h>
2 void Initwx()//********************************射频的初始化
3 {4 EA=0;5 FRMCTRL0 |=0x60;6 TXFILTCFG =0x09;7 AGCCTRL1 =0x15;8 FSCAL1=0x00;9
10 RFIRQM0 |=0x40;//打开射频接收中断,应该在下面写接收中断函数
11 IEN2 |=0x01;//RFIE中断开
12 FREQCTRL=(11+(25-11)*5);//设置信道为25则载波为2475M
13
14 PAN_ID0=0x07;//PANID
15 PAN_ID1=0x20;//0x2007
16
17 RFST=0xEC;//清除接收缓冲器
18 RFST=0xE3;//开启接收使能
19 EA=1;20 }21 void fa( char *fsj,int len){//************************发送函数
22 RFST=0xEC;//确保接收是空
23 RFST=0xE3;//清接收标志位
24 while(FSMSTAT1 & 0x22);//等待射频发送准备好
25 RFST =0xEE;//确保发送队列为空
26 RFIRQF1 &=~0x02;//清空发送标志位
27 for(int i=0;i<len;i++){28   RFD=fsj[i];}29 RFST=0xE9;//发送缓冲区的数据
30
31 while(!(RFIRQF1 & 0x02));//等待发送完成
32 RFIRQF1=~0x02;//清发送完成标志
33 }34
35 void delay(){//*****************延时函数
36 for(int i=0;i<30;i++)37 for(int j=0;j<1000;j++);38 }39 void go32m()//*************************时钟频率初始化
40 {41  SLEEPCMD &=0xFB;//开启全部RC振荡器,避免16MHZRC振荡器被关闭
42  while((SLEEPSTA&0x40)==0);//等待32MHZ上电稳定
43  CLKCONCMD &=0xBF;//设置32MHZ为系统时钟源
44  while(CLKCONSTA&0x40);//等待32MHZ成功成为系统时钟源
45  CLKCONCMD |=0x38;46  CLKCONCMD &=0xF8;//系统时钟不分频输出,定时器为250KHZ
47  SLEEPCMD |=0x04;//关闭不用的RC振荡器
48 }49 void InitButton()//**************************
50 {51 P0SEL &=0xFC;52 P0DIR &=0xFC;53 P0INP &=0xFC;54 P2INP &=0xFC;55 PICTL |=0x01;56 P0IE=1;57 P0IEN |=0x03;58 P0IF=0;59 P0IFG &=0xFC;60 }61 void InitLED(){//***************************************
62 P1SEL &=0xFC;63 P1DIR |=0x03;64 P1_0=1;65 P1_1=1;66
67 }68 voidmain(){69 InitLED();70 go32m();71 InitButton();72 Initwx();73 SHORT_ADDR0=0x50;74 SHORT_ADDR1=0x20;//设置模块网络地址为0x2050;
75 while(1);76 }77 #pragma vector=P0INT_VECTOR
78 __interrupt voidxx()79 {80   if(P0IFG&0x01){81 delay();82     if(P0_0==0){83
84     P1_0=~P1_0;85     char fsj[]={0x0D,0x51,0x88,0x00,0x07,0x20,0xEF,0xBE,0x20,0x50,'1','0'};86     fa(fsj,12); //发送函数
87 }88 }89   if(P0IFG&0x02){90 delay();91   if(P0_1==0){92
93    P1_0=~P1_0;94     char fsj[]={0x0D,0x51,0x88,0x00,0x07,0x20,0xEF,0xBE,0x20,0x50,'0','2'};95     fa(fsj,12); //发送函数
96 }97 }98  P0IF=0;99  P0IFG &=0xFC;}

转载于:https://www.cnblogs.com/dongxiaodong/p/10850702.html

智能灯控(基于ZigBee)相关推荐

  1. 【毕业设计】基于ZigBee的智能灯控系统 -物联网 单片机 stm32

    文章目录 1 简介 2 系统结构 系统功能 相关器件 Zigbee芯片 CC2530 LED发光二极管 人体红外感应模块 光敏电阻传感器 3 实现效果 5 相关部分代码 6 最后 1 简介 Hi,大家 ...

  2. 基于单片机的智能灯控系统

    目录 实验四  简易路灯智能控制器 一.项目设计 1. 了解光敏电阻电气特性. 2. 学会在面包板上搭建光敏电阻电路测量环境光强度. 3. 学会使用PCF8591数模转换模块将光敏电阻两端电压转换为数 ...

  3. 蓝牙模块智能灯控应用方案

    当今是信息高速发展的时代,经济.文化的流行与传播都离不开信息.信息的传递直接影响着人们生活的方方面面,信息的传递方式又各有不同,如有线传输.无线传输等:而无线传输还可按协议不同分为:蓝牙.WIFI.z ...

  4. 优联智能灯控系统升级:NB-IoT将引领智慧照明新风潮

    随着5G布局的加快,各行各业积极布局物联网,万物互联时代加速来临,NB-IoT作为一种最新的低功耗窄带广域网通信技术能实现设备的海量连接,正成为物联网领域的一项革新性技术.NB-IoT加速了物联网的引 ...

  5. 智能灯控系统的介绍,它有什么优势

    随着智能家居行业的发展和产品的扩散,相信很多长期关注智能产业,在互联网环境下的积极消费者来说,一定都考虑过如何在现代家居中获得"解放感".而智能照明具有方便.美观.安全.节能的优点 ...

  6. MQTT协议的智能灯控

    一.MQTT协议概述: MQTT,一种基于发布/订阅(piblish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上.它可以以极少的代码和有限的带宽, ...

  7. 【安信可LoRa模组专题②】快速搭建远程控制灯LoRa智能灯控【51单片机篇】

    本LoRa模组系列博客学习由 安信可科技 - 官方博客 技术分享,如有疑问请留言或联系邮箱. [安信可LoRa模组专题①]安信可LoRa快速入门指南 [安信可LoRa模组专题②]快速搭建远程控制灯Lo ...

  8. 蓝奥声智能灯控解决方案:一种无线单火取电控制技术

    单火开关出现鬼火现象一般是出现在控制小功率灯具的情况下,正常的5W之上的灯具一般是没啥问题的(质量差的除外).就现在来说,单火稳定性与零火版相比还是有所欠缺,毕竟从电路原理上来说,这确实是一个硬伤.不 ...

  9. ESP8266智能灯控

    一,MQTT协议 1.MQTT协议可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务. 2.使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合. 对负载内容屏蔽的消息传输. ...

最新文章

  1. Symfony笔记之--控制器的快捷方法
  2. spingboot和mybatis,纯注解方式
  3. struts基本概念(2)
  4. 阿拉伯数字转中文大(小)写的函数
  5. Windows 8 页面应用测试(2)
  6. JAVA HttpURLConnection 获取网页内容
  7. git学习笔记-(12-git后悔药-1)
  8. java找不到符号IOException_BufferWriterTest.java:找不到符号
  9. html表单下拉美化教程,使用css美化html表单控件详细示例(表单美化)
  10. 扫地机器人不取出水箱可以吗_小米扫地机器人水箱不出水是怎么回事
  11. SWAT 建模与案例应用
  12. 仓央嘉措---不负如来不负卿---问佛--见与不见
  13. ES6 对象数组查找某一个对象
  14. ELF文件格式, ELF文件是什么,里面包含什么内容
  15. 推荐系统——矩阵分解
  16. OpenCV 保存视频
  17. python 给qq点赞_Python学习二:使用Python实现在QQ空间批量点赞
  18. 静态成员变量与静态成员函数的声明与定义
  19. ubuntu python3.5安装_ubuntu12.04安装python3.5及pip3和setuptools
  20. 使用MOG2对运动物体进行检测

热门文章

  1. 分享 28 个你应该知道的JS 实用小技巧
  2. 大厂所需要的这类人才,你是吗?
  3. 你必须知道 开区间 闭区间 半开区间 是什么?如何表示?
  4. python基础之PyCharm开发工具
  5. 2023 年五个最佳被动收入来源
  6. 数据结构与算法——队列( Quene )
  7. 计算机控制技术罗文广PPT,计算机控制技术罗文广计算机控制技术第3章课件教学.ppt...
  8. 马云的996,刘强东的兄弟情:“你的能力配不上我的人性”
  9. 英语学习单词篇(7)
  10. 控制2FRE、4WRPH、4WRE、PRL、PIL系列带电气位置反馈的比例阀放大器