Índice:

Sino da escola para alunos à distância: 6 etapas
Sino da escola para alunos à distância: 6 etapas

Vídeo: Sino da escola para alunos à distância: 6 etapas

Vídeo: Sino da escola para alunos à distância: 6 etapas
Vídeo: RECRUTA PEDINDO PRA IR EMBORA, NÃO AGUENTOU A PRESSÃO @CANCOESDETFM 2024, Novembro
Anonim
Sino da escola para alunos à distância
Sino da escola para alunos à distância

Com a pandemia COVID-19, muitas escolas infantis passaram a fazer entregas à distância. Este sino da escola em casa é uma maneira divertida de cumprir a programação que usa um Raspberry Pi e um alto-falante USB. Você pode fazer isso com seus filhos e eles podem aprender sobre programação e podem "tocar a campainha". Eu construí isso para minha filha que está indo para a 7ª série (atualmente por meio de entrega à distância), e está funcionando bem para nos manter no tempo.

Suprimentos

Para este projeto, você precisará de:

  • Um computador Raspberry Pi - Funciona melhor se você tiver WiFi, usei um RPi 3B de um kit Kano
  • Um alto-falante - usei um alto-falante USB

O código pode ser executado facilmente no computador Linux de seu aluno ou até mesmo em um microcontrolador executando micropython, desde que o microcontrolador tenha algum mecanismo para obter a data / hora atual. Além disso, qualquer alto-falante amplificado, ou até mesmo um relé / campainha analógica, pode ser usado.

Etapa 1: Configurar seu Raspberry Pi

Configure o seu Raspberry Pi
Configure o seu Raspberry Pi

Há um grande número de recursos para configurar um computador Raspberry Pi, portanto, indico um que o Google encontrou. O importante é que seu computador tenha uma maneira de obter a data e a hora corretas. A maioria dos computadores Raspberry Pi com Wi-Fi moderno usa o protocolo NTP para definir a hora da Internet, que é a maneira como obtive a hora correta. Eu configurei meu RPi para ser "sem cabeça", o que significa que ele não tem teclado ou monitor, mas pode ser acessado por Secure Shell (SSH) pela Internet. Se você é bom com RPi, pode fazer essa configuração sem um teclado / vídeo / mouse, mas é mais fácil apenas configurar o pi com esses acessórios.

Observe que não precisei usar a interface gráfica, então acabei de baixar o "Raspberry Pi OS (32-bit) Lite", que é menor e mais rápido de baixar e inicializa mais rápido.

Configure a rede do Raspberry Pi e as opções de interface

$ sudo raspi-config

Na configuração, faça o seguinte:

  • Altere a senha - faça isso primeiro, de preferência antes de ficar online!
  • Em "Opções de rede",

    • Altere o nome do host. Eu usei o nome do host: "schoolbell".
    • Conecte-se à sua LAN sem fio (se você não tiver feito isso na configuração)
  • Em "Opções de interface", ative o acesso SSH
  • É sempre bom executar a opção "Atualizar"

Depois de fazer isso e reiniciar, você poderá se conectar ao Raspberry Pi de outro computador na mesma rede local usando um cliente SSH. Conecte-se a ele usando as seguintes credenciais:

hostname: schoolbell.local

usuário: senha pi: qualquer que seja a sua senha

Em uma máquina Linux, isso é tão simples quanto digitar esta linha de comando no prompt $:

$ ssh [email protected]

… Digite a senha no prompt

Isso fará o seu login e você poderá verificar se a hora no Raspberry Pi está correta. Na linha de comando, digite o comando date e verifique a resposta:

pi @ schoolbell: ~ $ date

Qui, 3 de setembro 20:44:34 AKDT 2020

Esperançosamente, esta é a hora atual. Se não estiver correto, pesquise no Google sobre a configuração de NTP no Raspberry Pi.

Etapa 2: coloque seu sistema de som para funcionar

Faça o seu sistema de som funcionar
Faça o seu sistema de som funcionar

Vamos tocar arquivos MP3 para os sinos, então precisamos baixar um software para decodificar esses arquivos de áudio. Peguei o pacote mpg321 digitando este comando:

pi @ schoolbell: ~ $ sudo apt-get install mpg321

Siga as instruções para instalar este software.

Usei um alto-falante USB antigo, que tinha um driver estranho e não foi totalmente configurado automaticamente como a placa de som padrão, então descobri que poderia "hackear" o alto-falante para funcionar usando seu endereço de hardware. Depois de conectar o alto-falante, usei o comando 'aplay -l' para listar os dispositivos de áudio:

pi @ schoolbell: ~ $ aplay -l

**** Lista de PLAYBACK Hardware Devices **** card 0: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones] Subdispositivos: Subdevice # 0: subdevice # 0 Subdevice # 1: subdevice # 1 Subdevice # 2: subdevice # 2 Subdevice # 3: subdevice # 3 Subdevice # 4: subdevice # 4 Subdevice # 5: subdevice # 5 Subdevice # 6: subdevice # 6 Subdevice # 7: subdevice # 7 card 1: CODEC [USB Audio CODEC], dispositivo 0: Áudio USB [Áudio USB] Subdispositivos: Subdispositivo nº 0: subdispositivo nº 0

O dispositivo que desejo é o inferior, cartão 1, dispositivo 0.

Testei o alto-falante com "teste de alto-falante", usando o dispositivo "hw: 1, 0", significando placa de hardware 1, dispositivo 0

pi @ schoolbell: ~ $ speaker-test -D hw: 1, 0

Este programa emite ruído dos alto-falantes. Aproveite o ruído e digite control-C quando ficar irritado. Se você não ouvir nenhum ruído, tente o Google.

Agora você tem som!

Etapa 3: teste a reprodução de sons de campainha e / ou faça novos sons

Teste a reprodução de sons de campainha e / ou faça novos sons
Teste a reprodução de sons de campainha e / ou faça novos sons

Para o meu sino, baixei o som "bing-bong" do "freesound.org". Agradecimentos à Benboncan por disponibilizar este som:

freesound.org/people/Benboncan/sounds/93646/

Você pode tocar o som diretamente. Eu poderia baixar diretamente uma versão mp3 deste arquivo digitando este comando no computador Raspberry Pi (supondo que esteja em WiFi):

pi @ schoolbell: ~ $ wget

Em seguida, renomeei este arquivo:

pi @ schoolbell: ~ $ mv 93646_634166-hq.mp3 bing-bong-chime-hq.mp3

Em seguida, testei se poderia tocar a campainha com este comando (mostrando a saída):

pi @ schoolbell: ~ $ mpg321 -a hw: 1, 0 bing-bong-chime-hq.mp3

Reprodutor de áudio MPEG 1.0 / 2.0 / 2.5 de alto desempenho para as camadas 1, 2 e 3. Versão 0.3.2-1 (2012-03-25). Escrito e copyrights por Joe Drew, agora mantido por Nanakos Chrysostomos e outros. Usa código de várias pessoas. Veja 'README' para mais! ESTE SOFTWARE NÃO VEM ABSOLUTAMENTE NENHUMA GARANTIA! USE POR SUA CONTA E RISCO! Reproduzindo fluxo MPEG de bing-bong-chime-hq.mp3… MPEG 1.0 camada III, 128 kbit / s, 44100 Hz mono [0:02] Decodificação de bing-bong-chime-hq.mp3 concluída.

Parabéns! Você tem áudio.

Usando o código de edição de som "audacity" no meu laptop, divido o arquivo em "bing" e "bong" para mais diversão. Você pode usar qualquer arquivo de som mp3 ou talvez outro formato (não testei outros).

Etapa 4: instale o código e defina sua programação

Instale o código e defina sua programação
Instale o código e defina sua programação

O código é um script python que obtém a data / hora atual e, se a data for um dia da semana e não um feriado, ele verifica se a hora corresponde à hora do sino, soando se for o caso.

Primeiro, você fará com que ele funcione e, em seguida, irá automatizá-lo para ser executado a cada minuto.

Baixe o código do Github:

gist.github.com/BillSimpson/d7a1a531995c8b63492bb47ef8872618

Acho fácil fazer isso salvando o arquivo em um computador local e usando uma cópia segura (scp) para colocá-lo no Raspberry pi.

Em sua máquina local, copie o código do navegador, cole em um arquivo de texto e salve-o com o nome de arquivo "schoolbell.py". Em seguida, copie o arquivo:

máquina local: ~ $ scp schoolbell.py [email protected]: ~ /

Será solicitado que você insira a senha do usuário pi em schoolbell.local - insira a senha e o arquivo será copiado com segurança. Este comando deve ser executado no mesmo diretório em que o script python foi salvo e copiá-lo para o diretório inicial do usuário pi. Você pode ssh para schoolbell.local e o código deve estar lá:

máquina-local: ~ $ ssh [email protected]

Então, em schoolbell.local, liste os arquivos (você pode ver mais arquivos):

pi @ schoolbell: ~ $ ls

bing-bong-chime-hq.mp3 schoolbell.py

Agora edite o código para que ele tenha sua programação de sino usando um editor como o pico:

pi @ schoolbell: ~ $ pico schoolbell.py

O código tem três "dicionários" que definem os tons de sino a tocar, os horários para tocá-los e os feriados a serem evitados. Os sinos nos finais de semana são automaticamente ignorados.

Por exemplo, o dicionário belltones é:

belltones = {

'warn': 'bing-bong-chime-hq.mp3', 'start': 'bing-bong-chime-hq.mp3', 'end': 'bing-bong-chime-hq.mp3'}

Isso define três tipos de sinos, um sino de advertência, um início de aula e um fim. Como temos apenas um tom de campainha, todos apontam para o mesmo arquivo, mas se você fizer tons diferentes, poderá alterá-los. Você pode até adicionar outros tipos de tons de sinos. Também brinquei com o uso de um sintetizador de voz para falar os sinos, mas isso não foi visto com bons olhos pelos outros na casa.

O dicionário da programação do sino é semelhante, mas a "chave" agora é a hora do sino. você precisa usar o formato HH: MM com zeros à esquerda e horário de 24 horas (horário militar).

bellschedule = {

'09: 00 ':' start ', # Campainha do' ônibus 'se preparando '09: 28': 'warn',….. '13: 58 ':' warn ', # para o período 4 '14: 00 ':' início ', '15: 00': 'fim'}

O valor neste par chave: valor é o tipo de tom de campainha a ser usado e precisa corresponder a um dos tons de campainha definidos acima.

Por último, o dicionário de feriados lista as datas dos feriados. O formato é AAAA-mm-dd, com zeros à esquerda, conforme mostrado.

feriados = {

'2020-09-07', …. '2021-03-11', '2021-03-12' }

Quando terminar de editar, salve o arquivo saindo do editor e digitando ctrl-X se estiver usando pico.

Torne o código Python executável por:

pi @ schoolbell: ~ $ chmod a + x schoolbell.py

Isso permite que todos os usuários executem o código, "a" para todos, "+" para adicionar permissão e "x" para executar.

Agora teste a execução do código e observe a saída. Observe que você pode executar o arquivo digitando o nome do arquivo, mas precisa especificar que ele está no diretório atual digitando um "./" antes do nome do arquivo:

pi @ schoolbell: ~ $./schoolbell.py

É um dia de escola, verificando o horário 21:35

O código dirá se é um dia de escola (por exemplo, não é feriado ou fim de semana) e verifica se a hora corresponde à hora do sino. Neste caso, não era a hora do sino, então apenas saiu limpo. Se fosse a hora do sino, teria tocado.

Para testar se seu código pode tocar sinos, use a opção de linha de comando de um arquivo a ser reproduzido. Usaremos nosso arquivo bing-bong:

pi @ schoolbell: ~ / schoolbell $./schoolbell.py bing-bong-chime-hq.mp3

É um dia de escola, verificando o tempo 21:38 Reprodutor de áudio MPEG 1.0 / 2.0 / 2.5 de alto desempenho para as camadas 1, 2 e 3. Versão 0.3.2-1 (2012/03/25). Escrito e copyrights por Joe Drew, agora mantido por Nanakos Chrysostomos e outros. … mais saída….

Você deveria ter ouvido a campainha.

Agora teste o código usando um tempo como argumento. Lembre-se de inserir a hora com zeros à esquerda. Por exemplo, para testar o sino do meu "ônibus escolar" às 9h, eu digito:

pi @ schoolbell: ~ $./schoolbell.py 09:00

Isso deve fazer com que sua campainha toque! Você também pode testar se ele não toca em horários diferentes do sino.

Etapa 5: Automatize a execução com Crond

Automatize a corrida com Crond
Automatize a corrida com Crond

O cron 'daemon' é um planejador que executa tarefas repetitivas em um sistema Linux. Ele verifica se a data / hora corresponde a um padrão na tabela cron (crontab) e, em seguida, executa o código se corresponder. Você pode editá-lo usando o comando "crontab -e":

pi @ schoolbell: ~ $ crontab -e

Isso abrirá um editor de arquivo e, na parte inferior desse arquivo, você adicionará a seguinte linha:

* * * * * python3 /home/pi/schoolbell.py

Este comando diz ao cron para executar o python3 executando seu script no diretório inicial normal (/ home / pi). Os cinco * dizem que deve ser executado a cada minuto (primeiro *), a cada hora (próximo * …), todos os dias do mês, todos os meses e todos os dias da semana.

Agora, a cada minuto, o script schoolbell.py será executado. Durante a maioria dos minutos, o código será executado e descobrirá que deveria apenas encerrar sem fazer barulho, mas se acontecer de bater a hora do sino, ele tocará.

Observe que, como o cron só roda a cada minuto, você não pode tornar os sinos mais granulares do que ao minuto. Eu acho que é teoricamente possível que se o seu sistema ficar preso, o cron pode não ser executado por alguns segundos após o início do minuto, tornando o sino atrasado. Se de alguma forma o cron não funcionasse por um minuto inteiro, o sino faria falta.

Dica: para feriados prolongados (por exemplo, verão), você pode adicionar uma hashtag (#) ao primeiro caractere desta linha, o que o transforma em um comentário e, portanto, ignora sua execução. Quando as aulas estiverem de volta, apenas remova o # e ele começará a funcionar novamente.

Etapa 6: personalizar e aproveitar

Agora, você deve ter um sistema de sinos da escola em casa funcionando e seu aluno nunca deve se atrasar para a aula.

Você pode personalizar este projeto alterando os tons de sino.

  • Você poderia fazer soar o Big Ben, com sinos de um quarto de hora e soando as horas.
  • Você pode experimentar o estilo livre do seu rapper favorito.
  • Você pode fazer mensagens subliminares para se concentrar no estudo.

Fique seguro nesta época de COVID.

Imagem
Imagem
Imagem
Imagem

Vice-campeão no Concurso da Família "Can't Touch This"

Recomendado: