segunda-feira, 9 de dezembro de 2013

Botão para iniciar o Raspberry Pi quando desligado

Muitos de vocês que tem um Raspberry Pi devem ter percebido que quando desliga-se normalmente pelo sistema operacional, a placa fica somente com led PWR aceso, nesse momento a placa permanece em um estado de baixo consumo de energia, com varias partes do SoC desativadas, desse modo é possível retirar com segurança o plug de energia. Antigamente praticamente só era possível retornar desse modo e iniciar novamente retirando e recolocando o plug, mas a muito tempo que uma atualização de firmware tornou possível a inicialização simplesmente dando um curto nos pinos 5 e 6:

Imagem retirada(e editada) do elinux.org

Melhor do que dar um curto manualmente é usar um botão, abaixo seguem os passos para se montar um pequeno botão que se encaixa de maneira simples e pode ser inserido e removido facilmente.



Materiais


Plug de um dos botões ou leds frontais de um pc( podem ser usados plugs similares ou separados desde que encaixem);
Fio rígido( não há uma espessura específica, só veja se o mesmo entra no conector );
Botão do tipo chave táctil(ou qualquer outro push button como dos próprios pcs);
Ferro de Solda e estanho

Montagem

 

No meu caso o botão que já era usado tinha um fio soldado, então tive que remove-lo primeiramente.


Chave tactil com fio
Chave táctil com fio

Chave tactil após remover o fio
Chave táctil após remover o fio

Será preciso remover o conector metálico de dentro da capa plástica, isso pode ser feito facilmente levantando as travinhas da capa e puxando o fio.

Conector
Conector

Conector de metal separado da capa plástica
Conector de metal separado da capa plástica

Retire a capa do fio rígido e corte em 2 pedaços maiores do que você vai usar, pois você medirá e cortará depois no tamanho certo. Aqui eu usei uma estratégia melhor, em vez de cortar em 2 pedaços diretamente, eu descasquei o fio e soldei em um dos contatos do botão antes de cortar.

Fio rígido
Fio rígido

Solde os fios na parte de dentro dos contatos do botão, pois desse modo ficará mais alinhado com o conector ( caso o seu seja duplo como o meu isso irá facilitar ).

Fio rígido soldado
Fio rígido soldado

Retire o fio do conector.

Conector de metal separado dos fios
Conector de metal separado dos fios

Verifique qual tamanho você precisará que o fio já soldado no conector tenha para que o botão fique rente ao conector e então corte-o.

Fio rigído cortado no tamanho certo
Fio rígido cortado no tamanho certo

Encaixe nos conectores metálicos e aperte bem, nessa fase você pode optar por soldar, algo que lhe dará mais segurança para que não escape.

Conectores presos
Conectores presos

Encaixe no conector plástico.

Botão finalizado
Botão finalizado

E finalmente encaixe nos pinos 5 e 6 do Raspberry Pi.

Botão no Raspberry Pi
Botão no Raspberry Pi

Segue um vídeo do botão em funcionamento.




Observação: Do do modo que está ele somente serve para ligar. Caso queira adicione um resistor de grande valor por precaução.

Alternativa


Outra alternativa é a utilização dos contatos P6. Adicionados na revisão v2 da placa, eles tornam possível um reset do SoC e ao provocar um curto o reset é imediato assim como no botão reset dos PCs. Também pode ser usado dessa maneira para inicializar novamente a placa quando no estado de baixo consumo. Único inconveniente é que não há pinos soldados na placa, sendo assim tendo que soldá-los.

Pinos P6

Está gostando do blog? Ajude-nos a divulgar e curta nossa página no Facebook ou siga-nos no Twitter.

Atualização: segue como utilizar o botão para também desligar o Raspberry Pi.


