發表於2024-12-21
資深嵌入式係統硬件開發工程師撰寫,係統闡述如何將傳感器應用於樹莓派電腦闆,創建令人難忘的交互式項目
用Linux和Python深入挖掘樹莓派的功能,並詳細介紹一係列包括OpenCV在內的激動人心的庫來增強項目功能
樹莓派從2012年發行一個版本以來,由於其通用的架構、標準的接口和豐富的外圍設備,吸引瞭無數硬件和軟件工程師的眼球,將其視為投身物聯網産業的必備法寶之一。本書詳細講解瞭如何將傳感器集成到樹莓派電腦闆,創建令人難忘的交互式項目,並用Linux和Python深入挖掘樹莓派的功能,為那些希望瞭解各種硬件和軟件如何協同工作以及希望得到在樹莓派上開發傳感器和物聯網項目的創造者們提供實用指南。
全書分為7章:第1章介紹市麵上可找到的所有型號的樹莓派,包括*新發布的B型樹莓派,並討論安裝操作係統的方法以及將樹莓派接入互聯網的幾種有趣的方式;第2章簡要介紹樹莓派的電子學基本知識;第3~7章則通過5個不同的項目分彆詳細講解如何利用樹莓派和傳感器測量距離、監控溫度和濕度、連接樹莓派和傳感器、在綫上傳數據以及圖像與視頻處理。書中最後的附錄給齣一份購物清單,可以作為讀者進行項目開發時選購相應工具和元器件的參考。
Rushi Gajjar 是一位資深嵌入式係統硬件開發工程師,也是一名電子學愛好者,他的工作領域是針對物聯網研究、開發高速單闆嵌入式計算機以及傳感器節點。除此以外,他還曾經在印度韋洛爾理工大學參與研究,並藉此獲得嵌入式係統的工程碩士學位。
在此之前,他在電子硬件設計領域作為自由撰稿人從事瞭大量工作,這些工作讓他開始涉足快速原型開發闆(例如樹莓派)。他在閑暇時間裏喜歡在樹莓派上開發項目,這些項目包括可視化、數據記錄、Web服務器以及機器學習自動化係統。他熱衷於嚮在校學生講授樹莓派項目。
他誌在將世界上所有東西都接入互聯網,以增強人們的生活體驗,他的業餘愛好是打手鼓、攝影和旅行。
譯者序
前言
緻謝
第1章 認識你的小夥伴——樹莓派1
1.1 樹莓派闆卡一覽2
1.2 首次配置8
1.3 將樹莓派接入互聯網12
1.3.1 通過無綫網卡接入互聯網12
1.3.2 通過PC從以太網接入互聯網14
1.4 Linux速成教程19
1.4.1 終端和shell20
1.4.2 常見的實用Linux命令20
1.5 安裝實用庫23
1.5.1 git-core24
1.5.2 wiringPi24
1.6 python-gpio25
1.7 準備學習Python和C26
1.7.1 編寫和執行Python程序27
1.7.2 編寫和執行C程序27
1.8 實戰練習28
1.9 本章小結29
第2章 認識電子學世界31
2.1 電子學基本術語32
2.1.1 電壓33
2.1.2 電流33
2.1.3 電阻33
2.1.4 電容34
2.1.5 斷路和短路34
2.1.6 串聯和並聯35
2.1.7 上拉和下拉電阻36
2.2 通信協議37
2.2.1 UART38
2.2.2 SPI40
2.2.3 I2C41
2.3 實用技巧和注意事項43
2.4 理解GPIO端口44
2.5 點亮LED47
2.5.1 Shell腳本和GPIO49
2.5.2 LED閃爍和Python49
2.5.3 用C代碼讓LED閃爍51
2.6 本章小結51
第3章 用超聲波傳感器測量距離53
3.1 神秘的超聲波傳感器54
3.2 創建項目57
3.2.1 硬件設置59
3.2.2 軟件設置62
3.2.3 計算距離64
3.3 解決常見問題66
3.3.1 不能正確顯示距離66
3.3.2 樹莓派是否做齣瞭響應67
3.3.3 測量的距離是否小於2cm67
3.4 麵嚮視力不佳人群的可穿戴設備67
3.4.1 製作硬件68
3.4.2 軟件設置69
3.5 本章小結73
第4章 用傳感器監控大氣74
4.1 傳感器選擇過程75
4.1.1 應用的臨界性76
4.1.2 選擇傳感器封裝76
4.1.3 傳感器屬性76
4.1.4 購買傳感器77
4.1.5 可用的傳感器77
4.2 DHT內置的溫度和濕度傳感器78
4.3 引入光敏電阻(光敏元件)80
4.4 創建項目81
4.4.1 硬件設置81
4.4.2 準備代碼84
4.4.3 綜述90
4.5 解決常見問題94
4.5.1 接收到的DHT數據無效94
4.5.2 LDR傳感器輸齣的值為094
4.5.3 電壓是否正確95
4.6 本章小結95
第5章 用模數轉換器連接模擬傳感器和樹莓派97
5.1 模數轉換器98
5.1.1 數據接收和信號調理99
5.1.2 信號放大99
5.1.3 采樣和量化100
5.1.4 模數轉換器的類型100
5.1.5 模數轉換器的分辨率100
5.1.6 模數轉換器背後的數學知識101
5.1.7 數據輸齣102
5.2 MCP3008模數轉換器103
5.2.1 通道103
5.2.2 接地端104
5.2.3 SPI104
5.2.4 參考電壓104
5.2.5 供電電壓105
5.3 製作你自己的傳感器站105
5.4 準備通用軟件109
5.5 使用你的傳感器站—創建溫度記錄器114
5.5.1 瞭解LM36溫度傳感器114
5.5.2 編寫應用程序115
5.6 本章小結117
第6章 在綫上傳數據——電子錶格、移動設備和電子郵件119
6.1 物聯網120
6.1.1 傳感器節點121
6.1.2 通信123
6.1.3 雲技術124
6.1.5 數據分析124
6.1.6 安全事務125
6.2 硬件設置125
6.3 用互聯網進行時鍾同步126
6.4 嚮Google電子錶格上傳數據127
6.5 通過電子郵件接收通知133
6.6 集成所有東西138
6.7 麵臨的常見問題138
6.8 本章小結140
第7章 用攝像頭和OpenCV製作圖像傳感器141
7.1 圖像處理142
7.2 OpenCV144
7.3 可與樹莓派連接的攝像頭145
7.3.1 樹莓派攝像頭模塊145
7.3.2 USB網絡攝像頭146
7.4 用網絡攝像頭傳輸實時視頻流147
7.5 安裝OpenCV149
7.6 創建運動探測器157
7.7 一些令人驚嘆不已的項目164
7.8 本章小結165
附錄 購物清單167
樹莓派是一種信用卡大小的單闆計算機,能提供大量開展研究和發明創造的機會。看到一個孩子從零開始學習編寫Python代碼,製作一個鳥籠並在互聯網上傳輸實時視頻來檢查鳥是否得到瞭食物,這種事情真是讓人驚嘆。記得我還是個孩子時,曾經將樂高玩具連接到直流電動機和電池上,效果很迷人。在那時我無法想象代碼中的邏輯,也沒有機會為自己的項目編寫代碼,然後用手機來控製樂高玩具運動,但現在我很幸運能有機會介紹這類項目,為那些真正渴望創造一些東西來改變周邊世界的年輕創客提供一個起步平颱。
世界正邁嚮新時代,技術正在改變人們日常的需求和習慣(通過一個簡單的界麵就可以實現),這給予瞭我寫一本有關樹莓派傳感器書籍的動機。世界充滿創造性,我認為在你開始理解和懂得一些基礎知識並應用相應邏輯時,創造靈感就會湧現齣來。在不同的網站上有大量的樹莓派知識和項目,任何一個人都能盡其所能地獲取這些知識和項目。我認為網站上的知識通常都是不完整的,它能讓我們快速開始創建項目,但不能使我們明白項目背後的原理。
眾所周知,即使沒有深入研究過電子設備和通信協議,你也可以在樹莓派上編寫代碼並創建令人驚嘆的項目。我周圍的同事經常需要在樹莓派平颱上編寫代碼,並將傳感器連接到樹莓派上,他們可以在很短的時間內就編寫齣有關人工神經網絡的Python代碼,但到瞭連接硬件時就徘徊不前。我認為對電子學有基本的瞭解能幫助那些想在樹莓派之類的平颱上進行程序開發的精英走齣上述睏境。與此相反,硬件開發人員能夠連接傳感器,保證設備引腳上具有正確的電壓電平,但到瞭編寫代碼之時,他們就需要幫助瞭。
我發現樹莓派最有趣的地方在於我能使用硬件元器件和電烙鐵,並且能為硬件編寫代碼讓其工作。本書為那些希望瞭解各種硬件和軟件如何協同工作以及希望在樹莓派上開發傳感器、物聯網項目的創客提供瞭入門指南,在我們期待將周邊所有的東西連接成一體之時,科技將會有大的發展。
物聯網以更好的用戶體驗為齣發點,為收集和分析數據開啓瞭一個新世界,傳感器陣列輸齣的大量數據都是由傳感器節點生成的,在這種背景下,樹莓派嚮我們提供瞭從簡單的項目(例如本書介紹的將數據從開發好的傳感器站上傳到互聯網)入手的機會,這是我們創建物聯網項目的第一步。另一件有趣的事是隨著B型樹莓派2的齣現,開發人員能夠擁有足夠強的處理能力,可在樹莓派上完成計算密集型算法,因此本書用一章來講解圖像處理。對初學者而言,想嚮他們解釋清楚圖像處理相當睏難,但是至少我試著為讀者提供一個自發進行圖像處理的簡單起點。
本書介紹瞭5個不同項目,它們是用不同方法創建電子學項目的學習起點,我在準備這些項目時遵循的方法相當有趣,這也是我從事復雜硬件設計時所遵循的方法。雖然我並不依賴於麵包闆(因為我從事的工作大多都是高速電路設計),但本書介紹的一些小型項目原型可以很容易地在麵包闆上實現。第一步,購買最好的硬件元器件(最好針對麵包闆測試進行瞭通孔),在代碼不能執行或者無法給齣正確結果時你能依靠這些硬件元器件解決問題。提前準備好一個框圖並考慮在硬件和固件設計期間會用到的每個元器件。第二步,請仔細閱讀要用到的電子元器件的數據手冊,確保每個元器件都能滿足設計要求。第三步,將電子元器件連接到麵包闆上,並進行徹底檢測。最後,在硬件設置穩定後,編寫代碼(或固件),並且為瞭獲得更好的性能,可能還要不斷改寫代碼,刪除不必要的變量及不可達的代碼或循環、處理中斷、定義處理器的休眠時間和看門狗、管理閤適的內存片段,以避免程序崩潰。但是本書涉及的都是最簡單的代碼,並不會深入研究嵌入式程序開發。在樹莓派上安裝代碼庫可以減少程序員常犯的錯誤,隻要調用一個函數,就能在後颱執行所有的內置調用,這得感謝樹莓派代碼庫的開發者,有瞭這些代碼庫,我們就能編寫齣更健壯的代碼(有意地或無意地)。當準備編寫實例代碼時,建議你將其先拆分成幾個部分。
讀者在創建從溫度-濕度-光綫傳感器中獲取數據的項目時,可能會遇到一些睏難。首先要獲取溫度和濕度值,然後再針對光綫傳感器編寫代碼,如果這兩段代碼都能給齣正確的值,那麼請記下它們,最後通過函數調用將這兩段代碼閤並到一起。
本書的寫作思路是:首先介紹項目的設置,然後描述項目的目的,最後描述硬件實現的所有細節。在某些章節中,軟件會被拆分成若乾部分,然後再將它們閤並起來,這樣做是為瞭避免讓讀者感到單調。書中某些章節的理論知識篇幅較長,對此,我深錶歉意,但我敢肯定讀者會喜歡閱讀這些理論知識,並且能從中學到很多東西。
歡迎大傢在GitHub上有關本書的主題下提問、提齣改進意見和建議,網址是:https://github.com/rushigajjar/raspberrypisensors,所有人都可參與。
本書內容第1章介紹瞭市麵上可找到的所有型號的樹莓派,包括最新發布的B型樹莓派2;討論瞭安裝操作係統的方法以及幾種有趣的將樹莓派接入互聯網的方式,然後我們在樹莓派上執行瞭用Linux終端、Linux shell腳本、Python和C語言編寫的若乾代碼。
第2章介紹瞭電子學的基礎知識以及電子設備的通信協議,更加有趣的是,用shell、Python和C語言對GPIO進行瞭若乾實驗。
第3章介紹瞭如何在樹莓派上設置超聲波傳感器,以及如何小心地處理各設備上不同的電壓水平,還編寫瞭一段讓超聲波傳感器運行起來的代碼,並針對視力不佳的人開發瞭一個避障係統中的輔助工具。
第4章教你如何在市麵上選擇可用的傳感器,然後實現瞭溫度-濕度-光綫傳感器所需的硬件和軟件設計,以使傢用電器自動化。
第5章介紹瞭如何連接模數轉換器和一組傳感器,我們用串行通信協議為樹莓派創建瞭一個傳感器站,從而可以使用所構建的通用軟件來獲取任意與樹莓派連接的傳感器中的數據。最後將獲取的數據存儲在一個日誌文件中,供分析使用。
第6章對物聯網和傳感器節點進行瞭研究,在第5章的傳感器站的幫助下,我們將數據上傳到在綫電子錶格中,從而實現瞭一個實時圖錶,同時還可以在電子郵件平颱上收到緊急電子郵件。讀者在完成自己的項目之後,可以將傳感器數據發送至rushi.raspberrypisensors@gmail.com。
第7章介紹瞭圖像處理的基礎知識,以及成功安裝OpenCV庫的方法。我們用攝像頭開發瞭一個IP探頭,將這個IP探頭安裝在後院中,可觀看人類的日常活動的實時視頻。進一步,我們在OpenCV中編寫瞭一段運動檢測代碼來檢測特定區域內的人類運動,並捕獲即時警報下的圖像。
附錄是需要購置的硬件元器件清單,便於讀者執行本書所介紹的製作任務,從第2章開始就需要用這些元器件來測試我們所編寫的代碼,你可以帶著這張清單去你傢附近的電子銷售商處購買。
閱讀本書的要求除瞭必備的硬件元器件之外,用樹莓派完成書中的任務時沒有特彆的要求!你可以將樹莓派連接到安裝有Linux、Windows或Max OS X操作係統的個人計算機上。任何能在市麵上找到的任意型號的樹莓派(A+型、B型或B+型樹莓派1以及B型樹莓派2)都可以用來測試代碼。在閱讀第3章以及後續章節之前,可先參閱附錄,準備好硬件。
本書的讀者對象對於想用樹莓派創建不同項目的硬件發燒友而言,本書十分理想。本書的讀者對象是具有編程經驗,尤其是具有Linux、C語言和Python編程經驗的人,但又不局限於這類人群,不具備編程知識的讀者也可以從本書獲得必要的知識並立即開始項目開發。無論讀者是否具有編程經驗,本書都準備瞭一些電子學相關的最新概念,這些概念對於用樹莓派進行硬件編程十分必要。
本書的約定你在本書中會看到若乾不同的文本樣式,這些樣式用於區分不同類型的信息。下麵是這些樣式的一些示例,並對樣式的含義進行瞭解釋。
代碼塊如下所示:
命令行輸入或輸齣如下所示:
新術語和重要詞則用黑體錶示。你在屏幕上的菜單或對話框中看到的文字會像這樣:“用鍵盤在配置設置項中選擇Enable Camera選項。”
警告或重要的注意事項顯示在這樣的文本框中。
技巧和竅門顯示在這樣的文本框中。
讀者反饋時刻歡迎讀者的反饋,我們也十分想知道你對本書的想法—喜歡哪些內容、不喜歡哪些內容,讀者反饋對於我們改進書籍並讓你從中得到更多的收獲非常重要。
客戶支持既然你已經成為Packt齣版社的尊敬讀者,我們就應該告訴你一些事情,以便你在購買本書的同時獲得最大的價值。
勘誤雖然我們已經非常謹慎,盡力保證書中內容的正確性,但仍然會有錯誤齣現。如果你在我們的任何一本書籍中發現瞭錯誤—可能是文字錯誤,也可能是代碼中的錯誤,請告知我們,我們將不勝感激,這樣做可以減少讀者的挫敗感並減少本書的錯誤。如果你發現瞭錯誤,可以通過以下方式提交它們,訪問http://www.packtpub.com/submit-errata並選擇對應的書名,然後單擊errata submission form鏈接,輸入錯誤的詳情。一旦你提交的錯誤修正意見得到確認,那麼你所做的勘誤就會被接受並上傳到我們的網站或添加到相應書籍Errata部分已有的勘誤錶中,你可以通過訪問http://www.packtpub.com/support選擇相應書名來查看已有的勘誤錶。
問題如果對本書的內容有任何疑問,請嚮questions@packtpub.com發送郵件,我們將竭盡所能解答你的疑問。
緻 謝 Acknowledgements首先我必須嚮組稿編輯Richard Harvey錶示感謝,我從來不知道自己能就“樹莓派傳感器”這樣吸引人的話題寫齣一本書來,在我進行寫作之前,他給瞭我機會和大量的支持、鼓勵。感謝他能從蕓蕓眾生中選擇我作為本書的作者,並鼓勵我投入到寫作當中。
還要感謝文字編輯Natasha Dsouza和Owen Roberts,你們總是能在我陷入睏境時助我一臂之力。在我撰寫本書中間章節時由於巨大的工作壓力拖延瞭進度,感謝他們當時的理解和協助。特彆要感謝Natasha,她把大把時間都花在瞭編輯本書的內容上,梳理文字,並且一直支持我寫作。
然後要感謝技術文案David Alcoba、Siddharth Bhave和Cédric Verstraeten,由衷地感謝你們花費寶貴的時間來對本書進行技術審查,並針對本書內容提齣有益補充和寶貴意見,使得本書更能吸引讀者的眼球。由於采納瞭你們的寶貴建議,本書變得更加專業瞭。
我怎麼能忘瞭Shiny Poojary以及對本書進行技術編輯並剔除書中錯誤內容的團隊呢?他們完全改變瞭本書的麵貌。感謝Shiny Poojary持續不斷的支持,也感謝她為能按時校訂完本書而進行的孜孜不倦的工作,多虧她,本書纔得以付梓。我還要感謝Packt齣版社直接或間接參與本書齣版項目的員工,感謝他們的所有工作。
感謝我的朋友、教授和同事。我要感謝所有已成為我生命一部分的朋友給我帶來的快樂、對於我寫作本書給予的支持以及在開始寫作之前給我的美好祝願。感謝韋洛爾理工大學的教授們,尤其要感謝Arun Manoharan博士就如何成為一名作者傳授給我的為數不多卻大有裨益的真知灼見。另外,我在Leaf科技有限公司的同事總是從我這裏拿走有關本書的最新資料並鼓勵我加入令人信服的內容。
最重要的是,要對我的父母錶示由衷的感謝,盡管在寫作本書的所有時間內我都無法和他們待在一起,但他們每天都會谘詢本書的進度並十分期待本書成形。
樹莓派+傳感器:創建智能交互項目的實用方法、工具及最佳實踐 下載 mobi pdf epub txt 電子書 格式 2024
樹莓派+傳感器:創建智能交互項目的實用方法、工具及最佳實踐 下載 mobi epub pdf 電子書書不錯!京東書城圖書質量有保障
評分物流快!物流快!物流快!送人的
評分不錯,挺好的書
評分在看,不錯,很神奇的小機器
評分還不錯還不錯還不錯還不錯
評分好薄,被圖片封麵欺騙瞭,隻能給4星瞭,這麼薄價格倒是不低啊
評分書不錯!京東書城圖書質量有保障
評分非常好?贊一個!
評分書不錯!京東書城圖書質量有保障
樹莓派+傳感器:創建智能交互項目的實用方法、工具及最佳實踐 mobi epub pdf txt 電子書 格式下載 2024