《完美圖解物聯(lián)網(wǎng)技術(shù)》系列圖書是當(dāng)前物聯(lián)網(wǎng)開發(fā)技術(shù)應(yīng)用的集大成者。本書內(nèi)容強調(diào)串聯(lián)網(wǎng)絡(luò)軟件和微電腦控制板,以JavaScript 為主軸,開發(fā)網(wǎng)絡(luò)應(yīng)用程序、手機App、互動網(wǎng)頁、數(shù)據(jù)庫程序和操控微電腦。書中包含網(wǎng)頁式遠程遙控LED 燈、即時溫濕度網(wǎng)站、自動感測拍照搜證、網(wǎng)頁式遠程LED 繪圖板、即時影像監(jiān)控網(wǎng)站、影像辨識擺頭控制攝像機云臺、云端溫濕度監(jiān)控、即時信息動態(tài)圖表等多元化范例。希望本書能幫助讀者了解物聯(lián)網(wǎng)程序設(shè)計,進而開發(fā)出自己的云端物聯(lián)網(wǎng)應(yīng)用。
目前開源硬件及物聯(lián)網(wǎng)概念是當(dāng)前社會技術(shù)領(lǐng)域的熱點,社會需要大量精通技術(shù)的工作人員,但社會上的參考書籍卻很少。《完美圖解物聯(lián)網(wǎng)技術(shù)》系列圖書是當(dāng)前物聯(lián)網(wǎng)開發(fā)技術(shù)應(yīng)用的集大成者,填補了這一空白。本書作者趙元杰是臺灣地區(qū)暢銷書《超圖解Arduino實作入門》的作者,《完美圖解物聯(lián)網(wǎng)IoT實操:使用JavaScript,Node.JS,Arduino,Raspberry Pi》為該暢銷書的姊妹篇,使用圖片注釋的方式,精心寫作,是同領(lǐng)域的精品。
《完美圖解物聯(lián)網(wǎng)IoT實操:使用JavaScript,Node.JS,Arduino,Raspberry Pi》圖文并茂,生動有趣,讓軟件工程師們快速地進入物聯(lián)網(wǎng)領(lǐng)域!
序
本書探討的核心主題是串聯(lián)、匯流整合。互聯(lián)網(wǎng)從最初的人際溝通橋梁,拓展成機器之間協(xié)同合作的交流管道。
本書強調(diào)的是串聯(lián)網(wǎng)絡(luò)軟件和微電腦控制板,以JavaScript 為主軸,開發(fā)網(wǎng)絡(luò)應(yīng)用程序、手機App、互動網(wǎng)頁、數(shù)據(jù)庫程序和操控微電腦。筆者假設(shè)讀者曾經(jīng)使用Arduino 開發(fā)工具寫過Arduino 程序。
本書使用在物聯(lián)網(wǎng)應(yīng)用中兩種最根本的語言來創(chuàng)建應(yīng)用程序:
Arduino 的 C 語言 :Arduino 系列控制板是電子互動
Maker 的最愛,許多非Arduino 控制板,也強調(diào)跟Arduino 的程序開發(fā)環(huán)境或者控制引腳相容,盡管控制板廠商不斷推陳出新,但是C 語言仍是當(dāng)家主流。
JavaScript:在全球信息網(wǎng)(World-Wide
Web)中,最通行的語言是 JavaScript,也是所有網(wǎng)頁/ 網(wǎng)站開發(fā)人員必知必會的程序語言。經(jīng)過數(shù)年的發(fā)展,JavaScript 的應(yīng)用也擴展到計算機應(yīng)用程序、手機App 開發(fā),甚至操控微電腦控制板領(lǐng)域。
本書中采用的控制板類型比較多元化,不限于Arduino,但它們的控制程序都是用C 或JavaScript 編寫的。
當(dāng)今市場上不乏大師級的JavaScript 相關(guān)著作,像本書的每個章節(jié),從互動網(wǎng)頁、網(wǎng)站數(shù)據(jù)庫程序設(shè)計、動態(tài)圖表到手機App 開發(fā),都有專門的參考書籍,但它們都鮮少提及JavaScript 在物聯(lián)網(wǎng)和微控制器方面的整合應(yīng)用。所以本書的定位,并不是要取代這些書籍,而是一種延伸和擴充。
感謝電子工業(yè)出版社編輯林瑞和先生以及葛娜女士在出版過程中給予的寶貴意見和指正,讓本書順利問世。衷心期盼本書能幫助讀者了解物聯(lián)網(wǎng)程序設(shè)計,進而開發(fā)出自己的云端物聯(lián)網(wǎng)應(yīng)用。
趙英杰
2017 年6 月15 日于中國臺灣·糖安居
趙英杰,網(wǎng)昱多媒體
技術(shù)總監(jiān),美國密歇根 S.V. 州立大學(xué)傳播與多媒體碩士,開源硬件技術(shù)達人。
專長為Arduino、Flash、Dreamweaver 等,在臺灣大學(xué)、臺灣科技大學(xué)等大專院校及教育訓(xùn)練單位擔(dān)任講師、并著有《超圖解Arduino 互動設(shè)計入門》、《超圖解物聯(lián)網(wǎng)IoT 實作入門》、
《Dreamweaver CS6 教學(xué)范本(適用SiliconStone 認證考試教材)等多本相關(guān)書籍。
《超圖解 Arduino 互動設(shè)計入門》
已授權(quán) Arduino 原廠發(fā)行多國語言版本,為華文世界 Arduino 教材首例!
目錄
0無所不在的JavaScript 與物聯(lián)網(wǎng)設(shè)備 .........................................1
0.1 JavaScript 與物聯(lián)網(wǎng).........................................................................3
0.2 MPU、MCU 與SoC 介紹........................................................................ 6
0.3 章節(jié)導(dǎo)讀.......................................................................................... 9
1 JavaScript 入門 ........................................................................13
1.1 JavaScript 入門..............................................................................14
1.2 JavaScript 語言基礎(chǔ).......................................................................19
1.3 函數(shù)定義與事件處理程序................................................................ 29
1.4 定時產(chǎn)生隨機數(shù)............................................................................. 32
1.5 Array(數(shù)組)對象......................................................................... 34
1.6 認識Object(對象)類型................................................................ 36
1.7 BOM(瀏覽器對象模型)與DOM(文檔對象模型)..............................41
動手做 操作網(wǎng)頁對象........................................................................... 43
1.8 在網(wǎng)頁中嵌入JavaScript................................................................. 44
1.9 事件觸發(fā)程序................................................................................. 46
2 認識jQuery 庫 ..........................................................................53
2.1 jQuery 簡介.................................................................................... 54
2.2 jQuery 語法基礎(chǔ)............................................................................. 59
2.3 AJAX 技術(shù):動態(tài)更新HTML 內(nèi)容....................................................... 64
動手做 從Arduino 輸出純文本溫度........................................................ 66
2.4 網(wǎng)頁消息交換格式........................................................................... 69
2.5 Arduino 輸出JSON 消息.................................................................... 73
2.6 調(diào)整燈光亮度的網(wǎng)頁界面................................................................. 76
動手做 接收調(diào)光值的Arduino 網(wǎng)站程序................................................. 76
2.7 使用jQuery UI 附加網(wǎng)頁用戶界面元素............................................. 79
動手做 制作滑塊界面網(wǎng)頁..................................................................... 82
2.8 AJAX 的安全限制............................................................................. 85
3 Node.js 入門 .............................................................................91
3.1 在電腦以及樹莓派上安裝Node.js..................................................... 94
3.2 Node 編程起步................................................................................ 99
3.3 使用http 模塊創(chuàng)建網(wǎng)站服務(wù)器程序................................................ 103
3.4 事件驅(qū)動、非阻塞I/O 示范:讀取文件........................................... 107
3.5 global(全局)對象與模塊文件.................................................... 113
3.6 安裝與管理模塊:使用npm 工具程序.............................................115
3.7 使用Express 框架開發(fā)網(wǎng)站應(yīng)用程序............................................. 118
3.8 接收URL 數(shù)據(jù)............................................................................... 122
3.9 接收與處理POST 數(shù)據(jù).................................................................... 125
3.10 使用package.json 管理Node 項目的模塊程序................................ 129
動手做 從Arduino 傳遞溫濕度值給Node 網(wǎng)站..................................... 131
3.11 使用JSONP 格式跨網(wǎng)域訪問信息.................................................. 136
4 Node.js 串口通信與樹莓派GPIO 控制 ...................................143
4.1 安裝編譯Node 模塊所需的軟件.....................................................144
4.2 安裝C/C 編譯器..........................................................................147
動手做 Node.js 串口通信..................................................................... 150
動手做 從Node.js 發(fā)送串口數(shù)據(jù).......................................................... 154
4.3 通過Node.js 運行系統(tǒng)指令(運行raspistill 指令拍照)................... 157
4.4 樹莓派的GPIO 簡介....................................................................... 162
4.5 Node.js 程序GPIO 控制:使用onoff 模塊........................................ 166
動手做 GPIO 輸入/ 輸出信號練習(xí):按開關(guān)閃爍LED............................... 167
動手做 通過紅外傳感模塊拍攝照片..................................................... 170
4.6 樹莓派GPIO 集成Arduino 控制板................................................... 172
4.7 5V 和3.3V 電壓準(zhǔn)位轉(zhuǎn)換................................................................ 182
4.8 MOSFET 邏輯電位轉(zhuǎn)換電路原理解說................................................ 185
5 使用霹靂五號操控Arduino .....................................................189
5.1 霹靂五號:用JavaScript 控制Arduino........................................... 190
動手做 用霹靂五號指揮Arduino 閃爍LED............................................ 192
動手做 啟用上拉電阻并讀取開關(guān)信號...................................................200
動手做 模擬輸入與PWM 輸出程序?qū)嶒?................................................. 201
動手做 檢測溫度.................................................................................203
動手做 控制舵機................................................................................ 207
動手做 控制LED 矩陣顯示圖像.............................................................209
5.2 使用socket.io 創(chuàng)建實時連接......................................................... 211
動手做 創(chuàng)建實時通信程序...................................................................214
動手做 瀏覽器與矩陣LED 作畫............................................................ 217
6 電子郵件、串流視頻、計算機視覺與操控舵機 .......................227
6.1 通過Node 發(fā)送電子郵件................................................................ 228
動手做 云搜證:拍照自動發(fā)送E-mail................................................. 233
動手做 串流視頻:推播實時影像........................................................ 234
6.2 使用MJPG 壓縮與串流視頻............................................................. 240
6.3 控制舵機云臺............................................................................... 246
動手做 使用方向鍵操控舵機云臺........................................................ 247
動手做 攝像頭云臺的Node 服務(wù)器代碼................................................ 249
6.4 使用觸摸屏幕虛擬搖桿操控攝像頭云臺...........................................250
6.5 瀏覽器連接游戲控制器(電玩控制器)............................................ 254
動手做 使用gamepad.js 庫創(chuàng)建游戲器操作的網(wǎng)頁程序..........................255
6.6 計算機視覺(computer vision)應(yīng)用...............................................260
6.7 使用tracking.js 偵測人臉............................................................. 264
動手做 臉孔偵測與舵機聯(lián)動............................................................... 270
動手做 偵測顏色................................................................................ 273
7 使用MongoDB 數(shù)據(jù)庫以及ejs 模板引擎創(chuàng)建動態(tài)網(wǎng)頁 ..........279
7.1 數(shù)據(jù)庫簡介.................................................................................. 280
7.2 安裝MongoDB................................................................................ 285
7.3 MongoDB 的基本操作...................................................................... 289
7.4 查詢數(shù)據(jù)...................................................................................... 294
7.5 更新與刪除數(shù)據(jù).................................