查看: 780|回复: 5

[教程] 因一次点外卖的经历成就的“传话筒” ——基于树莓派的A...

[复制链接]
            项目起源
微信图片_20201118111852.jpg
  某一天,日常中午点外卖,送外卖的是一个聋哑人,他给我发了一个送到的短信就走了,我们的场所人还是比较多的,幸好我拿到了外卖,当时就在想,如果外卖被拿错了怎么办呢,送外卖的师傅会不会被投诉,怎么样才能帮助到聋哑人像正常人一样送外卖呢,从那天以后就一直在思考这个问题
微信图片_202011181118521.jpg
如果有一种装置能够代替聋哑人打电话,这样会比发短信更加直接通知到客户,利用可以语音播报的机器和对方在电话里确认外卖送达的消息,作为创客奶爸的我就琢磨制作一个什么样的作品可以帮到他们
经过网络搜索,查找资料,目前市面上在售的帮助聋哑人沟通的产品大部分为手写板装置,能够代替聋哑人讲话的成熟产品并没有发现(也有可能是我搜索的方式不对)
微信图片_202011181118522.jpg
继续相关的搜索,发现近几年已经有关于聋哑人手语识别的学术研究出现了,多以手势识别摄像头和手势识别手套的方式将聋哑人的手语转换成语音或文字
详细阅读文章得知由于手势控制的复杂性,目前这些产品仍处于研发阶段,支持的手语翻译的语言种类较少。对于许多其他不同国家的手语使用者来说,沟通壁垒依然存在
微信图片_202011181118523.jpg
旺仔爸爸从网络还得知聋哑人是既不能听到别人讲话,自己也不能发声的,只有部分声带没有损害的聋人可以发声,通过骨传导的方式可以将自己发出的声音传到听神经,听神经再传给大脑,而且还了解到,上了年龄的聋哑人是不识字的,不过如果能够出来送外卖的话,基本的看图识字和使用手机等数码产品的能力应该是具备的,通过上述了解,视觉识别和手势识别对于旺仔爸爸目前的技术能力还实现不了,旺仔爸爸综合考虑自己的能力后,将满足聋哑人电话通讯场景需求的装置的实现想法大致确定为:制作一个提前建立好送外卖常用语语料库的语音助手装置,聋哑人可以利用语音助手装置与客户进行对话,聋哑人想要知道对方说了什么内容可以通过语音助手的显示屏幕查看信息,如果要进行回话可以将内容通过手写输入的方式发送至语音助手,这样语音助手就承担了一个传话筒的角色
所以我们项目的名字定为——《因一次点外卖的经历“传话筒”》,当然本次作品除了满足送外卖的需求外,还具备智能语音对话功能,就像天猫精灵,小爱同学那样
话筒测试.gif
  接着,我们开始尝试使用什么样的方式去实现上述想法,语音合成和语音识别技术是实现这个项目的关键,利用本地的算法识别显然需要强大算力的设备,对于旺仔爸爸而言还是网络云计算实现起来比较妥当,尝试了几种能够实现语音对话的平台,经过多次比较后,最终选用了树莓派通过百度AI开放平台实现可以满足普通人与机器人智能对话的功能和特殊群体聋哑人送外卖沟通交流的功能
我们先通过视频来了解一下这个作品
视频演示
  旺仔爸爸做的这个作品可能还有很多不足之处,但旺仔爸爸的出发点之一是希望通过一个作品引起大家对这类特殊人群的关注,共同思考如何帮助他们
下面旺仔爸爸详细介绍一下本次项目的制作过程,感兴趣的伙伴可以一起迭代完善(文章建议阅读时间15-20min)
确定制作方案
微信图片_202011181118524.jpg
关键词:树莓派,python,多线程,语音识别技术,物联网,AI人工智能,激光造物
    首先我们先来了解一下项目制作的大体流程,语音助手主要有两种模式,普通用户可以选择智能对话模式,聋哑人特殊群体可以选择送外卖模式(送外卖模式为根据送餐时的语境自建的语料对话库,语料库可以不断的丰富)
