中文 | English

【物聯網開發系列】雲端平台開發篇:資料庫基礎篇

文/曹永忠、吳佳駿、許智誠、蔡英德

本篇是「物聯網開發」系列中「雲端平台開發篇」的第一篇:資料庫基礎篇,在上文「【物聯網開發系列】如何視覺化聲音(上、下篇)」一文中(曹永忠, 吳佳駿, 許智誠, & 蔡英德, 2017c, 2017d),我們應用 Ameba RTL8195AM 開發板與聲音感測器,透過 Wifi 連網的技術,將 Ameba RTL8195AM 開發板轉化成一個網站,使用者可以透過行動裝置與網際網路的功能,隨時查詢到聲音資訊,還可以視覺化呈現,但是我們發現,聲音偵測的需求非常多,如果要將眾多的聲音偵測裝置整合,而前文中我們應用獨立網站的技術,整合資料成為一個非常困難且關鍵性的問題,因為每一個聲音偵測裝置並沒有互相共享資料,更沒有一個整合資料的機制,所以在物聯網領域中的應用,將會是一個致命的問題。

本「雲端平台開發篇」就是要解決這樣一個關鍵性的問題(曹永忠, 吳佳駿, 許智誠, & 蔡英德, 2016a, 2016b, 2017a, 2017b),筆者將使用溫濕度感測元件,並整合網頁伺服器與資料庫管理,來建構一個雲端平台的雛型,來教導讀者依循文中的內容,延伸開發一個更強大的物聯網平台。

相關技術介紹

本文就是要應用 Ameba RTL8195AM 開發板,整合 Apache WebServer(網頁伺服器),搭配 Php 互動式程式設計與 mySQL 資料庫,建立一個商業資料庫平台,透過 Ameba RTL8195AM 開發板連接溫溼度(本文使用 DHT22 溫濕度感測模組)(曹永忠, 許智誠, & 蔡英德, 2016a, 2016b),轉成為一個物聯網中溫濕度感測裝置,透過無線網路(Wifi Access Point),將資料溫溼度感測資料,透過網頁資料傳送,將資料送入 mySQL 資料庫。

我們再透過 Php 互動式程式設計,簡單地將這些資料庫中的溫溼度感測資料,透過 Php 互動式程式與網路視覺化元件,呈現在網站上。

本章節參考 Intructable 網站上,apais 所做的:Send Arduino data to the Web ( PHP/ MySQL/ D3.js )的文章,作者在根據需求修正本章節內容,有興趣的讀者可以參考原作者的內容,自行改進之(曹永忠, 許智誠, & 蔡英德, 2015a, 2015b)。

網頁伺服器安裝與使用

首先,作者使用TWAMPd( VC11 for Windows 7, PHP-5.4/ PHP-5.5/ PHP-5.6),其 VC11 for Windows 7 請到這個網址,下載其軟體。

下列介紹TWAMP 規格:

  • TWAMP (Tiny Windows Apache MySQL PHP)
  • Version: 2.2 from 30th Jun 2010
  • Author: Yelban Hsu
  • orz99.com – TWAMP
  • Support and developer’s blog

其套件包含下列元件:

  • Apache 2.2.15
  • MySQL 5.1.49-community
  • PHP 5.2.14
  • phpMyAdmin 3.3.5.0
  • perl 5.10.0

讀者可以到這裡下載其安裝包,不懂安裝之處,也可以參考此處內容進行安裝與使用。

安裝好之後,如下圖,打開安裝後的目錄,作者使用的是 D:\TWAMP 的目錄。

圖 1 免安裝版的 Apache

 

 

讀者可以點選下圖紅框處,名稱為「apmxe_zh-TW」的 Apache 伺服器主程式來啟動網頁伺服器。

圖 2 執行 Apache 主程式

讀者使用 IE 瀏覽器或 Chrome 瀏覽器或其它瀏覽器,開啟瀏覽器之後,在網址列輸入「localhost」或「127.0.0.1」(以本機為網頁伺服器),可以看到下圖,可以看到 Apache 管理畫面。

圖 3 Apache 管理畫面

建立資料庫

為了完成本章的實驗,如下圖紅框處所示,先點選「phpMyAdmin」,執行 phpMyAdmin 程式。

圖 4 執行 phpMyAdmin 程式

讀者執行 phpMyAdmin 程式後會先到下圖所示之 phpMyAdmin 登錄界面,先在下圖紅框處輸入帳號與密碼,一般預設都是:使用者為「root」,密碼為您在安裝時自行設定的密碼。

圖 5 登錄 phpMyAdmin 管理界面

讀者登錄 phpMyAdmin 管理程式後,可以看到 phpMyAdmin 主管理界面如下圖所示:

圖 6 phpMyAdmin 主管理畫面

首先,我們參考下圖左紅框處,先建立一個資料庫,請讀者建立一個名稱為「iot」的資料庫,並按下下圖右紅框處建立資料庫。

圖 7 建立 iot 資料庫

讀者可以看到下圖,我們選擇剛建立好的 iot 資料庫,進入資料庫內。

 

圖 8選擇資料庫

讀者可以看到下圖,新建立的 iot 資料庫內沒有任何資料表。

圖 9空白的iot資料庫

請讀者在下圖左紅框處:建立新資料表於資料庫 iot 輸入「dhtData」的資料表名稱,並在欄位數目輸入「6」,在下圖右紅框處按下「執行」鈕。

 

圖 10建立 dhtData 資料表

請讀者依下表所示,將 dhtData 資料表欄位一一輸入。

表格 1 dhtData資料表欄位表

請讀者依上表所示,將dhtData資料表欄位,如下圖所示圖,一一輸入要建立的欄位資料。

 

圖 11 輸入 dhtData 資料表欄位資料

如下圖所示圖,將建立的欄位資料輸入完畢後,請選擇「儲存」。

圖 12 輸入 dhtData 資料表欄位內容

如下圖所示圖,mySQL 的 phpMyAdmin 管理系統就會協助我們建立 dhtData 資料表。

圖 13產生 dhtData 資料表

如下圖所示圖,我們可以在 iot 資料庫中,該 dhtData 資料表已建立完成。

圖 14建立完成之 dhtData 資料表

讀者也可以使用 SQL 語法,輸入下列 SQL 語法,建立 dhtData 資料表。

 

創建lightdata資料表(lightdata.sql)

— 資料表格式: `dhtdata`

 

CREATE TABLE IF NOT EXISTS `dhtdata` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘ID’,

`datetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘datetime’,

`yyyymmdd` date NOT NULL,

`humidity` float NOT NULL,

`celsius` float NOT NULL,

`fahrenheit` float NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT=’溫濕度感測資料’ AUTO_INCREMENT=1 ;

 

— 列出以下資料庫的數據: `dhtdata`

 

 

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;

/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

後續

本篇是「物聯網開發系列」系列中「雲端平台開發篇」的首篇:資料庫基礎篇,主要告訴讀者,在物聯網平台開發之中,先行建立一個合適的資料庫與資料表,後續我們就可以將溫溼度感測模組的即時資料傳輸到雲端平台的資料庫之中,進而可以透過不同開發工具與技巧,來建構更完整的系統。

後續筆者還會繼續發表「物聯網開發」系列的文章,在未來我們可以創造出更優質,更具未來性的物聯網(Internet of Thing:IoT)產品開發相關技術。

敬請期待更多的文章。

 

作者介紹

曹永忠 (Yung-Chung Tsao) ,目前為自由作家暨專業Maker,專研於軟體工程、軟體開發與設計、物件導向程式設計,商品攝影及人像攝影。長期投入創客運動、資訊系統設計與開發、企業應用系統開發、軟體工程、新產品開發管理、商品及人像攝影等領域,並持續發表作品及相關專業著作。
Email:prgbruce@gmail.com
Line ID:dr.brucetsao
作者網頁臉書社群 (Arduino.Taiwan)Github網站Youtube

吳佳駿 (Chia-Chun Wu),國立中興大學資訊科學與工程學系博士,現任教於國立金門大學工業工程與管理學系專任助理教授,目前兼任國立金門大學計算機與網路中心資訊網路組組長,主要研究為軟體工程與應用、行動裝置程式設計、物件導向程式設計、網路程式設計、動態網頁資料庫、資訊安全與管理。
Email: ccwu0918@nqu.edu.tw

許智誠 (Chih-Cheng Hsu),美國加州大學洛杉磯分校(UCLA) 資訊工程系博士,曾任職於美國IBM等軟體公司多年,現任教於中央大學資訊管理學系專任副教授,主要研究為軟體工程、設計流程與自動化、數位教學、雲端裝置、多層式網頁系統、系統整合。
Email: khsu@mgt.ncu.edu.tw

蔡英德 (Yin-Te Tsai),國立清華大學資訊科學系博士,目前是靜宜大學資訊傳播工程學系教授、靜宜大學計算機及通訊中心主任,主要研究為演算法設計與分析、生物資訊、軟體開發、視障輔具設計與開發。
Email: yttsai@pu.edu.tw

參考文獻:

曹永忠, 吳佳駿, 許智誠, & 蔡英德. (2016a). Ameba程式設計(基礎篇):Ameba RTL8195AM IOT Programming (Basic Concept & Tricks) (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.

曹永忠, 吳佳駿, 許智誠, & 蔡英德. (2016b). Ameba程序设计(基础篇):Ameba RTL8195AM IOT Programming (Basic Concept & Tricks) (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.

曹永忠, 吳佳駿, 許智誠, & 蔡英德. (2017a). Ameba程式設計(物聯網基礎篇):An Introduction to Internet of Thing by Using Ameba RTL8195AM (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.

曹永忠, 吳佳駿, 許智誠, & 蔡英德. (2017b). Ameba程序设计(物联网基础篇):An Introduction to Internet of Thing by Using Ameba RTL8195AM (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.

曹永忠, 吳佳駿, 許智誠, & 蔡英德. (2017c). 【物聯網開發系列】如何視覺化聲音(上篇). 物聯網開發系列.  Retrieved from https://vmaker.tw/archives/17394

曹永忠, 吳佳駿, 許智誠, & 蔡英德. (2017d). 【物聯網開發系列】如何視覺化聲音(下篇). 物聯網開發系列.  Retrieved from https://vmaker.tw/archives/17747

曹永忠, 許智誠, & 蔡英德. (2015a). Arduino程式教學(無線通訊篇):Arduino Programming (Wireless Communication) (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.

曹永忠, 許智誠, & 蔡英德. (2015b). Arduino编程教学(无线通讯篇):Arduino Programming (Wireless Communication) (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.

曹永忠, 許智誠, & 蔡英德. (2016a). Arduino程式教學(溫溼度模組篇):Arduino Programming (Temperature& Humidity Modules) (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.

曹永忠, 許智誠, & 蔡英德. (2016b). Arduino程序教学(温湿度模块篇):Arduino Programming (Temperature& Humidity Modules) (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.

分享到社群

曹永忠

曹永忠 (Yung-Chung Tsao) ,目前為自由作家暨專業Maker,專研於軟體工程、軟體開發與設計、物件導向程式設計,商品攝影及人像攝影。長期投入創客運動、資訊系統設計與開發、企業應用系統開發、軟體工程、新產品開發管理、商品及人像攝影等領域,並持續發表作品及相關專業著作。 Email:prgbruce@gmail.com Line ID:dr.brucetsao 作者網站:https://www.cs.pu.edu.tw/~yctsao/ 臉書社群(Arduino.Taiwan):https://www.facebook.com/groups/Arduino.Taiwan/ Github網站:https://github.com/brucetsao/ Youtube:https://www.youtube.com/channel/UCcYG2yY_u0m1aotcA4hrRgQ