Rovio智能车北极星定位分析

背景

最近在hack rovio小车的定位系统,从一些公开的资料(CSK.Blog-对Wowwee Rovio机器人的拆解和扩展可能性探讨)获知,北极星主芯片与主控板的通信是通过串口,也就是URAT总线进行通信。

接线图如下

从上往下依次为:GND,Reset,TX,RX,CON,VIN

这里面,必须接的是GND,TX,RX,VIN,VIN口电压4.6V,用5V应该也没问题

既然是串口,那么用esp32,甚至单片机就可以驱动起来,理论分析到这,下面就是软硬件上的hack分析

硬件hack

根据上述接口图,从之前的hack分析中,抓取的小车和上位机通信数据包看,位置信息是通过head_position字段传递的,是一个int值,不出意外,这个值是通过北极星主芯片的tx口发给小车主控板的。

为了抓这个数据,把tx口接线柱拆下来,接到usb 串口的rx口后,试图从总线数据上进行分析。

首先,摆在眼前的是波特率问题,因为没有总线分析仪这样高端的设备,只能反复切换波特率尝试,终于在切换到19200时,发现了有效的ascii字符。

然后就把主控板的TX口接到电脑usb串口芯片的RX口上,然后把电脑usb串口芯片的TX口接到北极星芯片的RX口上,硬件这么接的目的,是为了分析主控板的上行通信协议。

随后就碰到一个比较棘手的问题,串口跟TCP端口有所区别,无法像网卡一样,获取所有TCP/IP流,然后过滤指定的端口数据进行分析。端口被某个应用独占后,其它应用无法再打开端口监听端口上的数据包。

为了达到监听的目的,做了如下尝试:

软件hack

在windows上,写了一段python代码,之所以用python,完全是考虑开发环境搭建的简化,批处理没有找到合适的方式,C++要搭编译环境,退而求其次,用了python

首先在windows上安装python3.x,官方网站下载3.5-3.8即可,最新的是3.12了。注意,别被x度导流到国内的二道贩子网站,出二维码缴费,真恶心。

安装过程注意,勾选环境变量和安装pip,后面要用

安装完成,打开命令行,输入pip install pyserial

随后,找个记事本,写下如下代码,保存后缀.py, 用python打开

import serial

from time import sleep
 
def recv(serial):
  while True:
    data = serial.read_all()
    if data == '':
      continue
    else:
      break
    sleep(0.02)
  return data
 
if __name__ == '__main__':
  ser = serial.Serial('com10', 19200, timeout=0.5) #/dev/ttyusb0
  if ser.isOpen() :
    print("open success")
  else :
    print("open failed")
 
  while True:
    data =recv(ser)
    if data != b'' :
      print("receive data & write back ====>: ",data)
      ser.write(data) #数据写回

上述代码的作用是打开窗口com10(根据需要指定),接收主控板发过来的数据,打印出来,随后再发送出去,传递给北极星,相当于再电脑内部做了个环回+打印的功能。

如法炮制,可以在电脑上再安装一个usb ttl适配器,连接北极星上的TX口,这样就能在同一台电脑上,同时监听上下行数据,进行分析了。

软硬件接线图

关于串口工具

过程中用到的工具,做个记录,备忘

1. 串口调试精灵

绿色版的,这个不多介绍了。网上李逵很多,正经的叫sscom

2. Virtual Serial Port Driver

也叫vspd,要下载破解版的。这个软件的作用是可以虚拟出串口,在物理串口和虚拟串口之间建立桥接,桥接后,可以用串口监听软件监听物理串口上的数据,场景是某些下位机通过串口与windows主机通信,因为物理串口被占用,无法监听,所以变通为在桥接的虚拟端口上做监听

3. CommMonitor

与上述vspd配合使用,能够对某些常用的协议做格式化显示,看起来方便些。

4. SerialMonitor,Device Monitoring Studio等

同上

注意,Device Monitoring Studio有的版本还只有tcp端口,没有串口监听,下载了一个8.4的破解版,可用。

http://www.ceiwei.com  这个网站有串口工具下载,非免费版和收费版,免费版也够用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值