咱们今天接着上一章的话题,啊不,不接着上一章的话题哈哈哈哈哈哈。今天要正式开始篇章了。咳咳,时间:2024年7月6日13:55,地点:无锡某出租屋内,人物:我、对象(她躺在小沙发上)追剧,我刷了一会手机,觉得太无聊了,才想起来昨天晚上本来改更新的这个篇章,于是就有了现在的这些文字。OK,那么接下来就开始。
如何开始一个项目
如何开始一个项目呢,首先,就是要有一个点子,不管是好的点子也好,还是什么奇奇怪怪的点子也好,如果不去调查,探究可行性,那终究也just 是一个一闪而过的想法。所以呢,当我们有了一个点子之后,首先要做的就是记录下来这个点子,然后,开始去查找各种资料,验证能不能实现,哪怕你什么都不会,一点都不懂,不懂没关系嘛,学啊,文字总能看懂吧,CSDN会搜索吧,B站总听说过吧,国外的github,国内的gee这些都是很好的平台 ,别想着等把所有的东西都学会啦再回过头来去实现这个想法,当然,如果你毅力强的可怕,学习能力强的可怕,那你大可先把这些东西都学了在来实现。我不知道别人怎么样,但是大多数的人再去学习新东西,都会需要得到一个正反馈,只有这样,才有动力接着去学啊。不然,学着学着,你甚至都会忘记学这点东西的目的是什么了。总而言之,需要什么就去学什么。比如,我们这个项目需要会C语言,我个人觉得没必要先去把C语言完完整整的过完一遍,只需要做到能看得懂别人写的代码,会基本的语法就行了,至于后面比如要使用结构体啊什么的,再去学就是了。
明确需求
那么,话说回来,我这个项目的点子是怎么来的呢,其实,这不是我的点子,是我一个同学的点子,然后我问了他有那些功能,要实现什么,再加上我自己对这个东西的理解之后,才出的方案。开始一个项目,上面也讲到了,首先,有点子(不管是什么样的点子),其次,分析要实现哪些功能,去做调查,去做实验,分析可行性。比如,我要做的是一个音控制的电梯,那么实现的功能就是先得有语音交互,语音唤醒。
语音交互功能,这个功能明确之后,我们就开始做调研,首先会想到的就是手机上的语音助手,那么手机上的语音助手的功能是怎么实现的呢,然后就可以去查资料了,发现现在的智能手机都是人家有自己的服务器,当手机讲语音进行采集,然后经过一定的编码之后上传服务器,或者在本地进行解析(这个就需要专门的芯片这类的了),服务器处理完成之后再返回到手机上,进行语音的播放。那么我们是不是也可以这样来做呢,当然可以,经过我一番的查找,发现百度有这个功能,只需要我们将语音进行采集,然后将文件进行base64编码,然后调用百度的语音纸杯的api借口,将编码好的文件上传,等那边处理完之后在返回给我们,我们将返回的文字信息进行转码,播放出来就可以了,或者,根据返回的文字来进行电梯控制就ok了。这样,这条思路好像可以走的通,但是,这样我们就需要一个声音采集的模块进行声音采集,然后需要一个将文字转化成语音的模块,将返回的文字信息播放出来就可以了,还需要一个能连上公网的模块(比如esp8266什么的)这一套东西,还有一点得考虑到,百度那边能提供的这个服务是要收费的(有一定的免费额度),还有网络延迟有点高,还有就是我们无法用语音直接唤醒,或者可以定时去检测一下是否有语音唤醒,等等,需要考虑的东西太多了,实在不方便实现,而且成本还很高。这时候,就要更换方案了,在Taobao上搜语音模块,然后查看这些模块的详情,观察是否能满足我们的需要,还有上手难度怎么样,于是,我发现了ASR-PRO 这款语音模块就和很适合,它是一款离线语音模块,且通过串口可以与单片机进行语音通信,它本身可以通过包括图形化编程或者C语言进行编程,可操作空间大,上手很快。
OK,这样语音交互完成了,接下来就是考虑别的功能了,电梯,要考虑防夹,超重检测,还有就是很多不懂的人会将电动车推进电梯带回家充电,殊不知,这样的操作是及其危险的,一旦发生火灾,在电梯那样密闭的环境中,危害极大,那么就要一个检测电瓶车的功能,还有就是我们怎么去检测电梯所在的楼层呢?怎么样才能控制电梯运行呢?哦对,再加一个定时消毒的功能,我觉得经历了疫情这几年,这个功能一定是必不可少的。
主控芯片选型
这些个功能都明确之后就开始选择我们需要的主控芯片了,芯片的选择我们本着手上有什么就用什么的原则(毕竟整个最小系统少说也要十来块呢,这不一顿饭钱又省出来了)。哈哈哈,开个玩笑,我觉得啊,如果是面对自己已经很熟的芯片,如果时间很赶,那就选择最熟悉的,最容易上手的,如果时间充裕,那大可去尝试一下别的芯片,毕竟面对相同的功能,一块国产的替代芯片可比国外的便宜很多呢,而且对于我们学习来说过,益处多多。这里我们就选择STM32发03c8T6这款芯片了,芯片总共有三个串口,一个用于与esp32cam摄像头作通信使用,一个用于与ESP8266连接,将电梯的一些数据上传使用,还有一个用于与语音芯片通信,兼职调试BUG的时候使用。
OK,万事俱备,接下来就是绘制PCB了。