Arduino真好玩:嵌入式開發項目一氣呵成

  • 出版商: 清華大學
  • 出版日期: 2026-04-01
  • 售價: $594
  • 語言: 簡體中文
  • ISBN: 7302710120
  • ISBN-13: 9787302710127
  • 相關分類: Arduino
  • 下單後立即進貨 (約4週~6週)

  • Arduino真好玩:嵌入式開發項目一氣呵成-preview-1
  • Arduino真好玩:嵌入式開發項目一氣呵成-preview-2
  • Arduino真好玩:嵌入式開發項目一氣呵成-preview-3
Arduino真好玩:嵌入式開發項目一氣呵成-preview-1

相關主題

商品描述

"不同於傳統Arduino教程的碎片化知識堆砌,本書以完整的項目開發鏈路為核心,通過三篇遞進式內容體系: Arduino基礎知識篇(第1~3章)、實戰準備篇(第4~13章)以及項目實戰篇(第14~20章),從Arduino基礎知識開始講解,直至帶領讀者從零開始實現一個有趣又實用的多功能天氣時鐘。書中還整合了作者在眾多物聯網項目開發中積累的實戰經驗,為讀者提供經過驗證的問題解決方案。 本書第1篇講解Arduino的發展歷程、IDE的使用和Arduino編程的基礎知識,通過本篇的學習,讀者不僅可以熟練使用Arduino IED開發工具,還可為後續的實戰項目打下堅實的理論基礎。 第2篇詳細講解開發環境搭建、硬件選型以及實戰項目所需的關鍵庫使用方法。通過本篇的學習,讀者不僅能夠輕松完成後續的實戰開發,還能掌握獨立開發天氣接口相關項目和各種顯示屏項目的核心技能。 第3篇完整呈現天氣時鐘項目的實戰開發過程,通過循序漸進的教學設計,讀者將系統掌握項目框架搭建、多任務調度實現、UI設計及功能頁面動態切換等核心開發技能。 本書適合對嵌入式物聯網開發和智能硬件制作感興趣的創客、電子愛好者閱讀,也可作為高等院校相關專業學生的實踐參考書,以及中小學科創教師開展項目式教學的輔助教材。無論你是剛接觸Arduino的初學者,還是具備一定基礎、希望系統提升項目綜合開發能力的進階者,本書都能通過清晰的邏輯框架與完整的項目驅動,幫助你紮實掌握Arduino開發的核心思路與實戰能力,實現從理論到實踐、從模塊設計到系統設計的跨越。"

作者簡介

蔡傑,2010年畢業於南京工程學院獲經濟學學士學位。畢業後進入江陰市民政局從事會計工作,期間利用業余時間自學Java編程,並將單位大部分工作進行了信息化改造。2020年成立自己的軟件工作室,軟件工程正式成為他的第二舞臺。2023年10月開始自學嵌入式,11月註冊B站賬號“大聰明的二手腦袋”,並開始將自己的作品免費開源給B站觀眾,目前所有作品都使用Arduino框架進行開發,多數得到了觀眾的廣泛認可

目錄大綱

目錄

 

 

第1篇Arduino基礎知識

第1章關於Arduino3

1.1概述3

1.2Arduino的優點4

1.2.1簡潔的編程體驗4

1.2.2豐富的庫支持5

1.2.3簡單的集成開發環境搭建5

1.3Arduino的缺點6

1.3.1性能損失6

1.3.2編譯速度慢6

小結7

 

第2章Arduino IDE的使用8

2.1下載與安裝8

2.2重要功能介紹9

2.2.1左邊欄10

2.2.2菜單欄11

2.2.3構建區14

2.2.4串口工具區15

2.3配置文件16

 

第3章Arduino編程基礎18

3.1Arduino程序的基本結構18

3.1.1setup函數18

3.1.2loop函數19

3.2基本數據類型20

3.2.1整數類型20

3.2.2浮點類型20

3.2.3字符與字節類型21

3.2.4布爾類型21

3.2.5其他特殊類型21

3.3變量與常量23

3.3.1理解變量23

3.3.2變量的作用域24

3.3.3變量的修飾符25

3.3.4變量的轉換26

3.4運算符27

3.4.1算術運算符27

3.4.2賦值運算符27

3.4.3比較運算符28

3.4.4邏輯運算符28

3.4.5位運算符28

3.4.6其他運算符29

3.5控制結構31

3.5.1條件控制語句31

3.5.2多路選擇控制語句31

3.5.3循環控制語句32

3.5.4跳轉控制語句33

3.6預處理指令33

3.6.1#include34

3.6.2#define34

