WOWWEE ROVIO小车改造思路

news2025/2/21 0:51:58

     23年5月接触到这个车,大约是07年的玩具,初看到外观,真的是惊艳,三爪着地,长长的脖子,有些科幻电影中外星生物的味道。这个ID设计,放到今天,也是能镇住国内一众玩具厂商的。惊讶之余,从它的配置看,也是能碾压一部分号称智能小车的。列举了几个配置,直接从网上扒拉的

19454494426d4114980376bf62f6a5c3.jpg

 

 

我看重这个车的,除了外观,还有它一个很实用的特性,就是自动导航归位充电,这个特性对于远程控制而言太重要了,否则再顺畅的操控体验,永远被续航的焦虑所制约。从网上找到了一些资料,介绍其导航系统,搬运过来:

 

 

这个车还有个特点是麦科姆轮设计,这可是07年的设计,要知道国内也是最近几年玩具界才流行起来麦科姆轮,从知乎上一个答主提供的信息看,当年这三个轮子的驱动程序,是一个台湾团队负责,不可谓不超前。

 

这个车的相机还通过一个马达驱动,可以提供高中低三个俯仰角度,用于控制相机的视角,其他还包括大灯,麦克风,扬声器,红外避障等,不一一介绍了。

 

 

【Hack分析】

笔者从闲鱼收了一个后,迫不及待摸索了一遍软硬件实现,目的是为了为后续改造提供理论分析基础,在前面的介绍基本功能基础上,本章节就直接说结论了。

1. WIFI部分

        这个车出厂是以Ad-hoc方式提供热点连接方式,可惜的是,Android和Windows已经不支持Adhoc了,苹果和一些嵌入式设备支持,连接此热点后,因为没有dhcp,还需要手动设置设备的IP,连接成功后,可以通过小车的IP地址192.168.10.18访问小车的浏览器网页。

        这个网页连接后,可以通过设置界面,修改小车的连接方式,让小车作为Client连接某个AP,这个AP可以是家里的路由器也可以是一个手机,但不管怎样,小车仅支持WAP认证,这种不安全的认证方式,安卓和IOS已经不支持了,通过这种方式连接后,让客户端和小车处于同一局域网,这样就可以实现较大范围内的遥控了。如果是家庭局域网,加上端口映射后,远程控制也通了。

     不得不说,上述操作过于繁琐,对基础知识要求有点高。在当今短视频流行,对于大部分只能接受视频输入的人群,这种复杂的,人机交互繁琐的玩具只能被扔进垃圾堆了。从另一个角度,因为上述两种连接方式的限制,很多人的这个车已经完全处于闲置状态,某鱼上有很多。

2. Camera

        这个车的Camera提供四种分辨率,最大也就是420P,获取图像的方式是通过一个http的请求,小车返回一个jpg图像,端侧进行解码后显示,效率相当低下,视频质量也不高,放现在看,这就是最大的短板。

 

3.室内定位

        通过拆解,可以发现这个车的定位系统使用的是红外,用的三方公司的北极星定位系统,大概的原理就是通过固定了两个红外光源反射的光束,计算室内的相对位置,精度理论是10cm,实际不止,笔者的小车,误差估计有50cm;现在比较流行的室内定位是激光定位,大量的扫地机器人用的就是激光定位

 

4.运动部分

        如前文介绍,这个车使用了3个麦科姆轮实现运动控制,通过在Windows和安卓抓包,很容易就发现这个车的驱动是通过前端发送http请求,携带方向和速度信息,由主控板解析成3个电机的控制指令,交给驱动板,控制3个电机的转动。一个控制指令大约可以维持电机转动500ms,所以,如果需要小车连续运动,需要不断的发送http请求,而且请求是通过多年前的cgi脚本控制,每次发送请求后,并不会维持tcp连接,所以下个请求又要重新建立tcp连接,效率是相当低下。

 

5.安卓客户端

       考虑到 IOS客户端是收费的,Windows客户端使用用户太少,所以本章节重点讨论Android客户端,通过decompile,很容易发现代码是轻度混淆过的,不过界面逻辑不复杂,代码逻辑也很容易理清楚;主要包含几个关键的

1. AndRovio是主程序,是Activity的子类,启动后除了UI线程,还启动了两个线程,获取小车状态和获取camera图像

2. 获取小车状态线程:每隔5秒执行一次,获取电量、位置信息、WIFI强度信息,显示到界面上

3. 获取camera图像线程,循环执行,获取jpg图像,界面,绘制界面

4. 其他,包括截屏,录像,大灯控制,摄像头摆动,都是通过http请求完成,具体可以看api文档,讲得很清楚。

    不得不提一句,这个小车的资料是真的多,软硬件的资料,甚至有控制板的全部代码,可以编译烧录的,加上客户端源码,对于电子爱好者,真的是福音,开源友好程度,不弱于Ardiuno

 

【改造思路】

        在上述分析基础上,大致的改造思路也有了,总的来说包含几部分:

1.供电

        供电是必须改的,原车的镍氢电池早就处于废弃状态,改锂电,6v改7.4v,3000mah改6400mah,同时保留原来的充电板,因为电量采集功能在这块板子上,充电板改成7.4v平衡充,原充电板的充电部分电路就废弃了,直接把充电的输出端接到锂电上。原车的电源标的是8v,2.7A,实际用万用表测试是8.4v,这就是标准的2s锂电充电电压,非常完美。

     早年是有爱好者自己做了锂电充电板的,在淘宝销售,现在已经找不到店铺了,可惜了。不过不通过电源板充电问题不大,上述改造只是会导致电压检测不准,实际使用过程发现在低电量状态,电压检测准确度基本恢复到镍氢电池的水平,基本不影响低电归位。

 

2.相机

    上文提及了,原车相机非常拉胯,分辨率低不说,硬件效率也不高,视频经常卡顿。加上安卓客户端获取视频流的方式,进一步拉低了视频质量。笔者尝试把视频流获取方式从tcp短链接改成了长链接方式,在局域网下,有明显提升,但如果改成4g lte网络,卡顿又出现了,瓶颈在小车硬件本身,不换硬件,纯软件优化无解!

    改造思路,屏蔽小车原摄像头用新硬件替换。原车把相机模组拆下来后,主控板无法启动,需要在固件中屏蔽检查模组状态的代码,这是前提,然后就是加三方的摄像头,淘宝上无人机用的wifi图传摄像头很多,也不贵。关键是板子面积要足够小,不然塞不到原本摄像头的位置。然后还需要解决散热问题,实测发现,720p的摄像头散热需要用石墨烯贴纸,1080p必须用散热片,而这么狭窄的位置,根本没法放散热片,所以笔者的改造用了一个720p的摄像头,实际视频效果也不错,清晰度在一般玩具的中上水平,室内监控足够了。

    另外图传摄像头需要说明的是,大部分卖家会提供配套的安卓app,至于怎么显示到手机上,安卓提供了悬浮app权限,大家都这么用。笔者研究了淘宝上销售的十几款wifi图传的配套app,方案就那么几家,有两家的视频传输库是可以有安卓接口层源代码的,这样就可以把so提取出来,集成到小车app中,让视频流替换原本的小车视频流。而小车原本的摄像头已经拆下来了,对应的软件代码也可以删除。这样就做到了无缝的替换,至此,视频部分的改造结束,实际测试,延迟还是很低的,约200~300ms,这已经是通过运营商lte网络传输效果。

  关于硬件连接,wifi图传自然不需要考虑视频流的传输介质问题,只要解决电源问题,图传一般是3.7~5v供电,这个应该很容易解决,小车的主控板就是5v供电,找到红黑线,万用表量下,接上即可。

上个视频:

 

3 wifi连接 

   原车wifi连接是通过adhoc方式,这就限制了连接的硬件平台,安卓是肯定不行了。换个思路,体积小的嵌入式并且支持adhoc的,很容易就想到openwrt,这个平台对wifi硬件支持非常好,而且是路由系统,管理多个网络连接绰绰有余,加上丰富的三方应用。最重要的,支持的硬件非常多,arm,x86均支持。这么多硬件里找个体积小的,答案也挺明显,tplink 703n。

   硬件改造:

   703板子flash换成8M,原来的4M太小,放不进去固件,天线最好也升级下,引出贴片天线的线,解决电磁干扰的问题。外壳扔了,没用。

   软件改造:

   自己编译个703N固件,最新的能用的是17.06版本的lede,加上ipv6,socat编译出img,烧录进去。

   703N的角色,真就是一个路由器,他把小车,wifi图传,随身wifi三个设备连接起来。把来自于客户端的控制信令转到小车上,再把wifi图传的视频流通过随身wifi发出去,显示到客户端。实测待机状态cpu占用2%,控制信令跑起来cpu占用无明显变化;720p视频流跑起来,cpu占用20%,毕竟720p视频流经过图传h264编码后,也就1M带宽占用,703N干这个,应该是绰绰有余。

 