两种模式都分为四个步骤:采集信息,识别信息,处理信息,反馈信息,在送外卖模式下会稍有不同,需要送餐员先拨通客户电话,再利用机器语音播报的方式与客户进行对话
微信图片_202011181118525.jpg
下图为两种模式下四个步骤实现流程的思维导图
微信图片_202011181118526.jpg
接下来我们对语音助手(传话筒)实现的每个步骤进行详细讲解
要完成这几个步骤,首先需要确定主控
为了能够满足声音采集,音频播放,物联网,GPIO控制,我们选择了树莓派(3B及以上)作为语音助手的主控,树莓派很早之前就玩过几次,都是把它当作一个mini电脑的功能来使用的,并没有尝试它的联网、爬虫、计算的功能,本次开发过程又从烧录系统卡开始重新做了一遍,对linux有了更深入的了解
树莓派.gif
什么是树莓派呢,简单理解,树莓派就是一个和信用卡差不多大小的小型电脑,而且是全世界第三大畅销的计算机!是基于ARM的单板计算机,默认运行一款称为Raspbian的操作系统,它是基于Linux内核和Debian操作系统开发的开源操作系统。操作系统被装载在一张TF卡上,由USB供电。你只需要再连接上鼠标、键盘和显示器或者电视机,就可以进行基于Linux操作系统的程序设计了
树莓派诞生在2012年,由注册于英国的慈善组织“RaspberryPi 基金会”开发和维护,其设计初衷是用来教孩子们学习程序设计的低成本计算机。至于它的名字,老外比较喜欢用水果给项目起名字,派来自于它第一次跑的是python代码,取了python/“派森”的谐音“派”或“pi”
当然本次项目也可以选择创客教育领域比较火的虚谷号
微信图片_202011181118527.jpg
虚谷号很早之前就入手了,但一直没有使用,有了树莓派的经验,上手虚谷号应该不难,于是在树莓派尝试成功后,开始移植虚谷号的程序,最终发现只能录音和播放,完整程序还没有调试成功,感兴趣的伙伴可以移植本项目的内容,旺仔爸爸后面也会继续尝试虚谷号来实现本次的项目
主控确定了以后,第一步就是给树莓派烧录系统,由于篇幅的原因旺仔爸爸把树莓派烧录的工作放在文末,如果是树莓派的老手可以跳过此步骤哦,新手的话还是要熟悉一下这个流程,对于后面的程序安装库文件是有帮助的
树莓派的准备工作系统烧录及配置
见文末
声音采集模块
声音的采集在硬件上我们使用下图这种外置麦克风来实现声音的录入
微信图片_202011181118528.jpg
软件程序上我们使用【pyaudio】库函数实现录音,【wave】库函数实现存储音频文件
微信图片_202011181118529.jpg
播放的模块
音频的播放在硬件上我们使用外置音响播放
微信图片_2020111811185210.jpg
软件程序上我们使用【pydub】库函数实现播放音频文件
微信图片_2020111811185211.jpg
当然麦克风和音响都是通过3.5mm音频头通过usb外置声卡与树莓派usb连接的
微信图片_2020111811185212.jpg

