Raspberry PI 2 – Dicas, dúvidas e erros comuns

Raspberry Pi
Raspberry Pi

Está realmente se tornando comum utilizar board de outras arquiteturas como ARM e claro, o Raspberry Pi é o mais popular no momento. Mas ainda assim, vejo erros e dúvidas muito comuns e inclusive detalhes que eu próprio havia esquecido, por isso decidi escrever esse post como uma pequena anotação.

Alimentação

O dispositivo é energizado com um micro USB 5v. A corrente necessária varia do quanto se requer do hardware, mas o mínimo recomendado é 1.2A e se quiser colocar carga sobre as portas USB, é ideal que se forneça 2.5A. Já nesse segundo caso, pode não ser trivial encontrar uma fonte com essas especificações, mas use ao menos uma fonte de alimentação de um tablet, que é 2A.

Pra servir como referência, dei um Ctrl+Chups na tabela que encontrei no próprio FAQ do site oficial do RPi:
rpi-power

Em suma, o recomendado é o consumo máximo tipico em condições normais.

Um detalhe FUNDAMENTAL em relação ao consumo é que você deve considerar a carga. Se você quer utilizar 4 USB com carga de 600mA (somadas as 4 portas), você deve fornecer no mínimo 600mA+ RPi + carga suficiente para suportar ruídos, onde ‘RPi’ é a última coluna da tabela anterior. Isto é, dependendo do modelo, vai de 180mA à 330mA. Por isso o ideal é uma fonte de tablet, que oferece seguramente 2A (sendo uma fonte verdadeiramente original).

Carga na USB

Você tem a opção de utilizar também um HUB USB energizado. Desse modo, não terá que se preocupar com a alimentação de periféricos. Conforme a tabela anterior, a maioria dos modelos permitem seguramente o consumo de 500mA na USB. O RPi B+ e 2B pode permitir 600mA ou 1.2A, configurado por firmware. Sinceramente, fique nos 600mA, recomendação conservadora.

MODEM 3G e HD’s externos consomem uma carga enorme e a melhor opção é uma alimentação externa ou ao menos um HUB USB energizado. Utilizar um HUB energizado lhe permitirá ampliar o número de portas para utilização no sistema, considere essa opção.




Cuidados com GPIO

O RPi não é tolerante a 5v. Pode funcionar por um dia, uma semana, um mês, mas em algum momento você vai estragar sua board. Se pretende interagir com os GPIO’s da board (coisa que recomendo muito, porque é uma delicia mexer com isso no Linux), tenha o cuidado de utilizar divisor de tensão, LLC, diodo zener, buffers não-inversores ou dispositivos que se comuniquem nesse nível lógico. Recomendo a leitura desse post onde trato da utilização de um buffer não-inversor. Nesse outro você vê a respeito de LLC e divisor de tensão.

Tenha muita, mas muita atenção mesmo em relação ao consumo no GPIO: O máximo de consumo é 50mA distribuido em TODOS os pinos. Além disso, um único pino pode drenar no MÁXIMO 16mA, então, ainda que vá utilizar apenas um LED 5mm (que consome em torno de 25mA, conforme o resistor), não o alimente pelos pinos de GPIO.

Calcular outras cargas

Cada periférico conectado terá seu consumo, claro. Quanto mais periféricos, maior o consumo, portanto é bom ter idéia da carga sobre o RPi para saber se a alimentação está sendo suficiente.

O HDMI consome 50mA, uma câmera consome 250mA. Se for conectar uma webcam, verifique nas especificações o consumo. Não que a USB não possa suprir, mas para que você calcule a carga total do sistema.

Teclados e mouse podem variar entre 100mA e 1A, portanto veja as especificações do periférico antes de conectá-lo ao RPi ou utilize diretamente um HUB USB energizado e seja feliz.

Alimentar o RPi pela USB

Não. Não faça isso, primeiramente porque USB 2.0 oferece apenas 500mA. Ainda que utilizando um HUB USB, é dúbio dizer que alimentar o RPi será seguro, porque depende de como o HUB foi produzido (para fornecer o padrão USB 2.0, ou para mais carga).

Alimentação por bateria

4 pilhas AA devem oferecer seguramente 4.8v, que está dentro da faixa de tolerância, apesar de já não ser o ideal. Alcalinas fornecerão 6v, que excede em muito a tolerância. Eu particularmente recomendo a utilização de bancos de bateria, desses utilizados para dar carga extra no celular. Isto porque ele é 5v e tem uma corrente muito boa, variando conforme o modelo. Eu tenho um bem razoável que oferece 8800mAh, bastante satisfatório!