4 公网连接

   这个不多说了,一个随身wifi就可以解决了,要求高点就去酷安蹲点,研究下刷版本,改外卡之类,要求不高就淘宝买几个,用商家提供的流量,一个月几块钱,商家跑路了就换一个。

   有人不禁要问,随身wifi都能跑安卓了,替换703N应该是可以的吧,不替换的原因是什么?笔者试过,随身wifi的安卓版本是4.4或者5.1,这两个版本的安卓还不支持wifi与蜂窝流量并发,连上wifi就断蜂窝。有人又问,那把安卓刷成openwrt? 笔者又趟过浑水了,随身wifi大多是单天线,连了小车的adhoc就连不了wifi图传。综上,让每个角色各归其位,随身wifi就负责提供稳定的蜂窝网络连接,703N就负责稳定转发数据,费电就费电吧,18650电池也不是吃素的。

 

5 总体

   把上述单个模块的软硬件准备好后,剩下的就是整个串起来,把软件调稳定,把安卓app调试通过,稳定运行。

    然后就是把各个硬件“塞”进车里,这个过程也不得不动原车的塑料件,一把好的刮刀,加上小型手钻可以解决大问题。

    安装过程要注意的,电压电流匹配,电流小的话板子不稳定,还有注意电磁屏蔽,好几个wifi同时工作,天线的布局有些讲究。最后就是散热,发热严重的就是小车的主控板,电机驱动板,wifi图传,随身wifi棒子,这几个可以通过铝片,石墨烯贴片等解决散热,空间够,加个静音小风扇也是可以的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/615097.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浅谈 ByteHouse Projection 优化实践

预聚合是 OLAP 系统中常用的一种优化手段,在通过在加载数据时就进行部分聚合计算,生成聚合后的中间表或视图,从而在查询时直接使用这些预先计算好的聚合结果,提高查询性能,实现这种预聚合方法大多都使用物化视图来实现…

基于javaweb jsp+SSM 简易版教务管理系统的设计与实现

目录 一.项目介绍 二.环境需要 三.技术栈 四.使用说明 五. 运行截图 六. 视频演示 一.项目介绍 本系统分为管理员、老师、学生三类 管理员:维护课程信息、维护老师信息、维护学生信息、密码重置(其他账户)、修改密码、退出系统 老…

macOS Sonoma 14.0 Beta 1 (23A5257q) ISO、IPSW、PKG 下载

macOS Sonoma 14.0 Beta 1 (23A5257q) ISO、IPSW、PKG 下载 本站下载的 macOS 软件包,既可以拖拽到 Applications(应用程序)下直接安装,也可以制作启动 U 盘安装,或者在虚拟机中启动安装。另外也支持在 Windows 和 Li…

JVM暂时私有

Jvm: 一、类加载器分类 引导类加载器:BootStrapClassLoader(出于安全考虑,Bootstrap启动类加载器只加载包名为java、javax、sun等开头的类)自定义类加载器:Extension ClassLoader AppClassLoader (Tomcat也…

DBeaver 23.0.5发布

导读SQL 编辑器是一款功能强大的数据库管理工具,为用户提供了便捷的 SQL 编写和编辑功能。最近,该编辑器进行了多项更新,提升了使用体验。 首先,WHERE 和 SELECT 等自动完成功能现在显示与别名表的别名。用户可以使用键盘快捷键或…

https通信加密原理

为什么要用https HTTP 由于是超文本传输协议,是一个简单的请求-响应协议,它通常运行在TCP之上,它是明文传输,不能保证数据的完整性,不能保证是否被窃听,不能保证数据是否被篡改 https采用了一些加解密&am…

安装银河麒麟操作系统

文章目录 一、安装银河麒麟操作系统1.1、简介1.2、银河麒麟高级服务器操作系统V101.3、下载银河麒麟镜像1.4、安装银河麒麟操作系统兼容版 一、安装银河麒麟操作系统 1.1、简介 银河麒麟(KylinOS)原是在863计划和国家核高基科技重大专项支持下&#xf…

HFish蜜罐部署教程(windows版)—HW蓝队主动防御利器

文章目录 前言基础环境蜜罐部署管理端部署添加节点&开启服务 攻击展示端口扫描测试目录扫描测试POC测试 && ssh测试失陷测试 酷炫大屏后记Tips 前言 一年一度的HW马上又要来了,【不过听说今年推迟了一些】 ,各位师傅应该都按耐不住了&#…

Tcl-12. 数组

TCL支持通过数组的形式存储多个元素。 Tcl中的数组和其他高级语言的数组有些不同:Tcl 数组元素的索引,或称键值,可以是任意的字符串,而且其本身没有所谓多维数组的概念。数组的存取速度要比列表有优势,数组在内部使用散…

从理论上理解SQL注入、XSS、中间件解析漏洞、挖矿马

目录 1、SQL注入 (1)原理 (2)分类 (3)防御 2、XSS (1)原理 (2)分类 3、中间件(解析漏洞) (1)IIS6.X …

JDK安装教程

jdk 链接:https://pan.baidu.com/s/1xAFaR7AQdy_hPVFHc1CVnA 提取码:cypz 环境配置 1、我的电脑–》右键属性–》高级系统设置–》环境变量 2、系统变量–》新建系统变量–》完成后点击确定 变量名:JAVA_HOME 变量值:&#xff0…

chatgpt赋能python:Python中的分词技术及其应用

Python中的分词技术及其应用 什么是分词? 分词是自然语言处理(Natural Language Processing,NLP)中的一个重要环节,指将一段文本切分成若干个单词或词组。在中文分词中,由于中文没有明显的词汇边界&#…

进入IT领域,多久能月入过万?

当下打拼的很多人都有这样的困惑:刚毕业或者工作时间不长,也有一些基本技能,对未来有美好憧憬,一身干劲,却拿着微薄的薪水过着捉襟见肘的生活。 有些同龄人进入IT领域后快速升职加薪,观望者经常会问&#…

C++设计模式之生成器模式(Builder)

文章目录 定义前言1. 问题2. 解决方案 结构适用场景实现方法优点缺点与其他模式的关系实例 定义 生成器是一种创建型设计模式,使你能够分步骤创建复杂对象。该模式允许你使用相同的创建 代码生成不同类型和形式的对象。 前言 1. 问题 假设有这样一个复杂对象&a…

100种思维模型之事物关系思维模型-72

具体的事物是形象的、容易观察和理解的,而事物间的关系则容易让人忽视,乃至无法意识到它正在发生作用。 生活中,我们习惯于低估事物关系的影响。 事物关系思维模型一个提醒我们关注事物关系、从宏观层面找到更好的工作方向、实现可持续发展的…

显示反馈与隐式反馈

文章目录 1. 数据分类2. 显性反馈数据模型评价方法:3. 显式反馈转换为隐式反馈4. 隐式反馈的作用5. 参考资料 本文来介绍一下显示反馈与隐式反馈,作为我学习推荐系统的笔记以便日后忘记了可以回过头来温习。 1. 数据分类 显式反馈是指:用户明…

光量子计算机+GPU!NVIDIA、Rolls-Royce和Classiq宣布取得技术突破

​ (图片来源:网络) 5月21日,英伟达(NVIDIA)、罗尔斯罗伊斯(Rolls-Royce)和以色列量子软件公司Classiq宣布了一项量子计算技术突破成果,旨在不断提高喷气发动机的效率。 …

AB32VG:(2)app.cbp工程源码阅读笔记(ADC按键和红外)

文章目录 1.SDK文件目录2.ADCKEY和红外遥控器相关源码2.1 初始化2.2 在定时器中断服务程序中查询按键 3. 更改参数以适应自己的ADC按键板3.1 我的ADC按键板硬件3.2 ADC值转换为键值 4.红外遥控器5. 相关配置 参考文章: 作者:nunu1010,中科蓝…

VSCode+Git+TortoiseGit+Tools

目录 一、Tools 1、VSCode(visual studio code)下载安装 VSCode使用技巧和经验 2、Git下载安装 3、TortoiseGit 简介 3.1、下载安装Git及Tortoisegit 3.2、Tortoisegit拉取gitee仓库到本地 3.3、Git拉取gitee仓库到本地 3.4、Git提交到gitee仓库 4、国内获取GitHub链…

华为OD机试真题B卷 Java 实现【蛇形矩阵】,附详细解题思路

一、题目描述 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 例如,当输入5时,应该输出的三角形为: 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11 二、输入描述 输入正整数N(N不大于100)。 三、输出描述…