3.6.3#ifdef、#ifndef及#endif35

3.6.4#if、#elif及#else36

3.6.5#pragma36

3.6.6#error和#warning36

3.6.7Arduino特有的預處理指令37

3.7結構體與枚舉37

3.7.1結構體37

3.7.2枚舉38

3.8函數41

3.8.1函數的優點41

3.8.2Arduino內置核心函數41

3.8.3自定義函數46

3.8.4形參和實參48

小結50第2篇實 戰 準 備

 

第4章實戰項目介紹及準備53

4.1時鐘功能53

4.1.1時鐘頁面53

4.1.2空氣質量頁面54

4.1.3天氣預報頁面54

4.1.4主題切換頁面54

4.1.5計時器頁面54

4.1.6恢復出廠設置頁面54

4.1.7網絡和城市配置頁面55

4.2材料準備55

4.2.1杜邦線55

4.2.2面包板55

4.2.3屏幕56

4.2.4開發板58

4.2.5按鍵60

4.3軟件準備61

4.3.1esp32開發板支持包61

4.3.2第三方庫64

 

第5章TFT_eSPI庫詳解66

5.1連接開發板與屏幕66

5.1.1SPI通信66

5.1.2屏幕SPI轉接板67

5.1.3開發板引腳69

5.1.4開發板與屏幕的連接效果圖71

5.2TFT_eSPI庫配置文件講解72

5.2.1User_Setup.h文件講解72

5.2.2配置示例目錄75

5.2.3多配置文件切換76

5.3燒錄示例程序77

5.3.1完整配置文件展示77

5.3.2AirM2M_CORE_ESP32C3開發板參數講解78

5.3.3燒錄示例79

5.4TFT_eSPI庫源碼解析81

5.4.1TFT_eSPI.h頭文件概覽81

5.4.2核心類TFT_eSPI84

5.4.3擴展類TFT_eSprite94

小結97

 

第6章OneButton庫詳解99

6.1連接開發板與按鍵99

6.1.1輕觸按鍵工作原理99

6.1.2輕觸按鍵連接方式100

6.1.3按鍵與開發板連接效果圖100

6.2編寫按鍵監聽程序101

6.2.1原始監聽程序101

6.2.2監聽程序加入軟件消抖102

6.3OneButton庫的使用103

6.3.1OneButton和OneButtonTiny103

6.3.2OneButton.h頭文件解析104

6.3.3OneButton庫綜合示例107

小結109

 

第7章TaskScheduler庫詳解110

7.1編寫多任務調度程序110

7.1.1使用delay函數定時執行110

7.1.2使用millis函數定時執行111

7.2TaskScheduler庫源碼解析111

7.2.1TaskScheduler庫源碼目錄112

7.2.2編譯時選項112

7.2.3Scheduler類114

7.2.4Task類116

7.2.5StatusRequest類120

7.3TaskScheduler綜合示例122

7.3.1控制板載LED閃爍122

7.3.2使用按鍵動態調整任務123

7.3.3任務間協作124

7.4TaskScheduler和FreeRTOS126

7.4.1TaskScheduler和FreeRTOS的區別126

7.4.2TaskScheduler和FreeRTOS的選擇127

小結127

 

第8章ArduinoJson庫詳解128

8.1JSON介紹128

8.1.1JSON的定義和歷史128

8.1.2JSON的特點128

8.1.3JSON的語法規則130

8.1.4JSON的應用131

8.2ArduinoJson庫的使用132

8.2.1ArduinoJson庫源碼目錄132

8.2.2JsonDocument類133

8.2.3JsonArray類137

8.2.4JsonObject類139

8.2.5JsonVariant類140

8.2.6數據處理函數141

8.2.7編譯時選項144

8.3ArduinoJson綜合示例146

8.3.1創建JSON字符串147

8.3.2解析JSON字符串148

小結149

 

第9章Preferences庫詳解151

9.1數據持久化151

9.2Flash分區表152

9.2.1分區表講解152

9.2.2分區表驗證153

9.3Preferences庫源碼解析154

9.4Preferences庫示例157

9.4.1寫入數據158

9.4.2讀取數據158

小結159

 

第10章WiFi庫詳解160

10.1WiFi庫的架構160

10.2WiFi庫源碼解析161

10.2.1WiFiType.h頭文件161

10.2.2WiFiSTAClass類162

10.2.3WiFiAPClass類166

10.2.4WiFiScanClass類168

10.2.5WiFiGenericClass類172

小結173

 

第11章WebServer庫詳解174

11.1WebServer庫源碼解析174

11.1.1構造函數174

11.1.2服務器控制函數175

