前言
物聯網之雲端資料匯流系統採硬體採用 Arduino、Raspberry Pi2,網站採用Django撰寫後臺技術,能讓使用者透過網頁首頁登入個人帳號,管理多種植物即時監控植物箱的溫度、濕度、土壤濕度和光度,在植物缺水或光源不足下能自動澆水及開燈,同時將感測到的環境數據和照片上傳至個人網頁,並且將數據用圖表動態即時呈現。
總共會分成十三個部分介紹,分別是
- 安裝作業系統以及環境配置。
- Arduino 環境數據感測。
- Raspberry Pi Serial 數據接收。
- 網頁後端架構撰寫。
- 網頁前端架構撰寫。
- 雲端平台:Heroku。
- Git多人使用者開發。
- 照片拍攝。
- 資料上傳及接收。
- 多人使用者帳戶。
- 遠端控制。
- 設定排程。
- 結果照片。
(以下所有圖片點選後皆會放大。
安裝作業系統以及環境配置
●Arduino
1.選擇開發版類型。
2.設定序列埠。
●Raspberry Pi2
1.到 Raspberry Pi 的網站下載映像檔。
建議下載 RASPBIAN 。 (RASPBIAN 為 Raspberry Pi最多人使用的作業系統。)
2.在電腦上把SD卡(4GB以上)格式化後,將下載的映像檔燒入至SD卡。
3.Raspberry Pi 板子連接HDMI線到螢幕並將鍵盤、滑鼠、mini USB、燒錄好的SD卡接好。
4.mini USB 接上電源後開機。
開機後登入系統。(系統登入預設帳號:pi,密碼:raspberry。)
5.系統環境設定。
登入後進入Linux模式後,在命令列下輸入以下指令,設定系統環境。(設定密碼、鍵盤、開啟相機功能、開啟SSH。)
設定完畢後選擇Finish重新啟動系統。
$ sudo raspi-config
6.進入桌面系統,設定Wi-Fi。
$ startx
7.使用Putty遠端連線。
putty是 SSH Client 程式,可以用它下指令、上網下載檔案。
下載 Putty,在視窗內輸入剛才的IP位置按Open 登入預設帳密即可連線。
連線後的視窗會像下面所示。
8.檔案管理。
winscp是SSH檔案管理程式,透過類似檔案總管的視窗管理SSH檔案,
可以用這個從Raspberry Pi 上傳或下載資料。
下載 Winscp,在視窗內輸入剛才的IP位置按Login 登入預設帳密即可連線。
連線後的視窗會像下面所示。
9.開機後傳本地端IP到Gmail。
編輯 send_ip.py 如下。
編輯完後執行下面命令。
~$ sudo nano /etc/rc.local
之後開機到 Gmail 收信如下。
10.常用指令。
a.關機
切記使用指令正常關機,切勿直接拔除電源,SD卡作業系統會損毀。
$ sudo shutdown -h now
b.重新開機
$ sudo reboot
c.更新安裝程式
$ sudo apt-get update
$ sudo apt-get upgrade
d.安裝檔案
$ sudo apt-get install 檔案
●電腦
下載Anaconda的安裝程式進行安裝。(會自動安裝Python。)
Arduino 環境數據感測
參考此網頁: Arduino DHT22 (AM2302) Tutorial + Library
按下左邊視窗放大鏡按鈕(序列埠監控視窗)後,會跳出右邊的監控視窗。
兩邊鮑率設定相同後,右邊監控視窗會及時量測環境數據。
Raspberry Pi Serial 數據接收
將Arduino與Raspberry Pi用USB連接後
回到主目路
~$ cd
主目錄下建立放程式的資料夾
~$ mkdir code
切換至剛建立的資料下編輯 photo0.py。
~/code/$ nano photo0.py
注意使用python3執行photo0.py。(python2的Serial 有問題。)
~/code/$ sudo python3 serial.py
網頁後端架構撰寫
如何建立網頁,參考此網頁:Django Girls 學習指南
1.開發環境設定。
安裝Anacoda後,在命令提示字元下執行以下命令。先安裝Mysql資料庫。(pip install mysql-python 有問題。)
~\eeproj2015> conda install mysql-python
從 requirements.txt 安裝剩餘項目。
~\eeproj2015> pip install -r requirements.txt
2.啟動開發伺服器
~\eeproj2015> python manage.py runserver
3.寫好程式在本地端確認無誤後,按照第7篇《Git多人使用者開發》上傳到遠端Heroku。
4. Django application
●views.py
●models.py
●admin0.py
●forms.py
5. Django project
●settings.py
●urls.py
●wsgi.py
網頁前端架構撰寫
1.網頁版型
●layout.html
2.登入前後
登入前巡覽列如下。
登入後巡覽列如下。
●loginpartial.html
3.登入畫面
●login.html
4.動態圖表
●index.html
Git多人使用者開發
參考此網頁:https://backlogtool.com/git-guide/tw/
1.安裝Git
下載Git的安裝程式進行安裝。
2.初始設定
在命令提示字元下,設定名字和 email
>git config --global user.name "<使用者名字>" >git config --global user.email "<電子信箱>"
3.新建本地端數據庫
在電腦上方建立專案資料夾並把路徑移到專案資料夾,使用init命令將目錄建立為本地端數據庫。
~\eeproj2015>git init
4.確認工作目錄與索引的狀態
~\eeproj2015>git status
5.註冊檔案或目錄到索引
<file>是指向要加入索引的檔案。若要指向多個檔案,可用空白鍵將檔案們分開。
~\eeproj2015>git add <file>...
使用「.」,表示可以把當前目錄下所有的檔案加入到索引。
~\eeproj2015>git add .
6.提交添加到索引的檔案
~\eeproj2015>git commit -m "註解"
7.新建遠端數據庫
<name>指向遠端數據庫登錄名稱、<url>指向遠端數據庫的URL
>git remote add <name> <url> ex. ~\eeproj2015>git remote add https://github.com/fgh7610/EEPROJ_2015.git
8.在遠端數據庫建立分支/push修改內容到分支
<repository>指定要push的地址,<refspec>指定要push的分支
>git push <repository> <refspec>... ex. ~\eeproj2015>git push origin master
9.複製遠端數據庫
>git clone <url> ex. ~\eeproj2015>git clone https://github.com/fgh7610/EEPROJ_2015
10.合併遠端數據庫的分支的修改內容
您上次的push到執行下一次的push的期間,如果有其他人push更新了遠端數據庫,而您沒有更新您的本地端數據庫,那麼您的push會被拒絕,這個時候,需要進行合併操作導入其他人的修改歷史。
>git pull <repository> <refspec>... ex. ~\eeproj2015>git pull origin master
照片拍攝
建立存相片的資料夾後,切換至剛建立的資料下編輯後執行 photo0.py。
~$cd
~/$mkdir photo
~$cd photo
~/photo/$ nano photo0.py
~/photo/$ python photo0.py
拍完照如下,要使用Raspberry Pi 桌面系統才能看照片。
資料上傳及接收
1.環境數據上傳
在serial.py 中加入以下程式碼。
2.環境數據接收
Raspberry pi 上傳數據後會由views.py的以下程式碼處理並儲存至資料庫。
3.照片上傳
在photo.py 中加入以下程式碼。
4.照片接收
- 在models.py 中加入以下程式碼。
- 在views.py 中加入以下程式碼。
- 在admin.py 中加入以下程式碼。
- 在settings.py 中加入以下程式碼。
- 在urls.py 中加入以下程式碼。
多人使用者帳戶
1.Raspbeery Pi 上傳對應的views
- views.setting部分原程式碼
- 修改如下
- views.uploadima部分原程式碼
- 修改如下
2.網頁對應的views
- views.getall部分原程式碼
- 修改如下
遠端控制
1.Raspberry Pi 的 Serial0.py 新增以下程式碼
2.view.py 新增以下程式碼
3.index.html 新增以下程式碼
結果照片
Recent Comments