HDMI
显示屏和3.5寸触摸屏幕的切换
如需启用HDMI输出,需执行以下命令,树莓派会自动重启。再等待约30秒,HDMI显示屏开始显示
cd LCD-show/
sudo ./LCD-hdmi
如需切换回LCD显示方式,则需执行以下命令:
cd LCD-show/
sudo ./LCD35-show
微信图片_2020111811185213.jpg
对话功能模块
对话模块采用百度AI平台的UNIT智能对话技术(使用该功能前需要做些注册申请的准备工作,后面会详细讲解)
微信图片_2020111811185214.jpg
语音识别及合成的模块
识别模块采用百度AI平台的语音技术
微信图片_2020111811185215.jpg
调用百度进行语音识别及语音合成的程序如下图
微信图片_2020111811185216.jpg
微信图片_2020111811185217.jpg
显示的模块
显示模块使用python3自带的GUI界面【tkinter】库函数,为了让GUI界面和语音助手同时运行,程序中还涉及到了多线程【threading】库函数,【tkinter】图形化是比较古老的一种界面,其实还可以尝试更漂亮的第三方库,比如PyQt、wxPython等
微信图片_2020111811185218.jpg
多线程【threading】和【tkinter】程序如下图
微信图片_2020111811185219.jpg
微信图片_2020111811185220.jpg
在语音识别平台方面尝试过图灵,讯飞,百度,青云,思知等平台,最后确定选择百度,因为百度响应快,对话比较顺畅还免费,其他的要么收费,要么运行不流畅
图灵平台,网址如下有兴趣的伙伴可以去尝试一下,免费额度比较少
http://www.turingapi.com/
微信图片_2020111811185221.jpg
讯飞,网址如下,1个月免费,功能强大
https://www.xfyun.cn/services/voicedictation
微信图片_20201118111853.jpg
青云,目前免费使用,有时候响应速度会比较慢,只是用来学习的话够用了
http://api.qingyunke.com/
微信图片_202011181118531.jpg
思知,和青云平台类似,目前免费使用,响应速度有时会比较慢,适合学习使用
https://www.ownthink.com/
微信图片_202011181118532.jpg
下面是青云平台和思知语音平台的尝试过程,通过两个平台实现相互对话交流
微信图片_202011181118533.jpg
下面是思知和青云平台对话的python程序,在PC端就可以运行,感兴趣的可以学习体验一下
对话程序.png
这两个平台单纯的用来学习其实完全够了,但要做一个小项目还是相对稳定一点比较好,最后选择免费时限和免费额度都比较久的百度AI开放平台(另外腾讯云,华为云,阿里云的服务没有尝试,有兴趣的伙伴可以去试试)
所有模块介绍完毕后,接下来终于到了制作阶段了
展开制作硬件清单
微信图片_202011181118534.jpg
树莓派3B*1(包含micro sd卡)
18650供电模块*1
喇叭*2
功放*1
usb带线声卡*1
外置麦克风*1
3.5寸音频头*1
磁感应传感器*1
微动开关*1
1K电阻*1
开关*1
DC接头*1
3.5mm音频延长线*1
12mm磁铁*1
杜邦线若干
3.5寸屏幕*1(可选)
3mm椴木板*1(40*60)
五金若干
图纸设计
本次作品主题是语音助手(传话筒),因为有通话模式,所以决定使用一个有复古造型的电话机为主体结构,由听筒、支架和电话主机组成,缺点是不便携,后续可以迭代更便捷的版本,作品效果图如下
微信图片_202011181118535.jpg
下图为使用cad软件设计好的图纸,可以看出由于lasermaker软件原因导入的部分曲线显示不全,不过这是一个小问题,并无大碍,用曲线工具补全就好了
微信图片_202011181118536.jpg
下图为切割好的结构实物
微信图片_202011181118537.jpg
电路设计
本次作品的电源采用了一个可以提供5V2A的18650电池模块,麦克风和音响通过usb声卡与树莓派usb接口连接
微信图片_202011181118538.jpg
下图为树莓派40个GPIO引脚图,我们程序中使用的GPIO库用到的是中间一列物理引脚BOARD编码(根据python库函数来决定使用哪种形式的编码),微动开关需要制作一个下拉电阻连接GPIO37引脚,磁感应传感器连接GPIO36引脚
微信图片_202011181118539.jpg
组装制作
首先是拾音的听筒安装,主要装置就是一个有拾音功能的麦克风,安装在听筒上,由于和主控距离较远,而且为了听筒拿取方便,需要增加一根3.5mm的音频延长线,然后预埋在切割好的听筒结构中
下图是一个很久之前买的一个外置麦克风,能用,质量一般般,优点是便宜,但有一个问题就是接头的部位是直角弯,体积太大了,需要进行魔改
微信图片_2020111811185310.jpg
于是把线头外壳剥离,重新焊接了新的3.5mm音频头,线路处理好后就可以进行听筒外壳安装了
微信图片_2020111811185311.jpg
听筒的外壳总共有5层,中间3层是镂空的,为了连接线路使用,前后两层为面板,起到封装美观的作用
微信图片_2020111811185312.jpg
安装完成后如下图所示,在提前设计好的固定孔中安装3mm螺丝,加强固定
微信图片_2020111811185313.jpg
接着,是听筒放置的架子安装,这一步非常的简单,按下图装配即可
微信图片_2020111811185314.jpg
要注意的细节是,我们需要在听筒的架子上安装一个微动开关,起到选择程序的作用,当听筒放置在架子上时正好可以触发开关,这里的微动开关做了一个下拉电阻来保持信号稳定(下拉电阻的连接方式可以看前面的接线图)
微信图片_2020111811185315.jpg
装配方法是,利用两颗M2的螺丝固定在预先设计切割好的孔位中
微信图片_2020111811185316.jpg
开关测试.gif
架子和听筒安装好后的样子如下图所示
微信图片_2020111811185317.jpg
接下来是电话主机的安装,为了造型更加美观,在四个角增加了复古的造型结构,安装方式如下
微信图片_20201118111816.jpg
在壳体的前面板上放置两个支架,用来安装拨号转盘,壳体前面板圆孔用来走线
微信图片_202011181118161.jpg
拨号盘分为两层,上面一层设有圆孔可以看到下面一层圆盘上的数字,下面一层正面是数字,背面是磁感应传感器
微信图片_202011181118162.jpg
两层转盘通过螺丝固定
微信图片_202011181118163.jpg
磁铁安装后的样子如下图所示
微信图片_202011181118164.jpg
后面的壳体安装开关和电源充电接口
微信图片_202011181118165.jpg
接下来是播放单元,喇叭的安装,本次作品使用的喇叭为以前购买台式机电脑赠送的小音箱,丢了舍不得,正好拿来用在这个小项目中,把有用的部分拆解出来,原来的壳体就不用了
微信图片_202011181118166.jpg
微信图片_202011181118167.jpg
播放单元和拾音听筒与usb声卡连接在一起
微信图片_202011181118168.jpg
然后,usb声卡和喇叭功放的电源连接到树莓派的usb接口中,接着将供电模块、微动开关和磁感应开关与树莓派连接,由于要安装3.5寸屏幕,所以两个传感器的VCC正极引脚接线只能从GPIO引脚的背面焊接了
微信图片_202011181118169.jpg
微信图片_2020111811181610.jpg
下图为喇叭安装在外壳上的样子
微信图片_2020111811181611.jpg
下图为最后组装完成的样子
微信图片_2020111811181612.jpg
从图中可以看出树莓派的屏幕并不能很好的安装到位,是因为设计之初没有考虑周全,树莓派接上USB后尺寸已经超范围了,需要改进结构,将树莓派的屏幕整体向右边移动,留出USB接线的空间,改进后的样子如下图所示
微信图片_2020111811181613.jpg
微信图片_2020111811181614.jpg

