之前大一的时候参加实验室有一个实验室考核,当时自制了C#上位机以及wifi小车,一直没时间记录下来,趁最近有空的时候就写一下。下面这个是我用51做的小车的整体图,可以实现避障、还有图像传输,通过wifi传输摄像头图像到C#上位机进行显示。也可以通过上位机来控制小车的前进后退以及摄像头云台的转动。
首先是小车的控制部分,我用的是l298n来驱动电机,控制代码在此就不赘述了,自己写很容易就能写出来,网上也有很多相关的代码(文后附上我自己编写的代码),摄像头云台用到是舵机的,x宝上有很多,整个车是由12V(3个18650)供电,需要注意的是舵机需要的电流很大,所以大一的时候经常控制摄像头舵机小车用的51芯片就会因为供电不足而复位,因此我在51供电处加了个大电容,避免复位。避障是用舵机+超声波避障,实现起来也很容易。
主要说一下路由器部分的功能(视频传输、C#上位机控制小车)。需要的东西有:openwrt路由器(带USB口且引出串口线)、mjpg摄像头、小车、C#上位机。
路由器我是用的WR703N,可以上x宝购买。可以叫商家帮你刷上用于wifi小车的固件,此外还有重要的一点就是让商家帮你把串口线引出来,自己也可以引出来,但不推荐,稍有差错路由器可能就不能正常工作了。这个是很小巧的路由器,可以刷openwrt系统,至于怎么刷openwrt,可以参见这个网站:http://bbs.eeworld.com.cn/thread-457709-1-1.html。文后有我分享的固件,我分享的这个固件(用于WR703N)已经包括做WiFi小车需要用的软件:mjpg-streamer(传输图像)、ser2net(串口转以太网,用于数据传输)。
说明一点,为什么上述中指明使用mjpg摄像头呢,原因就在于mjpg-streamer这个软件只支持这类摄像头。摄像头的话去x宝搜一下有很多,便宜的也有。
刷好固件安装好相关的软件之后
首先测试视频传输功能:将路由器与摄像头相连接,之后电脑wifi连接路由器,打开浏览器(推荐谷歌/火狐,有些浏览器是不会显示图像的),键入:http://192.168.1.1:8080/?action=stream,如果有显示图像,那么证明图像传输成功。路由器那边会不断的传输图像帧过来,如此便形成了一个实时监控的功能。
接着测试ser2ner是否成功运行:可以使用网络调试助手和串口调试助手进行测试,用网络调试助手连接路由器,将路由器的串口线与ttl转串口连接(注意要共地)之后连接电脑,打开串口调试助手,如果网络调试助手发送的东西能在串口调试助手显示,证明ser2net运行正常。如何已经写好了相关的小车控制代码,那么可以将路由器的串口线直接连接51芯片的串口然后再发送相应的指令进行测试。
到此WiFi小车的功能也就实现了,讲的不太清楚的地方还请见谅。
下面是我自制的C#上位机的界面,界面不太美观,大一的时候学了点C#就上手写了。这个上位机有拍照的功能,说是拍照,其实也就只是保存显示框的图片而已。文后有代码,有兴趣下载自行学习。其中传输图像使用的是HTTP协议,这只是其中的一个方案,还能通过AForge,使用其控件来显示图像,可参考:https://blog.csdn.net/qq_33383940/article/details/83153594。
需要用到的openwrt固件:(已包括ser2net、mjpg-streamer)
链接:https://pan.baidu.com/s/1eA1Po_XAbRHau1BcRapejA
提取码:h9em
C#上位机源码
链接:https://pan.baidu.com/s/1eN4Q4fqqi8GppNY5xo1bNg
提取码:ihz0
小车代码:(大一写的,命名规范等有点不好,仅供参考)
链接:https://pan.baidu.com/s/1HHQArcLNOg1AlCFDRmzJbg
提取码:kpq1