微信控制树莓派小车

介于毕业设计刚刚结束,这里算是一个收尾总结一下这次毕业设计用到的itchat这个库,并说明来控制树莓派的方法,为各位读者提供一种新的远程控制的方式。

先来说一下,树莓派是如何来控制小车的,先来说下我给小车加装的功能,移动(前进,后退,左拐,右拐),LED通断,黑线循迹,移动所需要的硬件为:L298N,4个电机,LED灯的通断需要发光二极管,黑线循迹需要(D80NK漫反射模块),树莓派控制小车主要是通过GPIO(General Purpose Input And Output),英文翻译为通用输入输出端口,可以通过他们输出高低电平或通过他们读入引脚状态我们就是通过他们来控制树莓派小车的,这里树莓派的引脚是不够的我们需要为他加装拓展版。这里我们可以看下树莓派官方给的引脚的定义。




L298N:

这里我们不讲如何接线,直讲一下我们是如何控制它移动的,L298N有四个引脚,作为逻辑输入端,同时L298N又有两个逻辑输出端即为 OutPutA,OutPutB,这里我们把同侧的两个电机并联分别接入OutPutA,OutPutB.

下图为逻辑输入端与电机运动方向的关系:


先来讲下前进的控制:


此函数为控制小车前进的代码,小车使用BCM编码,按照上图的输入端与电机与电机运动方向的关系图,只需对IN1输入高电压,IN2输入低电压,IN3输入高电压,IN4输入低电压即可,这样就做到了,左侧电机前进右侧电机前进,小车前进,后退道理同理。

小车左转:


对于这样的小车我们真的要思考下怎么让其左转,这里我们可以借鉴坦克左转的道理即为履带差,所以我们可以让左侧电机正向旋转右侧电机反向旋转即为实现了小车的左转,右转道理同理,函数如下。




LED通断:

一个LED光较弱,我们可以将三个LED并联,将LED长的一端拧在一起,将LED短的一端拧在一起,并将母对母杜邦线或者公对母杜邦线的母的一头或者公的一头消去将铜线分别缠绕在并联在LED的两个头上,即可。


LED灯开始的时候处于低电压状态只需要在我们输入开大灯的时候将其调至高电压状态即可完成LED的通断。



D80NK漫反射模块:

先来介绍下D80NK的特性,众所周知,黑色是吸收光的颜色,其他颜色是反射光的颜色,当D80NK遇到非黑色线红灯亮起,此时处于一个高电压状态,当D80NK漫反射模块遇到黑色线,此时红灯熄灭,处于一个高电压状态,我们可以通过这个特性来做碰撞检测,下面是实现黑线循迹碰撞检测的代码:


它的基本逻辑就是如果黑线在D80NK中间即为左右都不碰触黑线,左右都处于低电压状态此时,前进,如果左边碰到黑线,此时左边的D80NK处于高电压状态,说明左边碰触到了黑线,此时只需要调用向左移动的函数即可,右边碰触到黑线同理,下面视频即为实现了黑线循迹的视频:

寻黑线测试视频



所有的功能已经介绍完了,下面就来介绍一下如何接入树莓派小车以做到远程控制,这里接入的方式有很多,比如通过ZigBee协议,另一种是通过自己搭建一个服务器通过开发一个手机app来接入,但是这些都不够简单也不具有普适性,试想一下如果可以用微信控制,比如小车在四川我在山东,小车已经联网,我只需要在微信上发送一个“开大灯”,就可以控制LED的通断,发送一个“前进”就可以使小车前进,这样就真的即具有普适性:人人都有微信,操作简单,有真正做到了远程控制,有这样一个东西是不是就太酷了?

这里的酷是itchat为我们提供了一种思路,如果物联网强调是万物互联,那么微信这种简单人人都有的东西能否成为万物互联的接口呢?

下面来介绍下itchat库,itchat这个库是Python关于微信的一个库,通过这个库具有很多的功能,比如说对公共账号,好友,群聊的整体获取,如果做到这个就可以实现好友云词分析,好友分析等来实现微信分析,这里推荐大家一篇教程:https://blog.csdn.net/lee20093905/article/details/79052795/一篇很好的通过itchat来做微信分析的教程。

还可以实现对于微信消息的接收,发送,分析,微信的小车就是利用了这一点来实现了远程的控制,前段时间朋友是做BI(数据分析),他有一个需求是:


用itchat就可以满足他的需求,这样就可以聊天记录专成excel就可以很方便的来进行需求分析了,具体教程如下:https://wxpy.readthedocs.io/zh/latest/index.html

这里po一篇我看过讲itchat库最详细写的最好的教程,感兴趣同学可以学习下:

https://segmentfault.com/a/1190000009420701

好了,不扯别的了直接说下思路上一下代码:



登陆:

itchat提供了一个登录的方法,itchat.auto_login(enableCmdQR=2,hotReload=True)介于我是在MAC终端远程连接的树莓派,所以需要在终端形成二维码,enableCmdQR=2即位在终端形成二维码,如果不想每次登陆都扫描二维码可使用参数hotReload=True该方法会生成一个静态文件itchat.pkl,用于存储登陆的状态。



消息处理:

首先我们要想一下我们要发给谁消息,然后让树莓派小车做出响应,这里我们可以发送给文件助手,具体代码如下这里使用的是搜索好友的方法:


接下来要判断的就是我们收到的消息是语音还是文本消息,如果收到的是语音的话,我们将其下载下来并使用百度的STT将其转换为文本,如果收到的文本的话,我们可以通过python的find方法来做一下判断,这里我们以前进和开大灯为例,如果我给微信文件助手发送的字符串是开大灯,即为find方法不返回-1,此时为关键字,触发小车做出反馈:


这个时候只需要将电压置于高电压状态,小灯即被点亮。

在举例前进:


微信文件助手收到“前进”,这个时候需要给小车即调用前进函数,此函数被调用两秒即为小车前进两秒,两秒后执行停止命令,电机停止运转,小车停止。

同理黑线循迹依然如此。

再次强调itchat给我们很好的提供了一个接入互联网智能设备的方法,我们可以从此出发来连接万物,可能用文字来描述不太清楚,下面给大家看下测试视频:

微信控制树莓派小车测试视频


但是只是有文字还是不够智能,我们希望一种更为智能的方式说白了就是懒以及更人性化的东西来远程控制,下篇文章就会对这两种方式作出介绍即为STT(Speak To Text),TTS(Text To Speak),语音识别,语音反馈。

实现这两种东西的意义就是我对文件助手发送语音例如“打开大灯”,他会在执行打开大灯命令的同时,通过3.5mm的音频输出设备给我们一个反馈例如会说“好的,以打开大灯”。

以及语音聊天,语音聊天的实现方式即为使用了图灵机器人,然后再使用百度的TTS将图灵机器人回复的文本播放出来,这样就做到了语音聊天,这些都会在下篇做出更新。

最后,现在百度的DuerOS以他方便的硬件和系统,已经有人做到了使用DueroS来控制家居设备,比如坐在沙发上,大喊“小度,小度,打开空调”,无需通过微信而是通过拾音器来做到这一点,这对于未来连接万物以及未来智能设备提供了一种新的思路。



本文纯原创,6月写完之后发布于自己的公共账号,图片所示名字即为公共号的id,转载使用请联系作者,侵权必究。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容