linux下将WIFI模块作为STA客户端连接路由器WIFI的操作

1:前置条件

1:确认 linux设备和WIFI模块之间通讯正常;
2:确认 Linux设备支持 iw, wpa_supplicant, udhcpc 等指令, 可以先搜索一下这三个指令的用法,也可以 “iw --help” 来查看帮助信息

2: 操作流程

2.1 查询无线网卡激活状态

应该会显示 UP,LOWER_UP 信息;
或者直接 ifconfig 看看有没有 wlan0 设备

root@imx8qxpc0mek:~# ip link show wlan0
6: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether dc:0d:30:a2:47:17 brd ff:ff:ff:ff:ff:ff

2.2 WIFI扫描

扫描当前网络条件下,可以接收到哪些WIFI信号,就是手机连接的WIFI名称

root@imx8qxpc0mek:~# iw wlan0 scan | grep SSID
        SSID: TP-LINK_9202
        SSID: DL-S2110
        SSID: ChinaNet-HLZX
        SSID: dujunqiu

2.3 WIFI账号密码修改

这里修改的是系统配置的账号密码,也可以通过 “add_network” 手动输入;
wpa_supplicant.conf 是掉电保存的,只修改一次比较方便;
如果系统默认没有 ssid和psk的画,那么就手动增加一下

root@imx8qxpc0mek:~# vi /etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
update_config=1

network={
        ssid="dujunqiu"
        psk="123456"
}

注意这里是大部分的WIFI访问方式(WPA加密),可通过手机连接WIFI之后,查看WIFI详情->安全性,确认加密方式;如果加密方式不一样,请参考下面

# 不加密
iw dev wlan0 connect "SSID"
# WEP加密
iw dev wlan0 connect "SSID" key 0:"WEP密钥"

2.4 连接WIFI

-B 后台运行, wpa_supplicant.conf 就是我们刚刚修改的文件

root@imx8qxpc0mek:~# wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
Successfully initialized wpa_supplicant
rfkill: Cannot open RFKILL control device

2.5 查看WIFI连接状态

如果没有连接成功的画,会提示 “not connected”;
这里可以用自己的手机热点作为WIFI的发射端,方便查看是否有设备连接上

root@imx8qxpc0mek:~# iw wlan0 link
Connected to 66:6e:97:95:4b:39 (on wlan0)
        SSID: dujunqiu
        freq: 5180
        signal: -74 dBm
        tx bitrate: 200.0 MBit/s

这个时候虽然连接上了,但是还无法上网;可以看到wlan0没有自动获取到IP信息,也没有 route路由信息

root@imx8qxpc0mek:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 wlan0
192.168.100.0   0.0.0.0         255.255.255.0   U     0      0        0 usb0
192.168.253.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0

2.6 设置自动获取IP地址

WIFI连接之后,还要设置一下 DHCP, 不然自带的 ip(ifconfig查看)可能和WIFI的IP不匹配,还是无法上网;

root@imx8qxpc0mek:~# udhcpc -b -i wlan0 -t 1 -T 5 -A 1 -R -H test_111
udhcpc: option -h NAME is deprecated, use -x hostname:NAME
udhcpc: started, v1.27.2
udhcpc: sending discover
udhcpc: sending select for 172.16.5.112
udhcpc: lease of 172.16.5.112 obtained, lease time 86400
/etc/udhcpc.d/50default: Adding DNS 172.16.1.1

再次查看一下路由信息,已经可以获取到 网关的信息;
ifconfig wlan0 查看IP也自动分配了

root@imx8qxpc0mek:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.16.1.1      0.0.0.0         UG    10     0        0 wlan0
172.16.0.0      0.0.0.0         255.255.240.0   U     0      0        0 wlan0
192.168.100.0   0.0.0.0         255.255.255.0   U     0      0        0 usb0
192.168.253.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0

root@imx8qxpc0mek:~# ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr dc:0d:30:a2:47:17
          inet addr:172.16.5.112  Bcast:172.16.15.255  Mask:255.255.240.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:24473 errors:0 dropped:5 overruns:0 frame:0
          TX packets:172 errors:0 dropped:66 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3236863 (3.0 MiB)  TX bytes:29964 (29.2 KiB)

3:测试网络状态

经过以上操作,网络已经设置成功,可以 ping 百度了

