【优秀应用分享】人体感应智能灯 (Wi-Fi 模块)+EDP-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8923|回复: 3

【优秀应用分享】人体感应智能灯 (Wi-Fi 模块)+EDP

[复制链接]
发表于 2016-4-29 11:39 | 显示全部楼层 |阅读模式
本帖最后由 OneNET 于 2016-5-3 16:12 编辑

物联网
物联网将是下一个推动世界高速发展的“重要生产力”,是继通信网之后的另一个万亿级市场。 业内专家认为,物联网一方面可以提高经济效益,大大节约成本;另一方面可以为全球经济的复苏提供技术动力。美国、欧盟等都在投入巨资深入研究探索物联网。我国也正在高度关注、重视物联网的研究,工业和信息化部会同有关部门,在新一代信息技术方面正在开展研究,以形成支持新一代信息技术发展的政策措施。 废话不多说进入正题。
项目介绍
人体感应智能灯
  • 应用功能:照明、远程控制、智能调节
  • 控制设备:通过EDP协议控制设备和传感器不断调节灯运行状态,达到合理情况,减少能源消耗起到节能目的
有五种工作模式:阅读模式、自定义亮度、电影模式、夜间路灯模式、音乐模式。达到灯具人工智能,远程控制和节约能耗。
  • 阅读模式:产品会根据外界的亮度调节灯光的亮度,使灯光适合人正常工作生活,达到节能目的。
  • 自定义亮度:可以根据你的需要调节亮度,符合你的使用。
  • 电影模式:营造一个看电影炫酷环境。
  • 夜间路灯模式:判断环境是否过暗,有没有在附近来决定是否需要开灯,实现人在灯亮,人走灯灭功能,达到节能目的。
  • 音乐模式:为听音乐渲染一个环境。
  • 光照强度图像,显示产品环境周围的亮度,右边的旋钮控制灯具在什么亮度启动(阅读模式、夜间路灯模式有效)
  • 断电,断网自动重连接。
  • 数据传输信息
    • 通信方式:WiFi
    • 通讯协议:EDP协议
    • 数据流数量:5个
    • 数据点规模(数量级):3个数量级
    • 数据格式:80 0a 00 05 00 06 2c 3b 31 2C 31 38(例如)
    • 数据上传频率:一个数据6s或以下


材料
arduino leonardox1、led灯x4(红、绿、黄、白)、HLK-RM04 WiFi模块x1、人体红外感应模块x1、5V/2A手机充电器x1、光敏电阻x1、电位器x1(50kΩ)、导线若干。
人体感应智能灯-器件选型.jpg

arduino Leonardo
微控制器 ATmega32u4 工作电压 5V 输入电压(推荐) 7-12V 输入电压(限制) 6-20V 数字I/O引脚 20 PWM通道 7 模拟输入通道 12 每个I/O直流输出能力 40毫安 3.3V端口输出能力 50毫安 Flash 32 KB(ATmega32u4)其中4 KB由引导程序使用 SRAM 2.5 KB(ATmega32u4) EEPROM 1 KB(ATmega32u4) 时钟速度 16MHz 推荐原因:这个开发板有个好处比较好的地方有两个串口,方便我们调试,不会影响到其他串口,如果用虚拟串口也可以,这个会影响一些速度,这开发板是开源开发起来比较方便,使用开发板是尽量不要开发板向外供电。AVR单片机编程使用了 14,430 字节,占用了 (50%) 程序存储空间,全局变量使用了506字节,(19%)的动态内存。想做这个最好准备大于这个数值的单片机就可以了。
开发板原理图: 人体智能感应灯-arduino原理图.zip (36.58 KB, 下载次数: 53)
人体智能感应灯-4.jpg
HLK-RM04 WiFi模块
这模块有三种设置方法:WEB 页面配置(符合我的设备方便顾客使用)、串口 AT 指令配置、串口配置。 性能比较稳定,速度比较快。如果你想节省一些钱可以选择esp8266,但稳定比较差一点,传输速度低也可以满足我的要求,只是链接网络成功性比较低,不支持WEB 页面配置, 综合考虑我选择第一个。
使用说明书: HLK-RM04用户手册V1.1.zip (441.77 KB, 下载次数: 18)
通过WEB 页面设置比较方便:

人体智能感应灯-7.png


体红外感应模块(测量人体红外波长的模块)使用比较方便,比微波雷达准确的多(雷达测动的一切动的物体,所以出错的概率大些),还有一个好处:比较节能,上面的电位器可以调节延迟、测量距离,非常好用。

光敏电阻
人体智能感应灯-8.jpg

电位器

人体智能感应灯-9.jpg
电位器精度比较高,使光线测量更准确。 可以开始动手了!

PCB图:

人体智能感应灯-16.png


