大家好!我是兼任设计师和运营经理的小贺。
我是2015年入职的老员工了,平时在简单随笔博客上扮作辣妹,写一些不知道对谁有用的文章。
这次我打算认真一点,聊聊比较正经的话题。
首先说明,我几乎没有任何作为工程师的实际工作经验。
工作中虽然会看到终端,但也只是看看滚动的日志,自己敲命令去做点什么,我一直觉得那是“会的人才做的事”。
没想到这次我居然用 Raspberry Pi 从网络配置一路做到 Web 应用的实现,并且完整做完了。人一旦被逼到份上,意外地还是能动起来的。
起因是孩子的 iPad 问题
我家孩子见到 iPad 就一直玩,放着不管真的没完没了。
所以我首先想解决的就是这个问题。
正好在这个时候,公司下达了一个指令:“像自家的黑客松一样,做点自己喜欢的东西吧。”
我们公司现在正掀起前所未有的 Claude Code 热潮。全体员工都把 Claude 当作搭档,公司里简直就是开发狂欢的状态。我用的是每月 25 美元的套餐,也有人用更高价的套餐玩得很溜,总之大家都充满了“什么都能用 AI 做出来”的干劲。
“一直很向往,想碰碰树莓派(理由嘛,就是感觉很酷)”
“想用工程师的方式解决 iPad 问题”
“想在黑客松上拿出点什么成果”
这三股热情合在一起,就诞生了这个项目:“用手机按一下按钮,就能强制开启或关闭孩子专用 Wi-Fi 的管理系统”。
平时很少看终端,更别说配置设置了,几乎完全没碰过。
就是这样的我,在Claude的帮助下,一边反复折腾、一边摸索,最终做出了这个“魔法盒子”!
Step 1 — 树莓派的初始设置
使用 Raspberry Pi Imager 做准备 → SSH 连接
首先从在 Raspberry Pi 4 上安装操作系统开始。在 Mac 上安装 Raspberry Pi Imager(官方烧录工具),然后将 64 位操作系统写入 MicroSD 卡。在烧录设置中启用 SSH,这一步虽然不起眼,但非常重要。
用网线将树莓派连接到路由器并开机后,只需在 Mac 的终端中输入以下命令即可连接。
terminal (Mac)
ssh [email protected]当终端中出现pi@raspberrypi:~ $的那一刻,我还是有点感动。接下来先更新一下系统。
sudo apt update && sudo apt upgrade -yStep 2 — 搭建 WiFi 接入点
hostapd / dnsmasq / iptables 的配置
为了让树莓派作为“WiFi 接入点”运行,需要安装两个软件。hostapd负责发射 WiFi 信号,dnsmasq负责为连接的设备分配 IP 地址。
sudo apt install hostapd dnsmasq
在配置文件中填写 SSID(WiFi 名称)和密码。这次为了简单易懂,我将其命名为“KidsWiFi”。
/etc/hostapd/hostapd.conf
interface=wlan0
driver=nl80211
ssid=KidsWiFi
hw_mode=g
channel=7
wpa=2
wpa_passphrase=(パスワード)
wpa_key_mgmt=WPA-PSK接下来,指定要分配给已连接设备的 IP 地址范围。
/etc/dnsmasq.conf
interface=wlan0
dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h最后,设置 IP 转发和 NAT,让树莓派能够充当互联网的中继。如果不做这一步,即使连上 KidsWiFi 也无法访问互联网。
# IPフォワーディングを永続化
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/routed-ap.conf
# NATの設定(eth0経由でインターネットに出られるようにする)
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE每次重启后 wlan0 都会变成 DOWN 的问题出现了。我编写了 systemd 服务文件,使其在开机时自动执行网络配置。这是我一边向 Claude 抱怨“怎么又连不上了!?”一边解决问题的场景。
当手机的 WiFi 列表中出现“KidsWiFi”并成功连上网络时,我忍不住在聊天框里打出了“老师!连上了!”(真的打了)。
第 3 步 — 用 Web 应用制作管理界面
使用 Python + Flask 实现可通过手机操作的界面
WiFi 接入点已经搭建完成,接下来是可以通过手机开关的管理界面。我们使用 Python 的 Web 框架“Flask”,在树莓派上运行 Web 服务器。流程是先在 Mac 的本地环境中开发,确认可以正常运行后,再传输到树莓派。
terminal(Mac)— 准备开发环境
python3 -m venv venv
source venv/bin/activate
pip install flaskWiFi 的开关其实是一种“只阻断互联网连接”的机制。KidsWiFi 的信号始终在发射,通过名为 iptables 的 Linux 防火墙来切换是否丢弃通往互联网的数据包。写成代码后意外地很简单。
app.py(节选)— WiFi 控制的核心部分
import subprocess
def enable_internet():
# ブロックルールを削除 → インターネット解放
subprocess.run([
'sudo', 'iptables', '-D', 'FORWARD',
'-i', 'wlan0', '-j', 'DROP'
], capture_output=True)
def disable_internet():
# ブロックルールを追加 → インターネット遮断
subprocess.run([
'sudo', 'iptables', '-I', 'FORWARD',
'-i', 'wlan0', '-j', 'DROP'
], capture_output=True)只需这一步就能断网。一行命令就能让孩子的iPad停下来。感觉自己像是拿到了什么了不得的力量(虽然还没完全用顺手)。
系统界面分为儿童用和家长用两套分别制作。
在儿童用界面中,居然搭载了转盘功能!
单方面的时间限制,孩子也一定不会觉得有趣吧。那么,如果结果是自己转出来的,他们或许就能心服口服——这就是我的思路。
让他们在游戏般的氛围中为“今天的Wi-Fi时间是多少分钟!?”而忽喜忽忧。这是一个让常常陷入僵局的“该停用iPad了”的协商变得轻松愉快的小机制。
- 儿童用界面
→ 转动转盘,可抽中30分钟、45分钟或1小时。
→ 显示剩余时间倒计时
→ 时间用完后进入1小时冷却期
→ 显示累计使用时间
→ 显示剩余转盘次数 - 家长用仪表盘
→ 密码保护
→ 紧急关闭WiFi
→ 作业模式(完全断网)
→ 转盘次数上限
→ 强制关闭时间
→ 使用记录日志
开发过程中出现了“Mac上没有iptables,无法测试”的问题。为此,我准备了Mac用的模拟函数(仅输出print信息),以便能够确认运行效果。
像这样“卡住了!怎么办!”的时候,也全都是一边和Claude商量一边推进的。
顺便一提,我好歹也是设计师,所以原本在等待输出时还想着“界面布局是不是得自己来调整”,结果输出的布局出乎意料地漂亮,让我有点意外。基本上没怎么修改就完成了。
这让人有点不甘心,又有点高兴。
第4步 — 部署到树莓派并设置自动启动
通过SCP传输文件 → 注册systemd服务
使用 scp 命令,一次即可将在 Mac 上生成的文件传输到树莓派。
终端(Mac)— 向树莓派传输
scp -r templates app.py [email protected]:~/wifi-manager/每次重启都要手动启动Flask太麻烦了,所以我编写了systemd服务文件,设置为自动启动。目标是开机后一切都能自动运行。
/etc/systemd/system/wifi-manager.service
[Unit]
Description=WiFi Manager
After=network.target wifi-setup.service
[Service]
ExecStartPre=/bin/bash -c 'echo > /home/pi/wifi-manager/state.json'
ExecStartPre=iptables -F FORWARD
ExecStart=/usr/bin/python3 /home/pi/wifi-manager/app.py
WorkingDirectory=/home/pi/wifi-manager
Restart=always
User=root
[Install]
WantedBy=multi-user.target# サービスを有効化して起動
sudo systemctl enable wifi-manager
sudo systemctl start wifi-manager这样一来,只要打开电源,一切就都能自动运行了。用手机浏览器访问 http://192.168.4.1:5000 ,就会打开转盘界面。太厉害了,居然真的成功了。
实践后的感想
作为非工程师的我,之所以能够从网络设置一路完成到Python,无疑是因为一边与Claude
“对话”一边推进。遇到卡点时,直接把错误信息抛给它;问它“接下来该做什么?”,它会把步骤一条条列出来;问它“为什么会这样?”,它会拆开来详细讲解。
虽然社会上常听到“工程师借助AI飞速开发”之类的说法,但即使是解决个人生活中那些微小却迫切的烦恼,AI也能成为最强大的搭档。
“脑中闪过的点子,不受组织规模或个人技能的限制,就能变成现实”
,亲身感受到这种制造业的民主化,是我最大的收获。
说到最关键的孩子使用iPad的问题……其实,目前还没有解决。
系统运行得很顺利。接下来就看我这个当家长的运营情况了吧。我会加油的!
居住在福岛,每天与精力过剩的儿子展开攻防战。在发挥美术大学毕业的感性的同时,作为设计师兼运营经理每天奋力拼搏。在育儿中锻炼出的应变能力和反应速度是我的武器。
おが
设计师 / 运营经理