root@imx8qxpc0mek:~# ping baidu.com
PING baidu.com (110.242.68.66) 56(84) bytes of data.
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=1 ttl=49 time=108 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=2 ttl=49 time=32.7 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=3 ttl=49 time=26.4 ms

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ESP8266 WiFi模块STA模式是一种工作模式,它允许ESP8266模块连接到一个已经存在的WiFi网络中,以便实现无线通信。在STA模式下,ESP8266模块作为客户端连接WiFi网络,可以通过TCP/IP协议与其他设备进行通信。此模式需要提供WiFi网络的SSID和密码,以便ESP8266模块能够连接到网络。STA模式是ESP8266模块最常用的工作模式之一,它可以用于许多应用,如远程控制、数据传输、物联网等。 ### 回答2: ESP8266是一款可以集成WiFi功能的芯片,它的STA模式是其中一种工作模式STA全称为Station,即作为客户端连接到现有的WiFi网络。STA模式可以让用户轻松地连接到一个无线路由器或者接入点,并通过这个路由器或者接入点来连接到互联网。 使用ESP8266的STA模式,我们需要在代码中设置WiFi的SSID和密码,以便模块可以连接到该WiFi网络。代码中可以通过`WiFi.begin(ssid, password)`函数来连接WiFi网络。ESP8266连接WiFi网络后,可以使用WiFi库中的函数来执行网络操作,如使用HTTP请求向云服务器发送数据等。 在STA模式下,ESP8266可以连接到任何支持WiFi的设备上,包括路由器,手机热点等,使得其应用范围非常广泛。我们可以使用它来实现各种物联网应用,比如智能家居、智能车联网等。 除了STA模式,ESP8266还有AP模式,即作为一个热点连接到其他设备上。在AP模式下,ESP8266可以作为一个服务器,为其他设备提供服务。AP模式也可以和STA模式一样在同一个程序中切换,这使得我们可以使用ESP8266作为一个智能设备的核心模块。 总之,ESP8266的STA模式提供了一种简便的方法来连接到现有的WiFi网络,使得我们可以轻松地实现各种物联网应用。同时,ESP8266在STA模式下还支持多路连接,可以同时处理多个TCP连接,为我们提供更加强大的网络功能。 ### 回答3: ESP8266WiFi模块STA模式简介 ESP8266WiFi模块是一种低成本且易于使用的Wi-Fi模块,它采用基于ESP8266芯片设计的物联网解决方案,支持标准802.11b/g/n协议。在ESP8266WiFi模块中,STA模式使模块能够与Wi-Fi路由器连接,实现对互联网的访问。现在让我们来深入了解一下ESP8266WiFi模块STA模式。 1. STA模式的特点 STA是ESP8266WiFi模块的一种连接模式。在该模式中,ESP8266WiFi模块将作为Wi-Fi客户端工作,并尝试连接到其他Wi-Fi接入点或路由器。它能够访问互联网,获取IP地址并连接到其他设备。以下是STA模式的特点: - 可通过Wi-Fi路由器连接互联网,实现对网络资源的访问。 - 可以在任意地方实现远程测量、监测和控制。 - 可以通过向ESP8266WiFi模块发送数据来控制连接的设备。 - 可以通过使用TCP/IP协议与其他设备通信。 2. STA模式连接方式 在ESP8266WiFi模块STA模式中,您可以选择不同的连接方式。以下是常用的两种连接方式: - 正常连接方式:在此模式下,ESP8266WiFi模块将实时监测Wi-Fi网络以确定何时可用并尝试连接到可用的Wi-Fi接入点或路由器。 - 强制连接方式:在该模式下,ESP8266WiFi模块将尝试一直连接到指定的Wi-Fi接入点或路由器。 3. STA模式的代码实现 要使用ESP8266WiFi模块STA模式,需要编写相关代码来初始化模块并实现连接。以下是一些示例代码: - 配置模块:在此示例中,您需要为ESP8266WiFi模块设置网络参数,例如Wi-Fi网络名称和密码。 ``` #include <ESP8266WiFi.h> const char* ssid = "YOUR_SSID"; // Wi-Fi网络名称 const char* password = "YOUR_PASSWORD"; // Wi-Fi网络密码 void setup() { Serial.begin(115200); delay(10); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("IP address: "); Serial.println(WiFi.localIP()); } ``` - 监听网络:在此示例中,您需要在ESP8266WiFi模块连接到Wi-Fi网络后监听TCP端口。 ``` #include <ESP8266WiFi.h> #include <WiFiServer.h> const char* ssid = "YOUR_SSID"; // Wi-Fi网络名称 const char* password = "YOUR_PASSWORD"; // Wi-Fi网络密码 WiFiServer server(80); void setup() { Serial.begin(115200); delay(10); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("IP address: "); Serial.println(WiFi.localIP()); server.begin(); } void loop() { WiFiClient client = server.available(); if (client) { while (client.connected()) { if (client.available()) { char c = client.read(); Serial.write(c); } } client.stop(); } } ``` 总结 ESP8266WiFi模块STA模式连接Wi-Fi网络的有用工具。它能够访问互联网,接收网络数据并控制其他设备。同时,编写基于ESP8266WiFi模块STA模式的代码是非常简单的。我们只需定义要连接的Wi-Fi网络名称和密码,并实现TCP/IP通信协议即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值