Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
Este instrutível mostrará como construir sua própria caixa de contar histórias. Sinta-se à vontade para escolher sua própria aventura.
O chamado "GrimmsBox" foi um projeto de alunos da Hochschule der Medien Stuttgart, Alemanha. Usamos uma impressora de recibos comum para imprimir a primeira parte de uma história. No final da parte, uma decisão precisa ser feita. Usando botões, você pode escolher como a história deve continuar. Usamos um Raspberry Pi para executar o software.
Duas das caixas estarão em uso muito em breve. A biblioteca pública de Mannheim está organizando workshops com crianças. As crianças podem criar suas próprias histórias e podem vivenciar suas histórias com a ajuda de GrimmsBox. O objetivo principal dessas oficinas é a promoção das habilidades de leitura e escrita. As caixas de contação de histórias também serão levadas a eventos para que as crianças das classes 3 a 6 sejam apresentadas a uma experiência de leitura imersiva.
Etapa 1: Como fazer o caso para GrimmsBox
Materiais requeridos:
- Placa de madeira compensada de 1x 6 mm (1200x600x6mm)
- Placa de madeira compensada 1x 4 mm (1200x600x4mm)
- Cola de madeira
- dispositivos necessários: cortador a laser, computador
Os arquivos usados pelo GrimmsBox estão disponíveis para download gratuito. Os arquivos são arquivos svg e dxf dos componentes individuais do GrimmsBox. Esta é, por um lado, a subestrutura onde o Raspberry Pi encontra seu lugar, depois o livro com uma dobradiça dobrável e uma estante de livro auto-projetada.
A placa de madeira compensada de 6 mm é usada para a subestrutura e a estante de livros. O livro foi cortado em uma placa de compensado de 4 mm. A placa mais grossa seria muito grossa para fazer o livro. A dobradiça flexível só funciona com painéis de madeira compensada de 3-4 mm. Caso contrário, ele quebraria.
Os arquivos dxf são a escolha certa para quem não quer mais alterar nada. Eles estão prontos para uso no cortador a laser.
Mas para aqueles que ainda querem dar um toque pessoal à caixa, podem usar os arquivos SVG da caixa. Eles podem ser alterados conforme desejado. Para fazer isso, o arquivo deve ser aberto em um programa (por exemplo, Inkscape). Com esses programas, você pode editar os componentes individuais. Se você alterou algo (por exemplo, o tamanho dos orifícios para os botões ou o pull-around), você deve salvar o arquivo SVG como um arquivo dxf.
O arquivo dxf deve ser aberto no cortador a laser. Assim que o arquivo for exibido no PC, deve-se selecionar quais linhas devem ser cortadas e quais devem ser gravadas. As letras do lado da caixa estavam gravadas na caixa de Grimm e as letras do livro tinham um corte fraco. Dependendo do que você gosta mais, você pode usar um ou outro. É claro que as linhas externas devem ser cortadas. No entanto, o uso do cortador a laser pode depender do modelo do cortador a laser e pode ser diferente.
Etapa 2: como montar os botões do GrimmsBox
Materiais requeridos:
- 6 botões de pressão momentâneos normalmente abertos, por ex. botões para jogos de arcade
- 8 fios de jumper com pelo menos uma terminação fêmea, os nossos tinham cerca de 40 cm de comprimento
- alguma trança
- tubo termorretrátil a caixa usada para o seu projeto, no nosso caso a tampa superior cortada a laser e as duas tampas laterais que incluem os botões extras
- solda e um ferro de solda
- multímetro
- cortador de arame
- descascador de fios
- isqueiro ou uma pistola de ar quente
- Em nosso código, usamos resistores internos, portanto, só precisamos fazer duas coisas: primeiro, conectar um fio de jumper fêmea a cada botão que levará ao respectivo pino GPIO e, segundo, conectar os botões um ao outro, que então será conduzido para aterrar por meio de outro fio de jumper fêmea. Conectamos o botão de desligamento e o botão de reinicialização do programa juntos e usamos um pino de aterramento para eles. Os quatro botões que serão usados pelo motor de escolha sua própria aventura também foram conectados entre si e compartilhavam um pino de aterramento.
- Se seus botões tiverem mais de dois pinos, use um multímetro para descobrir quais são adequados para conectar o pino GPIO e o aterramento. Com a função de som, você só ouvirá um som se tocar em dois pinos e o botão estiver sendo pressionado. Você pode fazer um teste de continuidade, um guia de como fazer isso está disponível em ifixit:
- Pegue um botão e insira-o na parte da caixa. Pegue um dos fios de ligação e corte de uma extremidade, o que deve deixar você com um fio de ligação com uma extremidade fêmea. Use o descascador de fios para cortar cerca de 5 milímetros do isolamento. Torça os fios soltos um pouco para que nenhum fio fique para fora. Use um pouco de lata para fazer um bom revestimento para os fios. Se você é novo em soldagem, há um grande e curto livro em quadrinhos que ensina como soldar. É chamado de soldar é fácil e o PDF está disponível em vários idiomas em https://mightyohm.com/blog/2011/04/soldering-is-e… Meça e corte o tubo termorretrátil, que você usará para isolar o parte onde o botão e o fio do jumper serão soldados juntos. Puxe o tubo termorretrátil sobre o fio jumper. Solde o fio do jumper em um dos pinos do botão.
- Repita a última etapa para todos os botões. Sempre certifique-se de puxar o tubo termorretrátil sobre o fio jumper antes de soldar, pois ele pode não se encaixar no conector.
- Agora você conectará o botão de desligamento e o botão de reinicialização. Usamos fio de cobre esmaltado, mas como se revelou um pouco complicado, sugiro o uso de uma trança normal. Corte de alguns centímetros de trança. Como antes, desmonte-o usando o descascador de fios, mas desta vez nas duas pontas. Em seguida, solde uma extremidade ao pino do botão de desligamento ou de reinicialização. Novamente, corte um pouco do tubo termorretrátil e puxe-o sobre a trança.
- Em seguida, você conectará a trança ao pino livre do outro botão. Mas você também conectará outro fio de jumper aqui, que levará ao aterramento. Prepare o fio de ligação como fez com os outros, incluindo o tubo termorretrátil. Agora dobre a trança para que você possa soldá-la ao pino livre vindo do botão voltado para a extremidade livre. Em seguida, solde o fio do jumper ao pino também. Soldar a trança vindo de um lado e o fio jumper do outro lado garante que você possa puxar o tubo termorretrátil sobre a parte soldada.
- Conecte os quatro botões usados para o motor de jogo construindo pequenas pontes. Sempre certifique-se de puxar o tubo termorretrátil sobre a trança antes de soldar. (E também certifique-se de que seus botões estão na posição correta antes de conectá-los uns aos outros). Ao conectar o último botão, você deve novamente, como com os outros dois botões, conectar a trança por baixo e conectar um fio de jumper também.
-
Usando a função de som do multímetro, você pode verificar se tudo está bem conectado. Finalmente, você deve verificar se todos os tubos termorretráteis estão no lugar certo. Então você pode usar um isqueiro ou uma pistola de ar quente para realmente encolher. Agora você concluiu a montagem dos botões!
Etapa 3: Configurando o software
Você vai precisar de:
- um Raspberry Pi com Raspbian instalado (você deve ser capaz de usar outras distribuições também, mas precisa ajustar alguns comandos) - usamos um pacote que consiste em um Raspberry Pi 3 Modelo B + com um cartão SD pré-instalado, uma fonte de alimentação e um caso, outros modelos devem funcionar também
- uma impressora de recibos - tenha em mente que você precisa conectar a impressora ao Raspberry Pi, então conectar via USB pode ser mais fácil
- seus botões
-
Conecte seu Raspberry Pi a uma tela, mouse e teclado. Você também precisará conectá-lo à impressora e aos botões eventualmente. Os botões precisam ser conectados a pinos GPIO específicos. Se quiser usar pinos diferentes dos que usamos, você pode mudar isso no código. Por enquanto, esta lista dirá qual botão precisa ser conectado a qual pino. Vou usar a numeração BCM, que também é usada no código. Há um gráfico em https://www.raspberrypi.org/documentation/usage/g… mostrando a você qual pino tem qual número.
• botão desligar - 17 • botão reiniciar - 27 • primeiro botão usado para opções na história / aventura - 5 • segundo botão - 6 • terceiro botão - 13 • quarto botão - 19 • os dois fios de ligação conectados aos pinos que unem todos os botões precisam ir para o chão - no gráfico marcado por pontos pretos
Inicie o Raspberry Pi conectando a fonte de alimentação. Conecte o Raspberry Pi à Internet usando um cabo LAN ou rede sem fio.
- A primeira coisa a fazer ao instalar o software necessário no raspberry pi é atualizar o software que já está instalado. Faremos isso usando o terminal. Se esta é a primeira vez que usa um terminal, a documentação do Raspberry Pi (https://www.raspberrypi.org/documentation/usage/terminal/) ajuda você a se mover e conhecer o ambiente. Abra um terminal e digite sudo apt update e pressione Enter. Isso atualizará a lista de pacotes e versões disponíveis. Depois disso, digite sudo apt upgrade. Na verdade, isso instalará versões mais recentes dos pacotes já instalados.
- Instalar o driver da impressora é a próxima etapa. O gerenciamento de impressoras no Linux pode ser feito usando CUPS. Pode ser necessário instalá-lo primeiro no Raspberry Pi. Em um terminal, digite sudo apt install cups. A próxima etapa é obter os drivers da impressora. Talvez você tenha sorte e ele esteja incluído nos repositórios oficiais. Em um terminal, use apt search [nome da impressora ou nome do fabricante] para procurá-lo. A maioria das impressoras provavelmente não será incluída nos repositórios, portanto, você precisa obtê-la de outro lugar. Pode haver um CD fornecido com a impressora. No site do fabricante, os drivers mais recentes devem estar disponíveis para download. Alguns fabricantes têm sites diferentes para regiões diferentes do mundo e, infelizmente, nem todos incluem as mesmas informações. Se você tiver uma impressora Star, starasia.com parece ser o site com os drivers para download mais recentes. Verifique se você baixou impressoras para Linux. Usamos os drivers CUPS, não os drivers JavaPOS.
- Em seguida, você precisa instalar os drivers. Siga as instruções do fabricante. Pode haver um manual de software para Linux disponível, que pode ser útil. Siga as instruções para Debian ou Ubuntu - existem muitas distribuições Linux diferentes e nem todas são iguais, então verifique primeiro se você tem as instruções corretas em mãos. Em nosso manual, as instruções começaram sem declarar que são para sistemas baseados em Red Hat e apenas na próxima página aprendemos que as instruções para sistemas baseados em Debian são diferentes. O manual do software também deve indicar quais pacotes precisam ser instalados, por exemplo, tivemos que instalar “libcups2-dev”. Provavelmente, você precisará executar o sudo em alguns comandos. Para evitar que você repita nosso erro: se você precisar compilar os drivers do código-fonte usando make - make install precisa ser sudoed. Apenas pela mensagem de erro, não conseguimos descobrir o que deu errado.
- Se não estiver incluído no manual de instalação, você precisará configurar a impressora no CUPS. Para fazer isso, navegue até localhost: 631 em um navegador. Clique em “Administração” e depois em “Adicionar impressora” para configurar a impressora. Também existe uma seção de ajuda. Você precisa se autenticar como um usuário, veja https://help.ubuntu.com/lts/serverguide/cups.html… (seção “Interface Web”) para detalhes. Escolha o ppd e o tamanho de papel adequados. Você também deve torná-la a impressora padrão, pois o software imprimirá na impressora padrão. Para fazer isso, navegue até a página da impressora e no menu “Administração” selecione “Definir como padrão do servidor”. No menu “Manutenção”, você pode selecionar “Imprimir página de teste” para uma primeira verificação se tudo está configurado corretamente.
- Outro pacote de que você precisará é o python3-yaml, pois as histórias são salvas em arquivos yaml e o pacote é necessário para que o código python possa interpretá-las. Use sudo apt install python3-yaml para instalá-lo.
- Agora vamos finalmente começar com a instalação do software que realmente imprime as histórias e escuta a entrada nos pinos GPIO conectados aos botões. Abra um terminal e navegue até o diretório inicial se ainda não estiver nele (isso pode ser feito digitando cd (para alterar o diretório)). Como nosso código está no GitHub, você pode copiá-lo para seu Raspberry Pi usando git clone https://github.com/fio-na/GrimmsKiste-1.git Isso criará um repositório local em seu Raspberry Pi de nosso código. Se você receber uma mensagem de erro porque o git não está instalado, você pode instalá-lo digitando sudo apt install git.
- O código contém alguns elementos que você pode precisar alterar. Em primeiro lugar, as histórias são salvas em arquivos yaml que também estão no repositório git. Se o caminho para sua pasta não for “/ home / pi / GrimmsKiste-1”, você precisará alterar esses caminhos para usar as histórias. Em segundo lugar, imprimimos usando subprocesso e entregamos comandos de terminal. Isso inclui algumas opções usadas por nosso driver de impressora que nos permite determinar se o papel deve ser cortado após a impressão ou não. Eles provavelmente não funcionarão para você (a menos que você também use uma impressora Star TSP). Você também notará que várias linhas, incluindo apenas um ponto, serão impressas. Precisávamos disso porque, do contrário, partes da história não seriam legíveis porque o papel ainda estava preso na impressora. E, finalmente, na função format_text, usamos textwrap para obter pedaços de texto com não mais do que 28 caracteres, porque é assim que muitos cabem em uma linha em nosso papel de 80 mm. Ajuste essas coisas para se adequar à sua configuração.
- Alguns arquivos precisam ser executados. Para fazer isso, navegue até a pasta com o código que você acabou de baixar. Deve ser cd ~ / GrimmsKiste-1 se você acompanhou. No Linux, as permissões de arquivo são gerenciadas por chmod. chmod a + x Engin.py e chmod a + x shutdown-pi-and-restart-program.py tornam esses dois arquivos executáveis para todos os usuários.
- Agora podemos testar se o motor pode funcionar e funcionar corretamente e se a impressora e os botões estão configurados corretamente. Digite./Engin.py para fazer isso.
- Se tudo estiver funcionando bem, a próxima etapa é configurar dois serviços do systemd. Para obter mais informações, a página wiki archlinux (https://wiki.archlinux.org/index.php/Systemd) pode ajudar ou a página man de systemd.service (https://www.freedesktop.org/software/systemd/ man / systemd.service.html). O primeiro serviço systemd verificará a cada dois segundos se Engin.py está em execução e, se não estiver, ele o iniciará. Portanto, ele também inicia o programa quando o Raspberry Pi é inicializado. Abra um arquivo na pasta systemd: sudo nano /etc/systemd/system/grimmskiste-restart.service Digite o seguinte:
-
[Unidade]
Descrição = reinicia Grimms Kiste a cada dois segundos se falhar [Serviço] ExecStart = / home / pi / GrimmsKiste-1 / Engin.py Reiniciar = sempre RestartSec = 2 [Instalar] WantedBy = multi-user.target
- Você precisa editar o caminho em ExecStart, se o seu Engin.py estiver localizado em outro lugar, por exemplo, se o seu nome de usuário for diferente. Para salvar um arquivo no nano, você precisa apertar ctrl + x, digitar y (para sim) e apertar enter.
- O outro serviço iniciará o script shutdown-pi-and-restart-program.py, que escuta o botão desligar e reiniciar. O botão de reinicialização lê o ID do processo de Engin.py de um arquivo e o elimina e, por causa do outro serviço do systemd, o Engin.py reinicia após dois segundos. O botão de desligamento simplesmente envia um comando para o Raspberry Pi que deve desligar agora. Abra outro arquivo usando sudo nano /etc/systemd/system/grimmskiste.service e digite o seguinte:
-
[Unidade]
Descrição = Controla dois botões de hardware para desligar o raspberry pi ou para encerrar o programa em execução Grimms Kiste [Serviço] ExecStart = / home / pi / GrimmsKiste-1 / shutdown-pi-and-restart-program.py [Instalar] WantedBy = multi-user.target
- Novamente, você precisará editar o caminho em ExecStart, se for diferente em seu Pi. E, novamente, você pode salvar o arquivo em nano usando ctrl + x, digitando y e pressionando Enter.
- Agora você tem os arquivos de unidade para os serviços do systemd, mas eles ainda não estão em uso. Sempre que você alterar arquivos de unidade, digite sudo systemctl daemon-reload, então faça isso agora. Em seguida, inicie ambos os serviços usando sudo systemctl start grimmskiste.service e sudo systemctl start grimmskiste-restart.service Isso iniciará os serviços por enquanto. Use sudo systemctl status grimmskiste.service e sudo systemctl status grimmskiste-restart.service para verificar se eles estão funcionando. Na saída, deve haver uma linha que inclui "ativo (em execução)", provavelmente na terceira linha - se não estiver, algo deu errado. O Journalctl pode ajudar com mais informações de depuração.
- Usar systemctl start apenas inicia os serviços por enquanto, mas se você quiser que eles sejam iniciados toda vez que o Raspberry Pi for inicializado, você precisa habilitá-los. Isso é feito por sudo systemctl enable grimmskiste.service e sudo systemctl enable grimmskiste-restart.service.
- Agora você deve testar todos os botões se tudo estiver funcionando corretamente. Teste também o botão de desligamento e verifique se tudo ainda está funcionando corretamente após a reinicialização. Nesse caso, você não precisa da tela, teclado etc. e seu programa deve ser executado toda vez que você conectar o Raspberry Pi no soquete.
Etapa 4: Introdução ao YAML:
Importante: os campos em roxo não devem ser renomeados. Os nomes das listas individuais são uma exceção. Cada história obtém seu próprio arquivo YAML com todas as opções. A estrutura é a mesma do arquivo start.yaml
Dois pontos: Se você quiser usar dois pontos no texto, você deve fazer uma mensagem> depois. O texto é então rebaixado uma linha e recuado com duas linhas em branco.
Guias: não use guias e certifique-se de que não haja guias no final da mensagem. Isso fará com que o analisador não consiga ler o arquivo.
_default_question: A questão inserida aqui é usada se nenhum campo com „questão foi inserido no histórico.
_prompt: este campo é impresso quando o leitor tem que fazer uma entrada.
Ambos os campos podem existir apenas uma vez no arquivo start.yaml e não podem ser usados em outros arquivos.
start: start é o nome da primeira lista da página inicial. Os nomes não devem ser duplicados em todas as outras listas. No modelo, este campo é denominado „Nome da história e deve ser alterado para cada história.
Mensagem: Este campo contém a história e deve estar em uma linha. question: Usado quando uma pergunta diferente de _default_question deve ser usada. Se o campo não for usado, ele deve ser excluído. (opcional)
Ações: A lista de “ações” contém as opções de seleção. Um máximo de 4 opções podem ser inseridas aqui. Etiqueta: A etiqueta é impressa como uma opção de seleção.
Próximo: Este é o nome da próxima opção de seleção a ser chamada.
fim: Uma lista com apenas uma mensagem marca o fim de uma história. Os campos ações, rótulo e próximo devem ser excluídos
Adicione mais histórias:
Conforme explicado acima, cada nova história obtém seu próprio arquivo.yaml. Para fazer isso, abra a pasta “Grimms Box" e copie o arquivo template.yaml. Você também pode encontrá-lo em nosso repositório GitHub (https://github.com/fio-na/GrimmsKiste-1). Renomeie o arquivo para o título da história e abri-lo. No novo arquivo, você adiciona o fabricante e a data e altere o campo “O nome da história" para o título (ver fig. 4: O nome da história aqui é HP1). Em seguida, preencha mensagem, pergunta, rótulo e próximo. Depois de fazer isso, copie a estrutura de dados (como mostrado na Fig. 4) e cole-a abaixo da próxima. O título agora será alterado para uma chave usada em “próximo” na primeira parte (como mostrado na fig. 4 HP1 seria HP2 ou gang2, dependendo de qual opção for editada primeiro). Em seguida, mensagem, pergunta, marcador e próximo são preenchidos novamente. Faça isso para todas as escolhas / ações até que toda a história esteja no arquivo. Em todas as extremidades, a última lista deve conter apenas uma mensagem. Todos os outros campos da lista final devem ser excluídos. Depois disso, o arquivo deve ser salvo.
Resumindo o procedimento:
- Abra a pasta Grimms Box
- Copie o Vorlage.yaml e renomeie-o com o título da história.
- Abra este novo arquivo.
- Copie a estrutura de dados (fig. 4)
- Mude o nome do histórico para o nome da seleção
- Insira o texto da história no campo da mensagem,
- Insira a etiqueta adequada.
- Insira o nome da próxima opção de seleção na próxima.
- Repita as etapas 4 a 9 até que a história seja concluída.
- Em todas as extremidades: A última lista contém apenas uma mensagem.
- Salve o arquivo.
Adicione sua nova história à página inicial:
start.yaml é a página inicial da caixa de Grimm. No entanto, esse arquivo deve primeiro ser capaz de acessar as novas histórias. Portanto, as novas histórias devem ser adicionadas a este arquivo primeiro.
Por ações, você só pode criar 4 rótulos, a seguir, porque a caixa de Grimm tem apenas 4 botões para escolher. Portanto, se, como no exemplo do arquivo start.yaml, 4 rótulos e próximos campos já estiverem atribuídos, o 4º rótulo deve ser denominado "Mais histórias" ou "Mais" e uma segunda estrutura de dados (aqui: S2; com mensagem, pergunta, ações, rótulo, próximo) devem ser anexados e renomeados. Em seguida, você adiciona a nova história com rótulo e em seguida e nomeia-a apropriadamente. Finalmente, ele deve ser salvo.
Resumindo o procedimento:
Em start.yaml:
- Abra start.yaml
- Preencha os campos apropriadamente.
- Os campos ações, rótulo e próximo devem ser copiados e colados.
- Salve .
Mantenha o arquivo principal “Engin.py”:
Finalmente, a história deve ser adicionada ao arquivo principal “Engin.py . Para isso, apenas o caminho do novo arquivo YAML deve ser inserido na lista de arquivos. O caminho é colocado entre aspas e separado dos outros por uma vírgula.
Resumindo o procedimento:
- Abra Engine.py.
- Copie o caminho do arquivo YAML
- Copiar caminho para a lista de arquivos
- Separe os caminhos com vírgulas.
Etapa 5: Instruções de uso
Para iniciar a Grimm’s Box, conecte a impressora ao Raspberry Pi (há um pequeno orifício para os cabos), conecte a impressora e o Raspberry Pi no soquete e ligue a impressora. O Raspberry Pi inicia sozinho quando conectado. Aguarde até que ele inicialize. O software deve iniciar sozinho.
Existe um botão para desligar o Raspberry Pi e um botão para reiniciar o software da história, caso alguém saia sem terminar a história. Ambos precisam ser pressionados por pelo menos 3 segundos. Isso é para garantir que eles não sejam enviados acidentalmente, mas você pode alterar o tempo no arquivo shutdown-pi-and-restart-program.py. Use o botão de desligar, apenas desligar não é bom para o Raspberry Pi. Com a configuração atual, você não consegue ver se o Raspberry Pi está ligado ou desligado, então você precisa verificar se ele ainda reage a outros botões se quiser ter certeza.
O reinício do programa leva algum tempo, pois você precisa apertar o botão pelo menos 3 segundos e o processo em segundo plano só verifica a cada 2 segundos se o programa está em execução, portanto, todo o processo até que seja impresso novamente pode levar 6 segundos. Apenas dê um pouco de tempo. O botão de reinicialização também pode ser usado, se ocorrer algum problema. Talvez uma reinicialização possa corrigir isso. Caso contrário, conectar o Raspberry Pi a uma tela etc. e executar o programa a partir do terminal pode gerar mensagens de erro que você pode consultar na Internet. Os botões usados para as histórias precisam ser pressionados por pelo menos 0,1 segundo, mas é muito raro alguém pressioná-los menos do que isso.
Terminada a história, o papel é cortado e o programa reinicia automaticamente. Mas, para dar ao leitor algum tempo para ler o final, ele espera 3,5 segundos mais os 2 segundos necessários para perceber que o programa não está sendo executado e reiniciando. Os 3,5 segundos podem ser editados no arquivo Engin.py.
Botões pressionados menos de 1,7 segundos após o último pressionamento não serão aceitos. Implementamos isso porque o Raspberry Pi é muito mais rápido do que a impressora e apertar dois botões resultaria na escolha de uma ação antes que o leitor pudesse ver as opções.