Topics

Creé un sistema de gestión WiFi para niños con Claude Code y Raspberry Pi sin ser ingeniero

  • column

¡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 -y

Paso 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-PSK

Luego 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,24h

Por ú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 MASQUERADE

Habí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 flask

El 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-manager

Ahora 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!

Autor de este artículo

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

Ver artículos de este staff

Destacamos por nuestro equipo confiable y nuestra rápida capacidad de respuesta

En Liberogic, nuestro personal experimentado impulsa activamente los proyectos, lo que nos ha ganado una alta evaluación de nuestros clientes.
Nos aseguramos de asignar adecuadamente gerentes de proyecto y directores, manteniendo una ejecución fluida de todo el proyecto. Evitamos aumentos de costos innecesarios mediante asignación completa, distribuyendo recursos estratégicamente según las necesidades, y somos reconocidos por la rapidez en la comprensión de tareas, elaboración de presupuestos y entrega de cotizaciones.

* Tome en cuenta que nuestra empresa no participa activamente en labores de residencia tipo SES.

Puede utilizar prácticamente todas las herramientas principales de gestión de proyectos y chat como Slack, Teams, Redmine, Backlog, Asana, Jira, Notion, Google Workspace, Zoom, Webex, entre otras.

Consulte con nosotros sobre sus dudas relacionadas con la web.

Casos de Estudio