Índice:
- Etapa 1: o design
- Etapa 2: como funciona
- Etapa 3: Construindo um Protótipo de Demonstração
- Etapa 4: Programando o ATTiny85
Vídeo: Crie um botão liga / desliga Raspberry Pi melhor: 4 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
É muito fácil fazer um botão de desligar ou desligar o Raspberry. Existem muitos desses projetos na web e alguns aqui no Instructables, mas nenhum deles (que eu possa ver) informa quando seu Pi realmente terminou de desligar e, portanto, é seguro puxar a energia. Na verdade, eles nem mesmo reconhecem que o botão foi pressionado.
Também existem projetos para reiniciar um Pi que foi encerrado, mas também não fornecem nenhum feedback visual.
Mas quem precisa de um botão assim? Se você for um pouco nerd como eu, ou apenas um aspirante a nerd, você sempre pode fazer login no seu Pi localmente ou pela rede e digitar sudo shutdown -h now. Mas se você estiver construindo um projeto para usuários não técnicos, isso simplesmente não vai funcionar. É verdade que você quase sempre consegue se safar apenas puxando o cabo de alimentação, mas observe, eu disse quase sempre! A sorte de todos acaba mais cedo ou mais tarde. Eu tive um cartão SD morrendo comigo na semana passada, embora nunca saberei se foi ou não devido a uma queda repentina de energia.
No meu caso, precisei adicionar um botão liga / desliga a um Pi que usamos como sequenciador midi para gravar e reproduzir hinos e canções na igreja, para quando não tivermos um pianista ao vivo disponível. Sempre posso digitar o comando de desligamento, mas preciso desqualificá-lo para quando não estiver lá.
Minha intenção aqui não é dar a você um produto acabado, completo com uma linda caixa impressa em 3D, como tantos outros Instructables. Cada pessoa terá um uso diferente para ele ou deseja incorporar em seu próprio projeto. Em vez disso, configurarei a tecnologia que você pode adicionar ao seu projeto, seja um centro de mídia, um dispositivo IoT ou qualquer outra coisa.
(No vídeo, estou demonstrando isso com um Pi Zero v1.2 e um monitor que fiz a partir de uma tela de laptop adaptada e um controlador do Extremo Oriente.)
Etapa 1: o design
Isso é o que meu botão liga / desliga fará por você:
- Quando o Pi está funcionando, um LED fica aceso continuamente. Se for desligado manualmente, o LED só se apagará quando for seguro desconectar a energia.
- Durante a execução, se você pressionar o botão por pelo menos um segundo, um desligamento é iniciado e o LED pisca por um quarto de segundo a cada segundo até que seja seguro desconectar a energia.
- Em um estado de desligamento (se a energia não tiver sido removida), pressionar o botão inicia a inicialização e acende o LED por um quarto de segundo a cada segundo até que seja inicializado. (Pode demorar um pouco mais até que todos os serviços, como ssh e vnc, estejam em execução.)
Os componentes são muito baratos. Tudo o que você precisa é:
- ATTiny85 (chip compatível com Arduino)
- 3 resistores: 2 x 330Ω e 1 x 10kΩ
- 1 LED - sugiro verde ou azul, mas a escolha é sua
- breadboard e fios de jumper, ou stripboard, ou como você quiser construí-lo.
Etapa 2: como funciona
Como acontece com todos os botões de energia do Pi, este coloca um pino GPIO em um estado baixo para sinalizar uma solicitação de desligamento para um programa auxiliar em execução no Pi. Usei GPIO4 (pino 7), mas você pode usar qualquer outro pino.
A única maneira de saber se um Pi completou o desligamento é observando o pino 8 do TxD, que então fica baixo. Isso depende do console serial estar habilitado, o que é por padrão. Na verdade, o TxD sobe e desce regularmente enquanto está sendo usado como um console serial, mas nunca fica baixo por mais de cerca de 30 ms de cada vez, mesmo na taxa de transmissão comum mais lenta. Ele ainda pode ser usado para um console serial, visto que apenas o assistimos passivamente.
Para reiniciar, precisamos puxar brevemente SCL1 (pino 5) para baixo. Este pino é usado por qualquer dispositivo I2C (incluindo minha interface midi), mas depois de iniciar a inicialização, nós o deixamos sozinho.
A maior parte da complexidade está no esboço do Arduino que carregamos no ATTiny85. Isso implementa uma "máquina de estados" - uma forma muito útil e poderosa de codificar qualquer problema que possa ser representado por vários "estados". Uma máquina de lavar funciona da mesma maneira. Os estados representam os estágios do ciclo de lavagem e cada um define o que a máquina deve estar fazendo naquele ponto (motores ou bombas a funcionar, válvulas a serem abertas ou fechadas) e quais entradas de sensor (temperatura, nível de água, temporizadores) determinar quando passar para o próximo estado e qual próximo estado escolher.
O esboço da mão é meu primeiro esboço de um diagrama de estado, mostrando todas as transições de estado. Isso é apenas para mostrar como você pode planejar inicialmente seus estados e transições de estado - pode não ser completamente preciso como era antes de eu começar a depurar.
Em nosso caso, temos 6 estados que chamei de OFF, BOOT REQUEST, BOOTING, RUNNING, SHUTDOWN REQUEST e SHUTTING DOWN. (Depois de DESLIGAR, ele volta para DESLIGADO.) Eles são identificados por comentários no esboço e, para cada um, comentários adicionais dizem o que deve ser feito e quais eventos o moverão para outro estado.
O programa auxiliar em execução no Pi é um pouco mais complicado do que a maioria dos botões de desligamento. Ele responde a um pulso longo e baixo no pino GPIO iniciando um desligamento, mas também responde a um pulso curto puxando brevemente o pino GPIO para baixo. É assim que o ATTiny85 pode saber que está funcionando e, portanto, pode passar do estado BOOTING para o estado RUNNING.
Etapa 3: Construindo um Protótipo de Demonstração
Para fins de demonstração, você pode prototipá-lo em uma placa de ensaio sem solda, como mostrado, mas também forneci o esquema para que você possa trabalhar em seu próprio layout usando stripboard ou um PCB personalizado, talvez parte de um projeto mais amplo.
Etapa 4: Programando o ATTiny85
O esboço do Arduino e o programa auxiliar estão anexados a esta etapa. Na pasta de esboços do Arduino, crie uma pasta chamada PiPwr e copie o arquivo PiPwr.ino nela. Ao iniciar o IDE do Arduino, você agora o encontrará em seu bloco de desenho.
Existem várias maneiras de programar um ATTiny85. Se a sua tem um bootloader instalado, você pode usar uma placa de desenvolvimento ATTiny85 que custa apenas alguns libras. Isso se conecta ao seu PC através de uma porta USB. Usei um Hidiot que é essencialmente o mesmo, mas com uma área de prototipagem.
No IDE do Arduino em Arquivo - Preferências, adicione
digistump.com/package_digistump_index.json
aos URLs do gerenciador de placas adicionais.
Em Ferramentas - Placa, você deve ver agora várias opções do Digispark. Selecione Digispark (padrão - 16,5 MHz).
Se o seu ATTiny85 não tiver um bootloader (ou você não souber), você pode obter um programador AVR ISP por alguns quilos. Ou você pode usar um Arduino Uno ou um Pro Mini ou Nano mais barato como programador. Procure no Google por "arduino as isp attiny85" (sem as aspas) para obter instruções.
Se você quiser modificar o esboço, irá achá-lo totalmente comentado e, com sorte, fácil de seguir. Para depurar é muito mais fácil usar um Arduino Pro Mini ou Nano. Remova o comentário de serial.begin () em Setup e as instruções de impressão em loop () para ver as etapas que ele executa usando o monitor serial. Existem definições alternativas de pinos na fonte, comentadas, para um Uno, Pro Mini ou Nano.
No seu Raspberry Pi, copie o arquivo shutdown_helper.py para a pasta / etc / local / bin e defina-o como executável com o comando
sudo chmod + x /usr/local/bin/shutdown_helper.py
Agora edite o arquivo /etc/rc.local com seu editor favorito. (Você precisará fazer isso como root.) Antes da última linha (saída 0), insira a linha
nohup /usr/local/bin/shutdown_helper.py &
Reinicie e o programa auxiliar será iniciado automaticamente.
Recomendado:
Um computador desktop Raspberry Pi PC-PSU com disco rígido, ventilador, PSU e botão liga / desliga: 6 etapas
Um computador desktop Raspberry Pi PC-PSU com disco rígido, ventilador, PSU e botão liga / desliga: setembro de 2020: Um segundo Raspberry Pi alojado dentro de um gabinete de fonte de alimentação de PC adaptado foi construído. Este usa uma ventoinha na parte superior - e a disposição dos componentes dentro do gabinete PC-PSU é, portanto, diferente. Um modificado (para 64x48 pixels), Anúncio
Conectando um botão liga / desliga ao Creator Ci40: 4 etapas
Conectando uma chave liga / desliga ao Creator Ci40: Montar a placa Creator Ci40 em um gabinete pode exigir o controle remoto da alimentação da placa. Este instrutível examina como adicionar opções passivas e ativas para controlar a fonte de alimentação DC para a placa. O que você precisa1 x Criador
Adicione um botão liga / desliga à instalação do LibreELEC em um Raspberry Pi: 6 etapas
Adicionar um botão liga / desliga à instalação do LibreELEC em um Raspberry Pi: A seguir, aprenderemos como adicionar um botão liga / desliga ao LibreELEC em execução em um Raspberry Pi. Usaremos um PowerBlock não apenas para adicionar um botão liga / desliga, mas também um LED de status que indica o status de energia de sua instalação do LibreELEC
Botão liga / desliga do Raspberry Pi: 3 etapas
Botão liga / desliga do Raspberry Pi: Se você é como eu, deve estar vasculhando a internet procurando a melhor solução para ligar e desligar o Raspberry Pi com segurança pressionando um botão. Embora existam muitas soluções, a maioria exige que você baixe um script Python e torne-o exec
Toque no botão liga / desliga para Raspberry Pi: 3 etapas
Toque no botão liga / desliga para Raspberry Pi: Desde que imprimi e comecei a usar esse estojo para o meu Retropie sempre imaginei como fazer um botão liga / desliga. A ideia era mudar o design para fazer o botão de movimento e depois mover um interruptor. No final, tive outra ideia, onde não precisava mudar o cas