这是幻尔科技(Hiwonder)PuppyPi 机器狗的树莓派工具箱,包含 WiFi 管理、设备发现、远程配置和按键扫描四个服务。下面逐一分析:
1. wifi.py --- WiFi 管理服务
核心功能:控制树莓派的 WiFi 工作模式。
两种模式通过 wifi_conf.py 中的 WIFI_MODE 控制:
WIFI_MODE = 1:AP 模式,树莓派自己发射热点,默认 SSID 为HW-XXXXXXXX(基于 MAC 地址生成),密码hiwonder,网关192.168.149.1WIFI_MODE = 2:STA 模式,树莓派连接你指定的 WiFi 路由器
LED 指示灯状态(GPIO 26):
- 快闪 → AP 模式正在创建
- 极快闪 → 正在尝试连接 WiFi
- 常亮 → STA 模式连接成功
配置文件加载优先级:当前目录 → /etc/wifi/wifi_conf.py → 工具箱目录下的 wifi_conf.py,后加载的会覆盖前面的。
2. wifi_conf.py --- WiFi 配置文件
这是你实际需要修改的文件:
python
WIFI_MODE = 1 # 1=AP热点模式, 2=STA连接路由器模式
#WIFI_AP_SSID = 'HW-Robot' # 自定义AP名称(必须HW-开头,否则APP无法使用)
#WIFI_AP_PASSWORD = 'hiwonder' # AP密码
WIFI_STA_SSID = 'su' # 要连接的路由器/手机热点名称
WIFI_STA_PASSWORD = '12345678' # 路由器/热点密码
使用方式:
- 想让树莓派连你家 WiFi:把
WIFI_MODE改为2,填好WIFI_STA_SSID和WIFI_STA_PASSWORD - 想让树莓派自己发热点(手机/电脑直连):保持
WIFI_MODE = 1 - 修改后重启服务:
sudo systemctl restart wifi.service
3. remote.py --- 远程 WiFi 配置服务(TCP 端口 9026)
监听 9026 端口,接收 JSON 格式的 WiFi 配置指令。手机 APP 通过这个服务远程切换 WiFi:
json
{"setwifi": {"ssid": "你的WiFi名", "passwd": "你的密码"}}
收到后会写入 /etc/wifi/wifi_conf.py 并自动重启 wifi 服务,切换到 STA 模式连接指定 WiFi。
4. find_device.py --- 设备发现服务(UDP 端口 9027)
监听 9027 端口,当手机 APP 在局域网广播 LOBOT_NET_DISCOVER 时,回复 PUPPY:序列号,这样 APP 就能自动发现机器狗。
5. button_scan.py --- 物理按键服务
监听两个 GPIO 按键:
- GPIO 25(KEY1):长按约 3 秒 → 重置 WiFi(清除
/etc/wifi/下的配置,恢复 AP 模式) - GPIO 23(KEY2):长按约 3 秒 → 关机(
sudo halt)
6. install.sh --- 一键安装
bash
cd /home/pi/hiwonder-toolbox/
sudo bash install.sh
把所有 .service 文件复制到 systemd 目录并启用开机自启。
从 wifi.log 看到的问题
你的日志显示大量 Can not connect to SSID: su,说明树莓派长期处于 STA 模式但连不上手机热点(手机不在附近或热点没开)。每次连接失败后会自动回退到 AP 模式。
典型使用流程:
- 开机默认 AP 模式 → 手机连接
HW-XXXXXXXX热点(密码hiwonder) - 通过 APP 或直接编辑
wifi_conf.py配置家庭 WiFi - 重启后树莓派自动连接家庭 WiFi,连不上则回退 AP 模式
- 物理按键长按 KEY1 可随时重置回 AP 模式