1. 程式人生 > >跑在樹莓派上智慧家居雛形

跑在樹莓派上智慧家居雛形

簡介

這裡寫圖片描述
一個以微信為終端的控制感測器的簡單裝置

可以實現的功能

可以實現以手機微信端對樹莓派終端進行實時監控、攝像頭雲臺操縱、闖入報警、溫度檢測、燈光控制、自動光線控制等功能

裝置圖片

這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

執行截圖

這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

需要用到的所有硬體

  • 路由器
  • 樹莓派主機板
  • 樹莓派電源(5V 2A)
  • 至少 8g tf卡 (推薦class 10,8g足矣)
  • 支援ouv的攝像頭(羅技C170)
  • 花生棒及電源(或用花生殼內網版代替)
  • 樂高積木(小顆粒)
  • 兩根網線
  • 溫度感測器(DHT11)
  • 光線感測器(光敏電阻模組)
  • 人體紅外感測器(HC-SR501)
  • 繼電器(5V低電平觸發)
  • 步進電機(28BYJ-48-5V)
  • 步進電機驅動板(UL2003型)
  • GPIO連線線若干

需要安裝的所有軟體

Windows端

  • Putty(0.63)

  • WinSCP(5.1.7)

  • Win32DiskImager(0.9.5)

  • Notepad++

Raspberry Pi端

配置過程

初始化樹莓派

使用Putty登陸樹莓派

Username:pi
Password:raspberry

獲取root許可權

sudo passwd root
(需要輸入兩次你想設定的root密碼)
sudo passwd --unlock root
設定完成後重啟Putty,以root身份登陸

釋放空間及設定時區

以root身份登入後會自動彈出raspi-config設定工具,也可直接輸入raspi-config調出
1. 執行第一項,一直選擇ok即可
2. 選擇第四項,然後選擇第二項,進入時區設定
3. 分別選擇Asia——Shanghai,確定,即可改為+8時區

這裡寫圖片描述
這裡寫圖片描述

設定靜態ip

sudo nano /etc/network/interfaces
把這一行
iface eth0 inet dhcp
替換為

iface eth0 inet static 
address 192.168.1.101 
netmask 255.255.255.0 
gateway 192.168.1.1
dns-nameservers 114.114.114.114

修改resolv.config檔案
sudo nano /etc/resolv.conf
修改為

nameserver 114.114.114.114

否則在靜態ip情況下可能無法解析域名

更新軟體源(可選)

nano /etc/apt/sources.list
刪除原檔案所有內容,用以下內容取代:

deb http://mirror.sysu.edu.cn/raspbian/raspbian/ wheezy main contrib non-free
deb-src http://mirror.sysu.edu.cn/raspbian/raspbian/ wheezy main contrib non-free 

更新快取並升級軟體

sudo apt-get update && apt-get upgrade

安裝及配置

安裝所需要的所有軟體,將必須的軟體包安裝完畢,並且除錯成功
除錯過程如果有問題可以參見本部落格(附錄)中的其他文章,或歡迎留言討論

安裝軟體

  • webpy

    git clone git://github.com/webpy/webpy.git
    ln -s `pwd`/webpy/web
    cd /root/webpy
    sudo python setup.py install

  • RPI.GPIO
    (安裝RPI.GPIO 首先需要安裝RPi.GPIO所需的Python Development Toolkit)

    sudo apt-get install python-dev
    sudo apt-get install python-pip
    sudo pip install rpi.gpio

  • python-lxml

    sudo apt-get install python-lxml

  • python-memcache

    sudo apt-get install python-memcache

  • apache2

    sudo apt-get install apache2

  • mjpg-streamer
    (安裝mjpg-streamer 首先需要安裝一下幾個依賴包)

    依賴包:
    sudo apt-get install subversion
    sudo apt-get install libv4l-dev
    sudo apt-get install libjpeg8-dev
    sudo apt-get install imagemagick
    (編譯安裝mjpg-steamer)
    wget http://sourceforge.net/code-snapshots/svn/m/mj/mjpg-streamer/code/mjpg-streamer-code-182.zip
    unzip mjpg-streamer-code-182.zip
    cd mjpg-streamer-code-182/mjpg-streamer
    make USE_LIBV4L2=true clean all
    make DESTDIR=/usr install

配置路由器

在路由器設定介面內,為樹莓派設定好靜態ip,或者在樹莓派端設定靜態ip,記住此ip

