【嵌入式實踐】【芝麻】【設計篇-3】從0到1給電動車添加指紋鎖:項目整體規劃

0. 前言

????????該項目是基于stm32F103和指紋模塊做了一個通過指紋鎖控制電動車的小工具。支持添加指紋、刪除指紋,電動車進入P檔等待時計時,計時超過5min則自動鎖車,計時過程中按剎車可中斷P檔狀態,同時中斷鎖車計時。改項目我稱之為“芝麻”,取自芝麻開門(明明是車,哪里來的“門”,因為插鑰匙的地方被修車師傅稱之為“電門鎖”)。

d5290199615c4295a70303b5f68292ad.png專欄目錄:快速導航

視頻地址:b站鏈接

軟件、硬件、機械原件存放位置:https://gitee.com/sunkai64/zhima

9d1315ac994d4b238fcac107495c0f9f.png


1. 功能規劃

? ? ? ? 芝麻項目最基本的功能訴求就是能夠通過指紋模塊來打開電動車,在使用過程中,要能夠添加指紋和刪除指紋,這樣能夠確保同一臺電動車,可以給多個人使用。第2個功能就是把電動車的電瓶當做一個大的充電寶。第3個功能就是電動車能夠自動關機。靈感就來源于地鐵口一臺忘記拔掉車鑰匙的車主,還有外賣小哥。外賣小哥為了趕時間,在送上樓送外賣時一般都不會鎖車,也不會拔掉鑰匙,這個行為是基于對大家的信任做出的,大家也沒有辜負這份信任。但是如果電動車能夠在進入P檔后,等待一段時間自動關機,那不更好了。

deacbdf86de541ecba2b31b3609dab5b.png

2. 硬件設計?

? ? ? ? 除了繪制基于芯片的最小系統外,我們還需要繪制如下圖中的幾個關鍵原理圖。電源電路,我的小電車是48V的電瓶,但是實際測量時電壓會達到50+V,所以這部分電路器件選擇就需要考慮50+V的工作電壓,以防出現元器件損壞的場景。指紋模塊電路,指紋模塊需要比較穩定的電壓,否則會影響其工作的準確性。繼電器模塊,通過調研,我選用的是5V控制的繼電器,無法直接通過IO口控制,我設計了基于光耦隔離電路的繼電器控制電路。按鍵模塊,簡單的IO口操作,只需要注意輸入電流即可。P檔輸入識別,電路上同按鍵模塊,無需添加特殊的電路。

b0021f3a9766426e92a3eda681c02cc1.png

?3. 軟件設計

? ? ? ? 軟件設計的開展串在了硬件設計之后。如果需要盡早開展軟件設計,那么至少需要先將硬件設計相關的接口定義好,才能基于已定義的接口編寫程序。從下圖的順序也可以看到,軟件設計時,我是先從最簡的IO口控制開始調試,然后是繼電器、指紋鎖,最后才是產品的功能邏輯代碼編寫。

b57ea54aafd8438187e56ea6096fb1b2.png

? ? ? ? 關于產品功能設計,我大致列了一下流程圖,可以參考下圖。不過值得一提的時,在開發產品功能前,我們需要對每個模塊進行單獨的測試,已保障在做功能設計時因為某個小模塊問題增加為題定位時間。這部分測試就是開發者測試,DT。測試部分,除了DT之外,在功能初步設計完成之后還需要做系統測試,ST,這樣就能保證在上車前盡可能多的排查出問題,減少后續問題定位成本。?

4. 機械設計?

? ? ? ? 本專欄【設計-2】項目可行性分析中已經給出了機械設計的整體規劃,電動車控制部分和用戶交互部分分離,這樣電動車控制部分,也就是電路板的主體,可以放置到電車頭當中,不需要設計獨立的外殼。此時只需要考慮將用戶交互的按鍵、撥碼開關和指紋模塊放置到一個獨立的機械結構內就可以。

? ? ? ? 考慮到易用性,最終打算設計一個簡潔的圓形結構,將按鍵和指紋模塊固定在靠近電車把手的地方。除了將按鍵、指紋模塊固定牢靠外,在設計時也需要考慮如果將電路板和電門鎖、電路板和交互界面的接口做成可拔插的,這樣就能在某部件出問題時,方便的拔插后修復。

