【嵌入式实践】【芝麻】【设计篇-2】从0到1给电动车添加指纹锁:项目可行性分析

本文主要是介绍【嵌入式实践】【芝麻】【设计篇-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充电功能;关于机械设计方案,选择电车控制部分和用户交互部分分开的方案,安全、美观。

---------------------【芝麻】项目相关文章都会收集在此专栏----------------------

感谢你看到这里,如果不介意的话,帮忙点个赞、关注支持一下~

这篇关于【嵌入式实践】【芝麻】【设计篇-2】从0到1给电动车添加指纹锁:项目可行性分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/769427

相关文章

SQLite3命令行工具最佳实践指南

《SQLite3命令行工具最佳实践指南》SQLite3是轻量级嵌入式数据库,无需服务器支持,具备ACID事务与跨平台特性,适用于小型项目和学习,sqlite3.exe作为命令行工具,支持SQL执行、数... 目录1. SQLite3简介和特点2. sqlite3.exe使用概述2.1 sqlite3.exe

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Springboot整合Redis主从实践

《Springboot整合Redis主从实践》:本文主要介绍Springboot整合Redis主从的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言原配置现配置测试LettuceConnectionFactory.setShareNativeConnect

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

MyBatis设计SQL返回布尔值(Boolean)的常见方法

《MyBatis设计SQL返回布尔值(Boolean)的常见方法》这篇文章主要为大家详细介绍了MyBatis设计SQL返回布尔值(Boolean)的几种常见方法,文中的示例代码讲解详细,感兴趣的小伙伴... 目录方案一:使用COUNT查询存在性(推荐)方案二:条件表达式直接返回布尔方案三:存在性检查(EXI