Tabla de contenido:
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
Este instructivo le mostrará cómo construir su propia caja de narración. Siéntete libre de elegir tu propia aventura.
El llamado "GrimmsBox" fue un proyecto de estudiantes de la Hochschule der Medien Stuttgart, Alemania. Usamos una impresora de recibos común para imprimir la primera parte de una historia. Al final de la parte, se debe tomar una decisión. Usando botones puedes elegir cómo continuará la historia. Usamos una Raspberry Pi para ejecutar el software.
Dos de las Cajas estarán en uso muy pronto. La biblioteca pública de Mannheim está organizando talleres con niños. Los niños pueden crear sus propias historias y pueden experimentar sus historias con la ayuda de GrimmsBox. El objetivo principal de estos talleres es la promoción de las habilidades de lectura y escritura. Los recuadros de narración también se llevarán a los eventos para que los niños de los grados 3 a 6 se introduzcan en una experiencia de lectura inmersiva.
Paso 1: Cómo defender GrimmsBox
Los materiales requeridos:
- 1x placa de madera contrachapada de 6 mm (1200x600x6mm)
- 1x placa de madera contrachapada de 4 mm (1200x600x4mm)
- pegamento de madera
- dispositivos requeridos: cortadora láser, computadora
Los archivos utilizados por GrimmsBox están disponibles como descarga gratuita. Los archivos son archivos svg y dxf de los componentes individuales de GrimmsBox. Esta es, por un lado, la subestructura donde la Raspberry Pi encuentra su lugar, luego el libro con una bisagra que se dobla y un soporte para libros de diseño propio.
La placa de madera contrachapada de 6 mm se utiliza para la subestructura y el soporte de libros. El libro fue cortado de una placa de madera contrachapada de 4 mm. La placa más gruesa sería demasiado gruesa para hacer el libro. La bisagra de flexión solo funciona con paneles de madera contrachapada de 3-4 mm. De lo contrario, se rompería.
Los archivos dxf son la elección correcta para aquellos que ya no quieren cambiar nada. Están listos para usar en la cortadora láser.
Pero para aquellos que aún quieran darle a la caja su propio toque, pueden usar archivos SVG en la caja. Estos se pueden cambiar según se desee. Para hacer esto, el archivo debe abrirse en un programa (por ejemplo, Inkscape). Con estos programas puede editar los componentes individuales. Si ha cambiado algo (por ejemplo, el tamaño de los orificios para los botones o el tirador), debe guardar el archivo SVG como un archivo dxf.
El archivo dxf debe abrirse en la cortadora láser. Tan pronto como el archivo se muestra en el PC, se debe seleccionar qué líneas se van a cortar y cuáles se van a grabar. Las letras en el costado de la caja estaban grabadas en la caja de Grimm y las letras en el libro estaban cortadas débilmente. Dependiendo de lo que más te guste, puedes utilizar uno u otro. Por supuesto, todas las líneas exteriores deben cortarse. Sin embargo, el uso de la cortadora láser puede depender del modelo de la cortadora láser y puede ser diferente.
Paso 2: Cómo ensamblar los botones para GrimmsBox
Los materiales requeridos:
- 6 pulsadores momentáneos normalmente abiertos, p. Ej. botones para juegos de arcade
- 8 cables de puente con al menos un extremo hembra, los nuestros tenían unos 40 cm de largo
- algo de trenza
- tubo termorretráctil la caja utilizada para su proyecto, en nuestro caso la cubierta superior cortada con láser y las dos cubiertas laterales que incluyen los botones adicionales
- soldadura y un soldador
- multímetro
- cortador de cables
- pelacables
- encendedor o pistola de aire caliente
- En nuestro código usamos resistencias internas, por lo que solo necesitamos hacer dos cosas: primero, conectar un cable de puente hembra a cada botón que conducirá al pin GPIO respectivo y segundo, conectar los botones entre sí, que luego serán guiados a tierra a través de otro cable de puente hembra. Conectamos el botón de apagado y el botón del programa de reinicio juntos y usamos un pin de tierra para ellos. Los cuatro botones que utilizará el motor de elegir tu propia aventura también se conectaron entre sí y compartieron un pin de tierra.
- Si sus botones tienen más de dos pines, use un multímetro para averiguar cuáles son adecuados para conectar el pin GPIO y la tierra. Con la función de sonido, solo debería escuchar un sonido si toca dos pines y el botón está siendo presionado. Puede hacer una prueba de continuidad, una guía de cómo hacerlo está disponible en ifixit:
- Tome un botón e insértelo en la parte de la caja. Tome uno de los cables de puente y corte un extremo, que debería dejarlo con un cable de puente con un extremo hembra. Utilice el pelacables para cortar unos 5 milímetros del aislamiento. Gire un poco los cables sueltos para que no sobresalga ningún cable. Use un poco de lata para hacer una buena capa para los cables. Si es nuevo en la soldadura, hay un libro de historietas breve y excelente que le enseña a soldar. Se llama Soldar es fácil y el PDF está disponible en varios idiomas en https://mightyohm.com/blog/2011/04/soldering-is-e … Mida y corte el tubo termorretráctil, que utilizará para aislar el parte donde el botón y el cable de puente se soldarán juntos. Pase el tubo termorretráctil sobre el cable de puente. Suelde el cable de puente a una de las clavijas del botón.
- Repita el último paso para todos los botones. Asegúrese siempre de pasar el tubo termorretráctil sobre el cable de puente antes de soldar, ya que es posible que no encaje sobre el conector.
- Ahora conectará el botón de apagado y el botón de reinicio. Usamos alambre de cobre esmaltado, pero como resultó un poco complicado, sugeriría usar una trenza normal. Corte de unos centímetros de trenza. Como antes, desmóntelo con el pelacables, pero esta vez en ambos extremos. Luego, suelde un extremo al pin del botón de apagado o reinicio. Nuevamente, corte un poco del tubo termorretráctil y póngalo sobre la trenza.
- A continuación, conectará la trenza al pin libre del otro botón. Pero también conectará otro cable de puente aquí, que conducirá a tierra. Prepare el cable de puente como lo hizo con los demás, incluido el tubo termorretráctil. Ahora doble la trenza para que pueda soldarla al pin libre que sale del botón que mira hacia el extremo libre. Luego suelde también el cable de puente al pin. Soldar la trenza que viene de un lado y el cable de puente del otro lado asegura que pueda tirar del tubo termorretráctil sobre la parte soldada.
- Conecte los cuatro botones utilizados para el motor del juego construyendo pequeños puentes. Asegúrese siempre de pasar el tubo termorretráctil sobre la trenza antes de soldar. (Y también asegúrese de que sus botones estén en la posición correcta antes de conectarlos entre sí). Al conectar el último botón, debe volver a conectar, al igual que con los otros dos botones, la trenza desde abajo y conectar también un cable de puente.
-
Con la función de sonido del multímetro puedes comprobar si todo está bien conectado. Finalmente, debe verificar si todos los tubos termorretráctiles están en el lugar correcto. Luego, puede usar un encendedor o una pistola de aire caliente para encogerlo. ¡Ahora ha terminado de ensamblar los botones!
Paso 3: configuración del software
Necesitará:
- una Raspberry Pi con Raspbian instalado (también debería poder usar otras distribuciones, pero necesita ajustar algunos comandos): usamos un paquete que consta de una Raspberry Pi 3 Modelo B + con una tarjeta SD preinstalada, una fuente de alimentación y un caso, otros modelos también deberían funcionar
- una impresora de recibos: tenga en cuenta que debe conectar la impresora a la Raspberry Pi, por lo que la conexión a través de USB podría ser más fácil
- tus botones
-
Conecte su Raspberry Pi a una pantalla, mouse y teclado. También necesitará conectarlo a la impresora y eventualmente a los botones. Los botones deben estar conectados a pines GPIO específicos. Si desea usar pines diferentes a los que usamos, puede cambiar eso en el código. Por ahora, esta lista le dirá qué botón debe conectarse a qué pin. Usaré la numeración BCM que también se usa en el código. Hay un gráfico en https://www.raspberrypi.org/documentation/usage/g… que muestra qué pin tiene qué número.
• botón de apagado - 17 • botón de reinicio - 27 • primer botón usado para opciones en la historia / aventura - 5 • segundo botón - 6 • tercer botón - 13 • cuarto botón - 19 • los dos cables de puente conectados a los pines que unen todos los botones deben ir al suelo, en el gráfico marcado con puntos negros
Inicie la Raspberry Pi enchufando la fuente de alimentación. Conecte la Raspberry Pi a Internet mediante un cable LAN o una red inalámbrica.
- Lo primero que debe hacer al instalar el software necesario en la raspberry pi es actualizar el software que ya está instalado. Haremos esto usando la terminal. Si es la primera vez que usa un terminal, la documentación de Raspberry Pi (https://www.raspberrypi.org/documentation/usage/terminal/) lo ayuda a moverse y conocer el entorno. Abra una terminal y escriba sudo apt update y presione enter. Esto actualizará la lista de paquetes y versiones disponibles. Después de eso, escriba sudo apt upgrade. Esto realmente instalará versiones más nuevas de los paquetes ya instalados.
- La instalación del controlador de la impresora es el siguiente paso. La gestión de la impresora en Linux se puede realizar mediante CUPS. Es posible que primero deba instalarlo en su Raspberry Pi. En una terminal, escriba sudo apt install cups. El siguiente paso es obtener los controladores de la impresora. Quizás tengas suerte y esté incluido en los repositorios oficiales. En una terminal, use apt search [nombre de la impresora o nombre del fabricante] para buscarlo. La mayoría de las impresoras probablemente no se incluirán en los repositorios, por lo que debe obtenerlas de otro lugar. Es posible que haya un CD adjunto a la impresora. En el sitio web del fabricante, los controladores más recientes deben estar disponibles para su descarga. Algunos fabricantes tienen diferentes sitios web para diferentes regiones del mundo y, lamentablemente, no todos incluyen la misma información. Si tiene una impresora Star, starasia.com parece ser el sitio web con los controladores descargables más recientes. Compruebe que ha descargado impresoras para Linux. Usamos los controladores CUPS, no los controladores JavaPOS.
- A continuación, debe instalar los controladores. Siga las instrucciones del fabricante. Puede haber un manual de software para Linux disponible, que puede resultar útil. Siga las instrucciones para Debian o Ubuntu; hay muchas distribuciones de Linux diferentes y no todas son iguales, así que verifique primero si tiene las instrucciones correctas a mano. En nuestro manual, las instrucciones comenzaron sin indicar que son para sistemas basados en Red Hat y solo en la página siguiente aprendimos que las instrucciones para sistemas basados en Debian son diferentes. El manual del software también debe indicar qué paquetes deben instalarse, por ejemplo, tuvimos que instalar “libcups2-dev”. Probablemente necesitará sudo algunos comandos. Para evitar que repita nuestro error: si necesita compilar los controladores a partir del código fuente usando make, debe sudoed make install. Solo por el mensaje de error no pudimos averiguar qué salió mal.
- Si no está incluido en su manual de instalación, debe configurar la impresora en CUPS. Para hacer eso, navegue a localhost: 631 en un navegador. Haga clic en “Administración” y luego en “Agregar impresora” para configurar la impresora. También hay una sección de ayuda. Necesita autenticarse como usuario, consulte https://help.ubuntu.com/lts/serverguide/cups.html… (sección “Interfaz Web”) para obtener más detalles. Elija el tamaño de papel y ppd adecuado. También debe convertirla en la impresora predeterminada, ya que el software imprimirá en la impresora predeterminada. Para hacerlo, navegue hasta la página de la impresora y desde el menú "Administración" seleccione "Establecer como servidor predeterminado". Desde el menú "Mantenimiento" puede seleccionar "Imprimir página de prueba" para una primera verificación si todo está configurado correctamente.
- Otro paquete que necesitará es python3-yaml, ya que las historias se guardan en archivos yaml y el paquete es necesario para que el código Python pueda interpretarlas. Utilice sudo apt install python3-yaml para instalarlo.
- Ahora finalmente comenzaremos con la instalación del software que realmente imprime las historias y escucha la entrada en los pines GPIO conectados a los botones. Abra una terminal y navegue hasta el directorio de inicio si aún no está en él (esto se puede lograr escribiendo cd (para cambiar de directorio)). Como nuestro código está en GitHub, puede copiarlo a su Raspberry Pi usando git clone https://github.com/fio-na/GrimmsKiste-1.git Esto creará un repositorio local en su Raspberry Pi de nuestro código. Si recibe un mensaje de error porque git no está instalado, puede instalarlo escribiendo sudo apt install git.
- El código contiene algunos elementos que es posible que deba modificar. En primer lugar, las historias se guardan en archivos yaml que también se encuentran en el repositorio de git. Si la ruta a su carpeta no es “/ home / pi / GrimmsKiste-1”, deberá cambiar estas rutas para poder usar las historias. En segundo lugar, imprimimos usando subprocesos y entregamos comandos de terminal. Esto incluye algunas opciones utilizadas por nuestro controlador de impresora que nos permiten determinar si el papel se cortará después de la impresión o no. Es probable que estos no funcionen para usted (a menos que también use una impresora Star TSP). También notará que se imprimirá una serie de líneas que solo incluyen un punto. Necesitábamos esto, porque de lo contrario partes de la historia no serían legibles porque el papel todavía se atascó en la impresora. Y finalmente, en la función format_text usamos textwrap para obtener fragmentos de texto de no más de 28 caracteres, porque esa es la cantidad que caben en una línea en nuestro papel de 80 mm. Ajuste estos elementos para que se adapten a su configuración.
- Algunos archivos deben ser ejecutables. Para hacer esto, navegue hasta la carpeta con el código que acaba de descargar. Esto debería ser cd ~ / GrimmsKiste-1 si lo siguió. En Linux, los permisos de archivos son manejados por chmod. chmod a + x Engin.py y chmod a + x shutdown-pi-and-restart-program.py hace que esos dos archivos sean ejecutables para todos los usuarios.
- Ahora podemos probar si el motor puede funcionar y funciona correctamente y si la impresora y los botones están configurados correctamente. Escriba./Engin.py para hacer eso.
- Si todo funciona bien, el siguiente paso es configurar dos servicios systemd. Para obtener más información, la página wiki de archlinux (https://wiki.archlinux.org/index.php/Systemd) puede ayudar o la página de manual de systemd.service (https://www.freedesktop.org/software/systemd/ man / systemd.service.html). El primer servicio systemd comprobará cada dos segundos si Engin.py se está ejecutando actualmente, y si no lo está, lo iniciará. Por lo tanto, también inicia el programa cuando arranca la Raspberry Pi. Abra un archivo en la carpeta systemd: sudo nano /etc/systemd/system/grimmskiste-restart.service Escriba lo siguiente:
-
[Unidad]
Descripción = reinicia Grimms Kiste cada dos segundos si falla [Servicio] ExecStart = / home / pi / GrimmsKiste-1 / Engin.py Reiniciar = siempre RestartSec = 2 [Instalar] WantedBy = multi-user.target
- Necesita editar la ruta en ExecStart, si su Engin.py se encuentra en otro lugar, p. Ej. si su nombre de usuario es diferente. Para guardar un archivo en nano, debe presionar ctrl + x, luego escribir y (para sí) y presionar enter.
- El otro servicio iniciará el script shutdown-pi-and-restart-program.py, que escucha el botón de apagado y reinicio. El botón de reinicio lee el ID de proceso de Engin.py de un archivo y lo mata, y debido al otro servicio systemd, Engin.py se reinicia después de dos segundos. El botón de apagado simplemente envía un comando a la Raspberry Pi que se apagará ahora. Abra otro archivo usando sudo nano /etc/systemd/system/grimmskiste.service y escriba lo siguiente:
-
[Unidad]
Descripción = Controla dos botones de hardware para apagar la frambuesa pi o para matar el programa en ejecución Grimms Kiste [Servicio] ExecStart = / home / pi / GrimmsKiste-1 / shutdown-pi-and-restart-program.py [Instalar] WantedBy = multi-user.target
- Nuevamente, deberá editar la ruta en ExecStart, si es diferente en su Pi. Y nuevamente, puede guardar el archivo en nano usando ctrl + x, luego escribiendo y y presionando enter.
- Ahora tiene los archivos de unidad para los servicios systemd, pero aún no están en uso. Siempre que cambie los archivos de unidad, escriba sudo systemctl daemon-reload, así que hágalo ahora. Luego inicie ambos servicios usando sudo systemctl start grimmskiste.service y sudo systemctl start grimmskiste-restart.service Esto iniciará los servicios por ahora. Utilice sudo systemctl status grimmskiste.service y sudo systemctl status grimmskiste-restart.service para comprobar si están en funcionamiento. En la salida, debería haber una línea que incluya "activo (en ejecución)", probablemente en la tercera línea; si no es así, algo salió mal. Journalctl podría ayudar con más información de depuración.
- El uso de systemctl start solo inicia los servicios por ahora, pero si desea que se inicien cada vez que arranca la Raspberry Pi, debe habilitarlos. Esto se hace mediante sudo systemctl enable grimmskiste.service y sudo systemctl enable grimmskiste-restart.service.
- Ahora debe probar todos los botones si todo está funcionando correctamente. Pruebe también el botón de apagado y verifique si todo sigue funcionando correctamente después del reinicio. Si es así, no necesita la pantalla, el teclado, etc. y su programa debería ejecutarse cada vez que conecte la Raspberry Pi en el enchufe.
Paso 4: Introducción a YAML:
Importante: No se debe cambiar el nombre de los campos en violeta. Los nombres de las listas individuales son una excepción. Cada historia tiene su propio archivo YAML con todas las opciones. La estructura es la misma que para el archivo start.yaml
Dos puntos: Si desea utilizar dos puntos en el texto, debe crear un mensaje> después. Luego, el texto se reduce una línea y se sangra con dos líneas en blanco.
Pestañas: no use pestañas y asegúrese de que no haya pestañas al final de un mensaje, esto hará que el analizador no pueda leer el archivo.
_default_question: La pregunta ingresada aquí se toma si no se ingresó ningún campo con "pregunta" en el historial.
_prompt: este campo se imprime cuando el lector tiene que realizar una entrada.
Ambos campos solo pueden existir una vez en el archivo start.yaml y no pueden usarse en otros archivos.
inicio: inicio es el nombre de la primera lista de la página de inicio. Los nombres no deben estar duplicados en todas las demás listas. En la plantilla, este campo se llama "Nombre de la historia" y debe cambiarse para cada historia.
Mensaje: este campo contiene la historia y debe estar en una línea. pregunta: se utiliza cuando se va a utilizar una pregunta que no sea la _pregunta_pregunta. Si el campo no se utiliza, debe eliminarse. (Opcional)
Acciones: La lista de "acciones" contiene las opciones de selección. Aquí se pueden introducir un máximo de 4 opciones. Etiqueta: La etiqueta se imprime como una opción de selección.
Siguiente: Este es el nombre de la siguiente opción de selección que se llamará.
end: Una lista con solo un mensaje marca el final de una historia. Los campos acciones, etiqueta y siguiente deben ser eliminados.
Agrega más historias:
Como se explicó anteriormente, cada nueva historia tiene su propio archivo.yaml. Para hacer esto, abra la carpeta "Grimms Box" y copie el archivo template.yaml. También puede encontrarlo en nuestro repositorio de GitHub (https://github.com/fio-na/GrimmsKiste-1). Cambie el nombre del archivo a el título de la historia y ábralo. En el nuevo archivo, agregue el fabricante y la fecha y cambie el campo "El nombre de la historia" al título (ver fig. 4: El nombre de la historia aquí es HP1). Luego complete el mensaje, la pregunta, la etiqueta y el siguiente. Una vez hecho esto, copie la estructura de datos (como se muestra en la Fig. 4) y péguela debajo de la última siguiente. El título ahora se cambiará a una tecla utilizada en "siguiente" en la primera parte (como se muestra en la figura 4, HP1 sería HP2 o gang2, dependiendo de la opción que se edite primero). A continuación, se rellenan de nuevo el mensaje, la pregunta, la etiqueta y el siguiente. Haga esto para todas las opciones / acciones hasta que toda la historia esté en el archivo. En todos los extremos, la última lista debe contener solo un mensaje. Todos los demás campos de la lista final deben eliminarse. Después de eso, el archivo debe guardarse.
Procedimiento en resumen:
- Abre la carpeta de Grimms Box
- Copie el archivo Vorlage.yaml y cámbiele el nombre al título de la historia.
- Abra este nuevo archivo.
- Copiar estructura de datos (fig.4)
- Cambiar el nombre de Historial a Nombre de selección
- Ingrese el texto de la historia en el campo del mensaje,
- Inserte una etiqueta adecuada.
- Introduzca el nombre de la siguiente opción de selección en siguiente.
- Repita los pasos 4 a 9 hasta que termine la historia.
- En todos los extremos: la última lista contiene solo un mensaje.
- Guarda el archivo.
Agrega tu nueva historia a la página de inicio:
start.yaml es la página de inicio de la caja de Grimm. Sin embargo, este archivo primero debe poder acceder a las nuevas historias. Por lo tanto, las historias nuevas deben agregarse primero a este archivo.
Por acción, solo puede crear 4 etiquetas, a continuación, porque la caja de Grimm tiene solo 4 botones para elegir. Por lo tanto, si, como en el archivo start.yaml de ejemplo, ya se han asignado 4 etiquetas y los siguientes campos, la cuarta etiqueta debe llamarse "Más historias" o "Más" y una segunda estructura de datos (aquí: S2; con mensaje, pregunta, acciones, etiqueta, siguiente) se deben agregar y cambiar de nombre. Luego agrega la nueva historia con etiqueta y luego y le da un nombre apropiado. Finalmente, debe salvarse.
Procedimiento en resumen:
En start.yaml:
- Abrir start.yaml
- Complete los campos de manera apropiada.
- Los campos acciones, etiqueta y siguiente deben copiarse y pegarse.
- Ahorrar.
Mantenga el archivo principal "Engin.py":
Finalmente, la historia debe agregarse al archivo principal "Engin.py". Para esto, solo se debe ingresar la ruta del nuevo archivo YAML en la lista de archivos. La ruta está entre comillas y separada de las demás por una coma.
Procedimiento en resumen:
- Abra Engine.py.
- Copie la ruta del archivo del archivo YAML
- Copiar ruta a la lista de archivos
- Separe los caminos con comas.
Paso 5: Instrucciones de uso
Para iniciar Grimm's Box, conecte la impresora a la Raspberry Pi (hay un pequeño orificio para los cables), conecte la impresora y la Raspberry Pi en el enchufe y encienda la impresora. La Raspberry Pi se inicia por sí sola cuando está enchufada. Espere a que se inicie. Se supone que el software se inicia por sí solo.
Hay un botón para apagar la Raspberry Pi y un botón para reiniciar el software de la historia, en caso de que alguien simplemente se vaya sin terminar la historia. Ambos deben presionarse al menos 3 segundos. Esto es para asegurarse de que no se presionen accidentalmente, pero puede cambiar el tiempo en el archivo shutdown-pi-and-restart-program.py. Utilice el botón de apagado, simplemente desenchufar no es bueno para la Raspberry Pi. Con la configuración actual, no puede ver si la Raspberry Pi está encendida o apagada, por lo que debe verificar si todavía reacciona a otros botones si quiere estar seguro.
Reiniciar el programa lleva algo de tiempo, ya que debe presionar el botón al menos 3 segundos y el proceso en segundo plano solo verifica cada 2 segundos si el programa se está ejecutando, por lo que todo el proceso hasta que se imprime nuevamente puede demorar 6 segundos. Solo dame un poco de tiempo. El botón de reinicio también se puede usar, si ocurre algún problema. Tal vez un reinicio pueda solucionarlo. Si no es así, conectar la Raspberry Pi a una pantalla, etc. y ejecutar el programa desde el terminal puede producir mensajes de error que puede buscar en Internet. Los botones utilizados para las historias deben presionarse al menos 0,1 segundos, pero es muy raro que alguien los presione menos que eso.
Si la historia está terminada, se corta el papel y el programa se inicia de nuevo automáticamente. Pero para darle al lector algo de tiempo para leer el final, espera 3.5 segundos más los 2 segundos necesarios para notar que el programa no se está ejecutando y reiniciando. Los 3,5 segundos se pueden editar en el archivo Engin.py.
Los botones presionados menos de 1,7 segundos después de la última pulsación no serán aceptados. Implementamos esto porque la Raspberry Pi es mucho más rápida que la impresora y presionar dos botones daría como resultado que se eligiera una acción antes de que el lector pudiera ver las opciones.