## Linux嵌入板卡自发热点连接无线网络 ### 介绍 Linux嵌入板卡发出热点供客户端连接,客户端通过浏览器访问热点,连接到Linux嵌入板卡的热点,并进行交互。 - 连接逻辑: 1. 扫描Wi-Fi,并将Wi-Fi list保存为json格式,存储在本地,命名为`scaned_wifi_list.json`; 2. 检查Wi-Fi连接状态,若已连接,则退出程序; 3. 关闭Wi-Fi,并启动热点和web服务器,web服务器监听80端口,并提供一个页面,页面中包含Wi-Fi列表; 4. 等待用户选择 Wi-Fi 网络并输入密码,并连接到用户选择的 Wi-Fi 网络; 5. 如果Wi-Fi连接成功,则显示Wi-Fi连接成功页面,并提供交互页面; 6. 如果Wi-Fi连接失败,则重新扫描Wi-Fi,并提示用户重新连接. ### 环境准备 #### (1) 安装依赖项: ``` sudo apt-get update sudo apt-get install -y hostapd dnsmasq ``` #### (2) 克隆项目到本地并安装依赖: ``` // 克隆项目到本地 https or ssh git clone http://43.132.157.186:3000/gaohz/wifi_hotpot.git cd wifi_hotpot ``` #### (3) 安装Python端环境依赖: ``` sudo pip install flask psutil ``` #### (4) 配置开机自启动服务项: ##### (4.1) 配置WiFi热点服务项: 1. 创建一个service文件: ``` sudo vim /etc/systemd/system/hotspot.service ``` 2. 在打开的文件中,添加以下内容: ``` [Unit] Description=Hotspot Service After=network.target [Service] ExecStart=create_ap wlan0 eth0 Takway-Toys --no-virt User=root [Install] WantedBy=multi-user.target ``` 请确保将`wlan0`替换为你的无线网卡接口,将`eth0`替换为你的有线网卡接口,`Takway-Toys`替换为你想要设置的热点名称。 3. 保存并关闭文件。 4. 重新加载systemd配置: ``` sudo systemctl daemon-reload ``` 5. 启用并启动Hotspot service: ``` # sudo systemctl enable hotspot.service sudo systemctl start hotspot.service ``` 6. 如果需要停止Hotspot service,可以使用以下命令: ``` sudo systemctl stop hotspot.service ``` 7. 如果需要查看Hotspot service的状态: ``` sudo systemctl status hotspot.service ``` ##### (4.2) 配置WiFi热点管理服务项: - 编辑 ``` sudo vim /etc/systemd/system/wifi_hotspot.service ``` - 内容: ``` [Unit] Description=WiFi Hotspot Wrapper After=network.target Wants=network.target [Service] Type=oneshot ExecStart=python3 /home/orangepi/wifi_hotpot/wifi_manager.py WorkingDirectory=/home/orangepi/wifi_hotpot User=root [Install] WantedBy=default.target ``` - 配置 ``` sudo systemctl daemon-reload sudo systemctl enable wifi_hotspot.service # sudo systemctl disable wifi_hotspot.service ``` - 开始(测试) ``` sudo systemctl start wifi_hotspot.service ``` - 查看输出 ``` sudo systemctl status wifi_hotspot.service ``` #### (5) 配置热点信息: - 手动连接`http://192.168.12.1/` - 连接成功后,输入用户名密码,即可进入交互界面。 ## 其他参考命令 - 创建热点: ``` sudo systemctl start hotspot.service ``` - 关闭热点: ``` sudo systemctl stop hotspot.service ``` - 开启Wi-Fi连接: ``` nmcli dev wifi connect Innoxsz-Public password innox2023 ``` - 断开Wi-Fi连接: ``` nmcli dev disconnect iface wlan0 ``` - 扫描Wi-Fi: ``` nmcli dev wifi ``` - 检查Wi-Fi连接状态: ``` nmcli dev status ```