¡Hola! Soy Oga, diseñadora y gerente de operaciones.
Llevo aquí desde 2015, así que ya soy una veterana en la empresa, y normalmente escribo en el blog de Liberogic artículos cuya utilidad es bastante cuestionable.
Pero esta vez voy a hablar en serio.
Para ser honesta, tengo prácticamente ninguna experiencia como ingeniera.
Aunque ocasionalmente veo una terminal en el trabajo, lo más que hago es observar los logs que aparecen; crear algo escribiendo comandos yo misma siempre me pareció cosa de gente que realmente sabe.
Y aquí estoy, habiendo montado todo desde la configuración de red hasta la implementación de una aplicación web en una Raspberry Pi. A veces, la necesidad te empuja a hacer cosas que ni imaginabas posibles.
El detonante: el problema del iPad de mi hijo
Mi hijo no deja de estar pegado al iPad. Si lo dejo, no hay límite.
Así que primero quería solucionar eso.
Justo en ese momento, la empresa me propuso: «¿Por qué no participas en nuestro hackathon interno y haces algo que te apetezca?»
Ahora mismo en Liberogic vive un auge sin precedentes de Claude Code. Todos los miembros del equipo lo usan como compañero de trabajo, y el ambiente es de pura fiesta de desarrollo. Yo uso el plan de $25 al mes, pero hay gente usando planes mucho más caros, y en general todo el mundo está con el espíritu de «hagamos cualquier cosa con IA».
«Siempre he querido probar una Raspberry Pi (la verdad, simplemente me parece que se ve genial)»
«Quiero resolver el problema del iPad de forma técnica»
«Quiero presentar algo tangible en el hackathon»
Esas tres ganas se fusionaron y nació el proyecto: un sistema de gestión que permite activar o desactivar la Wi-Fi para niños con solo pulsar un botón en el teléfono.
Veo terminales de vez en cuando, pero configurarlas es prácticamente inexistente para mí.
Así que, con la ayuda de Claude, anduve probando de aquí y allá hasta lograr construir esta «caja mágica».
Paso 1: Configuración de la Raspberry Pi
Preparación con Raspberry Pi Imager → Conexión SSH
Primero, hay que instalar el OS en Raspberry Pi 4. Instalo Raspberry Pi Imager (la herramienta oficial de escritura) en mi Mac y escribo el OS de 64 bits en la tarjeta MicroSD. Es importante activar SSH en los ajustes de escritura.
Conecto la Raspberry Pi al router con un cable LAN, enciendo la alimentación y desde la terminal de Mac me conecto con este comando.
terminal (Mac)
ssh [email protected]Cuando aparece pi@raspberrypi:~ $ en la terminal, sentí una pequeña emoción. Primero actualizo el sistema.
sudo apt update && sudo apt upgrade -yPaso 2 — Crear un punto de acceso WiFi
Configuración de hostapd / dnsmasq / iptables
Para hacer funcionar la Raspberry Pi como un «punto de acceso WiFi», instalo dos software. hostapd es el que emite la señal WiFi, y dnsmasq es el que distribuye direcciones IP a los dispositivos conectados.
sudo apt install hostapd dnsmasq
Escribo en el archivo de configuración el SSID (nombre del WiFi) y la contraseña. Esta vez lo llamé «KidsWiFi» para que fuera fácil de entender.
/etc/hostapd/hostapd.conf
interface=wlan0
driver=nl80211
ssid=KidsWiFi
hw_mode=g
channel=7
wpa=2
wpa_passphrase=(パスワード)
wpa_key_mgmt=WPA-PSKLuego especifico el rango de direcciones IP a distribuir a los dispositivos conectados.
/etc/dnsmasq.conf
interface=wlan0
dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24hPor último, configuro el reenvío de IP y NAT para que la Raspberry Pi actúe como intermediaria de Internet. Sin esto, aunque te conectes a KidsWiFi, no podrás acceder a Internet.
# 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 MASQUERADEHabía un problema donde wlan0 se desconectaba cada vez que reiniciaba. Escribí un archivo de servicio systemd para que la configuración de red se ejecutara automáticamente al iniciar. Fue la escena en la que lloré ante Claude pidiéndole ayuda mientras pensaba: "¿Por qué no se conecta de nuevo?".
Cuando "KidsWiFi" apareció en la lista de WiFi del teléfono inteligente y se conectó a la red, me sorprendió escribir en el chat: "¡Maestro! ¡Se conectó!" (Lo escribí de verdad).
Paso 3 — Crear un panel de administración con una aplicación web
Python + Flask para implementar una pantalla operativa desde un teléfono inteligente
Ahora que tenía un punto de acceso WiFi, lo siguiente era crear un panel de administración que pudiera controlarse desde un teléfono inteligente. Usé Flask, el framework web de Python, para ejecutar un servidor web en la Raspberry Pi. El flujo fue desarrollar primero en el entorno local de la Mac, confirmar que funcionaba, y luego transferirlo a la Raspberry Pi.
terminal (Mac) — Preparación del entorno de desarrollo
python3 -m venv venv
source venv/bin/activate
pip install flaskEl ON/OFF del WiFi es en realidad un mecanismo que "solo bloquea la conexión a Internet". La onda de KidsWiFi siempre está activa, y usamos iptables, el cortafuegos de Linux, para cambiar si descartamos o no los paquetes hacia Internet. Cuando lo codificas, resulta ser sorprendentemente simple.
app.py (extracto) — La parte central del control de 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)Con esto la red se detiene. Un comando detiene el iPad del niño. Sentí que había obtenido un poder increíble (aunque todavía no sé cómo usarlo bien).
Creé pantallas separadas para niños y padres.
¡La pantalla para niños viene con una función de ruleta!
Los límites de tiempo unilaterales no son divertidos ni para los niños. Entonces, pensé: si ellos mismos giran la ruleta, ¿no aceptarían el resultado?
"¿Cuántos minutos de WiFi tengo hoy?" — jugando así, con alegrías y penas. Es un mecanismo para transformar las negociaciones frustrantes sobre "cuándo dejar el iPad" en algo un poco más feliz y lúdico.
- Pantalla para niños
→ La ruleta te da 30, 45 minutos o 1 hora.
→ Cuenta regresiva del tiempo restante
→ 1 hora de tiempo de espera después del agotamiento
→ Tiempo total de uso acumulado
→ Número de tiradas de ruleta restantes - Panel de control para padres
→ Protección con contraseña
→ WiFi de emergencia desactivado
→ Modo tareas (bloqueo total)
→ Límite de tiradas de ruleta
→ Tiempo de apagado forzado
→ Registro de historial de uso
Durante el desarrollo surgió el problema de que «Mac no tiene iptables, así que no puedo probar». Para solucionarlo, preparé una función ficticia en Mac (que solo imprime una declaración) para poder verificar el funcionamiento.
Consulté con Claude sobre todos estos «¡Me quedé atrapado! ¿Qué hago?» mientras avanzaba.
Por cierto, como soy diseñador, estaba esperando la salida pensando «Supongo que tengo que ajustar el diseño de la pantalla yo mismo», pero salió con un diseño más limpio de lo esperado. Casi no necesité hacer correcciones.
Esto es un poco frustrante y gratificante al mismo tiempo.
Paso 4 — Desplegar en Raspberry Pi e iniciar automáticamente
Transferencia de archivos con SCP → Registro del servicio systemd
Transferiré los archivos generados en Mac a la Raspberry Pi.scp Lo hace todo de una vez.
Terminal (Mac) — Transferencia a la Raspberry Pi
scp -r templates app.py [email protected]:~/wifi-manager/Es tedioso iniciar Flask manualmente cada vez que se reinicia, así que escribiré un archivo de servicio systemd para iniciarlo automáticamente. Mi objetivo es que todo funcione por sí solo cuando se encienda.
/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-managerAhora todo funciona automáticamente al encender. Si accedes a http://192.168.4.1:5000 desde el navegador de tu teléfono, se abre la pantalla de la ruleta. Wow, en serio funcionó.
Lo que aprendí al intentarlo
Como no soy ingeniero, el hecho de que pudiera completar desde la configuración de red hasta Python sin duda se debió a que pude avanzar en «diálogo» con Claude.
Cuando me atasco, simplemente paso el error tal cual. Si pregunto «¿Qué hago a continuación?», me proporciona los pasos. Si pregunto «¿Por qué sucede esto?», me lo explica de manera clara.
En el mundo se habla mucho de «desarrollo ultra rápido con IA por ingenieros», pero la IA también es la mejor aliada para resolver esos pequeños problemas cotidianos, aunque sean apremiantes, que tenemos en nuestras vidas personales.
«Una idea que se me ocurre se hace realidad sin importar el tamaño de la organización o el nivel de habilidad individual»
. Lo que más aprecié fue poder sentir en carne propia esa democratización de la creación.
Ahora bien, sobre el problema del iPad de mi hijo... la verdad es que aún no lo he resuelto.
El sistema funciona perfectamente. Todo depende de cómo lo administre yo como padre. ¡Haré mi mejor esfuerzo!
Resido en Fukushima y batalla diariamente con mi hijo extremadamente activo. Aprovecho mi sensibilidad como graduada de una escuela de bellas artes mientras trabajo como diseñadora y gerente de operaciones. Mi capacidad de respuesta y agilidad, desarrolladas a través de la crianza, son mis mejores armas.
Oga
Diseñadora / Gerente de operaciones