程序设计
本次作品程序调试使用的树莓派系统自带的【thonny】编程环境,当然你也可以使用【python3 IDLE】来完成程序调试运行
在程序设计开始之前,我们需要先理一下思路,为了帮助聋哑人群体,我们需要做一个装置,可以代替聋哑人打电话,为了让聋哑人自己能够知道对方说了什么内容,可以从装置的屏幕中看到信息,常人可以使用这个装置的智能对话功能
从上面的描述我们可以知道装置有两种功能,送外卖模式和智能对话模式,不同的群体选择不同的模式
下面的思维导图为实现的全部的过程
微信图片_2020111811181615.jpg
采集信息&识别信息
想要实现语音识别和语音对话功能需要先在百度AI开放平台做一些准备工作
百度语音准备工作
1、登陆百度云账号(login.bce.baidu.com),如果是第一次使用百度云,需要先进行注册,可以使用百度网盘账号
微信图片_2020111811181616.jpg
左侧【产品服务】菜单可以看到本次我们需要使用到的【语音技术】、【智能对话智能对话与服务平台UNIT】功能,如下图所示,首先我们点击【语音技术】进行设置
微信图片_2020111811181617.jpg
点击语音技术后会看到下图的界面,我们点击【创建应用】
微信图片_2020111811181618.jpg
接着给创建的技能设置名称,选择接口为默认,语音包名选择不需要,应用归属个人,进行简单的应用描述后点击立即创建
微信图片_2020111811181619.jpg
创建完毕后可以点击返回应用列表,也可以点击查看文档学习调用的方法
微信图片_2020111811181620.jpg
点击返回应用列表后可以看到如下列表信息,其中【AppID】、【APIKey】、【Secret Key】是程序中调用需要的信息
微信图片_2020111811181621.jpg
这里需要注意一点的是,【语音技术】功能需要点击左侧概览菜单,在所列出的菜单中选择自己需要的功能点击立即领取才能获得免费额度,比如【短语音识别】功能,否则程序会调用不成功
微信图片_2020111811181622.jpg
接着我们点击左侧产品服务,选择【智能对话与服务平台UNIT】功能
微信图片_2020111811181623.jpg
选择【智能对话与服务平台UNIT】功能后,我们可以看到如下界面,首先需要点击创建应用
微信图片_2020111811181624.jpg
接着设计应用名称,应用类型,接口选择UNIT和语音技术,语音包名不需要,描述应用后点击立即创建
微信图片_2020111811181625.jpg
创建完毕后可以点击查看文档学习使用的方法
微信图片_2020111811181626.jpg
点击返回应用列表可以看到已经创建好的应用,其中【AppID】、【APIKey】、【Secret Key】是程序中调用需要的信息
微信图片_2020111811181627.jpg
接下来我们需要点击左侧的UNIT配置平台来配置智能对话技能
微信图片_2020111811181628.jpg
点击之后页面会跳转到如下界面,我们接着点击进入UNIT(如果需要登陆,登陆百度云账号就可以)
微信图片_2020111811181629.jpg
然后点击新建技能
微信图片_2020111811181630.jpg
选择对话技能
微信图片_2020111811181631.jpg
设置技能名称,点击创建技能
微信图片_2020111811181632.jpg
之后就可以看到已经新建好的技能了,技能ID是有用的信息
微信图片_2020111811181633.jpg
接着点击我的机器人菜单
微信图片_2020111811181634.jpg
点击+号增加机器人
微信图片_2020111811181635.jpg
创建机器人名称,对话流程选择【技能分发】,接着点击创建机器人
微信图片_2020111811181636.jpg
之后可以看到下面已经新建好的机器人,机器人的ID是有用的信息
微信图片_2020111811181637.jpg
然后点击机器人进入如下界面,我们需要给机器人添加技能
微信图片_2020111811181638.jpg
微信图片_2020111811181639.jpg
微信图片_2020111811181640.jpg
点击左侧的对话可以进行线上技能对话测试
微信图片_2020111811181641.jpg
到此为止我们的百度AI的准备工作就完成了
接下来安装python库文件可以参考下面的思维导图
微信图片_2020111811181642.jpg
下面是程序的具体讲解
程序初始化
需要提前安装好各种库函数
微信图片_2020111811181643.jpg
语音录制
使用【pyaudio】库函数录制音频,使用【wave】库函数保存音频文件
微信图片_2020111811181644.jpg
百度云语音识别
百度云调用的三个参数【AppID】、【API Key】、【Secret Key】是关键数据
微信图片_2020111811181645.jpg
百度语音合成输出
微信图片_2020111811181646.jpg
请求百度unit智能对话
机器人ID和技能ID需要提前申请
微信图片_2020111811181647.jpg
提取有用信息
微信图片_2020111811181648.jpg
多线程
这里需要调用多线程【therading】库函数
微信图片_2020111811181649.jpg
子线程包含两种对话模式
微信图片_2020111811181650.jpg
主程序(tkinter图形化界面)
微信图片_2020111811181651.jpg
在树莓派上的运行结果如下图
微信图片_2020111811181652.jpg
送外卖模式
微信图片_2020111811181653.jpg
智能对话模式
微信图片_2020111811181654.jpg
到此为止,所有功能都介绍完毕,下面我们讲个故事
讲个故事
    本次语音助手(传话筒)的项目从7月份开始有想法,开始构思到制作完成,大概经历了三个多月的时间,时间主要花在想法构思和程序调试上,制作过程踩了很多的坑,从最初的系统烧录开始,印象最深刻的是,在树莓派切换显示器和3.5寸触摸屏幕的时候,【sudo ./LCD-show】一条指令下去,直接导致系统卡死进不去了,然后花了两个晚上重新烧录系统,从头加载各种库,调试程序,欣喜若狂调试成功后,开始设计外壳了,第二天就想着把树莓派带着去上班,白天有空也可以设计图纸,可惜白天没找到时间,晚上悲剧的事情又发生了,树莓派开机上电,一点反应都没有,红灯常亮,绿灯有规律的频闪四次,怀疑系统卡坏了,心情有点悲愤,又要把前两天的工作再来一遍,不愿意接受这个事实,于是拿出来一张新的sd卡,重新烧录系统,很快烧录完毕发现问题依旧,看来不是系统卡的问题,测量电源电压也正常,更换电源问题还是依旧,网络查找问题,说是系统卡未进去,这下怀疑是sd卡槽坏了,可能是放包里挤压到了,于是这东西修理不值得,上闲鱼看看吧,花了125元买来一块二手的,成功用到现在,从这个故事看出,在研究的过程中,遇到问题是很正常的,失败也是难免的,但失败其实只是一个结果,一个现象,不能被结果打击到没有信心,并且要客观的看待这件事情,虽然没有成功,其实在过程中你已经积累了大量的经验了,相信以后再遇到这种问题你会觉得都是小菜一碟,显然客观的评价对自己能够坚持下去有很关键的作用,千万不能放弃,而且要调整好心态,冷静思考,用什么样的方法查找可能存在的原因,才是解决问题的根本办法




树莓派的准备工作硬件准备
1.    树莓派3B/3B+/4,任何一款都可以
2.    micro sd卡(16G及以上,建议class10)
3.    5V2A micro usb电源
4.    笔记本电脑
5.    键盘鼠标,显示器(可选)
软件准备
下载树莓派常用工具
获取方法:旺仔爸爸造物社公众号回复关键字:树莓派常用工具
微信图片_2020111811181655.jpg
常用工具中共有三个文件夹:001基本工具、002树莓派Raspbian系统、常用文件

·     001:基本工具:包括镜像烧录工具、局域网IP扫描器、远程文件传输工具 FileZilla、文本编辑器Notepad++、远程ssh工具putty、SD卡格式化工具 SD Formatter
逐个安装基本工具里的软件:notepad++、putty、VNC-Viewer
·       微信图片_2020111811181656.jpg
·     002:树莓派官方操作系统Raspbian
·     003:开机常用文件,包括ssh空文件和wifi配置文件
微信图片_2020111811181657.jpg
烧录准备


我们树莓派运行的是linux系统,系统是烧录在一张microSD卡中的,常用的系统有Raspbian、Ubuntu等,
可以在树莓派网站下载喜欢的操作系统,推荐镜像下载地址:raspberrypi.org/downloads
本次我们以Raspbian系统为例进行烧录演示
首先拿到SD卡后通过读卡器插入电脑usb,如果用的是旧的SD卡,需要用到001文件夹中的SDFormatter格式化工具进行格式化。如果用新的SD卡可以跳过此步。
格式化SD卡:
1.    启动格式化软件,选择需要格式化的盘符

