因为舵机和摄像头通常买的都是散件,所以我们需要自己组装,以下是组装时的方法。
这是组装好的图片,咱们一步一步来看
1、摄像头
2、取出摄像头背面一根固定“针”
3、拆下背面螺丝
4、为了固定摄像头架子与摄像头,需要钻孔,用螺丝固定。把摄像头底面凸起的两个耳朵剪掉,正好得到两个孔
5、改造摄像头架子,剪掉两侧,修理平整
6、用改造后的架子与摄像头底部对准,用笔在架子上描出对应的钻孔,钻出两个螺丝孔
7、为了不挡住摄像头背面原有的两个螺丝,对照着在架子两侧钻孔
8、连接摄像头底盖和架子,拧上螺丝
9、摄像头装好,上螺丝
10、安装舵机,注意方向不要装反
11、安装云台支架,对比孔径,发现摇臂太长,剪掉多余部分,上螺丝
12、拆开云台支架,装入另一个舵机,注意舵机方向
13、将上下舵机连接
14、修剪多功能舵脚装入底座,将支架插入底座,拧上螺丝固定,云台摄像头就组装好了
<ignore_js_op>
<ignore_js_op>
D.小车整机的组装1、固定直流减速电机,直流电机和小车底盘的颜色以下图片可能出现不一样的情况,但方法是相同的。首先把直流减速电机的线焊接上去,先不管正负极,用0.1UF的瓷片电容焊接,可以防止干扰和延长直流减速电机的寿命安装直流电机固定支架
2、安装万向轮
3、安装小车车轮
4、固定pcDuino
5、固定电池
6、固定电源模块,注意小车运行过程中电源模块温度较高,勿轻易触碰
7、安装云台摄像头
8、在已经安好的pcDuino上插入T-board转换板,以便于连接电机驱动板
9、安装电机驱动板
10、在pcDuino上连接wifi dongle
这样pcDuino wifi智能小车机器人就组装完成
E.接线说明
1.舵机上下:
红色 (VCC) –> motor shield (VCC)
棕色 (GND) –> motor shield (GND)
橙色(控制线)–> motor shield (D7)
2.舵机左右:
红色 (VCC) –> motor shield (VCC)
棕色 (GND) –> motor shield (GND)
橙色(控制线)–> motor shield (D4)
3.电池(12V)供电线分为两部分:
(1)motor shield (VCC GND)
(2)稳压电路部分 (VIN GND)
4.pcDuino供电:
DIY的电源线 红色(VCC) –> OUT
黑色(GND) –> GND
这样接线就完成
二、软件部分
小车使用关键还在软件部分,在软件方面用pcDuino的Linux系统实现了 WiFi 路由器,视频服务器和TCP/IP通讯。
控制流程及原理:把pcDuino作为一个WiFi 路由器,视频服务器,可以传输实时视频并接受客户端的控制命令,实现从客户端控制小车的移动和摄像头的旋转。
A.pcDuino成为wifi无线路由器
pcDuino官网公布的内核一般情况下只有WiFi STA模式的驱动, 没有IP forwarding的软件 iptables。
因此第一步需要替换pcDuino内核uImage 。
B.安装视频流传输服务器
用开源软件包 mjpg-streamer 来实现视频流传输服务器,客户端可以是浏览器或者是专门的APP。
先安装几个库文件包
- $sudo apt-get install libv4l-dev
- $sudo apt-get install libjpeg8-dev
- $sudo apt-get install subversion
- $sudo apt-get install imagemagick
libv4l-dev 和libjpeg8-dev 是依赖的库。 Subversion和ImageMagick是编译 mjpg-steamer源代码需要用到的。
然后下载,编译安装mjpg-streamer视频服务器软件:
安装好以后,我们还需要开启然mjpg-streamer视频服务器,下面是一个开启服务的命令:
- $mjpg_streamer -i “/usr/lib/input_uvc.so -d /dev/video0 -y -r 320×240 -f 10″ -o “/usr/lib/output_http.so -p 8090 -w /var/www/mjpg_streamer”
其中命令行参数为:
-d: 设备
-r: 分辨率
-f: 帧率
如果你的摄像头不支持MJPEG格式, 我们用 ‘-y’ 指定使用YUYV 格式,而不是MJPEG格式。
-p: 端口
-w: web 目录。
在pcDuino 终端上用’ifconfig’命令来获得pcDuino的IP 地址,然后在终端的浏览器上 输入地址192.168.1.3:8090/?action=steam 来访问实时视频。 其中192.168.1.3是pcDuino的IP地址。
三、安装小车控制程序
1、小车控制程序:car_test.c见附件
首先将代码文件拷贝到C_environment库的sample中,打开sample目录下的makefile文件,在OBJS=后添加car_test
接着将:@for i in $(OBJS); do $(CXX) $(INCS) $$i.c -o $(TARGET)/$$i $(LIBS); done
改为:@for i in $(OBJS); do $(CXX) $(INCS) $$i.c -o $(TARGET)/$$i $(LIBS) -pthread; done
保存并编译,在库中的output/put 目录下就会生成可执行文件car_test
2、开机自运行相关软件及程序:car_test程序可以在/etc/rc.local中添加
- ~$ sudo vim /etc/rc.local
在exit(0) 之前添加程序的完整路径,如:/home/ubuntu/c_environment/output/test/car_test
视频服务需要命令mjpg_streamer 才能运行,可以通过脚本实现:
输入以下内容:
- mjpg_streamer -i “/usr/lib/input_uvc.so -d /dev/video0 -y -r 320×240 -f 10” -o “/usr/lib/output_http.so -p 8090 -w /var/www/mjpg_streamer”
更改权限:
紧接着在/etc/rc.local中添加 /home/ubuntu/mjpg_streamer/mjpg.sh即可
AP自启动通过脚本实现,编写脚本文件AP.sh:
#!/bin/sh
mypath=”/sys/devices/platform/sw-ehci.2/usb3/3-1/3-1:1.0/net/wlan3″
while [ ! -d $mypath ]
do
if [ -d $mypath ] ; then
break
fi
done
service network-manager restart
ifconfig wlan3 up
ifconfig eth0 up
killall hostapd
hostapd -B /etc/hostapd.conf
sleep 2
ifconfig wlan3 192.168.0.1
sleep 3
dhcpd wlan3 -pf /var/run/dhcp-server/dhcpd.pid
sleep 3
echo 1 >/proc/sys/net/ipv4/ip_forward
sleep 3
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sleep 4 hostapd -B /etc/hostapd.conf
echo setAP >/home/ubuntu/log
更改权限
- ~$ sudo chmod a+x AP.sh
- ~$sudo vim /etc/profile
在最后一行添加带路径的AP.sh:/home/ubuntu/AP.sh
保存退出
注意:wifi模块的位置请不要随意更换,这样会造成wlan的值以及脚本文件AP.sh中mypath的改变,致使开机后无法正常工作,调试的时候也是黑屏;解决办法:换回原来wifi模块的位置,或是通过串口查看wlan的值,用find命令查找自己wlan的位置,并修改相应的脚本文件即可。
3、系统备份初次制作,需要按以上步骤完善系统相关功能,为避免意外因素造成系统崩溃从而重新来做,可以对系统进行备份,这样既可以从SD卡启动,也可以在nand系统崩溃后,用SD卡系统进行恢复,制作SD卡启动系统可参见:
http://www.pcduino.com/?p=998
从SD卡到nand时:
- $sudo dd if=/dev/mmcblk0p2 of=/dev/nandd bs=1M && sudo sync
附件:car_test
C.用PC端控制小车
在电脑上安装控制端软件包,运行setup.exe,打开控制端软件如下图
进入系统设置:
其中,视频地址以及可控制地址需要修改为pcduino的ip地址,其他不用更改,保存重启软件即可,PC端控制比较常见也相对简单些
D.用手机端控制小车
1、功能简介
安卓客户端名为WiFiRobot,对应基于pcDuino电路板的机器车。安卓应用软件通过Wi-Fi与机器车实现通信,可控制机器车的前后左右移动、车上舵机的水平方向和垂直方向的转动以及车上照明灯的开关,同时,安卓应用还可以接受机器车上的摄像头拍摄视屏并实现同步实时播放。
在机器车操控方式上,安卓客户端控制机器车的运动的方式有两种。一种是通过按键的方式,另外一种是通过安卓手机上的重力感应传感器的方式,具体方式可通过勾选框进行选择。
在舵机的控制方式上,安卓操控方式也有两种。一种是通过按键的方式,另外一种是通过进度条的方式,具体的选择方式可以通过勾选框进行选择。
2、界面展示
(1) 安卓应用软件主界面
(2) 安卓应用设置界面
(3) 安卓应用说明界面
(4)安卓应用主控界面
3、代码说明
在开发过程中,应用软件主要分为三个模块进行,分别包含在三个包中。这三个模块为界面控制模块、图片格式转换模块和socket通信模块。界面控制模块
(1)界面控制模块在这个模块,有四个Activity,为IntroductionActivity, AboutActivity , SetActivity和MonitorActivity。
IntroductionActivity为界面引导作用。其中start按钮进入主控界面按;userMsgReader方法的作用是读取用户预设置的数据,进行初始化工作;菜单设置里添加了“设置”和“关于”两个菜单,分别引导进入相应的界面;返回键功能方法onKeyDown设置弹出对话框,当用户点击返回键时,弹出是否退出应用软件的对话框。
AboutActivity为显示关于界面作用。显示说明图片为设置的背景图片,返回键功能方法onKeyDown设置弹出对话框,当用户点击返回键时,软件返回到主界面。
SetActivity为设置使用参数作用。进入该界面,当用户输入使用参数后,通过方法获取数据,保存在System_data中,并通过SharedPreferenecs使数据持久化。
MonitorActivity为主控界面作用。在这里,应用软件获取已设置的参数,然后开始了主要的工作。这里的一切工作都由Message机制来实现。不同的功能模块将不同的消息发送给Handler,Handler通过识别不同的消息执行不同的操作,最后实现机器车的控制和视屏的显示。
(2)图片格式转换模块在这个模块中,实现图片格式的转换,具体方式见代码。
(3) socket通信模块在这个模块中,通过socket方式,实现后台的数据的传输和接受。
4、使用说明
(1) 在安卓手机上安装WiFiRobot软件,运行后点击手机的menu按键,出现设置界面
(2) 出现setting选项,进入setting:video address以及control address是pcduino的ip地址,video port为8090,Control port为5000
方向控制:
fore d
left s
back a
right w
light
cam_Up k
cam_L j
cam_Dn i
cam_R l
(3) 设置后保存,点击start就可连接pcduino,