Fora isso, não há outro modo de alimentação a considerar.

Cuidados com o sistema operacional

Em servidores de missão crítica, cheguei a manter o Linux up sobre carga por periodos maiores que 2 anos (2 anos sem reboot!). O Linux é extremamente estável, mas você deve considerar que ele estará rodando a partir de um cartão de memória, que é frágil como uma moça. Por isso minha recomendação é que não faça muito I/O no cartão, evite armazenamento nele, evite desligamentos incorretos do sistema. Pode parecer exagero mas você vai sentir o drama se não seguir essas recomendações. Se for algo descompromissado, “haja o que hajar”. Cartões de até 32GB parecem funcionar a contento.

Instalação do sistema operacional

Eu vi pessoas com dúvidas quanto a instalação do sistema. É muito simples, mas só vou exemplificar no Linux. Primeiramente, recomendo os sistemas citados aqui. Particularmente, recomendo o Raspbian.

Baixe o sistema, descomprima e então você terá uma imagem do sistema. Simplesmente transfira-a para o cartão com o dd:

Ao acabar, simplesmente faça o boot e você será guiado no processo de configuração e redimensionamento do sistema de arquivos do cartão. Nesse outro post você terá mais intimidade com o processo de instalação do sistema, recomendo fortemente que leia.

Reconfigurações

Essa é uma questão importante. Você instala o sistema e tudo fica desconfigurado. Como proceder? – Segue uma série de comandos para deixar o sistema do jeitinho que você quer:

 

WiFi

Infelizmente não tem nenhum modelo com WiFi nativa, mas você pode utilizar qualquer dungle USB. É o que faço e com o modelo RPi 2B, é bem mais tranquilo fazê-lo, já que você não precisa se preocupar com o consumo, além de que você tem 4 USBs.

Para configurar manualmente pelo console, edite o arquivo /etc/network/interfaces. Substitua as linhas relacionadas à interface wlan0 por essas:


Reinicie o serviço de rede:

Se pretender usar IP estático no WiFi, o trabalho é um pouco mais doloroso.

  • Edite o arquivo /etc/wpa_supplicant/wpa_supplicant.conf
  • Adicione o seguinte conteúdo:

  • Agora edite o arquivo interfaces e invés da configuração descrita para DHCP, escreva esta configuração que segue:

  • Se preferir, invés de especificar o DNS no arquivo interfaces, aponte-o em /etc/resolv.conf:

Ethernet nativa – Fast Ethernet

A interface ethernet não é Gigabit porque está conectada via USB 2.0, portanto não suporta o throughput maior que os 100Mb da fast ethernet. Se desejar configurar a interface manualmente, o arquivo é o mesmo supracitado. A seguir, uma configuração por DHCP e uma estática, para exemplo:

Já que estamos falando de configuração de rede, o DNS para resolução de nomes também é fundamental. Exemplificando com o do google:

Login sem senha

Existem algumas razões que isso pode ser útil, acredite. Se for o seu caso, basta modificar o arquivo /etc/inittab e:

Autenticação por pendrive

É muito legal autenticar pelo pendrive invés de digitar senha. Aproveite essa dica lendo este post.

Esqueci a senha

Sem problemas. Existe um bagolhão de modos de recuperar o acesso ao sistema. Veja como aqui.

Usar a UART do GPIO

Para essa questão um pouco mais elaborada, recomendo este artigo.

Localizar pacote que contém um comando

Se você ainda não tem o programa instalado e não sabe o nome do pacote que o provê, você poderá tentar localizado com o apt-cache:

Isso deve retornar um monte de pacotes, mais ou menos assim:

Mas em alguns casos, pode não ser possível localizar um comando. Existe um tipo de ‘operação reversa’, que é quando você tem o comando (ou arquivo) instalado através de um pacote .deb (seja ele baixado ou instalado via apt-get) e você gostaria de identificar o nome de pacote que o provê. Para isso, utilize o comando:

Se você não sabe onde está o comando, poderá localizá-lo assim:

Vamos ao exemplo do programa utilizado para medir a temperatura do Raspberry Pi:

 

Modos de boot

Somente é possível fazer boot pelo cartão SD, não dá pra fazer por PXE nem pela USB. A razão disso vem a seguir.

Meu Raspberry está com defeito?