配置花生棒(或花生殼內網版

如果網路環境擁有公網ip,則可以在路由器上設定ddns(ddns可以搜尋其他相關文章),如果不具備此環境,則需要花生殼內網版(軟體)或花生棒(硬體)來實現公網地址從而與微信公眾平臺對接。
首先申請一個花生殼域名,然後登陸花生棒管理端頁面(http://hsk.oray.com/bang/
選擇內網對映新增對映,填入樹莓派靜態ip,將樹莓派的80埠對映到域名上,並且勾選使用外網80埠(非常重要,否則無法完成對接)
申請另外一個花生殼域名,將此域名對映為樹莓派的8080埠,依然勾選使用外網80埠

Ps:關於花生殼內網版的獲取,可以在
http://www.oray.com/activity/140902/
中繳納一元認證費開通免費級服務
花生殼內網版的設定與花生棒大同小異,需要注意的是需要如果使用花生殼內網版則在工作前需要確認花生殼內網版正常工作並能正常解析

配置apache2

因為我的80埠需要被微信公眾平臺佔用,所以我不能讓網頁走80埠,需要更改埠
nano /etc/apache2/ports.conf
將Listen 80改為Listen 8080

除錯攝像頭

執行考入樹莓派中的Git包目錄中testcam資料夾中的“stream.sh”檔案:
sudo chmod +x stream.sh(先編譯指令碼檔案,才能用./filename 來執行)
sudo ./stream.sh
這裡寫圖片描述

在執行程式時,如果發生錯誤,可能是之前由於執行過,程序仍然在工作,導致沒法再執行,可以先執行ps -A,檢視執行中的程序和程序ID號,再使用“kill id號”殺掉程序

這裡寫圖片描述

在pc上執行Git包中的“testcam.html”檔案,右擊編輯index.html,將樹莓派ip換成你的樹莓派固定ip,儲存,雙擊開啟testcam.html

這裡寫圖片描述

看到攝像頭輸出影象,說明攝像頭工作正常。

申請及配置公眾平臺測試賬號

  1. 在左側選擇 測試號申請|線上除錯選擇介面測試號申請
  2. 申請成功後,進入管理介面
  3. 在介面配置資訊的URL處輸入你在花生殼申請的域名,後面加上/weixin
    Token中填上你自己喜歡的一串字母,完成後不要點選提交
    (此時可以先下載我之前的微信公眾平臺基礎模板進行對接,可以對接成功後在進行接下來的工作,以測試網路環境是否配置完畢
    文章地址:http://blog.csdn.net/u010027419/article/details/40835963

下載及配置主程式

  • 填入剛才自己設定的的Token以及測試號提供的appID和appsecret(yeekey稍後提到)
  • 填入自己的所有感測器對應的GPIO介面
    (感測器除錯參考此部落格(或附錄)其他文章)
  • 設定完畢之後使用WinSCP放入樹莓派檔案目錄
  • 使用Putty登入樹莓派
  • 在剛在檔案所在目錄執行chmod +x start.sh 更改檔案許可權
  • 執行 ./start.sh
  • 如果出現如圖所示資訊,則程式正確執行
  • 這裡寫圖片描述

  • 此時在微信公眾平臺測試賬號的網頁上點選提交,如果提示成功,則整套系統基本配置成功

部署web頁面

  1. 編輯Git包中的檔案中的index.html,在你的樹莓派ip處改為樹莓派的ip地址
  2. 將index.html上傳到/var/www目錄下了,替換之前的index.html
  3. 在瀏覽器中輸入 http://你的樹莓派區域網ip:8080/嘗試一下能否訪問
    如果成功出現頁面,則web頁面部署成功

設定微信公眾賬號選單

  1. 在微信公眾平臺管理測試賬號下方選擇獲取access token
  2. 在左側選單選擇 * 基礎介面 獲取access token*
  3. 在右側最下方選擇 使用網頁除錯工具除錯該介面
  4. 首先獲得access token
    在appid和secret中填上之前管理測試賬號頁面提供的資料,點選檢查問題
  5. 下方藍色的access_token就是一會提交選單要用到的access_token,複製此token
  6. 分別在介面型別選擇自定義選單和在介面列表選擇自定義選單建立介面。進入如下介面,填入剛才的access_tokenaccess_token具有一定的時效性,時間過長後需重新獲取)
  7. 在body中填入Git包中的menu.txt內的內容,點選檢查問題
  8. 若顯示Request successful即為選單建立成功。
    這裡寫圖片描述

Ps:取消關注微訊號重新關注即可直接檢視效果。否則受限於微信限制,需要24小時後快取重新整理方可檢視。
Ps2:引數說明

引數 是否必須 說明
button 一級選單陣列,個數應為1~3個
sub_button 二級選單陣列,個數應為1~5個
type 選單的響應動作型別
name 選單標題,不超過16個位元組,子選單不超過40個位元組
key click等點選型別必須 選單KEY值,用於訊息介面推送,不超過128位元組
url view型別必須 網頁連結,使用者點選選單可開啟連結,不超過256位元組

申請Yeelink物聯網服務

  1. 登陸後在管理首頁上,您的API Key 即為yeekey
  2. 新增一個新裝置
  3. 新增完畢後記住自己的裝置ID
  4. 在程式中填入自己的裝置id以及yeekey,並將附近自己的yeelink頁面改為自己的頁面

結尾&心得

  • 接觸了Python,一門非常棒的語言
  • 學會了MarkDown寫部落格,太方便了
  • 玩了樹莓派,超級超級棒的小電腦
  • 用經費買了好多的好玩的小東西
  • 養成了不少好習慣

附錄