本帖最后由 Tristan_C 于 2025-5-4 16:35 编辑
给开发板配置WiFi并上电自动连接 手上拿到这块开发板比较长时间了,趁着五一假期有一点点空,取出来跑一跑。ST官方这块开发板还是比较好的,官方出品,做工和配置这些自然也挺好的,没得说,包括上面配置了一块7寸的触摸屏,一只摄像头模块,板载了村田的一颗超小封装的WiFi/BLE模块,甚至还配置了一张16GB的SD卡。按照官方WiKi文档中的Getting started内容,给板子上电,顺利跑起来了。
内核也启动了
为了调试方便,对板载的WiFi进行配置
首先是对如下文件进行编辑:/etc/wpa_supplicant.conf
- ctrl_interface=/var/run/wpa_supplicant
- ctrl_interface_group=0
- update_config=1
- ap_scan=1
- network={
- ssid="要连接的WiFi"
- psk="WiFi密码"
- }
新建一个脚本文件:/usr/local/bin/wifi-connect.sh
编辑如下内容
- #!/bin/sh
- # 启动 wpa_supplicant
- /usr/sbin/wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
- # 等待几秒保证连接成功,主要是等待上面的操作成功再执行udhcpc
- sleep 5
- # 启动 udhcpc(前台运行,等待租约)
- exec /sbin/udhcpc -i wlan0 -n -q
再创建如下文件:vi /etc/systemd/system/wifi-connect.service
- [Unit]
- Description=Auto connect to WiFi
- After=network.target
- [Service]
- Type=simple
- ExecStart=/usr/local/bin/wifi-connect.sh
- RemainAfterExit=yes
- Restart=on-failure
- [Install]
- WantedBy=multi-user.target
启用并启动服务,这样可以在上电之后自动连接WiFi
- systemctl daemon-reexec
- systemctl daemon-reload
- systemctl enable wifi-connect.service
- systemctl start wifi-connect.service
然后使用reboot重启板子,可以在启动后看到wlan0成功
使用ifconfig即可查到wlan0成功使用dhcp分配到ip地址 了
Ping一下百度baidu看看是否外网通了
如果要做一些网络断开重连的自动检测方案,可以更改一下wifi-connect.sh 脚本:- #!/bin/sh
- WPA_CONF="/etc/wpa_supplicant.conf"
- IFACE="wlan0"
- echo "[wifi-connect] Starting WiFi auto-connect loop..."
- while true; do
- # 检查是否连接了 WiFi
- if iw "$IFACE" link | grep -q "Connected"; then
- echo "[wifi-connect] WiFi connected. Checking IP..."
- # 如果没有IP,就重新请求一次
- IP_ADDR=$(ip addr show "$IFACE" | grep 'inet ' | awk '{print $2}' | cut -d/ -f1)
- if [ -z "$IP_ADDR" ]; then
- echo "[wifi-connect] No IP assigned. Requesting via udhcpc..."
- udhcpc -i "$IFACE" -n -q
- fi
- else
- echo "[wifi-connect] WiFi disconnected. Reconnecting..."
- # 杀掉可能存在的旧进程
- pkill wpa_supplicant
- pkill udhcpc
- # 重新连接
- wpa_supplicant -B -i "$IFACE" -c "$WPA_CONF"
- # 等待连接成功
- for i in $(seq 10); do
- if iw "$IFACE" link | grep -q "Connected"; then
- echo "[wifi-connect] Connected to WiFi."
- break
- fi
- sleep 1
- done
- # 再请求 IP
- echo "[wifi-connect] Getting IP via udhcpc..."
- udhcpc -i "$IFACE" -n -q
- fi
- sleep 10 # 每 10 秒轮询一次
- done
这样在每次重启就可以自动连接WiFi了
|