微信图片_2020111811181658.jpg
2.点击格式化,点击确认

微信图片_2020111811181659.jpg
再点击确定
微信图片_2020111811181660.jpg

第一次会失败
微信图片_2020111811181661.jpg
重复上述步骤再来一次

微信图片_2020111811181662.jpg
微信图片_2020111811181663.jpg
微信图片_2020111811181664.jpg
格式化成功后会出现如下boot盘符,可以看到SD卡对应的盘变成了空盘。

微信图片_2020111811181665.jpg


SD卡中烧录树莓派系统
烧录系统
002文件夹中为已经下载好的系统镜像文件,你也可以到树莓派官网下载其他版本的系统镜像文件
打开001文件夹中的镜像烧录工具Win32DiskImager(或者另一个镜像烧录工具balena-etcher)
微信图片_2020111811181666.jpg
选择002文件夹中的镜像文件和要烧录的SD卡对应的盘

SD卡对应盘符号的时候一定要小心,不要选到其它盘或者硬件,不然镜像可能会覆盖写到其它盘里。
微信图片_2020111811181667.jpg
然后点击write,点击yes,开始烧录

微信图片_2020111811181668.jpg
微信图片_2020111811181669.jpg
等待5-10分钟烧录完成
微信图片_2020111811181670.jpg
烧录成功之后,点击ok

微信图片_2020111811181671.jpg
再次询问是否格式化,点击取消格式化

微信图片_2020111811181672.jpg
点击确定

微信图片_2020111811181673.jpg
之后可以在boot中看到如下文件

微信图片_2020111811181674.jpg
将空白的ssh文件放入SD卡的boot

鼠标右击创建一个空白记事本.txt文件,命名为ssh,重命名,删掉.txt扩展名。将这个文件放入SD卡的boot盘中。
003文件夹中创建好了ssh文件,可以直接把这个文件复制到SD卡的boot盘中。

微信图片_2020111811181675.jpg
配置wifi文件,放入SD卡的boot

用同样的方法新建一个空白文件wpa_supplicant.conf(注意要删掉扩展名.txt)
用已经安装好的文本编辑器notepad++打开wpa_supplicant.conf,输入以下配置,可以用多个network{}来配置多个wifi:
比如我家里的Wifi叫guoli,wifi密码是13141516,手机热点的WiFi叫guoli,Wifi密码是13141516,就可以这样写。
priority表示几个wifi同时都搜得到的时候优先连接哪个,数字越大优先级别越高
微信图片_2020111811181676.jpg
将ssh空白文件和wpa_supplicant.conf文件放入SD卡的boot盘中。

微信图片_2020111811181677.jpg
树莓派开机


通电启动
从电脑上拔出SD卡,插入树莓派,如果有显示屏插好HDMI显示屏线和电源线,通电,如果是老显示器,还需要一个VGA转HDMI的转接线,或者用家里的电视机也可以
微信图片_2020111811181678.jpg
树莓派上的红灯常亮,表示通电。绿灯间歇性亮,表示读写SD卡。

给树莓派通电,如果绿灯闪烁,屏幕上显示出树莓派的logo,说明操作系统正常。
获取树莓派ip的几种方法
知道了树莓派ip地址,就可以用我们的笔记本电脑远程登录树莓派,有很多种方法可以直接获取树莓派的ip地址:
1.    如果树莓派连接到了显示屏上,可以直接鼠标指向右上角网络图标,ip地址会自动显示

微信图片_2020111811181679.jpg
2.如果树莓派连接到了显示屏上,可以打开树莓派命令行窗口,输入ifconfig

微信图片_2020111811181680.jpg
3.如果没有显示屏,用手机连到与树莓派同一个网络的wifi下,打开苹果手机APPdataplicity应用上扫描出树莓派的ip地址

4.如果没有显示屏,用电脑连到与树莓派同一个网络的wif或者有线网络下,在电脑上打开局域网ip扫描器,扫描出树莓派ip地址
5.查看开wifi的路由器后台配置界面,找到树莓派,查看ip地址
远程登录树莓派
现在,可以通过远程ssh工具putty远程登陆树莓派了。
例如,如果树莓派的ip地址是192.168.31.239
首先双击打开putty软件
微信图片_2020111811181681.jpg
输入ip地址,端口22,ssh类型,也可以在左侧APPearance修改字体大小等操作,在右侧保存,下次登陆时可以直接点击进入,省去每次输地址的烦恼

