最近拿到了小喵科技的迷你巡线小车。
作为“寻常不走路”的DIY人员,关注的绝对不是寻线功能,而是研究如何接下来研究如何实现电脑对小车的遥控。
在经过一番折腾之后,我成功的连接了手机和小车能够实现手机的遥控。从原理上来说,WIFI 模块在这个过程中充当了透明网关的角色,对于手机遥控端来说,它在和TCP/IP
设备打交道;对于小车的主控来说,它是在接受串口指令而已。反编译他们的
App只能看懂他们用了TCP 做连接,代码中使用到的UDP大约只是用来扫描而已。接着找技术支持群,疑似开发人员留下了一句话使用:23端口,就不见了。想象中,他刚说完这句就因为管理员担心泄密直接打晕拖走…….仍然留下一头雾水的我。
忽然想起来,1024以下的端口都是有固定用途的,比如:ftp 是21。而23是 Telnet的。然后直接用系统自带的直接 telnet 上去。每次我在Telnet
上发送消息,小车的串口都会收到对应的消息。为了便于实验,我先刷上默认的代码,其中有一些控制命令可以从代码中看出来:
M0 显示当前版本
M6 后面带2个参数,控制前方的LED开关
M8 返回当前电池电压
M13 后面带4个参数 第一个LED 然后是 R G
B的色彩分量
M18 后面带2个参数 第一个是频率,第二个是播放时长
M19 和上面的M18类似
M200 后面带2个参数,设置左马达和右马达的速度
M202 后面三个参数,左马达和右侧马达速度,持续时间
下面就实验一下直接使用 Windows自带的Telnet来实现控制,小车当前的IP可以从控制的APP中看到,当然也可以从你家路由器的配置界面看到:
下面就连接上了,我输入M0(无回显),小车返回下面的字符给我
接下来,就可以像电影的黑客一样输入字符来控制小车啦。
退出当前 telnet 连接的方法是使用 ctrl+],再输入quit。当然直接关闭窗口也可以。
虽然这样的方法看起来很酷,但是比较麻烦,所以接下来使用C#编写一个 Windows程序来进行控制。选择 C# 的最主要是因为语言简单,特别是在界面开发所见即所得。如果说20年前的Delphi 是 VB Killer的话,眼下 C# 也能称得上 Delphi Killer了。不由得发出“风轮流转”的感叹。
从界面入手,介绍功能:左右放置两个TrackBar用来控制左右轮子的速度,上方放置2个控制LED的Button(具体的做法是Button 上显示图片,通过 ImageList来进行切换),一个 Text输入框用来输入小车的IP,剩下的大按钮是用来控制车前灯。
除了这些可见的控件之外,还有下面三个不可见的控件,2个ImageList 是给Button显示图标用的,一个 Timer是用来每隔100ms发送命令用到(发出的命令是左右轮子转动加持续100ms,
这样就能做到连续运行)。同时Trackbar如果有一个数值低于30就直接停止。