© 2014 Phodal Huang.
1 前言
設(shè)計(jì)物聯(lián)網(wǎng)系統(tǒng)是件有意思的事情,它需要考慮到軟件、硬件、通訊等多個(gè)不同方面。通過(guò)探索不同的語(yǔ)言,不同的框架,從而形成不同的解決方案。
在這里,我們將對(duì)設(shè)計(jì)物聯(lián)網(wǎng)系統(tǒng)有一個(gè)簡(jiǎn)單的介紹,并探討如何設(shè)計(jì)一個(gè)最小的物聯(lián)網(wǎng)系統(tǒng)。
1.1 目標(biāo)讀者
目標(biāo)讀者: 初入物聯(lián)網(wǎng)領(lǐng)域,希望對(duì)物聯(lián)網(wǎng)系統(tǒng)有一個(gè)大概的認(rèn)識(shí)和把握,并學(xué)會(huì)掌握一個(gè)基礎(chǔ)的物聯(lián)網(wǎng)系統(tǒng)的設(shè)計(jì)。
硬件開(kāi)發(fā)人員,對(duì)物聯(lián)網(wǎng)有興趣。
沒(méi)有web開(kāi)發(fā)經(jīng)驗(yàn)
幾乎為0的linux使用經(jīng)驗(yàn)
想快速用于生產(chǎn)環(huán)境
對(duì)硬件了解有限的開(kāi)發(fā)人員。
沒(méi)接觸過(guò)51、ARM、Arduino
想了解以下內(nèi)容:
RESTful與IOT
CoAP協(xié)議
MQTT
本文檔對(duì)一些概念(如)只做了一些基本介紹,以方便讀者理解。如果您想進(jìn)一步了解這些知識(shí),會(huì)列出一些推薦書(shū)目,以供參考。
1.2 不適合人群
如果你是在這方面已經(jīng)有了豐富經(jīng)驗(yàn)的開(kāi)發(fā)者。
不是為了學(xué)習(xí)而學(xué)習(xí)這方面的知識(shí)。
1.3 介紹
關(guān)于內(nèi)容的選擇,這是一個(gè)有意思的話題,因?yàn)槲覀兒茈y判斷不同的開(kāi)發(fā)者用的是怎樣的語(yǔ)言,用的是怎樣的框架。
于是我們便自作主張地選擇了那些適合于理論學(xué)習(xí)的語(yǔ)言、框架、硬件,去除掉其他一些我們不需要考慮的因素,如語(yǔ)法,復(fù)雜度等等。當(dāng)然,這些語(yǔ)言、框架、硬件也是最流行的。
Arduino: 如果你從頭開(kāi)始學(xué)過(guò)硬件的話,那么你會(huì)愛(ài)上它的。
Raspberry PI: 如果你從頭編譯過(guò)GNU/Linux的話,我想你會(huì)愛(ài)上她的。
Python: 簡(jiǎn)單地來(lái)說(shuō),你可以方便地使用一些擴(kuò)展,同時(shí)代碼就表達(dá)了你的想法。
PHP : 這是一門(mén)容易部署的語(yǔ)言,我想你只需要在你的Ubuntu機(jī)器上,執(zhí)行一下腳本就能完成安裝了。而且,如果你是一個(gè)硬件開(kāi)發(fā)者的話,你會(huì)更容易地找到其他開(kāi)發(fā)者。
Javascript : 考慮到j(luò)avascript這門(mén)語(yǔ)言已經(jīng)無(wú)處不在了,而且會(huì)更加流行。所以,在這里CoAP、MQTT等版本是基于Nodejs的。
HTML、CSS : 這是必須的,同樣,他們?nèi)匀粺o(wú)處不在。
GNU/Linux: 作為部署到服務(wù)器的一部分——你需要掌握他。當(dāng)然如果你要用WAMP也是可以的。
CoAP: 用NodeJS構(gòu)建IOT CoAP物聯(lián)網(wǎng)
1.3.1 為什么沒(méi)有C ?
C都不懂還跑過(guò)來(lái)干嘛。
1.3.2 為什么不是JAVA ?
大有以下兩個(gè)原因
學(xué)習(xí)JAVA的人很多,但是它不適合我們集中精力構(gòu)建與學(xué)習(xí),因?yàn)闊o(wú)關(guān)的代碼太多了。
之前以及現(xiàn)在,我還是不喜歡JAVA (我更喜歡腳本語(yǔ)言,可以提高工作效率)。
1.4 如何閱讀
這只是一個(gè)小小的建議,僅針對(duì)于在選擇閱讀上沒(méi)有經(jīng)驗(yàn)的讀者。
當(dāng)前狀態(tài)建議
軟件初學(xué)者從頭閱讀
硬件開(kāi)發(fā)者從頭閱讀
沒(méi)有web經(jīng)驗(yàn)的開(kāi)發(fā)者從第二部分開(kāi)始
我們會(huì)在前面十章里簡(jiǎn)單介紹一些必要的基礎(chǔ)知識(shí),這些知識(shí)將會(huì)在后面我們構(gòu)建物聯(lián)網(wǎng)系統(tǒng)時(shí)用到。
某一天,正走在回學(xué)校的路上的我突然想到:“未來(lái)將會(huì)是一個(gè)科技的時(shí)代——雖然現(xiàn)在也是——只是在未來(lái),科技將會(huì)無(wú)處不在。如果我們依舊對(duì)周?chē)@些無(wú)處不在的代碼一無(wú)所知的話,或許我們會(huì)成為黑客帝國(guó)之中被控制的普通人。”于是開(kāi)始想著,有一天人們會(huì)像學(xué)習(xí)一門(mén)語(yǔ)言一樣開(kāi)始學(xué)習(xí)編程,直到又有一天我看到了學(xué)習(xí)編程如同學(xué)習(xí)一門(mén)語(yǔ)言的說(shuō)法。這又恰好在我做完最小物聯(lián)網(wǎng)系統(tǒng)之后,算是一個(gè)有趣的時(shí)間點(diǎn),我開(kāi)始想著像之前做最小物聯(lián)網(wǎng)系統(tǒng)的那些步驟一樣,寫(xiě)一個(gè)簡(jiǎn)單的入門(mén)。也可以補(bǔ)充好之前在這個(gè)最小物聯(lián)網(wǎng)系統(tǒng)缺失的那些東西,給那些正在開(kāi)始試圖去解決編程問(wèn)題的人。
讓我們先從身邊的語(yǔ)言下手,也就是現(xiàn)在無(wú)處不在的html+javascript+css。
2 無(wú)處不在的HTML
之所以從html開(kāi)始,是因?yàn)槲覀儾恍枰渲靡粋€(gè)復(fù)雜的開(kāi)發(fā)環(huán)境,也許你還不知道開(kāi)發(fā)環(huán)境是什么東西,不過(guò)這也沒(méi)關(guān)系,畢竟這些知識(shí)需要慢慢的接觸才能有所了解,尤其是對(duì)于普通的業(yè)余愛(ài)好者來(lái)說(shuō),當(dāng)然,對(duì)于專(zhuān)業(yè)選手言自然不是問(wèn)題。HTML是Web的核心語(yǔ)言,也算是比較基礎(chǔ)的語(yǔ)言。
2.1 html的hello,world