微信图片_2020111811181682.jpg
输入账号pi,密码raspberry,默认密码是不显示的,不要以为自己输错了,放心大胆的输就好了

微信图片_2020111811181683.jpg
登陆成功如下图所示,现在就可以通过命令行来远程操控树莓派了

微信图片_2020111811181684.jpg
换源:将下载源从树莓派默认国外源切换到国内清华大学开源软件镜像站


这里简单解释下什么是软件源,以及为什么要更换软件源。
软件源是指 debian 系操作系统的应用程序安装包仓库,很多的软件都会这收录到这个仓库里面。而树莓派的 raspberrypi 操作系统也是基于debian 的,所以树莓派也有自己的软件源,用来收录各种树莓派应用程序。
默认情况下,树莓派软件源地址是http://archive.raspbian.org/,位于欧洲,在国内访问是非常慢的,经常只有几 k 每秒的下载速率。所以我们在玩转树莓派之前,强烈推荐替换成国内的软件源。
树莓派的所有软件源地址可以从这里找到:https://www.raspbian.org/RaspbianMirrors
一般我们找个国内的就行了,比如清华大学开源软件镜像站。(下图表格的第一行)
为什么叫镜像,是因为镜像站每隔一段时间(几分钟)便会使自己和国外源保持同步,维持和国外源一模一样的软件资源列表,就像照镜子一样。
本文将在树莓派上配置apt-get包管理器的镜像和python第三方库下载工具pip的镜像到国内镜像站,除此之外,node.jsnpm等众多编程语言也可以设置国内镜像。
除了清华大学开源软件镜像站之外,还有很多国内镜像站,比如阿里云、同济大学、重庆大学、中科大、豆瓣、淘宝等。
Raspbian的包管理器apt-get换源
在树莓派的命令行界面输入如下指令,按回车键
微信图片_2020111811181685.jpg
sudo nano /etc/apt/sources.list
sudo 是指用系统管理员权限启动,nano 是树莓派内置的轻量文本编辑器,而 /etc/apt/sources.list 就是软件源的配置文件地址了。
使用键盘方向键控制,在第一行开头加一个#,把下面的内容拷贝到最后一行之后,如图中的效果:
微信图片_2020111811181686.jpg
先按键盘上的ctrl+o,再按回车保存,再按ctrl+x退出nano编辑器回到命令行界面。
同样的方法,把 sudo nano/etc/apt/sources.list.d/raspi.list 文件也替换成下面的内容:
微信图片_2020111811181687.jpg
至此,树莓派软件源就替换好了。是不是很简单,就改两行配置即可。

最后,你可以试下执行 sudo apt-get update,会发现更新速度快了很多。
可以更新到清华大学镜像源最新的软件列表。
sudo apt-get update
这个命令,会访问源列表里的每个网址,并读取软件列表,然后保存在树莓派本地。
以上步骤实现了Respbian的包管理器apt-get换源到清华大学软件镜像站,并更新了软件列表,今后在树莓派命令行中执行sudo apt-get install 软件名时便会自动从清华大学开源软件镜像站高速下载。
Python的第三方模块安装工具pip换源方法一:一行命令换源
清华大学开源软件镜像站官方推荐方法,但该方法在树莓派上可能会失效。
只需树莓派命令行中输入下面这一行命令,即可永久设置pip下载源为国内源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
注意:是https而不是httpsimple不能少
方法二:配置换源脚本
该方法在树莓派上亲测有效
在树莓派的命令行中依次输入运行以下三个命令
sudo mkdir ~/.pip
cd .pip
sudo nano pip.conf
在打开的文件中输入以下内容:
[global]
timeout = 10
index-url = http://mirrors.aliyun.com/pypi/simple/
extra-index-url= http://pypi.douban.com/simple/
[install]
trusted-host=
  mirrors.aliyun.com
  pypi.douban.com
先按键盘上的ctrl+o,再按回车保存,再按ctrl+x退出nano编辑器回到命令行界面。
树莓派内部配置
打开树莓派命令行界面输入命令,进入树莓派配置界面。
sudo raspi-config 微信图片_2020111811181688.jpg
用上下键和左右键切换光标位置。

微信图片_2020111811181689.jpg
第一行:ChangeUser Password修改密码

按照里面的要求修改成自己的密码即可。默认用户名为pi,密码为raspberry
这个密码会用于远程ssh登陆、VNC远程桌面及需要管理员root权限时输入。
第四行:LocalisationOptions选择地区
微信图片_2020111811181690.jpg
第一行:Change Locale选择所在国家

