【嵌入式實踐】【芝麻】【設計篇-2】從0到1給電動車添加指紋鎖:項目可行性分析

?0. 前言

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

?專欄目錄快速導航

視頻地址:b站鏈接

軟件、硬件、機械原件存放位置:zhima: 電動車改裝 - 指紋鎖,芝麻開門


1. 能否通過繼電器控制電門鎖?

1.1 初識“電門鎖”

? ? ? ? 因為沒有過維修電動車的經驗,對電動車內部線路不是很了解,不知道在什么位置添加控制。所以我第一步就是在B站、西瓜視頻等網站瘋狂的搜索電動車維修相關的視頻。直到學習到一個新詞:“電門鎖”,才得知鑰匙插入的部件有專門的稱謂。緊接著我就根據電門鎖這個關鍵詞繼續搜索相關的視頻,慢慢的對電動車控制電路就有了初步的了解。總的來說,可以通過控制電門鎖來控制電車的開關。

1.2 電門鎖的控制原理

? ? ? ?電門鎖的結構類似上圖。我的小電車并沒有上圖的防水蓋,當我拆開電車頭的時候,就直接看到了上圖右側裸露在外面的電線和焊盤。我使用萬用表測試了在打開電車、打開大燈這2種情況下線路的連接情況。最終繪制了如下電門鎖簡化模型(因為沒拆開電門鎖,模型和實際可能存在偏差):

? ? ? ? 模型圖雖然畫的簡單,但是已經能夠準確的表示電門鎖的原理了。上圖中紅色表示電源,即使不打開電動車,紅色部分的電路也帶有48V的電壓,橙色和棕色分別接向電車電源和大燈。電門鎖一共會有上述3種狀態:上圖-A,表示電動車處于關閉狀態,上圖-B,表示電動車打開,但未打開大燈的狀態,上圖-C,表示電動車打開,大燈同時打開的狀態

? ? ? ? 通過上述的簡單小實驗,我們能得到這樣一個結論,我們可以通過控制紅線、橙線、棕線的連接情況來控制電動車狀態。這一點很重要,證明了我們能夠介入電動車控制

2. 電源選擇

? ? ? ? 芝麻項目選擇是STM32F103系列的一款芯片,供電電壓是3.3V,這就涉及到如何給電路板供電,電源如何選擇的問題。我們很容易能夠想到3種供電方式:多節電池,3.7V鋰電池,電動車電瓶。

2.1 多節電池

? ? ? ? 使用蓄電池最大的優勢就是能夠快速更換電源,無需充電。在我們這個項目中,如果選擇電池作為電源,我們就不得不解決這2個問題:電池體積大;需要考慮更復雜的機械結構,以能夠保證電池更換便捷,且不易被他人獲取到。

2.2 鋰電池

? ? ? ? 鋰電池體積相對較小,可以反復使用,不需要頻繁更換。不過,如果選用鋰電池,我們需要在電路板中額外維護一套充放電電路,且需要將充電口引到電車頭外面用移動電源充電,或者將電路板拆出來充電。這樣也不是很便捷。

2.3 電動車電瓶

? ? ? ? 用電瓶給電路板供電能相對容易的解決上面的問題:不需要額外設計機械結構保護電源,沒有增大電路板體積,不需要換電池、不需要單獨給電路板充電。選用此方案也有一個好處,就是可以把電瓶當成一個大的充電寶。(這一點在項目設計思路理也提到了,你可以點擊這個鏈接去查看)通過這幾個電源的對比,我打算使用電瓶作為電路板電源。下圖紅框中的電路就是選用此方案的電源電路,還是比較簡潔的:

3. 機械結構方案選擇

3.1 電車控制部分和用戶交互部分合一

? ? ? ? 這里說的電車控制部分就是通過繼電器控制電門鎖的相關電路;用戶交互部分指的就是指紋鎖、按鍵和USB充電口。因為和用戶交互部分的電路也集成到了單板上,我們就必須把這部分放置在外面,這樣用戶才能接觸到。整個單板都放到外側,那么就需要設計一個外殼將整個電路包起來,類似這樣:

