個人工程實踐選題爲ESP32低功耗的實現,本項目基於ESP32嵌入式開發平臺.服務器
以此題爲例,在理解項目需求的基礎上進行用例建模,抽取Abstract use case,畫出用例圖,並肯定每個用例的範圍High level use case,對關鍵用例進一步進行Expanded use case分析。網絡
1、用例建模簡介
從用戶的角度來看,他們並不想了解系統的內部結構和設計,他們所關心的是系統所能提供的服務,也就是被開發出來的系統將是如何被使用的,這就用例方法的基本思想。
一、用例模型主要由如下模型元素構成:
(1)參與者(Actor)
參與者是指存在於被定義系統外部並與該系統發生交互的人或其餘系統,他們表明的是系統的使用者或使用環境。
(2)用例(Use Case)
用例用於表示系統所提供的服務,它定義了系統是如何被參與者所使用的,它描述的是參與者爲了使用系統所提供的某一完整功能而與系統之間發生的一段對話。
(3)通信關聯(Communication Association)
通信關聯用於表示參與者和用例之間的對應關係,它表示參與者使用了系統中的哪些服務(用例),或者說系統所提供的服務(用例)是被哪些參與者所使用的。
這三種元素在UML中的表述以下所示:
二、用例建模的主要步驟:框架
- 肯定系統邊界
- 肯定參與者
- 找出全部的用例
- 肯定每一個用例的級別
- 撰寫用例的文字描述
- 畫出以整個系統爲對象的順序圖
2、抽取Abstract use case設計
ESP32 擁有 18 個 RTC IO 和 10 個 TouchPad, 每個 RTC IO 和 TouchPad 通過配置均可以將芯片從 deep_sleep 模式中喚醒, 從而能夠實現低功耗方案.3d
資源包括:RTC外設、ULP協處理器、RTC快速內存、RTC慢速內存code
Deep-sleep 模式下支持的喚醒源包括:server
- 定時器
- touchpad
- Ext(0):RTC IO 中某個指定 GPIO 知足指定電平即喚醒
- Ext(1):RTC IO 中某些指定 GPIO 同時知足指定電平即喚醒
- ULP 協處理器
當 ESP32 進入 Deep-sleep 模式時,全部由 APB_CLK 驅動的外設、CPU 和 RAM 將掉電;RTC_CLK 繼續工做;RTC 控制器、RTC 外設、ULP 協處理器、RTC 快速內存和 RTC 慢速內存能夠不掉電,具體取決於 App 中的喚醒源設置。對象
3、用例圖blog
4、High level use case接口
主要爲Deep-Sleep模式下喚醒源的選擇,在不一樣低功耗場景下,喚醒源的選擇和喚醒方式都將致使功耗的不一樣。要根據不一樣場景的特色,設置最優的喚醒方式。
5、Expanded use case
- 若不是從 Deep-sleep 模式喚醒(例如從新上電或者復位),設備啓動後會首先進入 Deep-sleep 模式,後續喚醒方式取決於
Wake up type
中的設置:
- 若配置爲 GPIO 喚醒,則須要按下 WakeUp 按鍵進行喚醒。喚醒後,主 CPU 使用 I2C 接口讀取傳感器數據;
- 若配置爲 Timer 喚醒,則等設定時間後自動喚醒。喚醒後,主 CPU 使用 I2C 接口讀取傳感器數據;
- 若配置爲 ULP 喚醒,則等 ULP 完成指定次數的數據讀取後喚醒。喚醒後,主 CPU 從 ULP 中讀取數據。
- 喚醒後,設備會自動鏈接上以前配置過的路由。
- 使用
sensor_server.py
腳本啓動服務器
-
低功耗軟件框架主要包含如下幾部分:
- 網絡配置與鏈接
- 睡眠與喚醒功能
- 讀取傳感器數據
- 上傳數據至服務器
- 數據傳輸完成處理