技术篇:DIY远程监控室内温度设备
一、目的
DIY一个可以远程监控室内温度的简易设备,实现通过web/android/ios/微信等端口实时查看家中温度。最终的效果相当不错,虽然简单,只要家中未断电断网,就可以用随时随地掌握家中的温度变化,做到遥知冷暖。对于一些特定房间,比如婴儿房、花房这些,的确值得一试。
我的yeelink实时监测平台:http://www.yeelink.net/devices/7376
二、运行环境
硬件:tiny6410+ds18b20+网络
软件:linux+QT/curl/crontab/shell/YeeLink服务(云存储、各种接入方式web/android/ios/微信甚至微博、邮件及相关社交网络分享,这点很赞)
[tips]Tiny6410,一款以ARM11芯片(三星S3C6410)作为主处理器的嵌入式核心板,该CPU基于ARM1176JZF-S核设计,内部集成了强大的多媒体处理单元,支持Mpeg4,H.264/H.263等格式的视频文件硬件编解码,可同时输出至LCD和TV显示;它还并带有3D图形硬件加速器,以实现OpenGLES1.1&2.0加速渲染,另外它还支持2D图形图像的平滑缩放,翻转等操作。
[tips]DS18B20,常用的温度传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。
三、ds18b20驱动及应用
见参考资料5,这个有前人的经验总结,就不展开说了,源码如下:ds18b20.rar
四、curl移植到tiny6410
1、移植openssl到tiny6410。
下载openssl-1.0.0l.tar.gz,解压tarxzvfopenssl-1.0.0l.tar.gz,配置编译(ubuntu中进行交叉编译)
1#!/bin/sh
2exportLD_LIBARY_PATH=/opt/FriendlyARM/toolschain/4.5.1/lib/
3exportCPPFLAGS=-I/opt/FriendlyARM/toolschain/4.5.1/include/
4exportLDFLAGS=-L/opt/FriendlyARM/toolschain/4.5.1/lib/
5exportCC=/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc
6
7cdopenssl-1.0.0l
8./configno-asm--prefix=/home/share/tool/tiny6410/opensslos/compiler:/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc
9make
10makeinstall
2、移植curl到tiny6410。(依赖openssl)
下载openssl-1.0.0l.tar.gz,解压tarxzvfcurl-7.35.0.tar.gz,配置编译(ubuntu中进行交叉编译)
1#!/bin/sh
2exportLD_LIBARY_PATH=/opt/FriendlyARM/toolschain/4.5.1/lib/
3exportCPPFLAGS=-I/opt/FriendlyARM/toolschain/4.5.1/include/
4exportLDFLAGS=-L/opt/FriendlyARM/toolschain/4.5.1/lib/
5exportCC=/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc
6
7cdcurl-7.35.0
8./configure--host=i686--target=arm-linux--prefix=/home/share/tool/tiny6410/curl--with-ssl=/home/share/tool/tiny6410/openssl--with-random=/dev/urandom
9make
10makeinstall
五、yeelink环境
为了实现远程监控功能,在此使用了yeelink基于物联网应用免费的云存储服务器及相关的客户端(android/IOS/微信服务号/微博发布),作为一种物联网应用,该平台确实非常不错。
yeelink官网
1、注册yeelink用户、添加设备、添加传感器、上传数据、取回数据。
2、根据yeelink的api接口上传数据。在tiny6410linux系统上采用shell脚本调用curl工具来实现。
1#!/bin/sh
2
3#在单引号中填入yeelink给你的APIKEY
4YL_ApiKey='xxxxxxxx'
5YL_URL=http://api.yeelink.net/v1.0/device/7376/sensor/11615/datapoints
6temp=$(/dev/shm/read_ds18b20)
7echo$temp
8
9upcmd="curl--requestPOST--data'{\"value\":$temp}'--headerU-ApiKey:$YL_ApiKey--verbose$YL_URL"
10
11echo$upcmd|sh
六、busyboxcrontab使用
1、在crontab服务中加入下面加红的一行,让脚本每分钟运行一次,保存退出。
*/1****/dev/shm/post_ds18b20_data_to_yeelink.sh
2、开启crond服务(tiny6410linux+qt系统默认未开启)。
1[root@FriendlyARMcrontabs]#crond&
2[root@FriendlyARMcrontabs]#ps
3PIDUSERVSZSTATCOMMAND
41root2992Sinit
52root0SW[kthreadd]
63root0SW[ksoftirqd/0]
75root0SW[kworker/u:0]
86root0SW<[khelper]
9346root0SW[sync_supers]
10348root0SW[bdi-default]
11349root0SW<[kblockd]
12359root0SW[khubd]
13455root0SW<[rpciod]
14456root0SW[kworker/0:1]
15464root0SW[khungtaskd]
16465root0SW[kswapd0]
17515root0SW[fsnotify_mark]
18517root0SW<[aio]
19527root0SW<[nfsiod]
20531root0SW<[crypto]
21615root0SW[mtdblock0]
22620root0SW[mtdblock1]
23625root0SW[mtdblock2]
24634root0SW[ubi_bgt0d]
25793root0SW[pvrusb2-context]
26866root0SW[kworker/u:2]
27915root0SW[ubifs_bgt0_0]
28917root0SW[mmcqd/0]
29948root2992Ssyslogd
30951root3312S/usr/sbin/inetd
31955root2028S/usr/sbin/boa
32958root1504S/usr/bin/led-player
33968root18480S/opt/Qtopia/bin/qpe
34969root2992Sinit
35970root2992Sinit
36971root2992Sinit
37973root2992Sinit
38979root0SW[kworker/0:2]
39980root0SW[flush-ubifs_0_0]
40987root8708S</opt/Qtopia/bin/qss
41988root12552SN/opt/Qtopia/bin/quicklauncher
42990root3320S/usr/sbin/telnetd-i
43991root3316S-sh
441025root3320S/usr/sbin/telnetd-i
451026root3316S-sh
461098root3312Scrond
471100root3316Rps
48[root@FriendlyARMcrontabs]#
七、实现效果
1、网页浏览效果
2、android客户端显示效果
3、下面提供了交叉编译后的可执行文件(交叉工具链为:FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc,ds18b20_bin.rar)
1/**
2*@filereadme.txt
3*@brief基于tiny6410、ds18b20、curl的远程温度监测实现说明
4*@details
5*@versionV1.0.0
6*@authorRichard.hmm
7*@date2014-2-4
8*/
9
101、在tiny6410上安装ds18b20驱动
11insmodds18b20.ko
12
132、拷贝curl到usr/bin/下
14cpcurl/usr/bin/
15
163、拷贝read_ds18b20和post_ds18b20_data_to_yeelink.sh到tiny6410的内存文件系统/dev/shm中
17cpread_ds18b20/dev/shm/
18cppost_ds18b20_data_to_yeelink.sh/dev/shm/
19
204、配置crontab
21[root@FriendlyARMcrontabs]#crontab-e
22*/1****/dev/shm/post_ds18b20_data_to_yeelink.sh//新增任务
23[root@FriendlyARMcrontabs]#crond&//开启crond