快捷搜索:  汽车  科技

没有取货码如何取件:无人车取货很火

没有取货码如何取件:无人车取货很火MT3608升压模块既然要做一个基于4G网络的超远程控制无人车,那就必须要和硬件打交道,所以杰瑞把需要用到的硬件设备在下面给大家列了出来。树莓派4B

没有取货码如何取件:无人车取货很火(1)

关注《高手杰瑞》,每天更新哦!


前言

各位看官好久不见!最后一次更新到现在大概已经有4个月的时间了吧,好久没有给大家输出干货了,所以今天杰瑞给大家带来一个使用4G模块完成超远程控制无人车的实现过程。

制作过程分为三大步骤,由于篇幅不能过长的原因,杰瑞打算分三篇文章来向大家展示。这三大步骤分别为:代码编写、硬件电路铺设、车架安装

本篇文章将为大家讲解代码编写部分,在阅读本文章之前需要各位看官有一定的Python编程基础,若没有怎么办?答案:关注《高手杰瑞》,每天有编程教学更新!

前期准备

既然要做一个基于4G网络的超远程控制无人车,那就必须要和硬件打交道,所以杰瑞把需要用到的硬件设备在下面给大家列了出来。

  • 树莓派4B一台
  • MicroSD卡一张(16GB或以上)
  • 读卡器
  • 杜邦线公头、母头(若干)
  • L298N驱动板模块(一块)
  • MT3608升压模块(一块)
  • 4G网络模块或迷你WIFI
  • 轮子若干
  • 云服务器一台(搭载windows server 2016并安装Python3.5)
  • 笔记本电脑或台式一台(安装Python3.5)


没有取货码如何取件:无人车取货很火(2)

树莓派4B


没有取货码如何取件:无人车取货很火(3)

MT3608升压模块


没有取货码如何取件:无人车取货很火(4)

L298N电机驱动板模块

整体设计思路

遥控车子并让它动起来这个很简单,对于大家来说并没有什么技术含量对吧?但是如果我们要让他实现远距离控制呢,比如实现10km控制、50km控制,甚至是100KM以上的控制呢?在这里大家肯定会联想到5G技术和早已成熟应用的4G技术,利用4G网络将控制编码发送给车子可以实现远距离低时延操作,但说是这么说,具体要怎么实现呢?

杰瑞的方案如下:


没有取货码如何取件:无人车取货很火(5)

很容易理解,首先使用一台拥有独立公网ip的云服务器作为“中间人”,控制端把控制指令发送给“中间人”,“中间人”再转发给车子,车子再执行接收到的指令。

有些看官在这里就会有疑惑了?控制端为什么不直接把指令发送给车子,而是要经过“中间人”呢?这里要注意一点:车子和控制端使用的普通网络并没有独立公网ip的,这就使得车子和控制端并不能直接进行通信,必须要经过中间服务器才行,因为这台服务器是有自己的独立公网ip的。

通信代码编写(Python版本)

车子上面要编写相应的程序,控制端、中间服务器也一样要有相应的程序,所以我们要编写三个程序,分别是:“被控端”、“转发端”、“控制端”

控制端程序设计

控制端的使用场景展示:“用键盘上的方向键来控制车子的前进、后退、左转、右转等”。

我们将键盘方向键映射成4位数字:第一位是key.up,第二位是key.down,第三位是key.left,第四位是key.right,对应的按键按下则它对应的数字为1,否则为0。

举个例子,若方向上键按下,其他方向键松开则此时表示为:"1000",若方向下键按下,其他按键松开则表示为:"0100",这个就是我们的车子控制编码,一共有4位。现在我们要做的就是:“当我们按下某键或松开某键时,将这四个方向键的组合成的控制编码发送给转发端”。

没有取货码如何取件:无人车取货很火(6)

在这里需要用到三个python库:time(计算延迟)、socket(网络通信)、pygame(键盘监听)。

下图是控制端代码框架,可以实现基本的方向键控制车子功能。

没有取货码如何取件:无人车取货很火(7)


没有取货码如何取件:无人车取货很火(8)


转发端程序设计


转发端程序要实现以下功能:“接收控制编码,转发给被控端”。

转发端实现的思路是这样的,首先控制端和被控端都要主动向转发进行连接,因为转发端是无法主动找到被控端和控制端进行连接的。当控制端和被控端都连接完毕之后,我们再进行数据转发工作。以下是转发端程序源码。


没有取货码如何取件:无人车取货很火(9)


没有取货码如何取件:无人车取货很火(10)

注意:使用控制台命令ipconfig查询云服务器内网ipv4地址来绑定端口。

被控端程序设计

很抱歉,由于篇幅原因,被控端程序设计将在下一篇文章进行详细讲解。关注《高手杰瑞》即时获得更新文章!

文章中代码源文件关注并私信:“超远控RC源码”即可获得源码。

猜您喜欢: