【视频监控小车】基于pcDuino的WiFi实时视频监控智能小车
在这里我们详细地介绍了如何用pcDuino来搭建一款WiFi实时视频监控小车,下面我们从硬件和软件两个方面进行详细介绍。、
一:软件部分
在硬件方面,我们用Arduino的Motor Shield 来驱动小车的马达和摄像头的云台舵机。
A.工具的准备
斜口钳、尖嘴钳、3毫米套筒、2毫米一字螺丝刀、3毫米十字螺丝刀、5毫米十字螺丝刀、万用表电烙铁、焊锡、胶带、镊子、壁纸刀(可能用到的工具还不止这些,只要好用大家都可以试试)
B.配件的认识
1、pcDuino作为智能控制板和控制核心,主要实现视频传输以及控制小车上所有的模块和机械部分,发挥小车大脑的作用。
硬件特性
CPU: 1GHz ARM Cortex A8内核
GPU: OpenGL ES2.0, OpenVG 1.1 Mali 400 core
DRAM: 1GB
板载存储: 2GB Flash, microSD 插槽扩展至 32GB
视频输出: HDMI
扩展接口: 2.54mm Headers兼容Arduino
以太网: RJ45接口以及可扩展 USB WiFi(未包括)
电源: 5V 2A
尺寸:125mm X 52mm
软件特性
操作系统:Ubuntu
API:所有Arduino扩展引脚可以通过API访问,包括UART、ADC、PWM、GPIO、SPI、I2C
编程语言支持:C, C++ with GNU tool chain,Python, Java等各种流行编程语言
2、12V/2A电源,此电源可给小车充电和外部供电用
3、云台摄像头是由2个舵机组成,进行上下180度和左右180度旋转控制,USB摄像头线直接插在pcDuino上
舵机摄像头参数:像素:30W感光元件:COMS感光元件尺寸:4386*3.64 mm最高分辨率:640*480视屏格式:26bit RGB接口:USB2.0高速传输接口,兼容USB1.0自动白平衡,色彩补偿4、除了云台摄像头外其他的配件合照
5、电池这里用的是大容量锂电子可充电池,使用时请按照锂电池的安全事项,避免发生意外。输入电压12.6VDC,输出电压:12.0VDC 4800mAh
6、小车底盘主要是固定所有的小车配件,注意以下图片中底盘是透明的只是颜色不同7、万向轮主要是支撑小车后面的底盘,安装螺丝时要注意:不要把有螺母的一端向下固定,这样会影响万向轮的转向8、小车车轮和直流减速电机,直流减速电机给整个小车提供动力9、直流电机固定支架,安装时3个孔的方向是固定在小车底盘上,2个孔是固定直流减速电机10、电机驱动板motor shield特点:
[*]兼容Arduino
[*]脉宽调制速度控制模式
[*]4个方向指示灯
[*]兼容 Linker Kit 2.54mm间距Grove插件和传感器
[*]更大型号的散热装置
[*]支持14个舵机
[*]尺寸:68.5×54.5×29.5 mm
注意:当工作电流超过1000mA时驱动芯片和散热片温度会很高11、T-board,用于连接pcDuino和motor shield,板上有3.3V和5V电平转换按钮
这是T-board的原理图 https://s3.amazonaws.com/cutedig … pcduino_T_board.pdf
12、电源模块原理图
实物图:
尺寸:长x宽 75x29mm两孔之间距离:50mm输入电压:12V输出电压:5V输出电流:2A13、WIFI Dongle:支持IEEE 802.11 b / g / n标准,支持USB 2.0的连接,是一种低成本紧凑型WLAN模块,尺寸:32×13 mm
这是组装pcDuino WiFi实时视频监控智能小车的重要零部件,重点是让大家更好地了解它的组成部分以及各部分的功能!C.云台摄像头的组装
因为舵机和摄像头通常买的都是散件,所以我们需要自己组装,以下是组装时的方法。
这是组装好的图片,咱们一步一步来看
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 。
把wifiAP 拷贝到ubuntu 目录:
[*]ubuntu@ubuntu:~$ ls
[*]Desktop Downloads Pictures Templates c_enviroment wifiAP
[*]Documents Music Public Videos sample
[*]$ sudo mount /dev/nanda /boot
[*]$ sudo cp uImage /boot -f
[*]$ sudo cp evb.bin /boot -f
[*]$ sudo cp 3.4.292B.tar.bz2 /lib/modules/
[*]$ cd /lib/modules/ubuntu@ubuntu:/lib/modules
[*]$sudotar -xvf 3.4.292B.tar.bz2
重启动:
[*]$sudo reboot
用‘$lsmod’命令查看软件模块:
[*]root@ubuntu:/home/ubuntu# lsmod
重启动后, 编辑/etc/modules, 去掉 rt5370sta.
[*]$sudo modprobe rt2800usb
[*]$echo 148F 5370 > /sys/bus/usb/drivers/rt2800usb/new_id
上面的命令也可以在调试串口编辑。
现在如果我们启动wlan, “$ifconfig wlan3 up”, 我们得到下面的出错信息:
[*]oot@ubuntu:~# ifconfig wlan3 up
[*][ 1043.640000] phy0 -> rt2x00lib_request_firmware: Error – Failed to request
[*]Firmware.
[*]SIOCSIFFLAGS: No such file or directory
上面的出错信息表明没有USB WiFi Dongle的固件,我们需要把它放到正确的地方。用命令“$modinfo rt2800usb” 来发现固件的名字为: rt2870.bin.
[*]root@ubuntu:~# modinfo rt2800usb
[*]filename: /lib/modules/3.4.29+/kernel/drivers/net/wireless/rt2x00/rt2800usb.ko
[*]license: GPL
[*]firmware: rt2870.bin
[*]description: Ralink RT2800 USB Wireless LAN driver.
[*]version: 2.3.0
[*]author: http://rt2x00.serialmonkey.com
拷贝固件到正确的位置:
[*]$sudo cp rt2870.bin /lib/firmware/
现在我们再次启动wlan, 就能发现我们有了WiFi连接了!
[*]”$sudo ifconfig wlan3 up”
安装iptables:
[*]$sudo apt-get install iptables vim iw
安装完毕后,检查iptable是否正确安装:
[*]$sudo iptables -L
[*]root@ubuntu:~# iptables -L
[*]Chain INPUT (policy ACCEPT)
[*]target prot opt source destination
[*]
[*]Chain FORWARD (policy ACCEPT)
[*]target prot opt source destination
[*]
[*]Chain OUTPUT (policy ACCEPT)
[*]target prot opt source destination
下载然后编译hostapd:编译的过程中需要“libnl-dev” 和 “libssl-dev”.我们需要先安装他们。
[*]$sudo apt-get install libnl-dev libssl-dev
Hostpad 1.0 可以从http://hostap.epitest.fi/releases/下载。完整的命令集为:
[*]ubuntu@ubuntu:~$ wget http://hostap.epitest.fi/releases/hostapd-1.0.tar.gz
[*]ubuntu@ubuntu:~$ tar xvf hostapd-1.0.tar.gz
[*]ubuntu@ubuntu:~$ cd hostapd-1.0
[*]ubuntu@ubuntu:~/hostapd-1.0$ cd hostapd/
[*]ubuntu@ubuntu:~/hostapd-1.0/hostapd$ vim defconfig
找打这行 “#CONFIG_IEEE80211N=y”, 去掉‘#’, 保存然后退出。
[*]ubuntu@ubuntu:~/hostapd-1.0/hostapd$ cp defconfig .config
[*]
[*]ubuntu@ubuntu:~/hostapd-1.0/hostapd$ make
[*]CC main.c
[*]CC config_file.c
[*]CC ../src/ap/hostapd.c
[*]CC ../src/ap/wpa_auth_glue.c
[*]CC ../src/ap/drv_callbacks.c
[*]CC ../src/ap/ap_drv_ops.c
[*]CC ../src/ap/utils.c
[*]CC ../src/ap/authsrv.c
[*]
[*]ubuntu@ubuntu:~/hostapd-1.0/hostapd$ sudo make install
[*]mkdir -p /usr/local/bin
[*]for i in hostapd hostapd_cli; do cp -f $i /usr/local/bin/$i; done
[*]
[*]
检查hostpad 是否安装正确:
[*]ubuntu@ubuntu:~/hostapd-1.0/hostapd$ hostapd -v
[*]hostapd v1.0
[*]User space daemon for IEEE 802.11 AP management,
[*]IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
[*]Copyright (c) 2002-2012, Jouni Malinen <j@w1.fi> and contributors
[*]
[*]
现在我们开始配置hostpad.我们希望我们的热点有下面的配置:SSID: ssid=pcduinoPassword: wpa_passphrase=1234567890Encryption: wpa_key_mgmt=WPA-PSK用下面的方法配置:
[*]root@ubuntu:~# nano /etc/hostapd.conf
[*]
[*]interface=wlan3
[*]driver=nl80211
[*]ssid=pcduino
[*]hw_mode=g
[*]channel=11
[*]dtim_period=1
[*]rts_threshold=2347
[*]fragm_threshold=2346
[*]macaddr_acl=0
[*]auth_algs=1
[*]ieee80211n=0
[*]wpa=2
[*]wpa_passphrase=1234567890
[*]wpa_key_mgmt=WPA-PSK
[*]wpa_pairwise=TKIP
[*]rsn_pairwise=CCMP
[*]
[*]
注意: wlan3 变了, 我们必须一直用 ‘‘ifconfig” 来检查。配置好了后,我们用下面的命令来检查配置:
[*]root@ubuntu:~# hostapd -dd /etc/hostapd.conf
[*]random: Trying to read entropy from /dev/random
[*]Configuration file: /etc/hostapd.conf
[*]nl80211: interface wlan4 in phy phy0
[*]rfkill: initial event: idx=0 type=2 op=0 soft=0 hard=0
[*]rfkill: initial event: idx=1 type=1 op=0 soft=0 hard=0
[*]nl80211: Using driver-based off-channel TX
[*]nl80211: Register frame command failed (type=208): ret=-114 (Operation already in progress)
[*]nl80211: Register frame match – hexdump(len=1): 06
[*]nl80211: Failed to register Action frame processing – ignore for now
[*]nl80211: Add own interface ifindex 5
[*]nl80211: Set mode ifindex 5 iftype 3 (AP)
[*]nl80211: Create interface iftype 6 (MONITOR)
[*]nl80211: New interface mon.wlan4 created: ifindex=7
[*]nl80211: Add own interface ifindex 7
[*]BSS count 1, BSSID mask 00:00:00:00:00:00 (0 bits)
[*]nl80211: Regulatory information – country=00
[*]nl80211: 2402-2472 @ 40 MHz
[*]nl80211: 2457-2482 @ 40 MHz
[*]nl80211: 2474-2494 @ 20 MHz
[*]nl80211: 5170-5250 @ 40 MHz
[*]nl80211: 5735-5835 @ 40 MHz
[*]nl80211: Added 802.11b mode based on 802.11g information
[*]Allowed channel: mode=1 chan=1 freq=2412 MHz max_tx_power=20 dBm
[*]Allowed channel: mode=1 chan=2 freq=2417 MHz max_tx_power=20 dBm
[*]Allowed channel: mode=1 chan=3 freq=2422 MHz max_tx_power=20 dBm
[*]Allowed channel: mode=1 chan=4 freq=2427 MHz max_tx_power=20 dBm
[*]Allowed channel: mode=1 chan=5 freq=2432 MHz max_tx_power=20 dBm
[*]Allowed channel: mode=1 chan=6 freq=2437 MHz max_tx_power=20 dBm
[*]Allowed channel: mode=1 chan=7 freq=2442 MHz max_tx_power=20 dBm
[*]Allowed channel: mode=1 chan=8 freq=2447 MHz max_tx_power=20 dBm
[*]Allowed channel: mode=1 chan=9 freq=2452 MHz max_tx_power=20 dBm
[*]Allowed channel: mode=1 chan=10 freq=2457 MHz max_tx_power=20 dBm
[*]Allowed channel: mode=1 chan=11 freq=2462 MHz max_tx_power=20 dBm
[*]Allowed channel: mode=0 chan=1 freq=2412 MHz max_tx_power=20 dBm
[*]Allowed channel: mode=0 chan=2 freq=2417 MHz max_tx_power=20 dBm
[*]Allowed channel: mode=0 chan=3 freq=2422 MHz max_tx_power=20 dBm
[*]Allowed channel: mode=0 chan=4 freq=2427 MHz max_tx_power=20 dBm
[*]Allowed channel: mode=0 chan=5 freq=2432 MHz max_tx_power=20 dBm
[*]Allowed channel: mode=0 chan=6 freq=2437 MHz max_tx_power=20 dBm
[*]Allowed channel: mode=0 chan=7 freq=2442 MHz max_tx_power=20 dBm
[*]Allowed channel: mode=0 chan=8 freq=2447 MHz max_tx_power=20 dBm
[*]Allowed channel: mode=0 chan=9 freq=2452 MHz max_tx_power=20 dBm
[*]Allowed channel: mode=0 chan=10 freq=2457 MHz max_tx_power=20 dBm
[*]Allowed channel: mode=0 chan=11 freq=2462 MHz max_tx_power=20 dBm
[*]Completing interface initialization
[*]Mode: IEEE 802.11g Channel: 11 Frequency: 2462 MHz
[*]nl80211: Set freq 2462 (ht_enabled=0 sec_channel_offset=0)
[*]RATE rate=10 flags=0×1
[*]RATE rate=20 flags=0×1
[*]RATE rate=55 flags=0×1
[*]RATE rate=110 flags=0×1
[*]RATE rate=60 flags=0×0
[*]RATE rate=90 flags=0×0
[*]RATE rate=120 flags=0×0
[*]RATE rate=180 flags=0×0
[*]RATE rate=240 flags=0×0
[*]RATE rate=360 flags=0×0
[*]RATE rate=480 flags=0×0
[*]RATE rate=540 flags=0×0
[*]Flushing old station entries
[*]
接下来,我们安装dhcp 服务器:
[*]$sudo apt-get install dhcp3-server
安装完毕后,配置dhcp服务器:
[*]$sudo nano /etc/dhcp/dhcpd.conf
在文件的最后加下面几行:subnet 192.168.0.0 netmask 255.255.255.0
{
range 192.168.0.2 192.168.0.10;
option routers 192.168.0.1; #router address
option domain-name-servers 8.8.8.8;
}重启hostapd:
[*]root@ubuntu:~# killall hostapd
[*]hostapd: no process found
[*]root@ubuntu:~# hostapd -B /etc/hostapd.conf
[*]Configuration file: /etc/hostapd.conf
[*]Using interface wlan4 with hwaddr 00:c3:16:a0:03:00 and ssid ‘pcduino’
[*]
[*]
配置 pcDuino的 WiFi IP 地址:
[*]root@ubuntu:~# ifconfig wlan4 192.168.0.1
打开DHCP:
[*]root@ubuntu:~# dhcpd wlan4 -pf /var/run/dhcp-server/dhcpd.pid
[*]Internet Systems Consortium DHCP Server 4.1-ESV-R4
[*]Copyright 2004-2011 Internet Systems Consortium.
[*]All rights reserved.
[*]For info, please visit https://www.isc.org/software/dhcp/
[*]Wrote 0 leases to leases file.
[*]Listening on LPF/wlan4/00:c3:16:a0:03:00/192.168.0.0/24
[*]Sending on LPF/wlan4/00:c3:16:a0:03:00/192.168.0.0/24
[*]Sending on Socket/fallback/fallback-net
[*]
使能IP forwarding:
[*]root@ubuntu:~# echo 1 >/proc/sys/net/ipv4/ip_forward
设置NAT:
[*]root@ubuntu:~# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
当上面的配置都完成后, 我们可以看到一个名字为”pcduino”的热点!
注:调试的时候,用ifconfig查看自己的wifi,需根据实际情况修改wlan。
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视频服务器软件:
[*]$svn co https://mjpg-streamer.svn.sourceforge.net/svnroot/mjpg-streamer mjpg-streamer
[*]$cd mjpg-streamer/mjpg-streamer
[*]$make USE_LIBV4L2=true clean all
[*]$sudo make DESTDIR=/usr install
安装好以后,我们还需要开启然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 才能运行,可以通过脚本实现:
[*]~$ vim mjpg.sh
输入以下内容:
[*]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”
更改权限:
[*]~$sudo chmod a+x mjpg.sh
紧接着在/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端控制比较常见也相对简单些
pc控制端下载地址:https://s3.amazonaws.com/linksprite/robot/Rover2/Rover-PC.rar
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,
连接成功
手机控制端下载地址:https://s3.amazonaws.com/linksprite/robot/Rover2/pcduino_rover/WiFiRobot.apk
帖子出自:http://cnlearn.linksprite.com/?p=434
太厉害了,软硬通吃 不错哦!~支持支持:lol:lol ardypro 发表于 2013-12-4 00:12
太厉害了,软硬通吃
这年头到处都讲软硬结合,:D 这个不错 这个好,很稀饭:lol 那这个参加seeed的马拉松比赛?
先不讲技术,把这个过程如此详细地表达出来,就值得尊重了。 apple618 发表于 2014-1-7 01:41
先不讲技术,把这个过程如此详细地表达出来,就值得尊重了。
呵呵,是得花功夫 正好要做类似的手机远程控制系统+视频监控,太感谢了!谢谢分享!
页:
[1]
2