基于pcDuino的WiFi实时视频监控智能小车——软件部分(一)

pc朵拉 发布于 2013/07/30 11:11
阅读 3K+
收藏 3
通过前几个帖子,已经简单介绍了小车的硬件部分,关于小车的使用关键还在软件部分的,接下来就详细的介绍下关于小车的软件部分。

控制流程及原理介绍:把pcDuino作为一个WiFi 路由器,视频服务器,可以传输实时视频并接受客户端的控制命令,实现从客户端控制小车的移动和摄像头的旋转。

一、把pcDuino变成WiFi无线路由器
pcDuino官网公布的内核一般情况下只有WiFi STA模式的驱动, 也没有IP forwarding的软件 iptables。 所以我们第一步需要替换pcDuino内核uImage 。
在这章用到的所有的文件能在 https://s3.amazonaws.com/linksprite/pcduino/wifiAP.rar 这里下载。

把wifiAP 拷贝到ubuntu 目录:
  1. ubuntu@ubuntu :~$ ls
  2. Desktop Downloads Pictures Templates c_enviroment wifiAP
  3. Documents Music Public Videos sample
  4. $ sudo mount /dev/nanda /boot
  5. $ sudo cp uImage /boot -f
  6. $ sudo cp evb.bin /boot -f
  7. $ sudo cp 3.4.292B.tar.bz2 /lib/modules/
  8. $ cd /lib/modules/ubuntu@ubuntu :/lib/modules
  9. $sudo  tar -xvf 3.4.292B.tar.bz2
复制代码
重启动:
  1. $sudo reboot
复制代码
用‘$lsmod’命令查看软件模块:
  1. root@ubuntu :/home/ubuntu# lsmod
复制代码

重启动后, 编辑/etc/modules, 去掉 rt5370sta.
  1. $sudo modprobe rt2800usb
  2. $echo 148F 5370 > /sys/bus/usb/drivers/rt2800usb/new_id
复制代码
上面的命令也可以在调试串口编辑。

现在如果我们启动wlan, “$ifconfig wlan3 up”, 我们得到下面的出错信息:
  1. oot@ubuntu :~# ifconfig wlan3 up
  2. [ 1043.640000] phy0 -> rt2x00lib_request_firmware: Error – Failed to request
  3. Firmware.
  4. SIOCSIFFLAGS: No such file or directory
复制代码
上面的出错信息表明没有USB WiFi Dongle的固件,我们需要把它放到正确的地方。
用命令“$modinfo rt2800usb” 来发现固件的名字为: rt2870.bin.
  1. root@ubuntu :~# modinfo rt2800usb
  2. filename: /lib/modules/3.4.29+/kernel/drivers/net/wireless/rt2x00/rt2800usb.ko
  3. license: GPL
  4. firmware: rt2870.bin
  5. description: Ralink RT2800 USB Wireless LAN driver.
  6. version: 2.3.0
  7. author: http://rt2x00.serialmonkey.com
复制代码
拷贝固件到正确的位置:
  1. $sudo cp rt2870.bin /lib/firmware/
复制代码
现在我们再次启动wlan, 就能发现我们有了WiFi连接了!
  1. ”$sudo ifconfig wlan3 up”
复制代码
安装iptables:
  1. $sudo apt-get install iptables vim iw
复制代码
安装完毕后,检查iptable是否正确安装:
  1. $sudo iptables -L
  2. root@ubuntu :~# iptables -L
  3. Chain INPUT (policy ACCEPT)
  4. target prot opt source destination

  5. Chain FORWARD (policy ACCEPT)
  6. target prot opt source destination

  7. Chain OUTPUT (policy ACCEPT)
  8. target prot opt source destination
复制代码
下载然后编译hostapd:

编译的过程中需要“libnl-dev” 和 “libssl-dev”.我们需要先安装他们。
  1. $sudo apt-get install libnl-dev libssl-dev
复制代码
Hostpad 1.0 可以从 http://hostap.epitest.fi/releases/下载。
完整的命令集为:
  1. ubuntu@ubuntu :~$ wget http://hostap.epitest.fi/releases/hostapd-1.0.tar.gz
  2. ubuntu@ubuntu :~$ tar xvf hostapd-1.0.tar.gz
  3. ubuntu@ubuntu :~$ cd hostapd-1.0
  4. ubuntu@ubuntu :~/hostapd-1.0$ cd hostapd/
  5. ubuntu@ubuntu :~/hostapd-1.0/hostapd$ vim defconfig
复制代码
找打这行 “#CONFIG_IEEE80211N=y”, 去掉‘#’, 保存然后退出。
  1. ubuntu@ubuntu :~/hostapd-1.0/hostapd$ cp defconfig .config

  2. ubuntu@ubuntu :~/hostapd-1.0/hostapd$ make
  3. CC main.c
  4. CC config_file.c
  5. CC ../src/ap/hostapd.c
  6. CC ../src/ap/wpa_auth_glue.c
  7. CC ../src/ap/drv_callbacks.c
  8. CC ../src/ap/ap_drv_ops.c
  9. CC ../src/ap/utils.c
  10. CC ../src/ap/authsrv.c

  11. ubuntu@ubuntu :~/hostapd-1.0/hostapd$ sudo make install
  12. mkdir -p /usr/local/bin
  13. for i in hostapd hostapd_cli; do cp -f $i /usr/local/bin/$i; done

复制代码
检查hostpad 是否安装正确:
  1. ubuntu@ubuntu :~/hostapd-1.0/hostapd$ hostapd -v
  2. hostapd v1.0
  3. User space daemon for IEEE 802.11 AP management,
  4. IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
  5. Copyright (c) 2002-2012, Jouni Malinen <j@w1.fi> and contributors

复制代码
现在我们开始配置hostpad.
我们希望我们的热点有下面的配置:
SSID: ssid=pcduino
Password: wpa_passphrase=1234567890
Encryption: wpa_key_mgmt=WPA-PSK
用下面的方法配置:
  1. root@ubuntu :~# nano /etc/hostapd.conf

  2. interface=wlan3
  3. driver=nl80211
  4. ssid=pcduino
  5. hw_mode=g
  6. channel=11
  7. dtim_period=1
  8. rts_threshold=2347
  9. fragm_threshold=2346
  10. macaddr_acl=0
  11. auth_algs=1
  12. ieee80211n=0
  13. wpa=2
  14. wpa_passphrase=1234567890
  15. wpa_key_mgmt=WPA-PSK
  16. wpa_pairwise=TKIP
  17. rsn_pairwise=CCMP

复制代码
注意: wlan3 变了, 我们必须一直用 ‘‘ifconfig” 来检查。

配置好了后,我们用下面的命令来检查配置:
  1. root@ubuntu :~# hostapd -dd /etc/hostapd.conf
  2. random: Trying to read entropy from /dev/random
  3. Configuration file: /etc/hostapd.conf
  4. nl80211: interface wlan4 in phy phy0
  5. rfkill: initial event: idx=0 type=2 op=0 soft=0 hard=0
  6. rfkill: initial event: idx=1 type=1 op=0 soft=0 hard=0
  7. nl80211: Using driver-based off-channel TX
  8. nl80211: Register frame command failed (type=208): ret=-114 (Operation already in progress)
  9. nl80211: Register frame match – hexdump(len=1): 06
  10. nl80211: Failed to register Action frame processing – ignore for now
  11. nl80211: Add own interface ifindex 5
  12. nl80211: Set mode ifindex 5 iftype 3 (AP)
  13. nl80211: Create interface iftype 6 (MONITOR)
  14. nl80211: New interface mon.wlan4 created: ifindex=7
  15. nl80211: Add own interface ifindex 7
  16. BSS count 1, BSSID mask 00:00:00:00:00:00 (0 bits)
  17. nl80211: Regulatory information – country=00
  18. nl80211: 2402-2472 @ 40 MHz
  19. nl80211: 2457-2482 @ 40 MHz
  20. nl80211: 2474-2494 @ 20 MHz
  21. nl80211: 5170-5250 @ 40 MHz
  22. nl80211: 5735-5835 @ 40 MHz
  23. nl80211: Added 802.11b mode based on 802.11g information
  24. Allowed channel: mode=1 chan=1 freq=2412 MHz max_tx_power=20 dBm
  25. Allowed channel: mode=1 chan=2 freq=2417 MHz max_tx_power=20 dBm
  26. Allowed channel: mode=1 chan=3 freq=2422 MHz max_tx_power=20 dBm
  27. Allowed channel: mode=1 chan=4 freq=2427 MHz max_tx_power=20 dBm
  28. Allowed channel: mode=1 chan=5 freq=2432 MHz max_tx_power=20 dBm
  29. Allowed channel: mode=1 chan=6 freq=2437 MHz max_tx_power=20 dBm
  30. Allowed channel: mode=1 chan=7 freq=2442 MHz max_tx_power=20 dBm
  31. Allowed channel: mode=1 chan=8 freq=2447 MHz max_tx_power=20 dBm
  32. Allowed channel: mode=1 chan=9 freq=2452 MHz max_tx_power=20 dBm
  33. Allowed channel: mode=1 chan=10 freq=2457 MHz max_tx_power=20 dBm
  34. Allowed channel: mode=1 chan=11 freq=2462 MHz max_tx_power=20 dBm
  35. Allowed channel: mode=0 chan=1 freq=2412 MHz max_tx_power=20 dBm
  36. Allowed channel: mode=0 chan=2 freq=2417 MHz max_tx_power=20 dBm
  37. Allowed channel: mode=0 chan=3 freq=2422 MHz max_tx_power=20 dBm
  38. Allowed channel: mode=0 chan=4 freq=2427 MHz max_tx_power=20 dBm
  39. Allowed channel: mode=0 chan=5 freq=2432 MHz max_tx_power=20 dBm
  40. Allowed channel: mode=0 chan=6 freq=2437 MHz max_tx_power=20 dBm
  41. Allowed channel: mode=0 chan=7 freq=2442 MHz max_tx_power=20 dBm
  42. Allowed channel: mode=0 chan=8 freq=2447 MHz max_tx_power=20 dBm
  43. Allowed channel: mode=0 chan=9 freq=2452 MHz max_tx_power=20 dBm
  44. Allowed channel: mode=0 chan=10 freq=2457 MHz max_tx_power=20 dBm
  45. Allowed channel: mode=0 chan=11 freq=2462 MHz max_tx_power=20 dBm
  46. Completing interface initialization
  47. Mode: IEEE 802.11g Channel: 11 Frequency: 2462 MHz
  48. nl80211: Set freq 2462 (ht_enabled=0 sec_channel_offset=0)
  49. RATE[0] rate=10 flags=0×1
  50. RATE[1] rate=20 flags=0×1
  51. RATE[2] rate=55 flags=0×1
  52. RATE[3] rate=110 flags=0×1
  53. RATE[4] rate=60 flags=0×0
  54. RATE[5] rate=90 flags=0×0
  55. RATE[6] rate=120 flags=0×0
  56. RATE[7] rate=180 flags=0×0
  57. RATE[8] rate=240 flags=0×0
  58. RATE[9] rate=360 flags=0×0
  59. RATE[10] rate=480 flags=0×0
  60. RATE[11] rate=540 flags=0×0
  61. Flushing old station entries
复制代码
接下来,我们安装dhcp 服务器:
  1. $sudo apt-get install dhcp3-server
复制代码
安装完毕后,配置dhcp服务器:
  1. $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:
  1. root@ubuntu :~# killall hostapd
  2. hostapd: no process found
  3. root@ubuntu :~# hostapd -B /etc/hostapd.conf
  4. Configuration file: /etc/hostapd.conf
  5. Using interface wlan4 with hwaddr 00:c3:16:a0:03:00 and ssid ‘pcduino’

复制代码
配置 pcDuino的 WiFi IP 地址:
  1. root@ubuntu :~# ifconfig wlan4 192.168.0.1
复制代码
打开DHCP:
  1. root@ubuntu :~# dhcpd wlan4 -pf /var/run/dhcp-server/dhcpd.pid
  2. Internet Systems Consortium DHCP Server 4.1-ESV-R4
  3. Copyright 2004-2011 Internet Systems Consortium.
  4. All rights reserved.
  5. For info, please visit https://www.isc.org/software/dhcp/
  6. Wrote 0 leases to leases file.
  7. Listening on LPF/wlan4/00:c3:16:a0:03:00/192.168.0.0/24
  8. Sending on LPF/wlan4/00:c3:16:a0:03:00/192.168.0.0/24
  9. Sending on Socket/fallback/fallback-net
复制代码
使能IP forwarding:
  1. root@ubuntu :~# echo 1 >/proc/sys/net/ipv4/ip_forward
复制代码
设置NAT:
  1. root@ubuntu :~# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
复制代码
当上面的配置都完成后, 我们可以看到一个名字为"pcduino"的热点!

注:调试的时候,用ifconfig查看自己的wifi,需根据实际情况修改wlan。

原文转至:http://www.pcduino.org/forum.php?mod=viewthread&tid=112&extra=page%3D1

加载中
0
0
python_on
python_on
同想玩
pc朵拉
pc朵拉
就玩呗
0
从今以后
从今以后
死了,重启后卡死在,回不到桌面了。。。。。
0
从今以后
从今以后
救命啊,就一个·光标在闪烁了。。。。。回不去怎么办啊啊啊啊
0
摔不坏的罐子
摔不坏的罐子
重启后失败,只能重刷系统,这个教程有问题
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部