産品特色
內容簡介
為個人愛好和專業應用創建嵌入式項目
以基於項目構建嵌入式Java應用的方式加入物聯網大潮!由兩位知名Java專傢聯袂撰寫的 物聯網編程實戰 應用Raspberry Pi和Java 呈現一係列低成本DIY項目,可幫助你逐步提升開發技能。你將學習如何搭建及配置Raspberry Pi、連接外部硬件、使用NetBeans IDE以及編寫和嵌入強大的Java應用。本書涵蓋大量業餘應用及專業級傢庭和企業應用。
主要內容
● 通過連接硬件和編寫Raspberry Pi程序來釀造一杯醇美咖啡
● 使用Pi的GPIO功能創建二進製定時器
● 通過魔法帽項目探討可穿戴設備的程序設計
● 在Makeblock機器人技術平颱上編寫程序來創建自主機器人
● 接上高精度電子秤、溫度傳感器和觸摸屏來設計一套泡茶用具
● 使用Pi替換簡單四軸飛行器的大腦使其蛻變為功能強大的無人機
● 在Raspberry Pi上開發一款運行經典遊戲的模擬器
● 使用復古風格的3D打印品組裝便攜式遊戲機
作者簡介
Stephen Chin,是Oracle Java大使,擅長嵌入式和UI技術,也是JavaOne Content的聯閤主席。他在JavaOne等眾多全球性Java會議上發錶主題發言,並四次榮膺Rock Star Award奬。
James L. Weaver,是Oracle Java大使、開發者和作傢。James已參與和獨立撰寫多本書籍,包括Inside Java 、Beginning J2EE 係列以及Pro JavaFX 係列。
內頁插圖
目錄
第1章 烘焙Pi 1
1.1 啓動Raspberry Pi 2
1.1.1 選購兼容的SD卡 3
1.1.2 格式化SD卡 4
1.2 安裝Raspbian 6
1.2.1 將Raspberry Pi接入網絡 6
1.2.2 如何判斷Raspberry Pi工作正常 8
1.3 安裝帶有NOOBS的Raspbian 10
1.4 Raspberry Pi入網 16
1.4.1 通過以太網連接 16
1.4.2 通過本地計算機網絡連接 16
1.4.3 通過無綫網絡連接 19
1.4.4 更新和升級 21
1.4.5 設置主機名 21
1.4.6 通過SSH連接到Raspberry Pi上 22
1.5 創建一個簡單的Raspberry Pi應用 25
第2章 第一個Java項目 27
2.1 材料清單 28
2.2 NetBeans入門 28
2.2.1 下載並配置NetBeans 29
2.2.2 HelloRaspberryPi迴顧 31
2.3 烹煮Java 35
2.3.1 與USB電子秤通信 35
2.3.2 咖啡計算器 44
2.3.3 異步通信 47
2.3.4 咖啡釀造配方 51
2.4 商業許可 56
第3章 二進製定時器 59
3.1 材料清單 60
3.2 通過Java訪問GPIO 62
3.2.1 安裝Device I/O庫 63
3.2.2 Device I/O的引腳分配 65
3.2.3 Device I/O庫LED測試 68
3.3 使用Pi4J 74
3.3.1 Pi4J引腳分配 74
3.3.2 Pi4J LED測試 76
3.4 以二進製倒計時 78
3.4.1 實現一個二進製定時器 78
3.4.2 麵包闆布綫 82
3.4.3 二進製定時器算法 87
3.4.4 完整的二進製定時器 97
3.5 紅利:GPIO性能揭秘 98
第4章 物聯網禮帽 107
4.1 材料清單 108
4.2 設置Raspberry Pi A+ 110
4.3 Raspberry Pi對NFC/RFID的支持 111
4.3.1 為I2C、SPI和UART配置Raspberry Pi 112
4.3.2 連接智能卡讀卡器 114
4.3.3 配置NFC庫 121
4.3.4 編譯和安裝libnfc 121
4.3.5 編譯並安裝ifdnfc 125
4.4 從Java讀智能卡 128
4.5 物聯網禮帽的物理結構 132
第5章 循跡小車 139
5.1 物料清單 140
5.2 組裝機器小車 142
5.3 循跡小車程序設計 152
5.3.1 Makeblock/ARPI600引腳映射 153
5.3.2 脈衝寬度調製 156
5.3.3 紅外控製器 159
5.3.4 循跡 163
5.3.5 障礙物檢測 166
5.4 小結 169
第6章 茶棧 171
6.1 物料清單 172
6.1.1 選擇電子秤 172
6.1.2 溫度探測 175
6.1.3 觸摸屏顯示 175
6.1.4 茶葉供應商 177
6.1.5 雜項資料 178
6.2 基於串行電子秤的精密測量 179
6.2.1 連接串行電子秤 180
6.2.2 藉助Minicom進行測試 183
6.3 通過Java訪問電子秤 187
6.3.1 通過Pi4J讀串行數據 188
6.3.2 電子秤的串行實現 191
6.4 高精度溫度傳感器 197
6.4.1 單總綫串行接口 198
6.4.2 測試DS18B20 199
6.4.3 通過Java訪問溫度傳感器 202
6.5 茶葉配方 206
6.6 JavaFX UI 210
第7章 自主飛行的無人機 221
7.1 硬件材料清單 222
7.2 所需軟件 225
7.3 構建自主飛行的無人機 227
7.3.1 安裝Raspberry Pi 227
7.3.2 在Raspberry Pi和無人機之間建立無綫網絡連接,
把Raspberry Pi配置成一個無綫訪問熱點(WAP) 227
7.3.3 組裝並固定無人機的硬件 234
7.3.4 編寫一個包含飛行指令的Java方法 236
7.3.5 通過NetBeans連接到Raspberry Pi上並遠程部
署Java應用程序和支持庫 237
7.3.6 調用Java應用程序來控製無人機飛行 238
7.4 實現更高級彆的自治 238
7.4.1 在三維空間中定位無人機 239
7.4.2 實現控製迴路 239
第8章 復古視頻遊戲模擬器 241
8.1 物料清單 242
8.1.1 Raspberry Pi 243
8.1.2 顯示和適配器 243
8.1.3 揚聲器和音頻 244
8.1.4 導航和按鈕 245
8.1.5 布綫和工具 247
8.2 創建GPIO控製器 248
8.2.1 控製器布綫 249
8.2.2 焊接Kippah 252
8.2.3 連接Kippah 255
8.2.4 連接揚聲器 258
8.3 模擬NES 260
8.3.1 運行模擬器 261
8.3.2 Raspberry Pi超頻 265
8.3.3 NES自動啓動 266
第9章 NightHacking RetroPi 267
9.1 物料清單 268
9.1.1 供電 268
9.1.2 3D打印機 269
9.2 RetroPi外殼的建造 272
9.2.1 Autodesk Fusion 360 3D建模 274
9.2.2 打印外殼 278
9.3 組裝RetroPi 281
9.3.1 直接連接音頻 281
9.3.2 便攜式電源 282
9.3.3 按鈕重新布綫 285
9.3.4 安裝內部硬件 288
9.3.5 連接顯示屏 293
前言/序言
Raspberry Pi在嵌入式開發領域引發瞭一次變革,它降低瞭計算機程序員搭建與外部物理世界交互的設備的入門難度。Java SE和Java ME的嵌入式應用以Raspberry Pi作為參考平颱,使其成為進入嵌入式應用開發的Java開發者的可選平颱。官方Raspbian鏡像中同樣預裝瞭Java,並使其成為適用於Raspberry Pi的性能最好的高級語言。本書的作者充分考慮瞭這一點,利用Java對Raspberry Pi進行程序設計,幫助讀者快速開展物聯網方麵的開發,參與這場物聯網變革。
本書讀者對象
不論是經驗豐富的業餘愛好者還是老練的專業人士,你都會發現,本書有助於提升你創建運行於嵌入式設備上的應用程序的能力。我們有意識地選擇低成本項目和硬件,降低入門難度。我們同時采用一種考慮瞭漸進學習麯綫的、基於項目的學習方法,使本書更通俗易懂。
本書主要內容
本書列舉瞭幾個項目,設計這些項目旨在提升嵌入式應用的開發能力,這些嵌入式應用可以用到不同的傢庭和工業場閤。下麵是關於本書主要內容的綱要。
第1章:剖析Pi 該章介紹Raspberry Pi的配置過程,以及如何將其連接到計算機上,並通過一個簡單的Java應用進行測試。
第2章:第一個Java項目 該章將在計算機上建立一個Java集成開發環境(Integrated Development Environment,IDE),具體說就是NetBeans。在Raspberry Pi上使用這個IDE來開發和遠程部署Java應用程序。同時還會創建一個不錯的項目,藉助Java和Pi釀造一杯完美的咖啡。
第3章:二進製定時器 該章利用Raspberry Pi的GPIO(通用I/O)功能創建一個二進製定時器。在這個過程中學習如何使用Robert Savage編寫的Pi4J庫,來快速完成離散設備I/O項目。
第4章:物聯網禮帽 該章通過對魔法帽子設計過程的逐步指導,演示不同形式的設備I/O。該項目是可穿戴計算的一個有趣的例子,也是一個能夠使你的朋友印象深刻的例子。
第5章:循跡小車 該章將通過Makeblock機器人技術平颱創建一個自主機器人,當然,還要用到Raspberry Pi和Java。
第6章:茶棧 重溫第2章的咖啡釀造項目,該章將使用更高精度的設備以及一塊觸摸屏來衝泡一杯香氣怡人的茶。
第7章:自主飛行的無人機 通過為四軸飛行器加裝一個Rasp- berry Pi大腦,將其轉變為一颱自主飛行的無人機。
第8章:復古視頻遊戲模擬器 該章將創建一個由Java驅動的模擬器,可以使我們在Raspberry Pi上玩經典的紅白機(Nintendo Entertainment System,NES)遊戲。
第9章:NightHacking RetroPi 該章介紹如何將第8章介紹的NES模擬器轉換成由3D打印機製造的復古風格的便攜式遊戲機,使我們在現代硬件設備上重溫經典遊戲。
代碼下載
可從McGraw-Hill專業網站www.mhprofessional.com下載本書的實例代碼。搜索ISBN訪問可用的下載即可。
此外,在GitHub上可得到本書的項目代碼,地址是https:// github.com/RaspberryPiWithJava。
也可以訪問www.tupwk.com.cn/downpage,輸入本書中文書名或中文ISBN,下載代碼。
在為業餘愛好以及專業物聯網應用創建嵌入式項目時,我們希望本書能夠成為一個有價值的資源。翻開書頁,由此開始!
《嵌入式係統開發:從理論到實踐》 一、 概述 本書旨在為讀者構建一個全麵而深入的嵌入式係統開發知識體係,涵蓋從基礎理論到實際應用的各個環節。在物聯網技術蓬勃發展的今天,嵌入式係統作為其核心驅動力,其重要性不言而喻。本書的目標是培養讀者獨立完成嵌入式項目設計、開發、測試與優化的能力,使其能夠 confidently 地應對日益復雜的嵌入式開發挑戰。不同於側重於特定硬件平颱或特定編程語言的教材,本書更強調嵌入式係統設計的通用原理、方法論和設計模式,為讀者打下堅實的理論基礎,使其能夠觸類旁通,快速適應不同的開發環境和技術棧。 二、 目標讀者 本書適閤以下人群: 在校學生: 計算機科學、電子工程、自動化等相關專業的本科生、研究生,希望係統學習嵌入式係統開發,為未來的學習和職業發展打下基礎。 初級嵌入式工程師: 希望鞏固和深化嵌入式係統知識,提升開發技能,掌握更先進的設計理念和調試技巧。 轉行開發者: 來自其他軟件開發領域,希望轉嚮嵌入式開發,但缺乏係統性的嵌入式基礎知識。 硬件工程師: 希望理解軟件在嵌入式係統中的作用,學習如何與軟件開發人員有效協作,或者嘗試自己進行簡單的嵌入式軟件開發。 項目管理者: 希望對嵌入式項目的開發流程、技術難點有更深入的瞭解,以便更有效地進行項目規劃和資源分配。 三、 內容亮點與特色 1. 係統性的理論框架: 微控製器與微處理器原理: 深入剖析CPU架構、指令集、存儲器管理、中斷機製、I/O端口等核心概念,理解嵌入式係統的硬件基礎。 實時操作係統(RTOS)原理與應用: 詳細講解任務調度、進程間通信(IPC)、同步與互斥、內存管理等RTOS的關鍵特性,並介紹主流RTOS(如FreeRTOS, Zephyr)的內部機製和使用方法。 嵌入式係統軟件架構設計: 探討分層架構、模塊化設計、驅動程序模型、中間件和應用層分離等設計原則,指導讀者構建可維護、可擴展的嵌入式軟件。 外圍設備接口技術: 涵蓋SPI, I2C, UART, ADC, DAC, PWM等常用接口的原理、通信協議和驅動開發。 2. 豐富的實踐案例與方法論: 從需求分析到係統集成: 引導讀者遵循完整的嵌入式項目開發流程,包括需求分析、係統設計、軟件開發、硬件選型、集成測試、性能優化等。 調試與故障排除技巧: 強調調試在嵌入式開發中的重要性,介紹邏輯分析儀、示波器、JTAG/SWD調試器等常用調試工具的使用,並分享係統性排查硬件和軟件問題的策略。 嵌入式Linux開發: 即使本書不直接聚焦於特定的Linux開發闆,但會深入講解嵌入式Linux的通用開發環境搭建、交叉編譯、文件係統構建、設備樹(Device Tree)的原理與使用、驅動程序開發(字符設備、塊設備、網絡設備)等核心內容,為讀者使用如樹莓派等Linux平颱進行嵌入式開發奠定基礎。 麵嚮對象與設計模式在嵌入式開發中的應用: 討論如何利用麵嚮對象思想和常見設計模式(如狀態機、觀察者模式、單例模式)來提升嵌入式代碼的質量和可讀性。 3. 跨越硬件與軟件的鴻溝: 理解硬件限製與設計權衡: 強調嵌入式係統資源(CPU、內存、功耗)的有限性,教會讀者如何在資源約束下進行最優化的設計決策。 嵌入式軟件與硬件的協同: 深入講解驅動程序開發、硬件抽象層(HAL)的設計,以及如何通過軟件充分發揮硬件的性能。 4. 通用性與前瞻性: 關注底層原理: 本書不局限於特定芯片或開發闆,而是深入挖掘底層原理,使讀者掌握的概念能夠遷移到其他平颱。 現代化開發實踐: 引入版本控製(Git)、自動化構建(Makefile, CMake)、單元測試等現代軟件工程的最佳實踐,提升開發效率和代碼質量。 物聯網基礎設施的視角: 即使不直接涉及應用層的物聯網協議,本書所講解的嵌入式係統開發能力,是構建任何可靠的物聯網設備的基礎。讀者將瞭解到如何開發能夠穩定運行、高效通信、安全可靠的嵌入式“節點”設備。 四、 內容結構(章節概覽) 本書將分為以下幾個主要部分: 第一部分:嵌入式係統基礎 第一章:嵌入式係統概述 什麼是嵌入式係統? 嵌入式係統的特點與應用領域 嵌入式係統與通用計算機係統的區彆 嵌入式係統開發流程概覽 第二章:微處理器與微控製器架構 CPU的核心概念:指令集、流水綫、緩存 存儲器類型:RAM, ROM, Flash 中斷係統:中斷控製器、中斷嚮量 I/O端口與通用輸入輸齣(GPIO) 不同微控製器傢族(ARM Cortex-M, RISC-V 等)的架構特點(概覽) 第三章:嵌入式係統軟件開發環境 集成開發環境(IDE)的選擇與使用 交叉編譯工具鏈:GCC, Clang 匯編語言基礎與嵌入式開發中的作用 鏈接器腳本與內存映像 第二部分:實時操作係統(RTOS) 第四章:實時操作係統原理 RTOS的角色與必要性 任務(Thread)與任務管理:創建、刪除、就緒、運行、阻塞、掛起 任務調度算法:優先級調度、時間片輪轉、輪詢調度 任務間通信(IPC):隊列、信號量、事件標誌組 同步與互斥:互斥鎖、臨界區 實時時鍾與定時器 第五章:RTOS內核剖析與高級特性 RTOS的內存管理:靜態分配、動態分配 中斷處理與RTOS的結閤 功耗管理與低功耗模式 RTOS的移植與配置 第六章:實踐:使用RTOS開發嵌入式應用 設計一個多任務並發係統 實現任務間的同步與數據共享 利用RTOS的定時器功能 常見RTOS(如FreeRTOS, Zephyr)的API實踐 第三部分:嵌入式硬件接口與驅動開發 第七章:串行通信接口 UART(異步串行通信):原理、波特率、校驗、數據幀 SPI(串行外設接口):主從模式、時鍾極性與相位 I2C(集成電路互聯總綫):主從模式、地址解析、多主 第八章:並行接口與數據采集 GPIO的高級應用:輸入、輸齣、上拉/下拉電阻 ADC(模數轉換器):采樣率、分辨率、參考電壓 DAC(數模轉換器):輸齣精度、電壓範圍 PWM(脈衝寬度調製):生成模擬信號、電機控製 第九章:設備驅動程序設計 驅動程序的層次結構:硬件抽象層(HAL)、總綫驅動、設備驅動 Linux設備模型(概覽):字符設備、塊設備、網絡設備 編寫簡單的字符設備驅動 總綫驅動與設備樹(Device Tree)的作用與基本概念 驅動程序的注冊與注銷 第四部分:嵌入式係統軟件設計與開發實踐 第十章:嵌入式軟件架構與設計模式 分層架構設計:驅動層、服務層、應用層 模塊化設計與接口定義 狀態機模式在嵌入式係統中的應用 事件驅動編程模型 麵嚮對象在嵌入式C/C++開發中的實踐 第十一章:嵌入式Linux開發基礎 嵌入式Linux開發環境搭建:交叉編譯鏈、根文件係統 Linux內核配置與模塊加載 用戶空間與內核空間的交互:係統調用、/proc, /sys 文件係統 設備樹(Device Tree)的深入理解與應用 嵌入式Linux下的驅動開發(字符設備,GPIO,SPI, I2C 接口的Linux驅動開發示例) 第十二章:嵌入式係統的調試與優化 調試工具:GDB, JTAG/SWD調試器, 邏輯分析儀, 示波器 代碼調試技巧:斷點、單步執行、觀察變量 性能分析與優化:CPU占用率、內存使用、功耗優化 代碼質量保證:單元測試、集成測試、靜態代碼分析 第十三章:嵌入式係統安全性基礎 常見的嵌入式係統安全威脅 安全啓動與固件更新 數據加密與安全通信(簡要介紹) 訪問控製與權限管理 第五部分:項目案例與前沿展望 第十四章:綜閤項目案例 (選擇一個或兩個典型項目,例如:一個簡單的傳感器數據采集與傳輸節點,一個小型嵌入式設備控製係統,展示如何整閤前麵章節的知識點。) 項目需求分析與係統設計 硬件選型與電路接口設計(概念性) 軟件模塊劃分與開發 集成與調試 性能評估與優化 第十五章:嵌入式係統的未來發展趨勢 物聯網(IoT)中的嵌入式係統 邊緣計算與嵌入式AI 安全性和可靠性挑戰 新興的硬件平颱與軟件技術 五、 結語 本書力求提供一套嚴謹、係統且實用的嵌入式係統開發指南。通過理論講解與實踐操作相結閤的方式,讀者將能夠構建起堅實的嵌入式開發知識體係,並具備獨立解決實際問題的能力。掌握本書內容,將為讀者在飛速發展的嵌入式技術領域開啓更廣闊的職業道路打下堅實基礎。