辜渝傧

13037102709

027-87870986

新闻动态

您当前的位置:首页 > 新闻动态 > 行业动态 >

物联网技术区||传感控制器的应用之光照强度的采集

发布者:    布时间:2020-09-16 16:39:49    点击量:

       任务描述
       通过编程实现光照强度数据的读取,在节点模块的液晶屏幕上进行显示,当用手遮挡的光敏传感器时,光照数据会相应发生变化。
       知识引入
       光照传感器在生活中应用广泛,光敏传感器的应用主要是光敏电阻的应用,因此在自动控制、家用电器中存在广泛的应用,例如:在电视机中作亮度自动调节、在照相机中作自动曝光、在路灯、航标中作自动电路控制、防盗报警装置等。
       光敏传感器的种类繁多,主要有:光电管、光电倍增管、光敏电阻、光敏三极管、光电耦合器、太阳能电池、红外线传感器、紫外线传感器、光纤式光电传感器、色彩传感器、CCD和CMOS图像传感器等。
       1.实验电路图
       光照传感器采用灵敏度高的光敏电阻作为采集点,STC15使用P00进行ADC模数转换采集数据,其中增加一块LM393进行电压比对,当超过一定值(可调电阻控制)时,LM393数据引脚连接STC15的P0引脚输出高,原理图如下:光敏传感器原理图

图4-5光敏传感器原理图
      本任务实现需要节点板、slink通信模块、光照传感器模块各一个。
       2.关键代码的分析
       此处给出完整的光敏传感器数据获取、显示、发送代码,在后期任务实施的代码书写部分可以直接使用,也可以根据实际需求进行举一反三,修改利用。
