Hi! I'm Oga, a designer and operations manager.
I'm a veteran who joined the company in 2015, but I usually pretend to be a gal on my blog.An article whose benefit is unclear.I sometimes write those.
Despite my usual demeanor, this time I'm going to put in some effort and talk about something a little more serious.
As a premise, I have virtually no practical experience as an engineer.
Even though I sometimes look at the terminal for work, I'm usually just glancing at the logs that come in, and I always thought that actually typing commands and creating something myself was something "only for those who are capable."
And yet, I managed to complete everything from network configuration to web application implementation using a Raspberry Pi... It just goes to show that when you're forced to do something, you're surprisingly capable.
The trigger was the issue of children's iPads.
My kids are constantly on the iPad. If I leave them alone, there's really no end to it.
So, that was the first thing I wanted to do something about.
Just at that time, I received a directive from the company to "create something you like, like a company hackathon."
Our company is currently experiencing an unprecedented Claude Code boom. Every staff member is using Claude as their partner, and the office is in a development frenzy. I'm on the $25/month plan, but there are some hardcore users who are making full use of even more expensive plans, and the whole place is filled with the energy to "create anything with AI."
"I've always wanted to try out a Raspberry Pi (the reason being, it just seems cool)."
"I want to solve the iPad problem from an engineering perspective."
"I want to produce some kind of tangible result at the hackathon."
These three passions combined to give birth to the "Management System that Allows You to Forcibly Turn Children's Wi-Fi ON/OFF with a Single Button on Your Smartphone" project.
I sometimes look at the terminal, but I almost never configure anything.
With Claude's help, and after much trial and error, I finally managed to create this "magic box"!
Step 1 — Setting up the Raspberry Pi
Preparation using Raspberry Pi Imager → SSH connection
First, let's install the OS on the Raspberry Pi 4. Install Raspberry Pi Imager (the official flashing tool) on your Mac and flash the 64-bit OS onto the MicroSD card. It's surprisingly important to enable SSH in the flashing settings.
After connecting the Raspberry Pi to the router with a LAN cable and powering it on, you can connect it using just this command from the Mac's terminal.
terminal (Mac)
ssh pi@raspberrypi.local
At the terminalpi@raspberrypi:~ $I was a little moved the moment it appeared. First, I'll update the system.
sudo apt update && sudo apt upgrade -y
Step 2 — Set up a WiFi access point
hostapd / dnsmasq / iptables configuration
To use the Raspberry Pi as a "WiFi access point," you need to install two pieces of software.hostapdThe thing that emits Wi-Fi signals,dnsmasqThis is the device that assigns IP addresses to the connected devices.
sudo apt install hostapd dnsmasq
Write the SSID (Wi-Fi name) and password in the configuration file. This time, I named it "KidsWiFi" for clarity.
/etc/hostapd/hostapd.conf
interface=wlan0
driver=nl80211
ssid=KidsWiFi
hw_mode=g
channel=7
wpa=2
wpa_passphrase=(password)
wpa_key_mgmt=WPA-PSK
Next, you specify the range of IP addresses to be distributed to the connected devices.
/etc/dnsmasq.conf
interface=wlan0
dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h
Finally, we'll configure IP forwarding and NAT so that the Raspberry Pi can act as an internet relay. If you don't do this, you won't be able to access the internet even if you connect to KidsWiFi.
# Make IP forwarding persistent
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/routed-ap.conf
# Configure NAT (to allow internet access via eth0)
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
I encountered a problem where wlan0 would go DOWN every time the system restarted. I wrote a systemd service file to automatically run the network configuration at boot time. This is the scene where I solved the problem while whining to Claude, "Why won't it connect again!?"
When "KidsWiFi" appeared in my smartphone's Wi-Fi list and I was connected to the internet, I instinctively typed "Teacher! I'm connected!" in the chat (I really did type it).
Step 3 — Create an administration panel using a web application
Implement a smartphone-controllable screen using Python and Flask.
Now that the WiFi access point is set up, the next step is to create a management screen that can be turned on and off from a smartphone. We'll use the Python web framework "Flask" to run a web server on the Raspberry Pi. First, I developed it in a local environment on my Mac, confirmed that it was working, and then transferred it to the Raspberry Pi.
terminal (Mac) — Setting up the development environment
python3 -m venv venv
source venv/bin/activate
pip install flask
The WiFi ON/OFF switch actually only blocks internet access. KidsWiFi constantly emits a signal, and iptables, a Linux firewall, switches whether or not to drop packets destined for the internet. The code is surprisingly simple.
app.py (excerpt) — the core of WiFi control
import subprocess
def enable_internet():
# Remove block rule → Open internet
subprocess.run([
'sudo', 'iptables', '-D', 'FORWARD',
'-i', 'wlan0', '-j', 'DROP'
], capture_output=True)
def disable_internet():
# Add block rule → Block internet
subprocess.run([
'sudo', 'iptables', '-I', 'FORWARD',
'-i', 'wlan0', '-j', 'DROP'
], capture_output=True)
This alone will stop the internet connection. One command line will freeze my child's iPad. I felt like I had gained some incredible power (though I haven't quite mastered using it yet).
We created separate system screens for children and parents.
On the children's screen, surprisingly,Roulette functionIt features ''!
A one-sided time limit is bound to be boring for kids. So, the strategy is that they'll be more satisfied if they get to spin the roulette wheel themselves.
The idea is to turn the often fruitless negotiation about when to stop using the iPad into a fun and enjoyable game, where users react with joy or disappointment to the question, "How many minutes of Wi-Fi time will we have today!?"
- Child screen
→ You'll win either 30 minutes, 45 minutes, or 1 hour in a roulette game.
→ Remaining time countdown
→1 hour cooldown after time runs out
→Cumulative usage time
→Display remaining roulette spins - Parent Dashboard
→Password protection
→Emergency WiFi OFF
→ Homework mode (complete blockage)
→Maximum number of roulette spins
→ Forced OFF time
→Usage history log
During development, a problem arose: "We can't test it on Mac because iptables isn't available." We created a dummy function (simply printing a statement) for Mac to allow for testing.
I consulted with Claude about every single one of these "I'm stuck! What should I do?" situations as we went along.
Incidentally, since I'm a designer, I was expecting to have to arrange the screen layout myself while waiting for the output, but I was a little surprised to see that it came out with a surprisingly clean layout. I hardly had to make any corrections.
This is a bit frustrating, but also kind of nice.
Step 4 — Deploy to Raspberry Pi and automate startup
File transfer using SCP → Register as a systemd service
Transfer the files created on the Mac to the Raspberry Pi.scpIt can be done in one command.
terminal (Mac) — Transfer to Raspberry Pi
scp -r templates app.py pi@raspberrypi.local:~/wifi-manager/
Manually starting Flask every time I reboot is a pain, so I'll write a systemd service file to automate its startup. The goal is to have everything running automatically when I power on the computer.
/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
# Enable and start the service
sudo systemctl enable wifi-manager
sudo systemctl start wifi-manager
Now it's ready to go just by turning it on. If you access http://192.168.4.1:5000 from your smartphone's browser, the roulette screen will open. Wow, it really worked.
Things I thought after trying it
The reason I, a non-engineer, was able to complete everything from network configuration to Python is undoubtedly because I was able to "interact" with Claude as I went along.
If it gets stuck, it just throws an error message. If you ask, "What should I do next?", it will list the steps. If you ask, "Why does this happen?", it will explain it in simple terms.
While there's a lot of talk about engineers using AI to accelerate development, AI can also be the ultimate partner for solving small, yet pressing, problems in our daily lives.
"An idea can take shape, transcending the size of the organization and the individual's skills."
The greatest reward was being able to experience firsthand the democratization of manufacturing.
Now, as for the crucial issue of the child's iPad...the truth is, it's still unresolved.
The system is working perfectly. Now it's up to me, the parent, to manage it. I'll do my best!
Living in Fukushima, I engage in daily battles with my overly energetic son. Leveraging my artistic sensibilities honed through art school, I strive every day as a designer and operations manager. My strengths lie in the adaptability and quick thinking skills I developed through parenting.
Oga
Designer / Operations Manager