5b0b2b32946343c2ad4131f8943f3e44.png

5. 時間安排?

? ? ? ? 因為都是一個人做,所以所有的事務都是按照串行執行的。硬件設計 -> 電路板制作 -> 元器件采購? -> 硬件測試? -> 軟件設計?-> 軟件測試? -> 機械設計? -> 機械結構測試? -> 視頻制作? -> 視頻宣傳? -> 項目小結。同時在項目推進的過程中記錄關鍵時間節點,最后好方便統計每個關鍵階段花費了多少時間,這樣做的好處就是,以后做項目的時候能夠更好的估算時間成本。

b0129593a8e440bc807feed39b008451.png

---------------------【芝麻】項目相關文章都會收集在此專欄----------------------

感謝你看到這里,如果不介意的話,幫忙點個贊、關注支持一下~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/716146.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/716146.shtml
英文地址,請注明出處:http://en.pswp.cn/news/716146.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Pycharm下如何生成exe軟件

第一步 下載pyinstaller pip install pyinstaller 對pyinstaller第二步 使用pyinstaller cmd切換到項目目錄執行命令:pyinstaller --add-data “./templates;templates” 入口文件名.py

【語音識別】- 幾個主流模型

文章目錄 1. Wav2Vec 2.02. Whisper2. WeNet1. Wav2Vec 2.0 由Facebook AI Research(FAIR)于2020年提出的在語音方向里具有一定影響力的預訓練模型。 論文地址:https://arxiv.org/pdf/2006.11477.pdf 項目地址:https://github.com/pytorch/fairseq 訓練數據:62萬小時未…

基于Mahout實現K-Means聚類

需求分析 需要對數據集進行預處理,選擇合適的特征進行聚類分析,確定聚類的數量和初始中心點,調用Mahout提供的K-Means算法進行聚類計算,評估聚類結果的準確性和穩定性。同時,需要對Mahout的使用和參數調優進行深入學習…

頂會ICLR2024論文Time-LLM:基于大語言模型的時間序列預測

文青松 松鼠AI首席科學家、AI研究院負責人 美國佐治亞理工學院(Georgia Tech)電子與計算機工程博士,人工智能、決策智能和信號處理方向專家,在松鼠AI、阿里、Marvell等公司超10年的技術和管理經驗,近100篇文章發表在人工智能相關的頂會與頂刊…

Cloud整合Zookeeper代替Eureka

微服務間通信重構與服務治理筆記-CSDN博客 Zookeeper是一個分布式協調工具,可以實現注冊中心功能 安裝Zookeeper 隨便 就用最新版本吧 進入Zookeeper 包目錄 cd /usr/local/develop/ 解壓 tar -zxvf apache-zookeeper-3.9.1-bin.tar.gz -C /usr/local/develop 進入配置文件…

uniapp 獲取頁面來源

獲取當前頁面棧的實例,以數組形式按棧的順序給出,數組中的元素為頁面實例,第一個元素為首頁,最后一個元素為當前頁面。 let pages getCurrentPages(); if (pages.length > 1) { // 若頁面棧長度大于1則表示不止一個頁面被打開…

在 JavaScript 中用 var, let, 以及 const 有什么差別?什么時候該用哪個?

「在 JavaScript 中用 var, let, 以及 const 有什么差別?」是在前端、JavaScript 面試中常見的考題。在面試時可以先大方向地列點說出異同之處,然后再針對每一個點進行深入說明。以下是以第一人稱撰寫的參考擬答。 var, let, 以及 const 都是在 JavaScript 用來做變數宣告的…

前端導入導出

1、將后端excel二進制文件導出excel下載 import { read, utils, writeFileXLSX } from "xlsx";const useExportExcel (excelData: string, fileName: string) > {const wb read(excelData);const ws wb.Sheets[wb.SheetNames[0]];// 從工作表生成數據行const …

Android 將圖片網址url轉化為bitmap

1. 圖片網址url轉化為bitmap 1.1. 方法一 通過 HttpURLConnection 請求 要使用一個線程去訪問,因為是網絡請求,這是一個一步請求,不能直接返回獲取,要不然永遠為null,在這里得到BitMap之后記得使用Hanlder或者EventBu…

React之useState hook

實現useState js實現一個useState,簡單的原理就是賦值然后更新渲染,大概偽代碼如下: function useState(initValue) {let value initValue;function setValue(v) {if (typeof v "function") {value v(initValue);} else {value…

StarRocks實戰——首汽約車實時數倉實踐

目錄 前言 一、引入背景 二、OLAP引擎選型 三、架構演進 四、實時數倉構建 五、業務實踐價值未來規劃 原文大佬的這篇首汽約車實時數倉實踐有借鑒意義,這里摘抄下來用作學習和知識沉淀。 前言 首汽約車(以下簡稱“首約”)是首汽集團打造…

物體檢測-系列教程20:YOLOV5 源碼解析10 (Model類前向傳播、forward_once函數、_initialize_biases函數)

😎😎😎物體檢測-系列教程 總目錄 有任何問題歡迎在下面留言 本篇文章的代碼運行界面均在Pycharm中進行 本篇文章配套的代碼資源已經上傳 點我下載源碼 14、Model類 14.2 前向傳播 def forward(self, x, augmentFalse, profileFalse):if augm…

MySQL 8.0 架構 之錯誤日志文件(Error Log)(2)

文章目錄 MySQL 8.0 架構 之錯誤日志文件(Error Log)(2)MySQL錯誤日志文件(Error Log)錯誤日志相關參數log_errorlog_error_services過濾器(Filter Error Log Components)寫入/接收器…

Vue+SpringBoot打造大學計算機課程管理平臺

目錄 一、摘要1.1 項目介紹1.2 項目錄屏 二、功能模塊2.1 實驗課程檔案模塊2.2 實驗資源模塊2.3 學生實驗模塊 三、系統設計3.1 用例設計3.2 數據庫設計3.2.1 實驗課程檔案表3.2.2 實驗資源表3.2.3 學生實驗表 四、系統展示五、核心代碼5.1 一鍵生成實驗5.2 提交實驗5.3 批閱實…

131. 分割回文串(力扣LeetCode)

文章目錄 131. 分割回文串題目描述回溯代碼 131. 分割回文串 題目描述 給你一個字符串 s,請你將 s 分割成一些子串,使每個子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正著讀和反著讀都一樣的字符串。 示例 1: 輸入&#xf…

Android 架構MVI、MVVM、MVC、MVP

目錄 一、MVC(Model-View-Controller) 二、 MVP(Model-View-Presenter) 三. MVVM(Model-View-ViewModel) 四. MVI(Model-View-Intent) 五.MVI簡單實現 先簡單了解一下MVC、MVP和…

索引使用規則6——單列索引聯合索引

1、單列索引 單列索引:即一個索引只包含單個列 舉個例子 1.1、給phone和那么建立索引 create index index_name on tb_qianzhui(name); create index index_phone on tb_qianzhui(phone);1.2、查詢發現可能的索引有好幾個,但是最終選擇了phone的索引…

軟考 系統分析師系列知識點之詳細調查(2)

接前一篇文章:軟考 系統分析師系列知識點之詳細調查(1) 所屬章節: 第10章. 系統分析 第2節. 詳細調查 在系統規劃階段,通過初步調查,系統分析師已經對企業的組織結構、系統功能等有了大致的了解。但是&…

蘿卜大雜燴 | 提高數據科學工作效率的 8 個 Python 庫

本文來源公眾號“蘿卜大雜燴”,僅用于學術分享,侵權刪,干貨滿滿。 原文鏈接:提高數據科學工作效率的 8 個 Python 庫 在進行數據科學時,可能會浪費大量時間編碼并等待計算機運行某些東西。所以我選擇了一些 Python 庫…

Vue3中的Hooks詳解

vue3帶來了Composition API,其中Hooks是其重要組成部分。之前我寫過一篇關于vue3 hooks的文章比較簡單 Vue3從入門到刪庫 第十一章(自定義hooks) 所以本文將深入探討Vue3中Hooks,幫助你在Vue3開發中更加得心應手。 一、Vue3 Hoo…