转 http://www.geekfan.net/7015/
原文出处: richard.hmm
春节了,趁着假期的空闲时间,抽空捣鼓了下tiny6410开发板,发现这个东东尘封许久,很长时间没用过了。貌似最近物联网大热,谷歌收购Nest,其设计的恒温器能够智能调节和远程控制房间的温度,UI和设计理念都非常棒。物联网是什么东东,这个百度、google一下就能得到很多说法或概念,但到底是什么呢,这个我想还是DIY一个简单的东东来体验一下吧。
一、目的
DIY一个可以简易的远程监控室内温度设备,实现通过web/android/ios/微信进行查看家中温度的电子设备。(最终的效果相当不错,虽然简单,只要家中未断电断网,就可以用随时随地掌握家中的温度变化,做到遥知冷暖,很新鲜啊,提供个链接,欢迎大家围观:http://www.yeelink.net/devices/7376)
二、软硬件环境
硬件:tiny6410+ds18b20+有线网络 or USB wifi
软件:linux+QT/curl/crontab/shell/YeeLink服务(云存储、各种接入方式web/android/ios/微信甚至微博、邮件及相关社交网络分享,这点很赞)
三、ds18b20驱动及应用
见参考资料5,这个有前人的经验总结,就不展开说,源码如下:
四、curl移植到tiny6410
1、移植openssl到tiny6410。
下载openssl-1.0.0l.tar.gz
解压tar xzvf openssl-1.0.0l.tar.gz
配置编译(ubuntu中进行交叉编译)
1
2
3
4
5
6
7
8
9
10
|
1
#!/bin/sh
2
export
LD_LIBARY_PATH
=
/
opt
/
FriendlyARM
/
toolschain
/
4.5.1
/
lib
/
3
export
CPPFLAGS
=
-
I
/
opt
/
FriendlyARM
/
toolschain
/
4.5.1
/
include
/
4
export
LDFLAGS
=
-
L
/
opt
/
FriendlyARM
/
toolschain
/
4.5.1
/
lib
/
5
export
CC
=
/
opt
/
FriendlyARM
/
toolschain
/
4.5.1
/
bin
/
arm
-
linux
-
gcc
6
7
cd
openssl
-
1.0.0l
8
.
/
config
no
-
asm
--
prefix
=
/
home
/
share
/
tool
/
tiny6410
/
openssl
os
/
compiler
:
/
opt
/
FriendlyARM
/
toolschain
/
4.5.1
/
bin
/
arm
-
linux
-
gcc
9
make
10
make
install
|
2、移植curl到tiny6410。(依赖openssl)
下载openssl-1.0.0l.tar.gz
解压tar xzvf curl-7.35.0.tar.gz
配置编译(ubuntu中进行交叉编译)
1
2
3
4
5
6
7
8
9
10
|
1
#!/bin/sh
2
export
LD_LIBARY_PATH
=
/
opt
/
FriendlyARM
/
toolschain
/
4.5.1
/
lib
/
3
export
CPPFLAGS
=
-
I
/
opt
/
FriendlyARM
/
toolschain
/
4.5.1
/
include
/
4
export
LDFLAGS
=
-
L
/
opt
/
FriendlyARM
/
toolschain
/
4.5.1
/
lib
/
5
export
CC
=
/
opt
/
FriendlyARM
/
toolschain
/
4.5.1
/
bin
/
arm
-
linux
-
gcc
6
7
cd
curl
-
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
9
make
10
make
install
|
五、yeelink环境
为了实现远程监控功能,在此使用了yeelink基于物联网应用免费的云存储服务器及相关的客户端(android/IOS/微信服务号/微博发布),作为一种物联网应用,该平台确实非常不错。
1、yeelink之注册用户、添加设备、添加传感器、上传数据、取回数据。详情见官网http://www.yeelink.net/
2、根据yeelink的api接口上传数据。在tiny6410 linux系统上采用shell脚本调用curl工具来实现。
1
2
3
4
5
6
7
8
9
10
11
|
1
#!/bin/sh
2
3
#在单引号中填入yeelink给你的API KEY
4
YL_ApiKey
=
'xxxxxxxx'
5
YL_URL
=
http
:
//api.yeelink.net/v1.0/device/7376/sensor/11615/datapoints
6
temp
=
$
(
/
dev
/
shm
/
read_ds18b20
)
7
echo
$
temp
8
9
upcmd
=
"curl --request POST --data '{\"value\":$temp}' --header U-ApiKey:$YL_ApiKey --verbose $YL_URL"
10
11
echo
$
upcmd
|
sh
|
六、busybox crontab使用
1、在crontab服务中加入下面加红的一行, 让脚本每分钟运行一次, 保存退出。
*/1 * * * * /dev/shm/post_ds18b20_data_to_yeelink.sh
2、开启crond服务(tiny6410 linux+qt系统默认未开启)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
1
[
root
@
FriendlyARM
crontabs
]
# crond&
2
[
root
@
FriendlyARM
crontabs
]
# ps
3
PID
USER
VSZ
STAT
COMMAND
4
1
root
2992
S
init
5
2
root
0
SW
[
kthreadd
]
6
3
root
0
SW
[
ksoftirqd
/
0
]
7
5
root
0
SW
[
kworker
/
u
:
0
]
8
6
root
0
SW
&
lt
;
[
khelper
]
9
346
root
0
SW
[
sync_supers
]
10
348
root
0
SW
[
bdi
-
default
]
11
349
root
0
SW
&
lt
;
[
kblockd
]
12
359
root
0
SW
[
khubd
]
13
455
root
0
SW
&
lt
;
[
rpciod
]
14
456
root
0
SW
[
kworker
/
0
:
1
]
15
464
root
0
SW
[
khungtaskd
]
16
465
root
0
SW
[
kswapd0
]
17
515
root
0
SW
[
fsnotify_mark
]
18
517
root
0
SW
&
lt
;
[
aio
]
19
527
root
0
SW
&
lt
;
[
nfsiod
]
20
531
root
0
SW
&
lt
;
[
crypto
]
21
615
root
0
SW
[
mtdblock0
]
22
620
root
0
SW
[
mtdblock1
]
23
625
root
0
SW
[
mtdblock2
]
24
634
root
0
SW
[
ubi_bgt0d
]
25
793
root
0
SW
[
pvrusb2
-
context
]
26
866
root
0
SW
[
kworker
/
u
:
2
]
27
915
root
0
SW
[
ubifs_bgt0_0
]
28
917
root
0
SW
[
mmcqd
/
0
]
29
948
root
2992
S
syslogd
30
951
root
3312
S
/
usr
/
sbin
/
inetd
31
955
root
2028
S
/
usr
/
sbin
/
boa
32
958
root
1504
S
/
usr
/
bin
/
led
-
player
33
968
root
18480
S
/
opt
/
Qtopia
/
bin
/
qpe
34
969
root
2992
S
init
35
970
root
2992
S
init
36
971
root
2992
S
init
37
973
root
2992
S
init
38
979
root
0
SW
[
kworker
/
0
:
2
]
39
980
root
0
SW
[
flush
-
ubifs_0_0
]
40
987
root
8708
S
&
lt
;
/
opt
/
Qtopia
/
bin
/
qss
41
988
root
12552
S
N
/
opt
/
Qtopia
/
bin
/
quicklauncher
42
990
root
3320
S
/
usr
/
sbin
/
telnetd
-
i
43
991
root
3316
S
-
sh
44
1025
root
3320
S
/
usr
/
sbin
/
telnetd
-
i
45
1026
root
3316
S
-
sh
46
1098
root
3312
S
crond
47
1100
root
3316
R
ps
48
[
root
@
FriendlyARM
crontabs
]
#
|
七、实现效果
1、网页浏览效果
2、android客户端显示效果
3、 下面提供了交叉编译后的可执行文件(交叉工具链为:FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc)
使用说明:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
1
/**
2 * @file readme.txt
3 * @brief 基于tiny6410、ds18b20、curl的远程温度监测实现说明
4 * @details
5 * @version V1.0.0
6 * @author Richard.hmm
7 * @date 2014-2-4
8 */
9
10
1、在
tiny6410上安装
ds18b20驱动
11
insmod
ds18b20
.
ko
12
13
2、拷贝
curl到
usr
/
bin
/下
14
cp
curl
/
usr
/
bin
/
15
16
3、拷贝
read_ds18b20和
post_ds18b20_data_to_yeelink
.
sh到
tiny6410的内存文件系统
/
dev
/
shm中
17
cp
read_ds18b20
/
dev
/
shm
/
18
cp
post_ds18b20_data_to_yeelink
.
sh
/
dev
/
shm
/
19
20
4、配置
crontab
21
[
root
@
FriendlyARM
crontabs
]
# crontab -e
22
*
/
1
*
*
*
*
/
dev
/
shm
/
post_ds18b20_data_to_yeelink
.
sh
// 新增任务
23
[
root
@
FriendlyARM
crontabs
]
# crond& // 开启crond
|
八、参考资料
1、树莓派玩家5分钟内将树莓派-USB摄像头与Yeelink连接–最好玩的网页监控器 http://blog.yeelink.net/?p=468
2、远程监控树莓派BT上传/下载状态 http://bbs.yeelink.net/forum.php?mod=viewthread&tid=112&extra=page%3D2
3、如何使用busybox的cron实现计划任务 http://bbs.csdn.net/topics/190017224
4、Linux下定时执行脚本 http://www.blogjava.net/decode360/archive/2009/09/18/287743.html
5、基于Tiny6410的ds18b20驱动 http://blog.csdn.net/tandesir/article/details/7247558