人体智能感应灯-17.png

模拟仿真实物

人体智能感应灯-19.jpg


操作界面
初始情况:
人体智能感应灯-13.png

运行情况:

人体智能感应灯-14.png


AVR单片机程序
作者的设计用到旋钮,所以采用OneNETEDP通讯。 有一个辅助软件可以帮你更快编程和调试,使用后电脑相当于下位机。 提示:OneNET支持多种不同的接入协议,很多都是基于TCP/UDP的上层协议,其分别对应的域名、IP地址和端口号都各有不同:
EDP 域名:jjfaedp.hedevice.com
IP地址:183.230.40.33/39/40
端口号:876/29876 HTTP
域名:api.heclouds.com或者jjfarfapi.heclouds.com
IP地址:183.230.40.33/34 端口号 80
通过软件,输入IP地址、端口、设备ID、Api-Key生成代码,生成代码你就可以连接网上服务端,资料下载地址:
人体智能感应灯-19.png


//OneNet平台上设备建立连接
void connection(){  unsigned char hexdata[49] ={0X10,0X2F,0X00,0X03,0X45,0X44,0X50,                              0X01,0X40,0X00,0X80,0X00,0X06,0X35,                              0X36,0X35,0X30,0X32,0X37,0X00,0X1C,                              0X6C,0X65,0X76,0X71,0X6D,0X43,0X62,                              0X54,0X69,0X54,0X36,0X47,0X62,0X45,                              0X6D,0X33,0X66,0X45,0X5A,0X6A,0X6C,                              0X38,0X5A,0X52,0X53,0X66,0X63,0X3D};  Serial1.write(hexdata, 49);}


//上传数据OneNet
void postData1(unsigned char Data,unsigned char SENSORID1,unsigned char SENSORID2){  unsigned char hexdata[8] = {0x80,0x0a,0x00,0x05,0x00,0x06,0x2c,0x3b};  Serial1.write(hexdata, 8);  Serial1.write(Data);  Serial1.write(0x2c);  Serial1.write(SENSORID1);}
发送的数据格式: 0a、06是发送信息长度。 31是数据流名称为1
31 38发送数值为18 EDP格式定义文件下载地址:http://open.iot.10086.cn/download


//心跳,掉线重连接
void heart(){  unsigned char data[2] = {0xC0,0x00};           //心跳  Serial1.flush();  if(millis()-time>=2400){    Serial1.write(data, 2);  }   while(Serial1.available())                //重新连接  {    char c = Serial1.read();    //Serial.print(c);    if (c == 0X6E)                            //没有连接上    connection();  }}

//检测光线
float ajust(){          //自动调节亮度 float x; x=analogRead(pin)*0.00488; if(x<=constant)          //constant暗和亮临界值 t=(5-x)*51.2*0.1; return t;}
这个是用到开发板的AD转化IO,A0-A5, AD转化精度为1/1024,这个可以参看一下这网址,都有说的很详细。 http://www.arduino.cn/thread-1205-1-1.html


//心跳//音乐模式//心跳//音乐模式
void heartbeat(){  //红色led  for(int n=0;n<200;n++){  analogWrite(redled, n);  analogWrite(whiteled, 200-n);  delay(2);  }  for (int a=200; a>=0;a--){ //循环语句,控制PWM亮度减小   analogWrite(redled,a);  analogWrite(whiteled, 200-a);   delay(2); //当前亮度的维持的时间,单位毫秒   }   //蓝色led  for(int n=0;n<200;n++){  analogWrite(blueled, n);  analogWrite(redled, 200-n);  delay(2);  }  for (int a=200; a>=0;a--){ //循环语句,控制PWM亮度减小   analogWrite(blueled,a);  analogWrite(redled, 200-a);   delay(2); //当前亮度的维持的时间,单位毫秒   }   //绿色led  for(int n=0;n<200;n++){  analogWrite(greenled, n);  analogWrite(blueled, 200-n);  delay(2);  }  for (int a=200; a>=0;a--){ //循环语句,控制PWM亮度减小   analogWrite(greenled,a);  analogWrite(blueled, 200-a);   delay(2); //当前亮度的维持的时间,单位毫秒  }}

PCB板最终图:

人体智能感应灯-15.jpg


组装成型图:

人体智能感应灯-16.jpg

请忽略那质朴的外壳

最后是作者应用展示的视频:http://www.tudou.com/programs/view/LqjhtB-mbbw/
发表于 2016-5-5 10:35 | 显示全部楼层
谢谢分享~         
发表于 2016-8-1 22:21 | 显示全部楼层
谢谢楼主分享!!!
发表于 2017-6-10 13:42 | 显示全部楼层
谢谢楼主  但是代码有错误怎么办。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-9-20 13:52 , Processed in 0.222869 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表