大家好!我是設計師兼營運經理小Oga。
我是 2015年入社的老前輩,平時在 Yuru Log 上擬態成辣妹,寫一些不知道有什麼用途的文章。
但這次我決定認真一點,跟大家分享一個稍微比較正經的話題。
首先要說明的是,我在工程師實務上的經驗幾乎是零。
即使工作中會看到終端機,也只是看著日誌流過去,從來沒有自己執行命令創作什麼。我當時覺得那種事「是有本事的人才能做的」。
結果這次我竟然用樹莓派從網路配置到 Web 應用實裝全部搞定了……。人在被逼的時候,意外地很有行動力呢。
契機是孩子的 iPad 問題
我家孩子超愛玩 iPad,放著不管根本停不下來。
所以首先我想解決這個問題。
正好在那時候,公司下達了「公司內部駭客松,試試看做自己想要的東西」的指令。
我們公司現在正流行 Claude Code 熱潮。全體員工都以 Claude 為夥伴,公司內儼然成了開發祭典狀態。我是月費 25 美元的方案,但也有人用更高級的方案實力超群,總之整個公司充滿著「用 AI 什麼都做得出來」的活力。
「一直憧憬想要試試樹莓派(理由就是單純覺得看起來很酷)」
「想用工程師的方式解決 iPad 問題」
「想在駭客松中交出什麼成果」
這 3 股熱情合體而誕生的,就是「只要按智慧型手機上的按鈕,就能強制啟閉兒童用 WiFi 的管理系統」專案。
我雖然會看到終端機,但設定組態幾乎沒經驗過。
在 Claude 幫忙下,我邊試邊改,最後竟然把這個「魔法盒子」做出來了!
步驟 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 -y第 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 哭訴「為什麼又連不上!?」一邊解決問題的場景。
當「KidsWiFi」出現在手機 WiFi 清單中並成功連線時,我忍不住在聊天裡打了「老師!連上了!」(是真的打了)。
第 3 步 — 用 Web 應用程式建立管理頁面
使用 Python + Flask 實現可從手機操作的頁面
既然已經有了 WiFi 存取點,接下來就是製作可以從手機打開/關閉的管理頁面。我使用 Python 的 Web 框架「Flask」,在樹莓派上執行 Web 伺服器。首先在 Mac 的本地環境中開發並確認能正常運作,然後再轉移到樹莓派上。
終端機 (Mac) — 準備開發環境
python3 -m venv venv
source venv/bin/activate
pip install flaskWiFi 的開/關實際上是「只阻止連線到網際網路」的機制。KidsWiFi 的信號一直在發送,我使用 Linux 防火牆 iptables 來切換是否丟棄前往網際網路的封包。用程式碼表示的話其實相當簡單。
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服務
將在Mac上完成的檔案傳輸至樹莓派。只需使用scp指令即可一次完成。
終端機(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 問題……其實還沒解決呢。
系統運作得很順利。剩下就看我這個家長的運用能力了呢,加油!
住在福島,每天與過度活潑的兒子展開攻防戰。以美術大學出身的美感為武器,一邊從事設計師兼營運經理的工作。育兒鍛鍊出的應變力和瞬間判斷力是我的利器。
小賀
設計師/營運經理