#include "WZ01_SN_A_V1.0.h"
#include "Uart1.h"
#include "Uart3.h"
#include "ADC.h"
/*-源码分析-----------------
以上四个头文件功能描述如下:
WZ01_SN_A_V1.0.h:设备厂家单片机定义的头文件;
Uart1.h:串口1收发以及端口的映射的头文件。
Uart3.h:串口3收发以及端口的映射的头文件。
ADC.h:  ADC转换头文件
------------------*/
//uchar LineBuf[16];
ulong System1MsCnt = 0;             //系统1ms计数器
ulong SystemSecond = 0;
//初始化定时器0
void Timer0Init()
{
    AUXR |= 0x80;                   //定时器0为1T模式
//  AUXR &= 0x7f;                   //定时器0为12T模式
    TMOD = 0x00;                   //设置定时器为模式0(16位自动重装载)
    TL0 = T1MS;                     //初始化计时值
    TH0 = T1MS >> 8;
    TR0 = 1;                        //定时器0开始计时
    ET0 = 1;                        //使能定时器0中断
    EA = 1;                       //使能外部总中断
}
//*功能描述:    定时器0中断服务函数(启动后每1MS进入一次)
void Timer0_ISR() interrupt 1 using 1
{
    static uint counter0=0;
    counter0++;
    System1MsCnt++;
    if(System1MsCnt%1000==0)
    {          
//      BUZZER = !BUZZER;
    }
}
//主函数
void main(void)
{
    uint  value0=0;  //定义整形变量用来存储光照值
    uint  value1=0;  //定义整形变量用来存储端口值
    uchar buff[20]={0};  //定义字符数组存储串口发送字符串
   
    BUZZER_INIT();  //蜂鸣器初始化
    Timer0Init();   //定时器初始化
    Uart1Init();   //串口1初始化
    Uart3Init();   //串口3初始化
    InitADC();   //ADC转换初始化
    SetBit(P1M1,1);          //设置P11置1,为高阻输入
    ClrBit(P0M1,1);          //设置P01清0,为准双向
/*-源码分析-----------------
以上两个函数引用自WZ01_BR13_A_V1.0.h头文件,具体功能如下:
1.  #define SetBit(reg,bit)     (reg|=(1<<(bit))),P11置1
SetBit(reg,bit):对reg寄存器的第bit位置1操作。
2.  #define ClrBit(reg,bit)     (reg&=~(1<<(bit))),P01清0
 ClrBit(reg,bit):对reg寄存器的第bit位置0操作。
P1M1、P0M1寄存器功能详细定义参见项目三。
-----------------*/
    OledInit(); //液晶屏初始化
    OledClear();  //液晶屏清屏
    OledDispString(1,1,"  光照检测  ");
    while(1)
    {      
        value0 = ((uint)(255-GetADCResult(0)) ;
        value1 = DATA_IO1;                //value0 = ((uint)(255-GetADCResult(1)) ;
/*-源码分析-----------------
以上两行代码功能分析如下:
1.  GetADCResult(0)函数引用自 "ADC.h"头文件,功能为读取光照传感器IO0脚的数据,为实际的光照值。
由于函数获取的值越大,对应的光照强度约暗,不符合人们的逻辑思维,因此用(255-GetADCResult(0))进行换算,以符合数值大小与明暗度的大小对应。
2.  通过引脚定义,读取光照传感器IO1脚的数据,为数字量,通过传感器上的电位器调节参考值设置阀值,当高于阀值此处为1否则为0。
相关引脚定义参考”WZ01_BR13_A_V1.0.h”头文件。
#define BUZZER                      P45                 //蜂鸣器端口定义
#define DATA_IO0                    P10
#define DATA_IO1                    P11
#define DATA_IO2                    P02
#define DATA_IO3                    P03。
-----------------*/
        sprintf(buff,"V0:%d V1:%d\r\n",value0,value1);  //V0表示模拟量  V1表示数字量      //以下代码 参照温湿度代码详解 不在讲述
        OledClearHalf(2);
        OledDispString(3,1,buff);
        sprintf(buff,"#var 1 %d\r",value0);    
        Send3String(buff);
        sprintf(buff,"#var 2 %d\r",value1);    
        Send3String(buff);
        DelayMs(1000);
    }
}
 
       任务实现
  1. 将无线模块插到节点底板上,注意天线朝左,将光敏传感器插到节点底板,有白色丝印的角朝右,如图4-5光敏传感器节点模块。光敏传感器节点模块
图4-7光敏传感器节点模块
  1. 为节点底板通电,此时led1灯点亮状态[图4-7中并未通电。
  2. 使用Keil软件打开随书资源中”源代码\项目四\任务2\WZ01_CZ_A_V1.0.uvproj”光敏工程文件,工程目录如图所示。                              光敏工程目录结构  图4-8光敏工程目录结构
  3. 在主程序main.c中编辑前面关键代码分析中的源码,完成后保存。
  4. 依据本教材项目二中任务二的操作,进行编译选项的设置。
  5. 点击编译按钮,成功编译后,在工程目录下output文件夹中生成了”光敏传感器实验.hex”可执行文件
  6. 打开STC-ISP软件,将USB-TTL下载器插上电脑(需要安装驱动),依据本教材项目二中任务三中的操作,选择下载器端口号和刚刚生成的HEX文件。
  7. 查看运行结果
       程序下载完毕,OLED屏幕将显示“V0:0V1:50”,如果改变传感器周边的光照环境,OLED上的光照数据也将随之改变。
 
       任务小结
       本任务通过编程实现光敏传感器数据的读取,本任务中主要知识点为光敏值读取GetADCResult()函数,GetADCResult() 所获取的值与原光照值随环境值成反比,因此通过换算后255-GetADCResult(0),得到与环境值成正比的值,同时要注意代码中引脚定义。

唯众物联网工程应用实训装置带你快速掌握物联网关键技术

唯众物联网实训室工程应用装置
一、产品名称:物联网工程应用实训装置
二、产品型号和技术规格
1.  产品型号:WZ-IOT-ATP
2.  外型尺寸:
桌面式操作台1个操作台底座1个
3.  电压/功率:220V
4.  配套设备
实训台:
温湿度传感器1个
人体红外监测器1个
高频RFID阅读器1个
光照强度检测器1个
可燃气体监测器1个
RGB三色灯执行器1个
LED显示屏2个
智能语音播放设备1个
继电器1个
 
       物联网教学实训主要用于对物联网核心课程的知识点学习,能够服务于相关课程的实验和实训需求。
       核心课程主要针对学科基础技术的培养,掌握物联网概论,传感器和RFID 等感知设备认知和开发,ZigBee/Wi-Fi/蓝牙等无线网络的配置、维护和开发,物联网互联接入及存储,物联网应用层软件开发,物联网产品整合等基本知识。
       核心课程采用全模块化的实验箱教学产品进行实验,具备优良的教学实验特性:全模块化的设计、开放式的硬件接口、开源的实验代码、完整的教学资源、贴心的售后服务。
       基于ARM Cortex-M4核心的通信网关,支持无线节点模块的双向连接及组网,与配套“可视化编辑器”和“可视化控制器”进行配置和控制。物联网关可以管理不同协议的无线节点模块,并能将多个无线节点模块视作不同设备,将无线节点模块的数据转换为TCP网络通信进行传输,网关同无线节点模块可以互通互联,轻松构建物联网络,共同构成物联应用开发平台。通过本物联网平台,可以迅速降低物联网应用的开发成本和开发时间,开发者即便不会编程,也可以在一两天之内,就迅速使用本平台开发搭建出自己的物联网应用。
       通过电脑PC端可直接以“可见即可得”的方式在此工具上生成不同的设备操作界面,支持指示灯、按键、图片集合、变量视窗、图文链接等五种可视化控件。所有控件的动作都可以直接反应到实际的物联设备(即无线节点模块)上。界面生成后,可以直接导入App使用,而不需要重新编译或安装App。
       通过物联网关、可视化控制器、可视化界面生成器编辑器、万纳模组、物联网传感器/执行器以及配套物联网连件连接件,师生不仅可以完成出基于物联网、远程访问、设备联动等功能的物联网实训项目,还可以迅速开发物联网商业产品\项目,如空气监测仪、电气设备在线监测器等等,并随时实现不同设备间的联动,而这些开发过程,基于本系统的可视化开发工具,可以做到零编程实现物联网应用系统。
       支持家庭常用的各种无线协议(红外、射频),兼容市面绝大多数品牌的空调、电视机、灯光、安防、窗帘等等家电设备,因此可以直接当做一套完备的智能家居系统进行使用,并集成了摄像头功能,可以直接在App中使用摄像头。
       平台所有设备采用模块化、集散化、工业化的设计模式,每个模块都为独立工作单元;模块均接近实际应用系统,能够容纳2-3个学生同时实训,可完成工程项目应用开发系统中硬件设备的安装、布线与调试,完成设备间的无线组网,既具有展示型又具有实操性。能够组建具有行业特色的物联网智能家居实训项目,确保学生可利用设备搭建真实工程项目。
 


上一篇:物联网技术区||传感控制器的应用之温湿度的获取

下一篇:物联网技术区||传感控制器的应用之人体红外的探测