Go to file
IrvingGao c0536c06da [wifi] dns 2024-06-17 20:26:56 +08:00
configs update hostapd conf 2024-05-27 19:46:19 +08:00
templates update 2024-05-19 20:30:23 +08:00
README.md update 2024-05-31 12:17:53 +08:00
scan_wifi.py [scan] wifi 2024-06-13 16:29:39 +08:00
start_hotpots.sh [debug] 2024-06-09 13:22:01 +08:00
wifi_manager.py [wifi] dns 2024-06-17 20:26:56 +08:00

README.md

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. 当红灯亮起时,热点开启,等待客户端连接,连接成功后,红灯熄灭;
  2. 当蓝灯亮起时,程序正常启动,如果蓝灯不亮起,则程序未启动,如果蓝灯熄灭,则已连接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
  1. 在打开的文件中,添加以下内容:
[Unit]
Description=Hotspot Service
After=network.target

[Service]
ExecPre=/bin/sleep 2
ExecStart=create_ap wlan0 eth0 Takway-Toys --no-virt
User=root

[Install]
WantedBy=multi-user.target

请确保将wlan0替换为你的无线网卡接口,将eth0替换为你的有线网卡接口,Takway-Toys替换为你想要设置的热点名称。

  1. 保存并关闭文件。

  2. 重新加载systemd配置

sudo systemctl daemon-reload
  1. 启用并启动Hotspot service
# sudo systemctl enable hotspot.service
sudo systemctl start hotspot.service
  1. 如果需要停止Hotspot service可以使用以下命令
sudo systemctl stop hotspot.service
  1. 如果需要查看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=/bin/bash /home/orangepi/wifi_hotpot/start_hotpots.sh
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 stop 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 wlan0
  • 扫描Wi-Fi:
nmcli dev wifi
  • 检查Wi-Fi连接状态:
nmcli dev status

create_ap

sudo create_ap wlan0 eth0 Takway-Toys --no-virt
+```