26 novembro 2014

Raspberry Pi : Instale o Raspbian e crie seu primeiro programa em Python

Raspberry Pi B+


Depois de falar sobre o que é o Raspberry e mostrar as diferenças entre o Raspberry B e o B+, chegou a hora de botar a mão na massa. Hoje vamos ver como ligar o Raspberry Pi B+ aos periféricos, e como instalar o Raspbian, o sistema operacional do Raspberry.

Raspberry - Preparação do hardware

Ligar o Raspberry não é tão simples como ligar um Arduino. Para começar, precisamos conectá-lo à um monitor de vídeo e também à alguns dispositivos de entrada (mouse e teclado). A saída de vídeo composto é um pouco mais complicada de usar, já que usa um plugue especial, e vamos abordar essa configuração em outra oportunidade. 

Na ligação básica, para instalarmos o Raspbian, vamos precisar de :

  • Raspberry Pi B+
  • Monitor com entrada HDMI
  • Cabo HDMI
  • Teclado USB (Pode ser utilizado um teclado wireless)
  • Mouse USB (pode ser utilizado um mouse wireless)
  • Fonte de alimentação de 5V e pelo menos 2A, com conector micro USB
  • Cartão micro SD de pelo menos 8 Gb

Ligue o monitor, o teclado e o mouse nas portas correspondentes. Não conecte o Raspberry na fonte de alimentação nesse momento, pois nada irá acontecer já que ainda não temos nenhum sistema operacional instalado no cartão microSD.

Preparando o cartão SD e baixando o Noobs

Noobs é a forma mais simples de instalar o Raspbian no seu Raspberry. Antes esse pacote continha vários sistemas operacionais para você escolher, mas agora temos apenas a opção de instalar o Raspbian ou uma versão dele que vai direto para o Scratch. Com essa mudança o arquivo para download ficou bem menor, algo em torno de 700 Mb.

Outras mudanças nessa versão do Noobs incluem o Epiphany como web browser, versões atualizadas do Sonic Pi (sintetizador de som) e do Mathematica, além do jogo Minecraft Pi. :-)

Para efetuar o download, vá até as seção de downloads do site, procure por NOOBS - Offline and network install e clique em DOWNLOAD ZIP :

Raspberrypi Noobs
Enquanto você faz o download do zip, formate o cartão microSD com sistema de arquivos FAT ou FAT32. Recomendo utilizar o SDFormatter (abaixo):

SDFormatter

Terminado o download, descompacte o arquivo ZIP do Noobs e copie toda a estrutura de arquivos (abaixo) para o cartão microSD que você acabou de formatar :

Noobs - Arquivos





Agora sim você pode colocar o microSD no Raspberry e conectar a fonte de alimentação.

Instalação do Raspbian

Ao ligar o Raspberry na fonte de alimentação, ele vai carregar as configurações iniciais e também o Noobs, que é o pacote que contém o Raspbian.

Na tela inicial do Noobs, use as setas do teclado para selecionar o Raspbian :

Noobs - Tela Inicial
No menu superior, clique em INSTALL. Nesse momento, será aberta uma janela informando que o sistema operacional selecionado será instalado no cartão microSD e que qualquer outro arquivo no cartão microSD será apagado. Clique em YES para confirmar e dar início ao processo de instalação.

O cartão microSD será então preparado pelo Noobs, e os arquivos do Raspbian instalados. No meu Raspberry esse processo levou aproximadamente 30 minutos :

Noobs - Instalação

Ao final da cópia de arquivos, clique em OK para reiniciar o Raspberry e carregar a interface de configuração Raspi-config.

Configurações iniciais do Raspbian com o Raspi-Config

Raspi-config é a interface de configuração do Raspbian. Nela é possível configurar, por exemplo, o tamanho do sistema de arquivos para que todo o espaço do cartão microSD seja utilizado pelo Raspbian. Você pode definir também se o Raspbian será iniciado na linha de comando ou direto na interface gráfica.

Raspbian Raspi-config


Além disso é possível alterar as definições do teclado, habilitar a câmera, modificar a senha do usuário e até mesmo definir opções de overclock do Raspberry.

Quando terminar o processo de configuração, selecione FINISH na parte inferior da tela, para que finalmente o Raspbian seja carregado.

Obs: Se você esqueceu de escolher a interface gráfica ou optou por iniciar o Raspbian na linha de comando, digite STARTX no prompt de comando para carregar a interface gráfica :

Raspbian - Tela Principal

GPIO Raspberry

GPIO (General Purpose Input/Output, ou Entrada e Saída de uso geral) é o conector de 40 pinos localizado na lateral da placa e que utilizamos para  ligar sensores, leds, motores, displays, etc, em um processo semelhante ao utilizado com as portas digitais e analógicas do Arduino. Observe na imagem abaixo que na GPIO também temos as interfaces I2C, SPI e UART :


Tome muito cuidado com a ligação de módulos e outras conexões à GPIO, já que as portas do Raspberry trabalham com nível de sinal de 3.3V.

Acionando portas do Raspberry usando Python

Vamos mostrar o funcionamento das portas do Raspberry utilizando um pequeno programa em linguagem Python que vai acender alternadamente dois leds. O led vermelho está ligado à porta 16 (GPIO 23), e o verde à porta 38 (GPIO 20) :

