打印
[STM32MP1]

给STM32MP135F-DK开发板配置WiFi并实现上电自动连接

[复制链接]
1654|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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了


使用特权

评论回复
沙发
Tristan_C|  楼主 | 2025-5-5 11:49 | 只看该作者
记得更改一下 /usr/local/bin/wifi-connect.sh 文件的脚本

使用特权

评论回复
板凳
arima| | 2025-5-5 16:10 | 只看该作者
这个板子太高档了。。。

使用特权

评论回复
地板
xionghaoyun| | 2025-5-6 09:50 | 只看该作者
学习一下

使用特权

评论回复
5
Tristan_C|  楼主 | 2025-5-22 10:06 | 只看该作者
arima 发表于 2025-5-5 16:10
这个板子太高档了。。。

官方评估板的做工确实很好

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

117

帖子

1

粉丝