O primeiro susto para iniciantes é tentar ligar o RPi sem cartão para ver se está funcionando. O máximo que você vê nesse caso é o LED acender. Isto porque essa board não tem BIOS nem nada do tipo, todo o processo de carga e reconhecimento periférico é feito diretamente pelo sistema no cartão. A board só tem programação suficiente para buscar o start do sistema no cartão, o restante é feito pelo SO.

O segundo susto para iniciantes é ligar o RPi com o cartão, mas com o sistema corrompido ou o cartão com defeito. Até se o sistema de arquivos apresentar falhas, você não terá vestígios, portanto não se desespere, a board só vai dar problema se você causar esse problema, o resto sempre apontará para anomalias no cartão de memória.

Meu raspberry está rebootando sem motivo aparente

Se você está seguindo as recomendações anteriormente citadas, a causa mais provável é falta de corrente. Eu comprei um carregado Samsung 5v 2A barato pra caramba pelo Mercado Livre. Parecia mesmo original, mas essa porcaria só pode ser falsa, porque gerou esse efeito no meu RPi. Não desconfiei de imediato e isso me gerou um belo transtorno até que resolvi testar o carregador Samsung do tablet da minha esposa e tudo resolveu-se magicamente. Vale a máxima que “o barato sai caro”.

Não estou vendo imagem no HDMI

Em alguns casos pode acontecer a necessidade de forçar o HDMI. Meu raspberry estava funcionando bem, mas de repente foi-se a imagem e nem reiniciando voltava. Se houver a necessidade de forçar o HDMI, edite o arquivo /boot/config.txt e descomente as linhas:

Reinicie e tudo deve funcionar.

Pinouts – Identificando os GPIO

Além da diferença do número de pinos disponíveis, tem a questão das mudanças de posicionamento. Por exemplo, GPIO21 no Raspberry Pi é pino 13, enquanto no Raspberry 2 é o pino 40. O Raspberry 3 tem a mesma pinagem do Raspberry 2. Para não haver dúvidas na hora de usar o GPIO, eis a tabelinha:

Pinagem de todos os modelos
Pinagem de todos os modelos

Manipular GPIO por linha de comando

E já que falamos de GPIO, que tal mexer nisso por shell script mesmo? É simples demais. Suponhamos que deseje justamente utilizar o GPIO21. O procedimento será:

  • Habilitá-lo
  • Selecionar direção
  • Atribuir-lhe o valor

Para fazê-lo manualmente, basta seguir esse conjunto de passos.

Medir temperatura da CPU

Um amigo de um dos grupos do facebook sugeriu que eu fizesse um script pra ligar o cooler de um Raspberry quando atingisse a temperatura X. Ah, sabia que o Raspberry tem sensor de temperatura interno para a CPU? Pois é. Tem e a resposta pode ser obtida com o comando:

Para fazer um monitoramento inocente (não estamos falando de controlar a temperatura de um reator nuclear, portanto, pode ser uma coisa simples) um shell script no cron para monitorar de minuto em minuto resolve o problema fácil.

E para editar o cron, use “crontab -e”. Inclua a seguinte linha:

O cooler deve ser alimentado através de um transistor, o Raspberry apenas fornece esse pino de GPIO para acioná-lo. Além do mais, um diodo entre o pino de GPIO e o transistor pode ser uma ótima ideia. Dá até pra implementar PID em shell script e utilizar PWM no cooler. But, não vamos complicar as coisas.

Desligar ou ligar monitor por linha de comando

Isso pode ser feito inclusive remotamente por ssh ou MQTT ou sockets, você que escolhe. Para desligar o monitor, use:

Para ligar, use a sequência:

 

WiFi e Bluetooth no Raspberry Pi 3

Se você colocar uma imagem de sistema (seja antiga ou nova) e não aparecer a interface WiFi, conecte-o via cabo de rede e faça uma atualização do sistema:

Após todo esse processo, reinicie e certamente você já terá sua interface WiFi disponível. Depois, basta configurá-la como descrito mais acima.

Para o bluetooth, só para garantir, faça como eu fiz:

Após instalados esses pacotes, você poderá instalar o bluez dos fontes:

Ou você pode tentar simplesmente com o pacote do bluetooth (não me xingue):

Legal, hum?

Espero que essas dicas possam lhe ser realmente úteis como são para mim.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Próximo post a caminho!

Comments

comments

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.

Um comentário em “Raspberry PI 2 – Dicas, dúvidas e erros comuns

Deixe uma resposta