1874年11月30日,巴黎的滑雪愛好者們被一項新的發明驚獃了。工程師們在勃朗峰上部署了傳感器,通過一根電線穿越300英裡連接到巴黎,他們突然可以獲得勃朗峰的實時天氣和雪深數據。這是遙測技術(telemetry,源自希臘語,意思是遠距離測量)的最早例子之一。
讓我們快進一個半世紀,如今遙測技術已無處不在,從機器上的傳感器,到健身追蹤器、智慧城市等。我們已經從單純的收集數據,發展到建立一整套互聯設備,利用雲和人工智能的力量,從收集的數據中做出決策,優化生產線,節約能源,改善我們的健康。這些設備構成了今天的物聯網。
物聯網(IoT)是目前發展最快的技術領域之一。現在想要不被物聯網設備包圍,似乎越來越難了。當我坐在辦公桌前寫這篇文章時,我的房間連接了傳感器來監測溫度和空氣質量,不斷地將這些數據傳送到控制供暖和制冷繫統或管理空氣淨化器的算法中;通過語音助手我可以控制房間的燈光或打開車庫門;家門口的智能門鎖可以讓我從世界任何地方看到誰在我家外面。
作為一名工程師,我認為物聯網是一項非常有趣的技術。“物”是你可以觸摸到的有形物品,在我看來,這增加了構建物聯網項目的實用度。例如,你可以看到一個由土壤濕度數據控制的自動澆水繫統,以便讓作物長得更好。這種“物理計算”也使物聯網成為孩子們學習技術和編程的好方法。
有大量的物聯網設備和套件可供選擇,從業餘愛好者的一體式開發套件到為工業用途設計的專業板和傳感器。你可以在互聯網上找到構建不同解決方案或使用一繫列設備和傳感器的教程。但是,一直缺少的是真正高質量的文檔,它可以教你所有關於物聯網的知識,包括基本原理、用例、硬件和軟件。這是我想填補的一個空白。
當我開始著手在微軟創建IoT for Beginners課程時,我在內心給自己設了幾個目標。首先,我想在課程裡提供物聯網的基礎知識。有許多針對特定物聯網設備或雲服務的優秀教程,但我找不到任何涵蓋所有基礎知識的教程。其次,我想給學習者提供多種硬件選擇,包括使用虛擬硬件學習,以避免潛在的高成本。我非常感謝矽遞科技(Seeed Studio),它幫我提供了易於購買的工具包和所需的硬件。第三,我希望這本書的水平適用於高等教育水平的學生,或者高中的優秀學生。為此我很感謝一群來自 Microsoft Learn 的學生大使,他們幫助我審查了內容,以確保內容處於正確的難度水平。
這本書包含了你在激動人心的物聯網世界中開始探索所需的一切。我希望這能幫助你學習所有你需要知道的知識,並激勵你創造令人贊嘆的項目。
Jim Bennett
IoT for Beginners的主要作者之一
推薦序一 為什麼需要學習物聯網
物聯網不是一個新的概念。以人們對於技術的追趕和通常的學習邏輯來看,新技術似乎永遠是最時髦的,我們應該忘掉物聯網,去努力追趕當前最新穎的熱門技術和話題,諸如AIGC(Artificial Intelligence Generated Content,基於人工智能生成內宇宙、Web3.0、NFT等,似乎隻有這樣纔能讓我們趕上時代的潮流。
但是,新的就一定是好的嗎?時髦的就一定是有用的嗎?或者說,如果我們學習技術的目的是為人類社會產生更大的福祉,那麼除了追趕所謂的技術時尚以外,什麼樣的知識能夠讓我們真正提升自身的技術水準,最大程度地擁有造福社會的能力?這是一個更為基本的問題。
如果我們認真地梳理當下這個數智時代的技術發展脈絡,大概會發現人類即將進入一個全新的人機協同與共生的時代。近幾百年來,人類先是通過借助機器的機械力來提升個人乃至人類社會整體的生存與發展空間,現在不僅需要依賴機器的機械力,還需要通過學習和掌握機器的計算能力來提升自身的生存與發展潛力。
在以工業革命為代表的機器時代早期,那些學會操作機器和駕駛汽車的人獲得了生存與發展的優勢與先機,這種機器能力可稱為機械力,人類社會因為積極擁抱了這種機械力而獲得了指數級別的增長與發展。之後人類又經歷了電子與信息時代。從近來愈發成熟的“thinking machine”(思考機器,借用基辛格在《大西洋月刊》發表文章中的定義)的發展來看,這些具備計算能力的機器通過高效處理數據而慢慢展現出某種類似於人類智能的能力。這種被稱之為“人工智能”或者“機器學習”的新型機器能力,雖然如同機械力機器一樣,在早期尚不夠完善,但越來越顯露出這種思考機器可以強化人類能力的潛質。我們現在應該可以做出一個大概率會實現的推斷,那就是當下那些主動擁抱並掌握這種新型的機器智能能力的人或組織,相比於那些拒絕或者放棄學習並掌握這種能力的人或組織,會獲得更大的生存與發展機會。這也就是為什麼現在越來越多的人們開始關注最新的技術,希望能夠在這個劇變的時代,具備最大化的生存與發展可能性。
那麼問題就來了,每個人的時間與精力都是有限的,而當下技術的迅速發展並因此而產生的海量知識,已經遠遠超越了絕大多數人能夠接受並理解的範疇,我們該如何在有限的時間與精力約束下,盡量學習到對自身的發展和社會的進步有用的知識,而且這種知識還要具備盡量長的有效期呢?
為了回答這個問題,首先我們要認識到,有時候人們為了體現出技術的進步,會經常發明一些新的名詞來彰顯現在與過去的不同。這種急於表達與過去不同的思維邏輯,讓我們姑且稱之為“求異存同”,如果應用在技術的創新方面有它的用武之地。當我們的關注點放在技術的落地實踐和技術對人類社會產生應用價值時,“求同存異”則是一種更為實用的技術應用範式。這種思維方法不是急於探索哪些技術改變了,而是先搞清楚哪些技術“沒有改變”,以及技術如何能夠盡快地為人類所用,並產生出最大化的社會價值。
當然與此同時,我們也要不斷地突破我們對技術理解的局限性,以創新的方式探索出全新的技術領域。“求同存異”與“求異存同”這兩種方式並不矛盾,一般來說,技術的發展都有它的客觀規律,相同的部分大多是技術的根脈,不同的部分通常是在根脈之上長出的繁茂枝葉和花朵。它們是在不同的前提條件下的一體兩面,是一種辯證統一的關繫,隻不過它會影響到我們如何在海量的信息領域中學習到對我們有用的知識。通常而言,根脈型的知識少而精,不易掌握但也不會輕易改變;枝葉或花朵型的知識多而雜,容易掌握也容易變化。這是一個沒有標準答案的問題,需要每個人認真思考並做出自己的選擇。
以我個人的思維習慣,我通常都會采用被稱為“五問法”或者說“蘇格拉底方法”的追問方法,不斷從“為什麼”這個本源問題出發,盡量求本溯源地找到隱藏於當下五花八門的技術背後的根源,同時理解由這個根源而長出的各種支脈之間的關繫,慢慢構建起自己在這個即將到來的數智時代的知識體繫,以最大程度地應對時代的挑戰。
基於這種方法,我們會逐步理解到,機器的這種學習與智能能力,源於它通過計算能力對於數據的加工。而這種計算結果的作用則體現為,機器對於人類社會各種現像的分析與模式的識別。那麼為了能夠理解並掌握這種機器能力,我們需要知道數據是如何產生的,以及數據是以何種方式來表達人類社會的各種現像的;我們還需要知道這些數據是如何被機器計算的,以及這些計算結果是如何被應用的。人類社會數據的產生、傳輸、存儲、計算和應用就是物聯網的範疇,這也就是為什麼我認為物聯網的技術是這個數字時代的本源性技術。物聯網技術的覆蓋面極其廣泛,最重要的是,它解決了物理世界與數字世界之間的關聯與協作問題,也是人類與機器之間的關聯與協作問題。
根據不同的定義方式,它所覆蓋的技術內涵與外延會略有不同,但是物聯網技術總是與數字宇宙、人工智能、傳感、通信、存儲和執行技術互為表裡。因此,從物聯網技術入手,不斷地深入展開,更容易建立起一個完整的、適應數智時代特征的技術知識體繫,有助於明白人類自身在這個新時代的定位和應該采取的行動。另外由於物聯網技術跨越了人類所熟悉的物理世界和不是很熟悉的抽像數字世界,在學習的過程中,人們能同時學到如何將現實的物理世界映射進抽像的數字世界;同時又能夠親身體驗到抽像的數字世界所計算的結果是如何影響物理世界的。這種真實的學習體驗本身就是一種非常有趣的經歷。
由物聯網技術的特色而帶來的有趣學習經歷,在本書中體現得更加淋漓盡致。我們還是要明白,這本書裡面所介紹的知識不是容易掌握的知識。但是通過作者清晰的描述和明確的實驗步驟,讀者很容易就能看到自己在數字世界裡的努力,馬上就體現為物理世界裡的成果。這得益於物聯網技術本身的特色,同時也得益於本書幾位作者和國內譯者豐富的技術傳播經驗。但是本書中實驗所涵蓋的技術範圍博大精深,幾乎囊括了所有與數據和人工智能相關的技術領域。就像大家在學校中常用的經典教材一樣,要想把這本書傳達的知識體繫建立完備,讀者需要根據書中的提示和相應的網站內容,進行大量擴展學習。
幸運的是,本書的知識講解始終堅持理論與實驗相結合,它采用技術界常用項目制方式進行組織,可謂學習體驗生動活潑,學習效果立竿見影。以我自身的學習經驗來判斷,我相信隻要讀者們能夠靜下心來,一步一步地按照書中描述的實驗步驟做下去,同時不要忽略其中任何一段擴展知識學習的機會,就能夠建立起一整套完備的數智時代知識體繫。作為一個物聯網技術的拳拳服膺者,同時也是一個物聯網技術的愛好者和實踐者,我也預祝讀者們能夠借助本書,更加充滿信心地迎接這個劇變時代的機遇與挑戰。
韋青
微軟(中國)首席技術官
推薦序二
世上本沒有IoT。
隨著移動設備占領了人們的空間和時間,開發者自然將目光投到更廣闊的天地和萬物。從工業4宇宙,層出不窮的信息技術熱門概念都試圖拉近數字世界和物理世界的距離,更多的接入意味著更廣闊的市場和更長的跑道,物聯網理所當然成為各種新應用的共通的技術底座。
我們為新技術的湧現感到驕傲,但物聯網並不是一個橫空出世的石猴——絕大部分的技術都已經歷過幾十年甚至上百年的發展,曾經被歸納在儀器儀表、電子、自動化、通信工程等專業領域。物聯網像一口大鍋,裡面翻滾著最新的傳感器、通信、單板計算機、機器學習、新材料等軟硬件技術棧,它們不斷演化和融合,等待著用戶的選擇,以解決實際問題。
然而,來自各個傳統行業的用戶可能很難理解這一大堆晦澀難懂的技術,而且技術公司為了凸顯自己的差異化,習慣於發明新奇的名詞,更進一步阻礙了物聯網技術的應用。過去十多年的創客運動和開源硬件潮流,讓這個尷尬的局面得以改善。大眾也開始扮演技術創造者的角色,讓物聯網技術走出實驗室,變得隨手可得,像玩具一樣被大眾肆意組合並展示。其中一部分創客們不再滿足於有趣的發明,他們進入(回到)傳統行業,將越來越成熟的技術運用在數字化轉型的過程中。
實時低成本的真實數據采集代替了傳統的人工采集上報,生產活動可以及時獲得更全面的信息,大大增加適應變化的能力。這樣的數字化能力在充滿不確定性的未來越發重要:氣候變化讓耕作經驗受到了巨大的挑戰,新農人也不滿足傳統的種植方式和作物,設施農業變得像一個個植物工廠;洪水、泥石流、地震、干旱、海嘯等次生災害更加頻繁,需要更多的數據以盡早預測與防御;可持續發展對工業生產和消費過程都提出了更高的要求,精確高效節制地滿足需求比盲目的規模化生產更有價值。
數字化的推進也帶來很多新的機會:分布式的清潔能源小心翼翼地適應外部的天氣,盡量提升投入產出比,以提高競爭力;變聰明的機器從車間走向更多豐富的場景,倍增了人類的生產勞作效率;各種科學研究在更多數據樣本的幫助下能夠更快速地發現新規律,並且隨著物聯網的基礎建設更快地產業化。
拿起這本書的你正處在一個有趣的時代,物聯網的技術已經變得前所未有地簡單,而各個行業數字化的進程纔剛剛開始。這本書的源於一個非常成功的開源項目,它是GitHub上Star數最多的物聯網教程之一,也是我們團隊見到的最深入淺出的內容。這個教程融合了微軟物聯網專家多年的實踐經驗,可以通讀理解物聯網的基本邏輯,也值得一步步實踐完成自己的物聯網方案部署。
希望這是你學習物聯網的最後一本書。止步於此,留更多的時間用越來越簡單和強大的工具解決自己領域的問題。就像普通人很少再為PC興奮,可見的未來我們不需要再頻繁談論IoT的概念,不需要從頭搭建物聯網繫統,甚至不需要專門去研究和學習。連接與智能自然地融入各種科技與設備,我們不用為物聯網歡呼,因為它已是隨處可見的稀松平常的工具。
然後大家就習慣了IoT。
潘昊
矽遞科技和柴火創客空間創始人
前言
本書的絕大部分內容來自微軟的 Azure 雲大使提供的,一個為期 12 周的24課時的物聯網基礎知識開源課程—— IoT for Beginners。此課程的每節課都包括課前準備和課後測驗、知識點講解、解決方案、作業等。課程作者們以項目為基礎的教學法,使讀者能夠邊學邊做,這 是一種證明新技能能夠快速“落地”的有效方法。這些項目涵蓋了食物從農場到餐桌的整個過程,包括從農場、物流、制造、零售到消費者——涵蓋了所有物聯網設備的流行行業領域。
英文版課程創作團隊
衷心感謝英文版課程的作者 Jen Fox、Jen Looper、Jim Bennett,以及插畫藝術家Nitya Narasimhan (有關Nitya Narasimhan 的介紹請參看 [L0-1]),她用插畫的方式將每課的知 識點做了總結(見下頁插畫)。 同時也感謝我們的微軟學習學生大使團隊,他們一直在審查和翻譯這個課程,包括 Aditya Garg、Anurag Sharma、Arpita Das、Aryan Jain、Bhavesh Suneja、Faith Hunja、Lateefah Bello、Manvi Jha、Mireille Tan、Mohammad Iftekher (Iftu) Ebne Jalal、Mohammad Zulfikar、Priyanshu Srivastav、Thanmai Gowducheruvu,以及Zina Kamel。
[L0-2] 通過鏈接索引的視頻,接受英文版課程的作者和學生 大使團隊的問候。
中文翻譯及編輯團隊
中文翻譯及編輯團隊來自柴火創客空間與矽遞科技,包括馮磊、黃夏、龔莉鈞、黎孟度、劉海旭、潘知非(實習)、楊雨婷(實習);版式設計及排版由孟依卉和馮磊完成。
中文版修訂特別感謝
? 來自微軟 Cloud Advocate 部門的 Jim Bennett 和盧建暉(中 國)。
? 紫金山實驗室的陳聲健老師。
? 廣東工程職業技術學院的許喜斌老師。
? 清華大學精密儀器繫的曾悅老師。
? 南方科技大學創新創意設計學院的羅濤老師。
給教師的建議
老師們,我們已經提出了一些關於如何使用該課程的建議 [L0-3](英文)。如果你想創建自己的課程,我們也提供了一個課程模板[L0-4](英文)。
給學生及讀者的建議
要想自學這門課程,可以在 Github 或 Gitee 上 Fork 整個項目並自己閱讀完成練習,從課前測驗開始,然後閱讀課程並完成項目和作業。建議盡量通過理解課程來自己創建和完成項目,而不是復制解決方案的代碼;不過這些代碼在每個面向項目的課程中的 /solutions 文件夾中都有;另一個建議是與朋友組成一個學習 小組,一起學習這些內容。對於進一步的學習,我們推薦 Microsoft Learn [L0-5]。關於這個課程的視頻概述,可以觀看視頻 [L0-6]。
課程結構
在構建本課程時,我們明確了兩個教學宗旨:首先確保它是基於項目的,其次每課都有課前和課後的測驗。在這個繫列課程結束時,學生將會建立一個自動植物監測和灌溉繫統、一個車輛跟蹤器、一個檢測食物質量和庫存的智能工廠裝置,以及一個語音控制的烹飪計時器;並將學習物聯網的基本知識,包括如何編寫設備代碼、連接到雲、分析遙測數據和在邊緣設備上運行 AI。此外,課前的低難度測驗可以幫助學生明確學習主題,而課後的第二次測驗則能進一步強化記憶。這個課程的設計力求靈活有趣,學生可以全部選擇或選擇感興趣的部分學習。課程項目的難度循序漸進,開始時 很簡單,越接近尾聲會變得越復雜。本課程每個項目都是基於學生和業餘愛好者可用的真實世界的硬件;每個項目都探究了具體的項目領域,並提供了相關的背景知識。要成為一個成功的開發者,需要養成了解你所要解決問題的領域知識的習慣,課程裡提供的背景知識可以讓讀者深度思考其物聯網解決方案,同時讓物聯網開發者在近乎實戰的背景下學習。讀者可以學習反思自己正在構建的解決方案的目的和意義,培養對最終用戶的同理心。
硬件
我們為課程提供了兩類物聯網硬件,選擇哪個取決於你對編程語言知識或偏好、學習目標和可用性的個人喜好。我們還提供了一個“虛擬硬件”版本,供那些沒有硬件或者想在購買之前了解更多的人使用。你可以閱讀更多內容,並在硬件頁面上找到一個“購物清單”,包括從我們的朋友矽遞科技購買完整套件的鏈接。
每一課都包括以下結構:
? 插圖說明。
? 可選的補充視頻。
? 課前測驗。
? 知識點講解。
? 基於項目的課程,關於如何建立項目的分步指南。
? 知識檢查。
? 挑戰。
? 復習和自學。
? 課後測驗。
? 作業。
課程表
見表 0-1。
小貼士類型
本書有許多不同類型的小貼士,根據圖標可以區分它們的內容類別。