zoukankan      html  css  js  c++  java
  • DIY远程监控室内温度设备(tiny6410+ds18b20+yeelink+curl)

           春节了,趁着假期的空闲时间,抽空捣鼓了下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 #!/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 #!/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 #!/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 [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<  [khelper]
     9   346 root         0 SW   [sync_supers]
    10   348 root         0 SW   [bdi-default]
    11   349 root         0 SW<  [kblockd]
    12   359 root         0 SW   [khubd]
    13   455 root         0 SW<  [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<  [aio]
    19   527 root         0 SW<  [nfsiod]
    20   531 root         0 SW<  [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 <  /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  * @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
    5、基于Tiny6410的ds18b20驱动 http://blog.csdn.net/tandesir/article/details/7247558
     
     
  • 相关阅读:
    (转载)C++ string中find() ,rfind() 等函数 用法总结及示例
    UVA 230 Borrowers (STL 行读入的处理 重载小于号)
    UVA 12100 打印队列(STL deque)
    uva 12096 The SetStack Computer(STL set的各种库函数 交集 并集 插入迭代器)
    uva 1592 Database (STL)
    HDU 1087 Super Jumping! Jumping! Jumping!
    hdu 1176 免费馅饼
    HDU 1003 Max Sum
    转战HDU
    hust 1227 Join Together
  • 原文地址:https://www.cnblogs.com/IDoIUnderstand/p/3537858.html
Copyright © 2011-2022 走看看