Circuito Raspberry Pi B+ e leds

Na tela inicial do Raspbian, clique no ícone IDLE 3, que irá carregar a interface de programação do Python :

Raspberry Python


Selecione File, depois NEW WINDOW. Na nova tela, digite o seguinte programa :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# Programa : GPIO Raspberry - Leds
# Autor : Arduino e Cia
 
# define o tempo que o led ficara aceso ou apagado
# (em segundos)
tempo = 1
 
# Define biblioteca da GPIO
import RPi.GPIO as GPIO
 
# Define biblioteca de tempo
import time                           
GPIO.setmode(GPIO.BCM)
 
# Define os pinos 16(GPIO 23) e
# 38 (GPIO 20) da placa como saida
GPIO.setup(23, GPIO.OUT)
GPIO.setup(20, GPIO.OUT)
 
# Inicia loop
while(1):      
  # Acende o led vermelho na GPIO 23
  GPIO.output(23, 1)
  # Delay
  time.sleep(tempo)
  # Apaga o led vermelho
  GPIO.output(23, 0)
  # Acende o led verde na GPIO 20
  GPIO.output(20, 1)
  # Delay
  time.sleep(tempo)
  # Apaga o led verde
  GPIO.output(20, 0)
  # Reinicia o processo

Pressione F5 para que o programa seja executado e você verá os leds acendendo alternadamente a cada 1 segundo.

Caso você não tenha efetuado o login como root, você pode receber a mensagem abaixo ao pressionar F5 e tentar salvar o arquivo:

RuntimeError: No access to /dev/mem. Try running as root!

Nesse caso, basta efetuar o logout do Raspbian e entrar novamente como root, repetindo o procedimento para digitar o programa no Python. 

Caso você queira alterar a senha do root no Raspberry, clique no ícone LXTerminal para entrar no prompt de comando do Raspbian, e digite os comandos na sequência abaixo :

sudo -i
passwd root

Após alterar a senha, realize o logout do usuário padrão (pi) e faça login com usuário root e a senha que você escolheu.

Clique aqui para ver outros artigos sobre Raspberry Pi aqui no Arduino e Cia !

6 comentários:

  1. Olá amigo.
    Como sempre, excelente post, parabéns.
    Acompanho o blog desde que me interessei por programação em Arduino, por isso quero agradecer e parabenizar pelo serviço prestado ao compartilhar informações.
    Estou planejando um sistema de automação residencial, onde pretendo ter um Raspberry Pi como "módulo central" responsável por receber as requisições, tratar e enviar comandos a alguns módulos Arduinos, que por sua vez controlarão relés, dimmers, emissores de IR, etc.
    Minha principal dúvida no momento é como realizar essa comunicação entre esses módulos. A princípio pensei em fazer via rede ethernet mesmo e para isso, todos os Arduinos precisariam ter esse shield, logicamente.
    Porém eu gostaria de "isolar" os Arduínos o máximo possível, para que eles não recebessem dados que não fosse enviado pelo RPi, por questão de segurança.
    Encontrei o RS485, mas ainda não achei um exemplo bom de comunicação entre vários dispositíveis (RPi e Arduíno na mesma "rede").
    Você já ouviu falar? Recomenda? Haveria algum outro?
    Desde já agradeço muito pela ajuda.

    ResponderExcluir
    Respostas
    1. Boa tarde Magrão !

      Muito obrigado. :-)

      Foi bom você comentar, pois são dois posts que eu quero fazer em breve. Um deles mostrando a comunicação entre o RPi e o Arduino (não sei se será via ethernet, ainda estou pensando), e outro sobre RS485. Esse último só estou aguardando a chegada dos módulos.

      Abraço !

      Excluir
  2. Muito obrigado pela resposta.
    Achei alguns exemplos de comunicação via I2C entre eles e vou testar aqui.
    No meu caso, daria certo pois a distância entre os módulos não será muito grande.
    Estou tendendo à essa solução pois é a mais barata, uma vez que não é preciso nenhum componente extra. Pelo o que andei vendo, seria preciso uma bridge por conta da diferença de voltagem entre o RPi e o Arduíno, mas como o RPi será o "mestre", parece que não é necessário. Confesso que essa parte não entendi muito bem.
    Ao terminar meus testes, posso te passar os dados e os códigos para você postar aqui no Blog, mas também estou na pendência de chegar meu RPi e mais um Arduíno ;-)

    ResponderExcluir
    Respostas
    1. Bom dia Magrão !

      Bacana, vamos manter contato. Assim que tiver novidades, me avise. :-)

      Abraço !

      Excluir
    2. Olá.
      Consegui fazer a comunicação entre o Py e dois Arduínos via I2C.
      Os programas são bem simples, o Py envia o comando que acende ou apaga a porta 13 dos Arduínos.
      O mais difícil foi configurar o Py. As opções não vêem prontas. Foi preciso instalar e recompilar alguns pacotes do Python.
      Se quiser posso enviar os linkss que usei como referência e os fontes dos programas.
      Abraços.

      Excluir
    3. Boa noite Magrão,

      Se puder me enviar, agradeço. Utilize o formulário de contato no lado direito da página para entrar em contato via email.

      Abraço e obrigado !

      Excluir