这是一串很长的列表,到这个列表的最下面,让光标指在zh_CN.UTF-8 UTF-8前面,先按空格,再按回车,回到之前的界面再按回车。

微信图片_2020111811181691.jpg
微信图片_2020111811181692.jpg
微信图片_2020111811181693.jpg
重新选择第四行Localisation Options
第二行:Change Timezone选择所在时区
选择Asia,再选择Shanghai,回车确定。
微信图片_2020111811181694.jpg
微信图片_2020111811181695.jpg
第四行:Change Wi-fi Country选择wifi国家
选择CN China,回车
微信图片_2020111811181696.jpg
微信图片_2020111811181697.jpg
第五行:InterfacingOptions开启功能
建议下面几个都打开

微信图片_2020111811181698.jpg
Camera:摄像头
SSHssh远程通信与登陆
VNCVNC远程桌面登陆
Serial:串口控制
Remote GPIO:远程GPIO引脚控制
第七行:Advanced Options高级设置
微信图片_2020111811181699.jpg
·     选择Expand Filesystem,将根目录扩展到这个SD卡,充分利用SD卡的存储空间
·     选择Overscan,在整个屏幕上显示
·     选择Audio,选择Force 3.5mm('headphone'jack),树莓派的声音会从耳机孔输出
·     选择Resolution,选择默认设置,自动根据显示屏调整分辨率
·     选择Pixel Doubling,增加桌面显示画质
选择Finish,会跳出对话框问是否重新启动,可以直接回车确定重启,也可以等下次启动时候生效。
安装中文字体及输入法

打开树莓派命令行,输入以下命令
sudo apt-get install fonts-wqy-zenhei
这行命令里的sudo表示使用管理员root权限,apt-get表示使用apt-get包管理器来下载,install表示下载安装,fonts-wqy-zenhei表示软件名字。之后所有的sudo apt-get install 软件名都表示这样的意思。
接下来,安装中文输入法fcitx及Google拼音输入法(大约需要五分钟)
sudo apt-get install fcitx fcitx-googlepinyinfcitx-module-cloudpinyin fcitx-sunpinyin
在跳出的对话框中输入y和回车↩,确定下载安装,需要90MB存储空间。

安装成功之后,会在下一次重启时生效。
在树莓派上可以使用ctrl+空格切换为中文输入法。
升级所有安装的软件
运行下面这行命令,会把本地已安装的软件,与刚下载的软件列表里对应软件进行对比,如果发现已安装的软件版本太低,就会提示你更新。执行这行命令可能需要很长时间。
sudo apt-get upgrade
我们刚刚还运行了sudo apt-get update命令,现在运行sudo apt-get upgrade命令,有什么不同呢?
答:update仅仅是从下载源获取并更新可下载软件列表,相当于更新索引地图。而upgrade是更新软件本身。后者要花费多得多的时间





总结
    虽然本次作品的功能完全实现了,但在还存在很多不足:
1.体积上还存在很大的改进空间,可以使用体积更小的树莓派zero制作便携的作品
2.本次项目是需要连接网络的,在室内有网络的环境是方便使用的,如果要符合送餐员的室外场合,需要以手机热点的方式让语音助手连接网络,后续可以尝试更方便的联网方式或者是本地算法实现
3.让作品在真实的场景中实践验证,根据真实的场景丰富语料库
4.本次作品没有实现最开始设想的手写输入回话的功能,可以再继续尝试改进
5.增加多国语言的版本(百度提供这个功能)
    从本次作品在制作过程中还受到启发,项目开始前需要详细的查阅资料,不仅仅是技术实现方面的知识,所涉及到的各个领域都需要了解,不能想当然,这一点需要在以后的制作过程中注意,还要感谢光光老师的及时提醒,让作品得以改进迭代,总之需要细心谨慎的走好每一步,才能有完整的作品呈现,
造物让生活更美好,希望有更多想法的伙伴能够和旺仔爸爸一起交流迭代
更多精彩内容请关注旺仔爸爸造物社,联系请加18752544995


CVix0XLS  学徒

发表于 5 天前

增长一下见识
回复

使用道具 举报

gada888  版主

发表于 3 天前

不错
回复

使用道具 举报

rzegkly  版主

发表于 前天 08:14

爱心与技术的结合,很好的文章,学习
回复

使用道具 举报

Mr Guo  中级技匠
 楼主|

发表于 昨天 01:03

rzegkly 发表于 2020-11-22 08:14
爱心与技术的结合,很好的文章,学习

谢谢康老师
回复

使用道具 举报

RRoy  初级技匠

发表于 昨天 11:21

老师很用心!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2020 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail