春節了,趁著假期的空閑時間,抽空搗鼓了下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,這個有前人的經驗總結,就不展開說,源碼如下:ds18b20.rar四、curl移植到tiny64101、移植openssl到tiny6410。下載openssl-1.0.0l.tar.gz解壓tar xzvfopenssl-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 make10 make install2、移植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 make10 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.sh2、開啟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 syslogd30 951 root 3312 S /usr/sbin/inetd31 955 root 2028 S /usr/sbin/boa32 958 root 1504 S /usr/bin/led-player33 968 root 18480 S /opt/Qtopia/bin/qpe34 969 root 2992 S init35 970 root 2992 S init36 971 root 2992 S init37 973 root 2992 S init38 979 root 0 SW [kworker/0:2]39 980 root 0 SW [flush-ubifs_0_0]40 987 root 8708 S < /opt/Qtopia/bin/qss41 988 root 12552 S N /opt/Qtopia/bin/quicklauncher42 990 root 3320 S /usr/sbin/telnetd -i43 991 root 3316 S -sh44 1025 root 3320 S /usr/sbin/telnetd -i45 1026 root 3316 S -sh46 1098 root 3312 S crond47 1100 root 3316 R ps48 [root@FriendlyARM crontabs]#七、實現效果1、網頁瀏覽效果
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.ko12 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、配置crontab21 [root@FriendlyARM crontabs]# crontab -e22 */1 * * * * /dev/shm/post_ds18b20_data_to_yeelink.sh // 新增任務23 [root@FriendlyARM crontabs]# crond& // 開啟crond八、參考資料1、樹莓派玩家5分鐘內將樹莓派-USB攝像頭與Yeelink連接–最好玩的網頁監控器http://blog.yeelink.net/?p=4682、遠程監控樹莓派BT上傳/下載狀態http://bbs.yeelink.net/forum.php?mod=viewthread&tid=112&extra=page%3D23、如何使用busybox的cron實現計劃任務http://bbs.csdn.net/topics/1900172244、Linux下定時執行腳本http://www.blogjava.net/decode360/archive/2009/09/18/287743.html5、基于Tiny6410的ds18b20驅動http://blog.csdn.net/tandesir/article/details/7247558
新聞熱點
疑難解答