智能家居最近抄的热火曹天,我这里也实现一个智能书房自动控制环境。使用传感器来监控书房环境,从而优化你的书房环境及孩子的学习环境。 一,实现目标: 1,学习和休息时间:这个主要是实现提示学习时间注意休息,主要是提醒孩子。使用一个计数器,学习30分钟,休息10分钟,这样循环进行,直到你的学习任务完成。通过蜂鸣器提醒你应该学习或休息。 2,温度控制:使用一个温度传感器,监控书房环境温度,如果房间太冷打开加热器,若房间太热,关闭加热器。 3,LED灯控制:使用一个光传感器,监控环境光。若环境比较明亮,关闭LED等,若比较暗,打开LED灯。 4,显示:温度和光强实时显示在LCD屏幕上。 5,通过学习,提示你对窗户和窗帘的操作。若房间太热,光线比较暗,则打开窗户和窗帘,打开LED灯;若太冷,光线暗,则关闭窗户,打开LED灯等。 6,LED灯可以按键开关,也可以使用app控制。 7,书房传感器数据实时显示在APP上,实现实时远程监控。 8,LED灯状态实时上传到APP上,人不在家时,可以远程查看书房LED是否关闭状态。 二,材料 1,intel edison Arduino开发套件; 2,Grove - 扩展版; 3,Grove – Relay继电器; 4,Grove – Serial LCD显示屏; 5,Grove – Temperature Senso温度传感器; 6,Grove –LED ; 7,Grove – Light Sensor光传感器; 8,Grove - buzzer蜂鸣器; 9,Grove - button按键; 10,dc12v电源、一些杜邦线。 三,硬件组装 1,Grove - buzzer接到扩展版的D8上; 2,Grove – Relay接到扩展版的D7上; 3,Grove – Serial LCD接到扩展版的任意一个I2C接口上; 4,Grove – Temperature Sensor接到模拟接口A1上。 5,Grove –LED socket接到扩展版的D6上; 6,Grove – Light Sensor接到模拟接口A0上。 7,Grove - button按键接D4上。
四,软件开发与调试 1,初始化:
初始化RGB LCD显示; 初始化LED端口D6为输出; 初始化继电器控制端口D7为输出; 初始化蜂鸣器端口D8为输出; 初始化A0接口接光传感器,A1接口接温度传感器。 2,实现周期性回调函数 利用时间函数millis()实现周期性回调函数。
添加周期性任务事件。 3,实现周期性读取温度传感器值,温度过低时,打开加热器;温度过高时,关闭加热器。门槛值30摄氏度,低于10时,打开加热器。高于30时,关闭加热器,这里我使用继电器来模拟实现。 {0, 100, Tem_Sensor}, 表示100ms读取一次。
Relay_Control_Handle就是实现温度对书房环境的优化控制,我这里首先使用Grove – Relay继电器实现,加热器的电源接在继电器,随着温度的变化,实现自动控制加热器,从而保证书房适宜的温度。
4,读取光传感器值,监控书房环境光。若环境比较明亮,关闭LED等,若比较暗,打开LED灯。 {0, 100, Light_Sensor}, 100ms读取一次。
Light_Sensor_Handle函数实现光照强度对书房环境的优化。设置光强门槛值为400,高于400时关闭LED灯;低于400时打开LED灯。 5,首先我准备手机实时监控书房环境,那么就需要手机端APP。但是要自己开发手机APP,对于我来说是非常难的,还好有Blynk,免费使用, 快速创建自己的APP。 Blynk相关知识,参照Blynk官网:http://www.blynk.cc/ 。APP也可以在官网上下载,也可以在个应用市场搜索下载。 使用Intel Edision内嵌的wIFi很容易的与手机联系起来。 1)在Blynk官网下载APP,并安装到手机上。 2)下载Blynk固件库,我使用Arduino IDE。下载地址:https://github.com/blynkkk 3)在手机上运行Blynk,第一次运行时,需要登陆,输入邮箱和密码完成登陆。
4)点击“+”弹出创建一个新项目的对话框
输入的项目名称,可以定义自己喜欢的,硬件模块现在Intel Edison。然后点击 “E-mail” ,会有一封邮件发到你登陆的邮箱,主要发送认证令牌到邮箱。 5)点击Create完成创建。
6)点击上图标识为“1”的菱形处可以实现项目的修改。 7)点击“2”处的“+”进入 “Widget Box”,创建应用,我这里实现实时显示温度值和光照强度值。还有几个按键。
8)创建两个Graph。点击Graph添加。 创建三个Button,点击Button创建。 9)点击创建的Graph修改参数
名称,光传感器,引脚定义,这里选择V1主要是实现程序与APP之间的数据交互,引脚定义后面的是定义数据范围,接下来是显示周期,最后是显示形式,柱状或线状。同样定义温度显示定义。 然后定义按键
定义完成之后的引用界面,按键定义后续使用。
10)点击三角形开始运行。 6,编程与APP进行交互 把下载好的Blynk的库放到Arduino目录下。
添加头文件。
Auth:定义认证令牌,在app上创建项目时发到你邮箱的数据。 SSID:wifi用户名。 Pass:wifi密码。 在setup()中添加Blynk.begin(auth, ssid, pass);,初始化网络,接入wifi网络。 在loop中添加Blynk.run(); 这样就完成了Blynk的引用。 接下来上传数据到app: {0, 500, Blynk_Wifi_handle}, 500ms上传一次。
参数中的sensorValue是光传感器值,temperature是温度传感器值。实时上传温度值和光照强度值到APP上,实时实现远程监控。 现在编译下载,运行。打开APP。
下面实现按键数据交互: 在项目文件添加BLYNK_WRITE函数,实现实时监听APP按键状态,相当于按键中断出来函数。
relayControl函数实现控制led灯的开和关。 pinLed定义的输出接口,在APP中设置对应接口。接下来就可以控制了。我这里先使用LED测试。
7,RGB LED上实时显示传感器数据,一个是温度值,一个是光照强度值。 {0, 2000, RGB_LCD_display} 添加显示事件任务。RGB_LCD_Display实现2秒显示温度值,两秒显示光强值,周期切换显示。
8,书房学习环境控制编程 1)开始学习后,学习30分钟,休息10分。 当短按键时,开始学习;长按键时,完成学习。期间周期学习与休息循环,时间到语言提示。 按键处理:
循环处理:
五,试用验证与结果 先来一张上述的结果及安装。
接住验证远程实时监控书房环境数据,通过手机app远程查看。
从数据来看,光线比较暗,温度比较高,说明我的工作环境比较恶劣。 使用我的红外笔照射光传感器,可以看见光强值升高。
|