11.1.3認證相關函數176

11.1.4請求處理函數176

11.1.5請求信息獲取函數178

11.1.6響應發送函數179

11.1.7配置函數180

11.2WebServer庫綜合示例181

小結183

 

第12章HTTPClient庫詳解185

12.1HTTPClient庫源碼解析185

12.1.1初始化和連接管理函數185

12.1.2請求配置函數187

12.1.3HTTP請求函數188

12.1.4頭管理函數189

12.1.5響應處理函數190

12.1.6Cookie管理函數191

12.2HTTPClient庫綜合示例191

小結193

 

第13章天氣接口與第三方庫194

13.1天氣接口介紹194

13.2和風天氣接入準備195

13.2.1生成和風天氣密鑰195

13.2.2註冊和風賬號及創建項目196

13.3和風天氣API的使用198

13.3.1API介紹198

13.3.2和風天氣JWT介紹200

13.3.3使用DuduUtil庫生成JWT201

13.3.4使用ArduinoZlib庫解壓返回的數據201

13.3.5和風天氣狀態碼202

小結202

 

第3篇項 目 實 戰

 

第14章搭建項目框架207

14.1創建項目207

14.1.1新建項目207

14.1.2構建項目目錄208

14.1.3添加字庫與圖片文件208

14.2構建功能頁面211

14.2.1在common.h中定義頁面枚舉211

14.2.2編寫TFT_eSPI庫的初始化函數211

14.2.3為每個頁面繪制簡單的文字212

14.2.4編寫按鍵相關代碼213

小結215

 

第15章獲取天氣信息216

15.1獲取天氣信息的準備工作216

15.1.1NTP對時216

15.1.2添加結構體以及和風天氣認證相關內容218

15.1.3URL編碼220

15.1.4單片機重啟221

15.2獲取和風天氣信息223

15.2.1信息獲取流程講解223

15.2.2將locationID和經緯度存入NVS224

15.2.3定義獲取天氣信息的函數226

15.3編寫測試代碼236

小結238

 

第16章繪制時鐘頁面239

16.1雙色主題239

16.1.1主題管理239

16.1.2改造屏幕初始化函數240

16.2繪制頁面241

16.2.1組件分類241

16.2.2定義固定組件繪制函數241

16.2.3定義時間組件繪制函數242

16.2.4定義天氣組件繪制函數246

16.2.5創建動畫組件繪制任務252

16.2.6修改時鐘頁面繪制函數256

16.3編寫測試代碼257

小結258

 

第17章繪制其他頁面259

17.1空氣質量頁面259

17.1.1初級版本繪制函數259

17.1.2進階版本繪制函數261

17.1.3進階版本的優勢261

17.2天氣預報頁面262

17.2.1根據代碼繪制天氣圖標262

17.2.2修改天氣預報頁面繪制函數263

17.3主題切換頁面265

17.3.1修改主題切換頁面繪制函數265

17.3.2創建長按開始事件回調函數265

17.4計時器頁面267

17.4.1動態數字繪制函數267

17.4.2修改計時器頁面繪制函數268

17.4.3處理按鍵事件回調函數269

17.5出廠設置頁面270

17.5.1修改出廠設置頁面繪制函數270

17.5.2處理長按開始事件回調函數271

17.6編寫測試代碼272

17.6.1修改主循環272

17.6.2修改雙擊事件回調函數273

小結274

 

第18章加入配置功能275

18.1配置頁面設計思路275

18.1.1天氣時鐘運行流程概述275

18.1.2配置頁面源代碼276

18.2動態拼接WiFi名稱下拉菜單277

18.2.1掃描WiFi277

18.2.2拆分Web配置頁面278

18.3啟動Web服務器282

18.3.1將WiFi信息保存到NVS282

18.3.2定義路由匹配時的處理函數282

18.3.3定義Web服務器啟動函數284

18.4編寫測試代碼285

小結287

 

第19章項目優化288

19.1定時更新天氣信息288

19.1.1定義回調函數288

19.1.2創建定時任務289

19.1.3定義任務啟用函數290

19.2重構啟動流程290

19.2.1重構網絡連接函數291

19.2.2編寫setup函數292

小結294

 

第20章自定義字庫和動畫295

20.1生成自定義字庫295

20.1.1字體生成軟件295

20.1.2準備字體源297

20.1.3生成字庫298

20.1.4使用新字庫298

20.2生成自定義動畫300

20.2.1圖片取模軟件300

20.2.2生成圖片數據300

20.2.3制作圖片頭文件303

20.2.4自定義示例動畫資源304

小結306

 

結語307