本書首先介紹了如何設(shè)置一個(gè)中心網(wǎng)絡(luò)服務(wù)器作為設(shè)備的連接中心。之后,進(jìn)一步介紹了搭建網(wǎng)頁(yè)服務(wù)來(lái)實(shí)現(xiàn)已連接設(shè)備之間的高層次通信。利用Arduino和樹(shù)莓派Zero作為終端設(shè)備,本書展示了設(shè)備之間如何通信,如何實(shí)現(xiàn)各種任務(wù),以及如何用JavaScript從一個(gè)中心設(shè)備進(jìn)行控制。后,本書創(chuàng)建了一個(gè)復(fù)合的APP來(lái)控制設(shè)備,這些設(shè)備可以通過(guò)網(wǎng)頁(yè)或智能手機(jī)運(yùn)行。
樹(shù)莓派Zero是一個(gè)功能強(qiáng)大、價(jià)格低廉、信用卡大小的電腦,非常適合作為復(fù)雜家庭自動(dòng)化設(shè)備的控制裝置。利用板上資源,樹(shù)莓派Zero可以擴(kuò)展連接幾乎無(wú)限數(shù)量的安全傳感器或設(shè)備。
另一方面,Arduino平臺(tái)更加靈活且適合搭建包含物聯(lián)網(wǎng)應(yīng)用的項(xiàng)目。所以,在本書中你會(huì)看到:整合功能強(qiáng)大的Arduino板以及與其連接的設(shè)備;整合樹(shù)莓派Zero,利用一個(gè)像集線器(hub)一樣的中心接口來(lái)控制和監(jiān)控設(shè)備。利用軟件編程,你可以創(chuàng)造出基于最前沿的JavaScript、HTML5和Node.js等技術(shù)的物聯(lián)網(wǎng)系統(tǒng)。
我想介紹的正是這個(gè)。你將學(xué)會(huì)使用樹(shù)莓派Zero板創(chuàng)建許多本地的項(xiàng)目,以便日后滿足自己的需要。
在這本書中,每個(gè)章節(jié)教你制作不同的項(xiàng)目。這些項(xiàng)目包含了從準(zhǔn)備工作到硬件、傳感器、通信和軟件編程控制等所有的領(lǐng)域,最終實(shí)現(xiàn)一個(gè)完整的控制和監(jiān)控系統(tǒng)。
章節(jié)概要第1章詳細(xì)敘述了如何安裝樹(shù)莓派和Arduino板,以及如何在設(shè)備間通信。我們將安裝并設(shè)置操作系統(tǒng),把樹(shù)莓派聯(lián)網(wǎng),然后遠(yuǎn)程連接它。該章還將討論如何保證樹(shù)莓派的安全,以及如何讓樹(shù)莓派知道正確的時(shí)間。
第2章展示了如何把信號(hào)傳輸?shù)綐?shù)莓派Zero和Arduino上。探索GPIO接口和它的諸多功能。該章還將探索諸多利用GPIO連到樹(shù)莓派的設(shè)備。
第3章展示了如何應(yīng)用傳感器來(lái)獲取不同類型的信號(hào)。這些信號(hào)涉及安全系統(tǒng)、能源電流、居家安防、安裝油氣傳感器、用水流信號(hào)來(lái)測(cè)量水的體積以及利用指紋傳感器控制家庭大門的安全系統(tǒng)。
第4章展示了通過(guò)樹(shù)莓派Zero的中央接口面板(central interface dashboard)上網(wǎng)絡(luò)部分的通信模塊控制Arduino。
第5章展示了如何通過(guò)設(shè)置一個(gè)連到板上的網(wǎng)絡(luò)攝像頭來(lái)實(shí)現(xiàn)物聯(lián)網(wǎng)安全系統(tǒng)的監(jiān)測(cè)。
第6章介紹了如何搭建系統(tǒng)來(lái)利用網(wǎng)絡(luò)服務(wù)監(jiān)視你的安全系統(tǒng),整合樹(shù)莓派Zero和Arduino搭建了一個(gè)完整的系統(tǒng)連接設(shè)備和監(jiān)視器。
第7章介紹了如何制作不同的迷你家庭本地項(xiàng)目,還介紹了如何用物聯(lián)網(wǎng)連接網(wǎng)絡(luò)服務(wù)并且監(jiān)視你的安全系統(tǒng)。
第8章解釋了如何利用Android Studio和APP Inventor開(kāi)發(fā)一個(gè)智能手機(jī)APP,并且用APP控制Arduino和樹(shù)莓派。
第9章展示了如何把所有東西整合起來(lái),包括所有的項(xiàng)目、電子領(lǐng)域、軟件的設(shè)置和電源。
閱讀本書前需要的準(zhǔn)備工作你將需要以下軟件:
Win32 Disk Imager 0.9.5和PuTTYI2C工具Python的WiringPi2Node.js 4.5或更新的版本W(wǎng)indows下的Node.js V7.3.0或更新的版本Python 2.7.x或Python 3.xphpMyAdmin DatabaseMySQL模塊創(chuàng)建Gmail賬號(hào)來(lái)登錄APP InventorAndroid Studio和SDK模塊Arduino軟件第1章將介紹如何設(shè)置樹(shù)莓派Zero,以及所有基礎(chǔ)知識(shí),讓你在之后的章節(jié)里不會(huì)遇到問(wèn)題。這里將用到很多基礎(chǔ)的元器件,例如傳感器,然后隨著書的進(jìn)展會(huì)漸漸用到更復(fù)雜的元器件。
至于軟件,掌握一定的編程知識(shí)會(huì)對(duì)閱讀有所幫助,特別是JavaScript和Node.js的知識(shí)。但是,我會(huì)詳細(xì)解釋本書中關(guān)于軟件的所有知識(shí)。所以即使你還沒(méi)有掌握J(rèn)avaScript編程技能,也可以跟上進(jìn)度。
目標(biāo)讀者本書的目標(biāo)讀者是所有希望讓自己的家居更加自動(dòng)化或者智能化,并且希望完整掌握這些智能設(shè)備的人。如果你就是這樣的人,在本書中,你可以學(xué)會(huì)如何用強(qiáng)大的樹(shù)莓派Zero的所有相關(guān)知識(shí)來(lái)控制你的項(xiàng)目。
本書還適合那些過(guò)去已經(jīng)玩過(guò)類似開(kāi)發(fā)板(例如Arduino)的人。如果你是這樣的人,你可以學(xué)會(huì)如何用樹(shù)莓派平臺(tái)的力量搭建智能家居。你還可以學(xué)到如何搭建一些可以輕松移植到其他平臺(tái)的項(xiàng)目,例如用樹(shù)莓派Zero創(chuàng)建一個(gè)無(wú)線的安全攝像機(jī)。
下載本書的相關(guān)資源本書的代碼在GitHub上共享。地址是https://github.com/PacktPublishing/Internet-of-Things-Programming-with-Javascript。快去看看!
關(guān)于作者About the AuthorRubén Oliva Ramos是一名計(jì)算機(jī)系統(tǒng)工程師。他在墨西哥拉薩爾大學(xué)巴西歐分校(University of Salle Bajio)獲得計(jì)算機(jī)和電子系統(tǒng)碩士學(xué)位,遠(yuǎn)程通信網(wǎng)絡(luò)方向。他有五年以上基于Arduino和樹(shù)莓派的控制、監(jiān)視網(wǎng)絡(luò)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn),擅長(zhǎng)利用網(wǎng)頁(yè)框架和云服務(wù)搭建物聯(lián)網(wǎng)應(yīng)用。
他目前是拉薩爾大學(xué)巴西歐分校的機(jī)電工程老師,指導(dǎo)機(jī)電系統(tǒng)設(shè)計(jì)工程專業(yè)的碩士學(xué)生。他還在墨西哥瓜納華托州萊昂的Centro de Bachillerato Tecnologico Industrial 225教學(xué)。所教內(nèi)容包括電力電子、機(jī)器人與控制、自動(dòng)化和微控制器。教學(xué)地點(diǎn)在機(jī)械電子技師中心。他還是一名咨詢師和開(kāi)發(fā)者,包括的領(lǐng)域有監(jiān)控系統(tǒng)和數(shù)據(jù)采集。使用的技術(shù)包括ndroid、iOS、Windows Phone、Visual Studio.NET、HTML5、PHP、CSS、Ajax、JavaScript、Angular、ASP.NET databases(SQlite、mongoDB和MySQL)和網(wǎng)頁(yè)服務(wù)器(Node.js和IIS)。Ruben在Arduino、Raspberry Pi、Ethernet Shield、GPS與GSM/GPRS、ESP8266上均做過(guò)硬件編程。他還精通控制和監(jiān)控?cái)?shù)據(jù)采集系統(tǒng)。
“我想感謝上帝的幫助,感謝他對(duì)我的啟發(fā)。感謝我的妻子Mayte和我的兒子Ruben、Dario在創(chuàng)作這本書期間對(duì)我的支持,也感謝他們對(duì)我所有項(xiàng)目的支持。感謝我親愛(ài)的父母和兄弟姐妹。
我希望這本書能涵蓋學(xué)習(xí)物聯(lián)網(wǎng)(Internet of things)項(xiàng)目所需的主要論題,以及開(kāi)發(fā)這類應(yīng)用所需的先決條件。”
譯者序
關(guān)于作者
前言
第1章 初識(shí)樹(shù)莓派Zero1
1.1 設(shè)置樹(shù)莓派Zero1
1.1.1 準(zhǔn)備SD卡2
1.1.2 安裝Raspbian操作系統(tǒng)2
1.1.3 利用串口控制電纜調(diào)試樹(shù)莓派Zero3
1.1.4 使用COM串口測(cè)試和通信4
1.2 聯(lián)網(wǎng)與遠(yuǎn)程控制樹(shù)莓派7
1.2.1 連接以太網(wǎng)絡(luò)7
1.2.2 用SSH接入樹(shù)莓派Zero8
1.2.3 連接Wi-Fi10
1.3 如何安裝無(wú)線工具10
1.4 測(cè)試通信13
1.5 更新package庫(kù)14
1.6 遠(yuǎn)程桌面16
1.7 自定義網(wǎng)絡(luò)服務(wù)器18
1.8 測(cè)試PHP安裝19
1.9 總結(jié)21
第2章 連接樹(shù)莓派Zero22
2.1 數(shù)字信號(hào)輸入:傳感器DS18B2022
2.1.1 硬件要求22
2.1.2 硬件連接23
2.2 自定義單線協(xié)議24
2.2.1 軟件自定義25
2.2.2 在屏幕上顯示讀數(shù)26
2.3 用模數(shù)轉(zhuǎn)換器MCP3008輸入模擬信號(hào)26
2.4 樹(shù)莓派GPIO引腳頭28
2.5 連接RTC32
2.6 設(shè)置DS3231模塊35
2.7 測(cè)試RTC37
2.8 I2C設(shè)備設(shè)置37
2.9 最終測(cè)試RTC38
2.10 總結(jié)39
第3章 接入傳感器——測(cè)量現(xiàn)實(shí)事物40
3.1 讀取流水傳感器來(lái)計(jì)算水的體積41
3.1.1 硬件連接41
3.1.2 讀取傳感器信號(hào)41
3.2 用Arduino讀取和統(tǒng)計(jì)脈沖42
3.3 根據(jù)統(tǒng)計(jì)的脈沖數(shù)量計(jì)算水流速度43
3.4 計(jì)算水的流速和體積44
3.5 測(cè)量煤氣濃度48
3.6 用傳感器測(cè)量酒精濃度50
3.7 用傳感器監(jiān)測(cè)火焰51
3.8 測(cè)量植物濕度53
3.9 測(cè)量容器中的水量55
3.10 測(cè)量溫度、濕度和光照,并把數(shù)據(jù)顯示到LCD屏幕上57
3.10.1 硬件和軟件要求57
3.10.2 測(cè)試傳感器59
3.10.3 在LCD上顯示數(shù)據(jù)60
3.11 用PIR傳感器監(jiān)測(cè)物體運(yùn)動(dòng)62
3.12 用簧片開(kāi)關(guān)監(jiān)測(cè)門是否被打開(kāi)63
3.13 用指紋傳感器管理進(jìn)門人員64
3.13.1 硬件設(shè)置64
3.13.2 保存指紋65
3.13.3 測(cè)試傳感器69
3.14 總結(jié)71
第4章 控制連接的設(shè)備72
4.1 利用Node.js制作一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)服務(wù)器72
4.2 利用Restful API和Node.js讓樹(shù)莓派控制一個(gè)繼電器73
4.2.1 JSON 結(jié)構(gòu)74
4.2.2 aREST API指令74
4.2.3 在樹(shù)莓派Zero上安裝Node.js74
4.3 從瀏覽器用aREST指令控制繼電器75
4.4 將電腦上的Node.js設(shè)置成網(wǎng)絡(luò)服務(wù)器77
4.4.1 下載Node.js78
4.4.2 安裝Node.js78
4.4.3 用Node.js設(shè)置網(wǎng)絡(luò)服務(wù)器端口808080
4.5 用Arduino Wi-Fi擴(kuò)展板和Node.js監(jiān)控溫度、濕度和光照81
4.6 用Arduino以太網(wǎng)擴(kuò)展板和Node.js監(jiān)控溫度、濕度和光照87
4.6.1 Arduino以太網(wǎng)擴(kuò)展板的應(yīng)用代碼87
4.6.2 設(shè)置設(shè)備的Node.js90
4.7 總結(jié)91
第5章 在你的安全系統(tǒng)中添加網(wǎng)絡(luò)攝像頭92
5.1 Arduino和樹(shù)莓派間的互動(dòng)92
5.1.1 在Raspbian系統(tǒng)下安裝Arduino IDE93
5.1.2 遠(yuǎn)程連接樹(shù)莓派93
5.1.3 用圖像接口執(zhí)行Arduino93
5.2 Raspbian系統(tǒng)下的Arduino界面94
5.2.1 準(zhǔn)備工作95
5.2.2 選擇串口95
5.2.3 從圖形界面下載程序96
5.3 從樹(shù)莓派Zero控制一個(gè)Arduino的輸出口97
5.4 用Python控制Arduino98
5.5 將TTL串口攝像頭連接到Arduino,并將圖像保存到micro SD卡99
5.6 用TTL串口攝像頭監(jiān)測(cè)運(yùn)動(dòng)101
5.7 用樹(shù)莓派控制快照拍攝102
5.8 用網(wǎng)頁(yè)控制攝像頭104
5.8.1 通過(guò)PHP啟動(dòng)Python腳本104
5.8.2 Python腳本代碼105
5.9 在安全網(wǎng)絡(luò)中監(jiān)控USB攝像頭106
5.9.1 設(shè)置Arduino YUN106
5.9.2 從MJPG-STREAMER服務(wù)器監(jiān)控108
5.9.3 用樹(shù)莓派監(jiān)控USB攝像頭108
5.10 總結(jié)109
第6章 搭建網(wǎng)絡(luò)監(jiān)視器和用儀表盤控制設(shè)備110
6.1 設(shè)置MySQL數(shù)據(jù)服務(wù)器110
6.1.1 安裝MySQL111
6.1.2 安裝PHP的MySQL驅(qū)動(dòng)113
6.1.3 測(cè)試PHP和MySQL113
6.2 安裝phpMyAdmin管理數(shù)據(jù)庫(kù)115
6.2.1 設(shè)置Apache服務(wù)器116
6.2.2 從遠(yuǎn)程控制面板進(jìn)入phpMyAdmin118
6.2.3 展示Arduinobd數(shù)據(jù)庫(kù)118
6.2.4 從Arduino的以太網(wǎng)擴(kuò)充板發(fā)送數(shù)據(jù)到網(wǎng)頁(yè)服務(wù)器119
6.3 MySQL的Datalogger121
6.3.1 腳本語(yǔ)言編程121
6.3.2 測(cè)試連接122
6.4 數(shù)據(jù)庫(kù)查詢123
6.4.1 腳本軟件123
6.4.2 展示特定數(shù)據(jù)的腳本124
6.4.3 查詢記錄的溫度125
6.5 LED的控制和調(diào)光126
6.5.1 軟件要求126
6.5.2 測(cè)試LED127
6.5.3 從界面控制LED128
6.6 控制直流電機(jī)129
6.7 用電路控制燈132
6.8 其他電氣用具135
6.8.1 控制門鎖135
6.8.2 控制澆水136
6.9 從任何地方遠(yuǎn)程訪問(wèn)樹(shù)莓派Zero136
6.9.1 如何訪問(wèn)并設(shè)置路由器137
6.9.2 設(shè)置動(dòng)態(tài)DNS139
6.9.3 創(chuàng)建No-ip.org賬號(hào)140
6.10 控制燈并且測(cè)量電流消耗141
6.11 從已經(jīng)連接的設(shè)備和傳感器上控制與監(jiān)視Arduino、Wi-Fi和以太網(wǎng)擴(kuò)展板147
6.11.1 編寫控制和監(jiān)控設(shè)備的單一接口代碼147
6.11.2 為監(jiān)視和控制添加設(shè)備148
6.12 總結(jié)150
第7章 用物聯(lián)網(wǎng)儀表盤搭建監(jiān)視設(shè)備151
7.1 可以檢測(cè)噪聲的監(jiān)聽(tīng)麥克風(fēng)151
7.2 管理交流燈調(diào)光器的電流153
7.2.1 硬件要求153
7.2.2 軟件代碼154
7.3 用RFID卡控制訪問(wèn)156
7.3.1 硬件要求156
7.3.2 軟件要求157
7.3.3 軟件代碼157
7.4 監(jiān)測(cè)煙霧160
7.5 用樹(shù)莓派Zero