WIFI模塊四種工作模式介紹_WIFI模塊工作模式淺析
WIFI模塊四種工作模式介紹
WIFI模塊常見(jiàn)的四種工作模式:透?jìng)髂J?、串口指令模式、HTTPD Client模式、GPIO模式。使WIFI模塊可以適用于不同環(huán)境下工作。透明傳輸模式:在該模式下,模塊實(shí)現(xiàn)串口與網(wǎng)絡(luò)之間的透明傳輸,實(shí)現(xiàn)通用串口設(shè)備與網(wǎng)絡(luò)設(shè)備之間的數(shù)據(jù)傳遞。串口指令模式:在該模式下,用戶可以按照我們的協(xié)議發(fā)送數(shù)據(jù)給服務(wù)器,無(wú)需重啟即可向不同的服務(wù)器發(fā)送數(shù)據(jù)。GPIO模式:在該模式下,用戶可以發(fā)送我們協(xié)議的指令控制模塊的六個(gè)引腳,分別是TXD、RXD、CTS、RTS、nReady,nLink。
1、透明傳輸模式
USR-WIFI232-A/B/C模塊支持串口透明傳輸模式,可以實(shí)現(xiàn)串口即插即用,從而最大程度的降低用戶使用的復(fù)雜度。在此模式下,所有需要收發(fā)的數(shù)據(jù)都被在串口與WiFi接口之間做透明 傳輸,不做任何解析。
在透明傳輸模式下,可以完全兼容用戶原有的軟件平臺(tái)。用戶設(shè)備基本不用做軟件改動(dòng)就可以實(shí)現(xiàn)支持無(wú)線數(shù)據(jù)傳輸。
《說(shuō)明》:
透明傳輸模式是復(fù)雜度最少的數(shù)據(jù)傳輸。用戶也打開(kāi)串口的硬件流控(CTS/RTS)功能,這樣可以使誤碼率降到最低。如果用戶不需要串口的硬件流控功能,只需要把相應(yīng)pin腳(CTS/RTS)懸空就可以。
2、串口指令模式
在此模式下,用戶可以將串口的數(shù)據(jù)發(fā)往不同的服務(wù)器地址,此模式可以用udp或是tcp client向服務(wù)器發(fā)送數(shù)據(jù)。
客戶MCU按照下面的格式發(fā)送數(shù)據(jù)包,模塊解析完成后,只將n字節(jié)的數(shù)據(jù)發(fā)送到目標(biāo)地址。當(dāng)有數(shù)據(jù)返回時(shí),不做解析直接將數(shù)據(jù)從串口輸出。
3、GPIO模式
高性能WIFI模塊,支持GPIO模式。GPIO模式下UART的4個(gè)引腳定義為GPIO,nReady,nLink也定義成GPIO。
模塊工作在GPIO模式時(shí),PC或其它網(wǎng)絡(luò)設(shè)備可以通過(guò)WIFI與模塊建立連接(TCP/UDP),然后通過(guò)命令控制GPIO或讀GPIO狀態(tài)。命令如下:
GPIO n IN:設(shè)置GPIOn為輸入,返回GPIO OK或GPIO NOK
GPIO n OUT 0:設(shè)置GPIOn為輸出低電平,返回命令OK或命令NOK
GPIO n OUT 1:設(shè)置GPIOn為輸出高電平,返回命令 OK或命令 NOK
GPIO n SW:設(shè)置GPIOn為輸出并改變?cè)瓉?lái)高低電平狀態(tài),返回GPIO OK或GPIO NOK
GPIO n PWM m1 m2:設(shè)置GPIOn輸出一個(gè)高低變化的電平,m1為高電平時(shí)間,m2為低電平時(shí)間(時(shí)間單位ms,最小10 ms),返回GPIO OK或GPIO NOK
GPIO n GET:讀取GPIOn狀態(tài),返回I0,I1,O0,O1分別表示輸入低,輸入高,輸出低,輸出高。
注意:n可以為3,4,5,6,8,9,與模塊Pin腳對(duì)應(yīng)。其中GPIO 4只能做輸入,GPIO 3只能做為輸出。
GPIO READ返回當(dāng)前所有IO的狀態(tài),與GPIO n GET的表示方法一致。如,I1I1I0I0I0I0O1,I表示輸入,O表示輸出。0表示低,1表示高。
4這個(gè)引腳是取反的。讀到1實(shí)際為0,讀到0實(shí)際為1。
4、HTTPD Client模式
此模式用于從HTTP服務(wù)器請(qǐng)求數(shù)據(jù)或是向服務(wù)器提交數(shù)據(jù)。
用戶在用at指令或是網(wǎng)頁(yè)設(shè)置好HTTP報(bào)頭的具體內(nèi)容后。每次發(fā)送數(shù)據(jù)時(shí),模塊會(huì)自動(dòng)將所發(fā)送的數(shù)據(jù)封裝成HTTP協(xié)議數(shù)據(jù),發(fā)送到指定HTTP服務(wù)器上。方便用戶直接從HTTP服務(wù)器讀取或提交數(shù)據(jù)。
WIFI模塊工作模式淺析
這里我們這樣使用我們的設(shè)備,開(kāi)發(fā)板上插上網(wǎng)線和WIFI模塊。其工作原理是通過(guò)網(wǎng)線把網(wǎng)絡(luò)接到開(kāi)發(fā)板,我們的WIFI模塊作為無(wú)線的接入點(diǎn),組成一個(gè)迷你的無(wú)線路由器。我們的電腦就能通過(guò)連接開(kāi)發(fā)板上的AP來(lái)上網(wǎng)了。
首先我們還是從ifconfig開(kāi)始:
~ 》: ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:E5:49:83:76:1A
inet addr:192.168.1.168 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:64 (64.0 B) TX bytes:0 (0.0 B)
Interrupt:51 Base address:0x4300
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
wlan0 Link encap:Ethernet HWaddr 00:0C:43:30:72:81
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
~ 》: ifconfig wlan0 192.168.1.2 netmask 255.255.255.0 up
~ 》: ifconfig
eth0 Link encap:Ethernet HWaddr 00:E?49:83:76:1A
inet addr:192.168.1.168 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:14 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:896 (896.0 B) TX bytes:272 (272.0 B)
Interrupt:51 Base address:0x4300
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
wlan0 Link encap:Ethernet HWaddr 00:0C:43:30:72:81
inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
如果你想要讓你的迷你路由器支持DHCP自動(dòng)分配IP,那么你首先要在你的開(kāi)發(fā)板上移植dhcpd的命令(busybox中也有udhcpd的命令,不過(guò)功能沒(méi)有dhcpd強(qiáng)大)
它的一些配置文件為:
/tmp 》: vim dhcpd_wlan0.conf
subnet 192.168.5.0 netmask 255.255.255.0 {
range 192.168.5.10 192.168.5.100;/分配的子網(wǎng)的范圍/
option domain-name-servers 4.2.2.2, 8.8.8.8;/域名解析服務(wù)器/
option routers 192.168.5.1;/配置路由器表/
default-lease-time 18800;
max-lease-time 72000;
authoritative;
}
subnet 子網(wǎng)
網(wǎng)絡(luò)的一部分。它是物理上獨(dú)立的網(wǎng)絡(luò)段,與網(wǎng)絡(luò)其它部分共享網(wǎng)絡(luò)地址,并用子網(wǎng)號(hào)區(qū)分。
并在/tmp目錄下用touch創(chuàng)建dhcpd_wlan0.leases文件
之后運(yùn)行命令dhcpd -q -pf dhcpd_wlan0.pid -cf dhcpd_wlan0.conf -lf dhcpd_wlan0.leases wlan0
/tmp 》: vim dhcpd_wlan0.pid
704 /這里的進(jìn)程號(hào)是我們dhcp服務(wù)開(kāi)啟時(shí),自己把進(jìn)程號(hào)寫(xiě)入到這個(gè)文件中,每次啟用都會(huì)覆蓋寫(xiě)入/
就設(shè)置好了dhcp的服務(wù)。
之后我們就要用hostapd工具來(lái)配置我們的迷你路由器了,沒(méi)有這個(gè)工具請(qǐng)自行百度移植。(要學(xué)會(huì)利用好百度,goole)它的配置文件為:
/apps/etc/network 》: vim hostapd.conf
# Software AP daemon program hostapd configure file
# FILE:/apps/etc/network/hostapd.conf
# Copyright (C) 2012 GuoWenxue 《guowenxue@gmail.com QQ:281143292》
ctrl_interface=/var/run/hostapd
interface=wlan0
#bridge=br0
driver=nl80211
ssid=Router_s3c2440/你可以給你的WIFI起個(gè)自己想要的名字/
hw_mode=g
channel=7 /802.11b/g工作在2.4~2.4835GHz頻段,這些頻段被分為11或13個(gè)信道,我們一般設(shè)置小于10/
macaddr_acl=0
auth_algs=1
ieee80211n=1
dtim_period=2
rts_threshold=2347
fragm_threshold=2346
macaddr_acl=0
eap_server=0
wpa=2
wpa_passphrase=lingyun_embedded/自己設(shè)置密碼/
wpa_key_mgmt=WPA-PSK
# WPA standard definition only support TKIP, but the vendor
# support AES-CCMP(A.K.A AES or CCMP) too.
wpa_pairwise=TKIP CCMP
# RSN(A.K.A WPA2) standard define support TIKP AES-CCMP.
rsn_pairwise=TKIP CCMP
wpa_group_rekey=86400
wpa_gmk_rekey=86400
如果你曾配置過(guò)路由器,有些選項(xiàng)你會(huì)熟悉吧。初學(xué)沒(méi)必要把每個(gè)選項(xiàng)弄懂,把幾個(gè)重要的設(shè)置好就行了。
配置好之后就可以運(yùn)行了:
~ 》: mkdir -p /var/run/hostapd
~ 》: hostapd -B /apps/etc/network/hostapd.conf
Configuration file: /apps/etc/network/hostapd.conf
Using interface wlan0 with hwaddr 00:0c:43:30:72:81 and ssid ‘Router_s3c2440’
~ 》: ls /var/run/hostapd/
wlan0(不清楚這里生成和下面的mon.wlan0有什么關(guān)系,有大神請(qǐng)留言指教)
可以看到生成的wlan0,而且
~ 》: ifconfig
eth0 Link encap:Ethernet HWaddr 00:E5:49:83:76:1A
inet addr:192.168.1.168 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:371446 errors:0 dropped:43 overruns:0 frame:0
TX packets:306189 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:360520116 (343.8 MiB) TX bytes:140937225 (134.4 MiB)
Interrupt:51 Base address:0x4300
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:22 errors:0 dropped:0 overruns:0 frame:0
TX packets:22 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1320 (1.2 KiB) TX bytes:1320 (1.2 KiB)
mon.wlan0 Link encap:UNSPEC HWaddr 00-0C-43-30-72-81-00-00-00-00-00-00-00-00-00-00
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2883 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:329852 (322.1 KiB) TX bytes:0 (0.0 B)
wlan0 Link encap:Ethernet HWaddr 00:0C:43:30:72:81
inet addr:192.168.5.1 Bcast:192.168.5.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:310453 errors:0 dropped:0 overruns:0 frame:0
TX packets:372073 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:141302428 (134.7 MiB) TX bytes:365778847 (348.8 MiB)
會(huì)發(fā)現(xiàn)多生成了一個(gè)mon.wlan0的網(wǎng)絡(luò)接口。這個(gè)查了下也沒(méi)弄清是怎么工作的。
但是現(xiàn)在你還無(wú)法上網(wǎng),聯(lián)網(wǎng)的結(jié)果是會(huì)是受限的訪問(wèn)權(quán)限。
這是因?yàn)槲覀償?shù)據(jù)沒(méi)法通過(guò)路由器轉(zhuǎn)發(fā)出去,解決方法是用iptables來(lái)實(shí)現(xiàn)NAT。首先你要移植iptables到你的開(kāi)發(fā)板,
NAT分成了兩種類(lèi)型,即源NAT(SNAT)和目的NAT(DNAT),顧名思義,所謂SNAT就是改變轉(zhuǎn)發(fā)數(shù)據(jù)包的源地址,所謂DNAT就是改變轉(zhuǎn)發(fā)數(shù)據(jù)包的目的地址。
NAT表也有三條缺省的“鏈”(chains),這三條鏈也是規(guī)則的容器,它們分別是:
PREROUTING:可以在這里定義進(jìn)行目的NAT的規(guī)則,因?yàn)槁酚善鬟M(jìn)行路由時(shí)只檢查數(shù)據(jù)包的目的ip地址,所以為了使數(shù)據(jù)包得以正確路由,我們必須在路由之前就進(jìn)行目的NAT;
POSTROUTING:可以在這里定義進(jìn)行源NAT的規(guī)則,系統(tǒng)在決定了數(shù)據(jù)包的路由以后在執(zhí)行該鏈中的規(guī)則。
OUTPUT:定義對(duì)本地產(chǎn)生的數(shù)據(jù)包的目的NAT規(guī)則。
有一種SNAT的特殊情況是ip欺騙,也就是所謂的Masquerading,通常建議在使用撥號(hào)上網(wǎng)的時(shí)候使用,或者說(shuō)在合法ip地址不固定的情況下使用。
對(duì)于nat沒(méi)什么深入研究,下面有個(gè)網(wǎng)址講的不錯(cuò):
http://www.51cto.com/html/2005/0813/1388.htm
配置SNAT
Linux可以很方便的通過(guò)iptables配置SNAT服務(wù)器,命令如下:
~ 》: ptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
~ 》: iptables -A FORWARD -s 192.168.5.0/24 -j ACCEPT
~ 》: iptables -A FORWARD -d 192.168.5.0/24 -j ACCEPT
其中第一條表示將通過(guò)本機(jī)的轉(zhuǎn)發(fā)數(shù)據(jù)包從eth0(外網(wǎng))這個(gè)網(wǎng)卡發(fā)出去,另外兩條表示只轉(zhuǎn)發(fā)192.168.5.0/24這個(gè)網(wǎng)段過(guò)來(lái)的數(shù)據(jù)包,這個(gè)網(wǎng)段正好是wlan0其它設(shè)備連上本機(jī)以后分配的網(wǎng)段。
還需要在打開(kāi)內(nèi)核的ip轉(zhuǎn)發(fā)功能:
~ 》: vim /etc/sysctl.conf
添加或修改這樣一段:
net.ipv4.conf.default.rp_filter = 1
然后執(zhí)行命令
~ 》: sysctl -p
再把我們的網(wǎng)線連上開(kāi)發(fā)板,我們的電腦就可以連接開(kāi)發(fā)板上網(wǎng)了。
非常好我支持^.^
(2) 100%
不好我反對(duì)
(0) 0%
相關(guān)閱讀:
- [電子說(shuō)] 分析 丨2個(gè)新規(guī)實(shí)施,Wi-Fi 7增添變數(shù) 2023-10-24
- [RF/無(wú)線] Wi-Fi芯片的現(xiàn)狀 如何從三個(gè)層面看待Wi-Fi芯片機(jī)遇 2023-10-24
- [電子說(shuō)] 無(wú)線模擬信號(hào)采集器0-10v0-5v 4-20mA數(shù)據(jù)wifi通訊 2023-10-24
- [控制/MCU] 兆易創(chuàng)新推出基于RISC-V內(nèi)核的GD32VW553系列雙模無(wú)線mcu 2023-10-23
- [電子說(shuō)] WiFi 6技術(shù)在工業(yè)物聯(lián)網(wǎng)應(yīng)用中有哪些優(yōu)勢(shì)? 2023-10-20
- [電子說(shuō)] WiFi無(wú)線技術(shù)的工作原理及應(yīng)用 2023-10-20
- [電子說(shuō)] TB-411-8A+高通濾波器產(chǎn)品概述 2023-10-20
- [電子說(shuō)] 萬(wàn)和科技北交所IPO終止!擬發(fā)力WiFi6研發(fā)射頻芯片 2023-10-20
( 發(fā)表人:龔婷 )