【嵌入式实践】【芝麻】【设计篇-1】从0到1给电动车添加指纹锁:项目设计思路

2024-02-26 09:28

本文主要是介绍【嵌入式实践】【芝麻】【设计篇-1】从0到1给电动车添加指纹锁:项目设计思路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0. 前言

       该项目是基于stm32F103和指纹模块做了一个通过指纹锁控制电动车的小工具。支持添加指纹、删除指纹,电动车进入P档等待时计时,计时超过5min则自动锁车,计时过程中按刹车可中断P档状态,同时中断锁车计时。改项目我称之为“芝麻”,取自芝麻开门(明明是车,哪里来的“门”,因为插钥匙的地方被修车师傅称之为“电门锁”)。

 专栏目录:快速导航

视频地址:b站链接

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


1. 项目背景

        这个项目的idea起源于一个夏天。我在公司附近住,骑电动车也就十几分钟,所以一直骑电动车上下班,但是停车的地方距离我上班的工位,走过去也差不多5-10min,这是前提。在23年6月份的上海,正是天气比较热的时候,夏天穿着比较清凉,兜里有个任何东西都会觉得,贴身,难受。所以身上不会随身装着车钥匙什么的。

        有一天,因为家里有事,我就打算趁着中午午休的时间回去一趟,直到快走到停车场我才发现我忘记带钥匙了,当时真的是一整个无语住了,回去取一趟钥匙,又得白白耽搁十几分钟的时间。这个时候我就想能否在不带钥匙的情况下给开自己的小电车?

        能达到这个目的的想法看似很多,其实一点也不少。市面上就有现成的解决方案,比如用NFC卡或者NFC信息录入手机后,用手机开锁。我的小电车类似下图,功能比较简单,界面上只能显示电量、P档和大灯开关信息。电门锁功能也比较简单,只有关闭、打开电车、打开大灯者三个功能。为了这个小需求,换一个电动车,有点不值得,不如自己做一个。

2. 初步想法

        如果我要引入指纹模块,那么我还需要引入一个MCU用来处理指纹模块的信息,MCU供电基本就在5V以下,解决MCU供电问题由2种思路,一种是加一个额外的电源,比如加锂电池(同时需要加充电电路),另一种就是直接从电瓶供电。考虑到易用性,我pass掉了第一个方案。既然我都引入了单片机,我是不是就能够做更复杂的功能了?答案是肯定的。就功能上,我列了如下3点,如果大家有自己的想法,还可以继续扩展。

        最基本的功能就是能够通过指纹模块来打开电动车,在使用过程中,要能够添加指纹和删除指纹,这样能够确保同一台电动车,可以给多个人使用。第2个功能就是把电动车的电瓶当做一个大的充电宝,毕竟按照计划,我已经能够获取5V的电源了。这个功能的灵感来自于外卖小哥,每次走在上班的路上看到外卖小哥,他们都会抱着个手机和大的移动电源,如果电动车能当做移动电源,那么他们是不是更方便了一些?(在zhima version 1版本中我添加了这个方案,不过version 2版本中去掉了,因为想给电路板节省一些空间,这个后面再聊。)。

        第3个功能就是电动车能够自动关机。灵感就来源于地铁口一台忘记拔掉车钥匙的车主,还有外卖小哥。外卖小哥为了赶时间,在送上楼送外卖时一般都不会锁车,也不会拔掉钥匙,这个行为是基于对大家的信任做出的,大家也没有辜负这份信任。但是如果电动车能够在进入P档后,等待一段时间自动关机,那不更好了。

3. 如果【芝麻】是个产品,我应该怎么做? 

        1)产品定位:从第2章将的产品灵感来源,大家也能看出来我设想的目标群体是“外卖小哥”。(以下纯属个人推测,因为不是想真正做出产品,所以也未做市场调研)经常骑电动车的群体应该有:外卖小哥,工作不久的打工人。针对这些群体,他们有一个共同点,都期望产品成本低,产品“耐造”。所以控制成本,提高产品稳定性是做【芝麻】时贯穿始终的意思。

        2)控制成本:就我有限的知识来看,我大概能识别到这些需要计算到成本里的事项:元器件选型、电路板制作、电路板焊接、外壳制作、物流、产品组装、产品手册,除了这些有形的成本,还需要考虑软件设计、机械设计、整体设计思考时花费的时间成本。其中对产品成本影响比较大的就是元器件选项和外壳的制作,而外壳制作这块,成本不太好压缩,所以后面控制成本的主要发力点就是精简电路设计,做好元器件选型。

        3)易用性:如果【芝麻】做成产品后,销售点应该就只能选在修车店,需要修车师傅拆开点车头安装。所以这里的易用性就需要考虑两个群体,第一个群体就是修车师傅侧的易用性,产品应该好拆卸、安装和维修,涉及到的知识点越少,越容易推广;第二个群体就是客户,产品应该能够满足客户的基本诉求。

4. 小结

        我们要能制作一个能够通过指纹来控制电车开关的设备,这个设备能够录入其他用户指纹,超时等待后自动关机,最好还具备充电宝的功能。在实现时,我们应考虑修车师傅用最少的步骤安装,用户能够快速学习使用。这个设备要控制成本,以匹配目标用户。机械设计时,可以利用电车头里里的这个空间来固定电路板:

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

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

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



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

相关文章

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

配置springboot项目动静分离打包分离lib方式

《配置springboot项目动静分离打包分离lib方式》本文介绍了如何将SpringBoot工程中的静态资源和配置文件分离出来,以减少jar包大小,方便修改配置文件,通过在jar包同级目录创建co... 目录前言1、分离配置文件原理2、pom文件配置3、使用package命令打包4、总结前言默认情况下,

C++实现封装的顺序表的操作与实践

《C++实现封装的顺序表的操作与实践》在程序设计中,顺序表是一种常见的线性数据结构,通常用于存储具有固定顺序的元素,与链表不同,顺序表中的元素是连续存储的,因此访问速度较快,但插入和删除操作的效率可能... 目录一、顺序表的基本概念二、顺序表类的设计1. 顺序表类的成员变量2. 构造函数和析构函数三、顺序表

python实现简易SSL的项目实践

《python实现简易SSL的项目实践》本文主要介绍了python实现简易SSL的项目实践,包括CA.py、server.py和client.py三个模块,文中通过示例代码介绍的非常详细,对大家的学习... 目录运行环境运行前准备程序实现与流程说明运行截图代码CA.pyclient.pyserver.py参

使用C++实现单链表的操作与实践

《使用C++实现单链表的操作与实践》在程序设计中,链表是一种常见的数据结构,特别是在动态数据管理、频繁插入和删除元素的场景中,链表相比于数组,具有更高的灵活性和高效性,尤其是在需要频繁修改数据结构的应... 目录一、单链表的基本概念二、单链表类的设计1. 节点的定义2. 链表的类定义三、单链表的操作实现四、

Spring Boot统一异常拦截实践指南(最新推荐)

《SpringBoot统一异常拦截实践指南(最新推荐)》本文介绍了SpringBoot中统一异常处理的重要性及实现方案,包括使用`@ControllerAdvice`和`@ExceptionHand... 目录Spring Boot统一异常拦截实践指南一、为什么需要统一异常处理二、核心实现方案1. 基础组件

IDEA运行spring项目时,控制台未出现的解决方案

《IDEA运行spring项目时,控制台未出现的解决方案》文章总结了在使用IDEA运行代码时,控制台未出现的问题和解决方案,问题可能是由于点击图标或重启IDEA后控制台仍未显示,解决方案提供了解决方法... 目录问题分析解决方案总结问题js使用IDEA,点击运行按钮,运行结束,但控制台未出现http://