【树莓派开机自动连网以及断网后重连】

解决树莓派开机不会自动连网以及断网后不会自动重连的问题

最近在研究树莓派,记录一下树莓派开机自动连网以及解决树莓派断网后不能重新自动连接的问题。

一、树莓派开机自动连网

  1. WiFi连接配置

修改 /etc/wpa_supplication/wpa_supplication.conf 文件里面的内容,所有的WiFi连接配置都在这里面。
(1)在树莓派终端中输入命令:

sudo nano /etc/wpa_supplication/wpa_supplication.conf

(2)添加如下代码:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=CN
network={       
	ssid="你的WiFi名称"       
	psk="你的WiFi密码"       
	key_mgmt=WPA-PSK       
	priority=1
}

priority指的是连接优先级,数字越大表示优先级越高。可以同时加入多个WiFi,根据需求配置相对的优先级。

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=CN
network={       
	ssid="WiFi_1"       
	psk="你的WiFi密码"       
	key_mgmt=WPA-PSK       
	priority=1
}
network={       
	ssid="WiFi_2"       
	psk="你的WiFi密码"       
	key_mgmt=WPA-PSK       
	priority=2
}
network={       
	ssid="WiFi_3"       
	psk="你的WiFi密码"       
	key_mgmt=WPA-PSK       
	priority=3
}
  1. 修改网络配置

修改 /etc/network/interfaces 文件里面的内容
(1)在树莓派终端中输入命令:

sudo nano /etc/network/interfaces

(2)打开文件/etc/network/interfaces ,添加如下代码:

auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplication/wpa_supplication.conf
  1. 重启树莓派,输入命令:
sudo reboot

重启树莓派之后,可以看见我们的树莓派已经连接上WiFi了。

二、树莓派断网后自动重连

本以为上面做完之后,一切都没有问题了,于是我就将树莓派一直开着让他运行一段时间,过了一晚上之后,我发现树莓派自动断网了,而且断网了之后他并不会自动重连。想办法解决吧!!!网上找了很多方法,最后靠以下方法成功解决。

解决方案

写入脚本,让他每段时间就监测一次网络状态,若不存在“192”(也可换成其他)关键字就判断树莓派掉线。

  1. 写入python脚本

在/home/pi文件夹下,新建 .py 文件,文件命名为autowifi.py
文件中添加代码如下:

import os, time
while True:
    if '192' not in os.popen('ifconfig | grep 192').read():
        print '\n****** wifi is down, restart... ******\n'
        os.system('sudo /etc/init.d/networking restart')
    time.sleep(1*60) #1 minute
  1. 写入shell脚本

同样在/home/pi文件夹下,新建 .sh 文件,文件命名为autowifi.sh
在文件中添加代码如下:

cd /home/pi
sudo python3 autowifi.py
  1. 设置autowifi.sh文件开机自启动

(1)在./config文件下建立一个autostart文件夹(如果本身已经有了这个文件夹就不用再新建了),

mkdir .config/autostart

(2)然后在autostart文件夹下新建并编辑xxx.desktop文件(经过测试,文件的名字可以随便取,但是一定要以.desktop为结尾,比如我的文件名称取的是autowifi.desktop)

sudo nano .config/autostart/autowifi.desktop

(3) 在.desktop文件下输入以下内容

[Desktop Entry]
Type=Application
Exec=/home/pi/autowifi.sh

其中Exec表示你想要执行的.sh文件
然后Ctrl+o保存,Ctrl+x退出即可。

(4)sudo reboot 重启树莓派
做完以上步骤,重启树莓派后进行断网自动连接测试。

断开WiFi

在命令行输入

sudo ifdown wlan0

此时,你的树莓派已经断开网络连接了
一分钟之后…
在命令行输入

ifconfig wlan0

可以看到我们的树莓派已经连上网了,并且分配了ip地址。
在这里插入图片描述

  • 10
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Android平台提供了连接WiFi络的API,可以根据WiFi的SSID和密码自动进行连接。具体实现步骤如下: 1. 首先,在AndroidManifest.xml文件中添加以下权限: ```xml <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> ``` 这些权限用于获取WiFi状态、更改WiFi状态、访问络状态、以及获取位置信息等。 2. 在代码中,使用以下方法来连接WiFi络: ```java WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiConfiguration config = new WifiConfiguration(); config.SSID = "\"" + ssid + "\""; config.preSharedKey = "\"" + password + "\""; int networkId = wifiManager.addNetwork(config); wifiManager.disconnect(); wifiManager.enableNetwork(networkId, true); wifiManager.reconnect(); ``` 其中,`ssid`和`password`分别表示WiFi的名称和密码。首先使用`addNetwork(config)`方法添加WiFi络配置,然后开当前连接,最后启用指定的WiFi络并新连接。 需要注意的是,上述代码需要在AndroidManifest.xml文件中的`<application>`标签内部的`<activity>`标签外部添加`android:permission="android.permission.CHANGE_WIFI_STATE"`权限限制。 此外,还需要在设备上开启位置信息功能,以便能够获取到WiFi络列表。 以上就是根据WiFi的SSID和密码自动连接络的简要步骤。实际应用中,还需要处理可能出现的异常情况,并做适当的错误处理。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值