? ? ? ? 正如你看到這個圖片時的第一感覺一樣,丑,我也是這么認為的。我曾經想過如何美化這些凸出的結構,改為卡通形象、做些倒圓角(倒圓角 == 高端),總是不太滿意。除了外觀,其實還有一個比較大的隱患,因為這整個結構都要放置到外側,那么控制電門鎖的那幾根線就會暴露在外側,這個時候我們只需要一個剪刀,剪斷線路,短接那3根線,就可以把你的愛車騎走了。

3.2 電車控制部分和用戶交互部分分開

? ? ? ? 如何分開?我們把按鍵、指紋模塊獨立出來放在同一個外殼里管理,將電車控制部分直接放置到電車頭內部。把和用戶交互的部分放置在靠近車把的地方,這樣用戶操作起來會更方便。電車頭里存在這樣一個空間,可以放下小塊的電路板,這個思路是可行的。預期放入電路板的空間展示如下:

? ? ? ? ?這么做還有一個好處,就是能解決3.2小節中提到的安全問題。因為電車控制部分放置到了電車頭內部,外界無法直接操作控制線路,放置在外部的指紋模塊和按鍵只是信號線,即使短接也無法控制電路板,更無法控制電車。

4. 小結

? ? ? ? 讓我們來做個小結:通過使用繼電器可以控制電動車;電源方案選擇使用電動車電瓶,此方案易用、省空間也方便后續拓展USB充電功能;關于機械設計方案,選擇電車控制部分和用戶交互部分分開的方案,安全、美觀。

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

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

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

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

相關文章

EMR StarRocks實戰——猿輔導的OLAP演進之路

目錄 一、數據需求產生 二、OLAP選型 2.1 需求 2.2 調研 2.3 對比 三、StarRocks的優勢 四、業務場景和技術方案 4.1 整體的數據架構 4.2 BI自助/報表/多維分析 4.3 實時事件分析 4.5 直播教室引擎性能監控 4.4 B端業務后臺—斑馬 4.5 學校端數據產品—飛象星球 4…

Ajax(黑馬學習筆記)

Ajax介紹 Ajax概述 我們前端頁面中的數據,如下圖所示的表格中的學生信息,應該來自于后臺,那么我們的后臺和前端是互不影響的2個程序,那么我們前端應該如何從后臺獲取數據呢?因為是2個程序,所以必須涉及到…

【ACM】—藍橋杯大一暑期集訓Day3

🚀歡迎來到本文🚀 🍉個人簡介:陳童學哦,目前學習C/C、算法、Python、Java等方向,一個正在慢慢前行的普通人。 🏀系列專欄:陳童學的日記 💡其他專欄:CSTL&…

langchain學習筆記(九)

RunnableBranch: Dynamically route logic based on input | 🦜?🔗 Langchain 基于輸入的動態路由邏輯,通過上一步的輸出選擇下一步操作,允許創建非確定性鏈。路由保證路由間的結構和連貫。 有以下兩種方法執行路由 1、通過Ru…

Unity引擎中光源都有哪幾種,都有什么作用

本文由 簡悅 SimpRead 轉碼, 原文地址 mp.weixin.qq.com Unity 引擎為了實現游戲場景的明暗和光影效果,提供了四種類型的光源,分別是方向光(Directional Lights)、點光源(Point Lights)、聚光燈…

Vue開發實例(一)Vue環境搭建第一個項目

Vue環境搭建&第一個項目 一、環境搭建二、安裝Vue腳手架三、創建Vue項目 一、環境搭建 下載方式從官網下載:http://nodejs.cn/download/ 建議下載v12.16.0版本以上的,因為版本低無法創建Vue的腳手架 檢驗是否安裝成功 配置環境變量 新增NODE_HOME&…

win11系統中nginx簡單的代理配置