24 comentários:

  1. Muito bom o tutorial, não tinha ideia de que havia essa possibilidade. Mas o botão serve pra desligar também? Eu gostaria de um que fizesse as duas funções.
    Abraços.

    ResponderExcluir
    Respostas
    1. De modo normal não, para desligar será preciso programar via software para monitorar e dar o shutdown e seria bom usar um resistor por segurança, ou seja, não aperte o botão com o raspi ligado a menos que ele esteja nessa função.

      Excluir
    2. http://everpi.tsar.in/2013/12/usando-o-botao-de-inicializacao-para-desligar-o-raspberry-pi-projeto.html

      Errata: não será preciso resistor pois esse pino contém um de 1.8k na própria placa.

      Excluir
  2. Uma pergunta, você fala que teve uma atualização do firmware. Essa atualização é direto no SoC? Tem como versões antigas fazerem essa atualização, ou ela só vem de fábrica?

    Ah, e muito bom o tutorial!

    ResponderExcluir
    Respostas
    1. Essa alteração é em um dos arquivos que são parte do firmware, bootcode.bin, esse que é carregado no boot, ou seja, não é gravado diretamente no SoC, a atualização de versões antigas podem ser feitas pelo comando rpi-update.

      Excluir
    2. Então czar, só pra ver se entendi direito, basta eu ter a última versão do Raspbian, né?

      Valeu ai!

      Excluir
  3. Amigo e há forma de por exemplo colocar no raspberry pi um condensador/diodo para qd ele ficar sem energia, se desligar automaticamente sem ser de forma errada/bruta? ou é impossível de o fazer? Há tutoriais para isso? é que era esse o meu objectivo... kkkk

    ResponderExcluir
    Respostas
    1. Acho que só utilizando uma bateria( de pouca capacidade mesmo só pra dar tempo de desligar ), pois utilizar um capacitor por exemplo me parece inviável, pois precisaria de um capacitor enorme ou varios com muita capacitância para segurar o sistema até desligar, no meu caso eu tenho um sistema de UPS que faz exatamente isso, eu uso aquelas baterias externas de celulares, mas tive que criar um circuito para segurar a carga quando a energia acabasse até que a bateria entrasse em ação, é uma opção, mas existem outras, claro, uma delas eu postei esses dias http://everpi.tsar.in/2014/02/projeto-raspberry-pi-mopi-no-kickstarter-quer-trazer-circuito-energia-ups.html , você tem experiencia com circuitos? para soldagem? Podemos pensar na melhor solução. Quanto a um tutorial sobre isso, não conheco um no momento, mas fiquei de fazer um sobre o UPS que citei, a placa, etc, só que o projeto precisa ser melhorado antes de posta-lo.

      Excluir
    2. Viva amigo, obrigado pela resposta!

      Eu sou um pouco "nabo" nisso... daí ter sugerido o diodo/condensador por pensar que conseguiriam armazenar a energia suficiente para conseguir desligar o raspberry pi bem...mas pelos vistos estava errado... kkkk

      Basicamente o que tinha pensado, era o raspberry pi ter um pequeno processo a controlar a energia, e se por algum motivo a energia de entrada fosse cortada, ele dar o comando de encerrar em segurança... pois tendo por exemplo o raspberry pi ligado ao usb da TV se a desligar, ela corta logo a energia... com a bateria como sugeriste se calhar conseguiria resolver o problema? como depois conseguiria programar e onde a teria de soldar? :$ achas que me consegues ajudar?

      Excluir
    3. Opa, desculpe a demora em responder, pois bem, o esquema da bateria funcionaria sim, mas não só ela, mas parece que no seu caso talvez seja mais facil comprar algo já pronto como o MOPI que citei acima ou PiUPS http://www.piups.net/, ouvi dizer que existem uns circuitos usando baterias de chumbo que são mais simples, de uma procurada também. O circuito do meu é esse http://tsar.in/hardware/raspups.png mas como já avisei, ele precisa ser melhorado, não está 100%.

      Excluir
  4. Pois.. Ms n posso gastar mto.. E dps o rasp fica mais barato que esse sistema kkkk eu queria algo mais caseiro de forma a ficar quase sem gastar dinheiro.. Dai ter pensado que poderia soldar os diodos e programar o rasp para s desligar..

    Não sabes se há forma de fazer o que pretendo de forma a gastar pouco?

    ResponderExcluir
    Respostas
    1. Veja, gastando pouco é difícil e só se tiver os componentes em casa, se não fica complicado, a poucos dias me deparei com outro projeto similar ao que você quer, mas que também precisaria ser montado, ele usa uma bateria de 9V recarregável, http://www.repairhub.co.uk/content/resources/raspberry-pi-battery-backup , vou dar uma garimpada e conversar com uns amigos, caso eu ache algo ainda mais simples lhe digo.

      Excluir
    2. Encontrei uma outra solução, parecida com a que você queria, só que como disse anteriormente, precisaria de capacitores de grande capacitância, achei um projeto bem simples que o autor utiliza 2 super capacitores de 2,7v 50F, dando tempo suficiente pro Raspberry Pi desligar, http://www.hackerspace-ffm.de/wiki/index.php?title=Raspi_EDLC_UPS
      Só que tem o mesmo problema dos outros métodos, o custo, o capacitor mais barato que achei parecido com esse na aliexpress custa 8,45 USD cada, seria 16,9 dólares só de capacitor, e também teria que montar o circuito.

      Excluir
  5. Gostaria de fazer um botão para iniciar o RPI quando ele tivesse sido desligado via shutdown (como você descreveu acima) e se o RPI estivesse ligado, ele iria reiniciá-lo. É possível?

    ResponderExcluir
    Respostas
    1. Olá, perfeitamente possível. Utilize o código do post Usando o botão de inicialização para desligar o Rasberry Pi e altere ele. Você precisará alterar na linha do shutdown. Basta substituir o "-h" por "-r".

      Excluir
    2. Então daria para colocar um de reiniciar e outro para desligar. E o aparelho estando desligado, posso usar o de desligar para ligar o aparelho?

      Excluir
    3. Você diz utilizar 2 botões? Se for é possível, entretanto o botão que será utilizado para ligar o aparelho tem que estar exatamente no GPIO citado acima. O outro teria que colocar em outro gpio e alterar o software. Na realidade é possível fazer isso somente com um botão, com o rasp ligado o botão sendo pressionado uma vez desligaria (ou reiniciaria) e sendo segurado por alguns segundos reiniciaria (ou desligaria), não sei se deixei claro, entretanto para realizar isso já seria necessário cair na programação para verificar quando o botão seria pressionado somente ou segurado por X segundos.

      Excluir
    4. Perfeito, vou tentar descobrir como se faz para identificar se o botão foi apertado brevemente ou se foi por um tempo maior.

      Excluir
  6. Ever, muito bom o post!

    Tenho um botao aqui que corta a alimentação quando precionado, ou seja, quando deixo de pressiona-lo ele mantem o curto. E possível usa lo para ligar o Rasp PI 3?

    ResponderExcluir
  7. Boa noite, gostaria de saber como faço a ligação do botão que vc ensinou + cooler, pois o cooler usa os mesmos pinos do botão! Obg

    ResponderExcluir
    Respostas
    1. Só ligar o polo negativo (só ele, o outro permanece no local) do cooler OU do botão em outro GND, infelizmente não há dois GND próximos, terá que juntar os fios ou adaptar se não puder separar eles.

      Excluir