Pop:鬼仔好长时间不更新博客了,今天到他那边发现一个好玩的东西,看来又是在弄高级东西了。看一下鬼仔的小车。
先上图,左边的是一代,2010年做的,右边的是二代,去年年底做的。一直想发一下,希望能够跟有相同爱好的同学做一些交流,但是拖延症太厉害了,我实在斗不过他,一直拖到现在才发。
二代跟一代比起来显得太小巧了,还是一代比较霸气。
一代是基于51单片机的,二代是基于 Arduino 的。
Wi-Fi 小车这个名字应该好理解,从名字就能看出来,就是通过 Wi-Fi 控制的小车,但是除了行驶外,添加了一些别的功能,进行了强化。其实这个想法很早就有人实现了,但是自己实现起来会更有乐趣,再加上自己从小就喜欢做手工,也比较喜欢硬件,喜欢折腾,就开始尝试自己去做了。
在一代做出来之后,发现一些问题,所以没有继续后续的加强,而是想换别的方案重新做,后来知道了 Arduino ,经过一番了解后,发现没有比它更适合做类似的东西了,而且开发起来要比单片机简单多了,在简单的学习 Arduino 之后,就开始用 Arduino 来重做小车了。感兴趣的同学可以了解下 Arduino ,这里就先不介绍了。
为了整理下发出来,把放了好久的一代也拿出来了,跟二代一起录了视频进行演示,下面会分别把视频贴出来。
一代:
演示视频:
演示视频中,能看到摄像头获取的视频不清晰,并且有时候会闪,视频不清晰是因为摄像头比较差,画面闪的问题以前是不存在的,不知道现在怎么出现了这个问题,因为一代不准备继续了,因此也就没有去查原因,只是录了视频。
主要实现的功能:
1. 小车行驶控制
通过浏览器控制小车行走,无物理线路连接,通过键盘 W、A、S、D 进行操作。
2. 摄像头视频实时查看和摄像头方向控制
小车安装有摄像头,接在路由器的 USB 口上,可将视频实时回传给控制端,在浏览器中即可看到摄像头获取到的视频,并且可以控制摄像头上下左右各180度旋转,方便查看各个方向的情况。摄像头的方向通过直接点击画面进行调整。
3. Hacking
通过小车上无线路由器中的嵌入式 Linux 可以进行一些 Hacking 行为。
4. 3G
通过在无线路由器上接入 3G 网卡,达到从公网进行控制的目的。
说明:
最初是在无意间在网上看到有人发出来的一个 Wi-Fi 小车的视频,当时看了之后就很感兴趣,于是就查找相关的信息,看到了老外以前有做过类似的东西。但是自己对单片机方面的知识是空白,可以说是白痴,很难入手。看到国内有人也在做类似的东西,就进行联系,对方做单片机的开发,做出了控制板,但是没有相应的控制程序和整体的方案,因此就基于对方做的控制板开始了摸索的过程。
ps:这个方案我后来没有继续用,也没有继续参加后续的制作,但是那个朋友还在继续完善他的方案,我不清楚现在的效果如何,因为我发现了更好的方案,所以后续没有跟进。为了避免广告的嫌疑(毕竟是要用钱买的),如果有同学对这个方案比较感兴趣的话,可以单独跟我说,我会将对方的信息发给你,然后由你自行联系。
在这个过程中借鉴了老外的思路,通过将单片机与无线路由器进行结合,达到控制小车的目的。后来陆续购买了电机、锂电池、车轮子、联轴器、舵机、铝壳等配件,这里要感谢我的老爸,帮我买铝壳,帮我用电钻打孔。
一代的主要工作流程中控制信号是这样传递的:
浏览器控制端 ---> 无线路由器 ---> 51单片机控制板 ---> 电机、舵机等
无线路由器之前比较熟悉,以前也玩过一些无线路由器,并且基于 OpenWrt 做过一些二次开发,因此这里无线路由器的 rom 我就选择了自己熟悉的 OpenWrt ,通过串口将无线路由器与控制板进行连接,在 OpenWrt 中配置了 Web 服务器与 PHP ,写了一个 Web 的控制端,这样一个 B/S 结构小车控制程序就出来了,电脑通过无线路由器的 Wi-Fi 连接到无线路由器,通过浏览器将指令传递给无线路由器,再由路由器将指令传递给控制板,通过协定好的指令来控制电机和舵机。
Web 控制端的截图:
界面写的很烂,还包括了很多调试信息,因为没有继续这个方案,所以没有对界面进行后续的美化和完善。
-----------------------------------------------------------
二代:
演示视频:
二代目前实现的功能比较简单,只是实现了行走,一样无物理线路连接。
说明:
在做二代的时候,吸取了以前的教训,不再买铝壳自己做车身了,而是在网上买了做车模的车身、电机、轮子的套装。
二代的主要工作流程中控制信号是这样传递的:
Android 控制端 ---> 蓝牙模块 ---> Arduino ---> 电机驱动器
或者
浏览器控制端 ---> Android 控制端 ---> 蓝牙模块 ---> Arduino ---> 电机驱动器
由演示视频中可以看出,二代是用手机进行控制的,手机系统是 Android ,写了一个控制小车的 App ,通过蓝牙与小车进行连接,将控制指令传递给 Arduino ,再由 Arduino 来控制电机驱动器,达到控制电机的目的。
另外在手机端的控制程序中还内置了一个 Web 服务器和 Web 的控制端,控制方式基本和一代的相同,可以将电脑与手机连接到同一 Wi-Fi 网络中,或者电脑连接手机开放的热点,或者通过 3G 访问手机提供的 Web 服务(这个我未测试),就可以通过浏览器来控制小车了。
这里跟一代区别比较大,从无线路由器转换到了手机,因为手机集成的东西更多,比如 GPS 、摄像头、陀螺仪、加速度传感器等,可以通过手机控制,也可以将手机放置在小车上,当作大脑,通过各平台的浏览器进行控制。但是手机有一个缺点,体积比较大,想控制摄像头上下左右转的话比较麻烦,而且系统没有 OpenWrt 这种嵌入式 Linux 自由。
因此后续可能还是会选择在小车上搭载一个无线路由器,因为在无线路由器中,可以做更多有意思的东西,而且现在也有了更小巧的无线路由器。
另外,一代和二代都是四驱的,没有转向轮,车子转向是通过一侧的轮子向前转,另外一侧的轮子向后转来实现的。
-----------------------------------------------------------
后续计划:
一代的方案不再继续了,还是继续二代 Arduino 的方案。平时工作比较忙,一直没有时间做后续的功能和加强,目前的计划是加上液晶屏,可以通过液晶屏传输文字给看到小车的人,添加声音的传输,跟看到小车的人进行对话,另外计划添加机械臂、GPS模块、距离传感器(超声波)、红外、温度传感器、加速器传感器、倾角传感器、声音传感器、寻线等等,并且还是以 B/S 的结构做控制,可以在浏览器中进行控制以及查看各种传感器的数据和地理位置等等,因为浏览器的通用型更强一些,适应各种平台。如果你有更好的想法,也希望能够告诉我。 :)也一直想做四轴飞行器,包括航拍等,由地面扩展到空中。
至于用途,一是为了玩,二是可以有一些很邪恶的用途,看你怎么想,怎么用了。
-----------------------------------------------------------
简单的介绍和说明主要就是这些,因为时间比较长了,也一直没有整理,可能有遗漏的地方,想到后会及时更新。
欢迎有兴趣或者有相同爱好的同学跟我联系,不只局限于小车,比如 Arduino 、硬件、开源硬件、机器人、电子等方面,交流想法和经验、共同学习,可以通过留言或者邮件联系我, guizaicn@gmail.com ,也可以通过微博联系我 http://weibo.com/359421 。:)