一.背景 為了公司安排的師帶徒任務。 操作系統版本:win11家庭版 nginx版本:1.24.0 二.配置代理 之前文章已經說明了nginx簡單的安裝,要看閱讀這個文章哈。web服務器nginx下載及在win11的安裝-CSDN博客 1.配置需求識別 前端服務nginx(80…

【探索AI】十七 深度學習之第3周:卷積神經網絡(CNN)(一)-CNN的基本原理與結構

第3周:卷積神經網絡(CNN) CNN的基本原理與結構 常見的卷積層、池化層與全連接層 LeNet、AlexNet等經典CNN模型 實踐:使用CNN進行圖像分類任務 CNN的基本原理與結構 引言與背景介紹 卷積神經網絡(CNN)是…

雙周回顧#007 - 前端與后端

前端的問題不是難,而是它面對最終用戶。只要用戶的喜好和口味發生變化,前端就必須跟上。 這導致前端不得不快速變化,因為用戶的口味正在越來越快地改變。 后端不需要面對最終用戶,需要解決的都是一些經典的計算機科學問題&#…

什么是Vue指令?請列舉一些常見的Vue指令以及它們的用法

Vue.js 是一款流行的前端框架,它的指令(Directives)是 Vue.js 提供的一種特殊屬性,用于在模板中對 DOM 元素進行直接操作。指令通常是以 v- 開頭的特殊屬性,用于響應式地將數據綁定到 DOM 元素上。 在 Vue 中&#xf…

C語言初階—函數(函數的聲明和定義,函數遞歸)

函數聲明: 1.告訴編譯器有一個函數叫什么,參數是什么,返回類型是什么,但是具體是不是存在,函數聲明決定不了。 2.函數的聲明一般出現在函數使用之前,要滿足先聲明后使用。 3.函數的聲明一般要放在頭文件中。…

Launch學習

參考博客: (1) 史上最全的launch的解析來啦,木有之一歐 1 ROS工作空間簡介 2 元功能包 src目錄下可以包含多個功能包,假設需要使用機器人導航模塊,但是這個模塊中包含著地圖、定位、路徑規劃等不同的功能包,它們的邏…

agent內存馬

搭建一個簡單的Servlet項目 ServletDemo package com.naihe;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;…

【探索AI】十一 深度學習之機器學習基礎

鑒于之前文章中提到的深度學習計劃,后續的文章會根據之前的接著繼續學習,python基礎略過,想學的同學請自學: python入門 python進階 機器學習基礎 機器學習是人工智能領域的一個子集,它專注于從數據中自動學習并提升…

vue2+若依框架plus交互 路由介紹

本周及寒假 參加了校企合作的工程過程管理,和學長學姐一起寫項目,之前學了vue也沒有應用,然后對框架很多組件的用法不太了解,前期耽誤了一些時間。 框架模塊 首先是框架模塊的介紹 api存了一些系統管理及發送請求的方法 例如p…

【python】`assert`斷言語句

assert是一個斷言語句,用于在代碼中檢查某個條件是否為真。 如果條件為假,將觸發AssertionError 異常,從而指示存在錯誤。

Linux獲取進程(系統啟動時間和運行時間)運行時間

Linux獲取進程運行時間 思路:使用 ps - o命令 ps -p 986 -o etime可以獲取進程986的執行時間,不論系統時間有沒有發生改變,它都可以返回正確的結果: 總結:etime 是真正的程序運行時間,而不是系統運行時間與進程啟動…

在您的下一個項目中選擇 Golang 和 Node.js 之間的抉擇

作為一名軟件開發者,我總是在尋找構建應用程序的最快、最高效的工具。在速度和處理復雜任務方面,我認為 Golang 和 Node.js 是頂尖技術。兩者在性能方面都享有極高的聲譽。但哪一個更快——Golang 還是 Node?我決定深入一些硬核基準測試&…

java-ssm-jsp-寵物護理預定系統

java-ssm-jsp-寵物護理預定系統 獲取源碼——》公主號:計算機專業畢設大全

ASPICE實操中的那點事兒-底層軟件的單元測試該如何做

先來說下ASPICE項目實操中遇到的問題: 底層軟件在做單元測試時,從ASPICE角度看,該如何做?要不要在目標控制器或開發板中去測?尤其是復雜驅動,如果不在將程序下載到硬件中,該如何測試&#xff1…