RPi 101 – Introdução ao RaspberryPi !

Pela altura em que escrevo este artigo, o Raspberry Pi já vendeu mais de 2 000 000 de unidades em todo o mundo. Este computador do tamanho de um cartão de crédito e cujo o custo é impressionantemente baixo tem dado imenso que falar em sites de tecnologia e realizado imensos projectos criativos um pouco por todo o mundo. Com este artigo pretendo dar-vos a conhecer como dar os passos em sincronia com o Raspberry Pi, o famoso computador que cabe na carteira e que custa apenas cerca de 35€!

Este tutorial divide-se em 3 partes. Para quem se está a iniciar na área, é aconselhado seguir cada um destes passos por ordem. Segue-se o nosso plano:

1)      Instalar o Sistema Operativo e configuração do mesmo;
2)      Encontrar o IP do RaspberryPi usando o Nmap e receber o IP por e-mail de forma automática;
3)      Aceder ao RaspberryPi remotamente e como trabalhar no mesmo utilizando um vulgar portátil.

Parte I

Para colocar o Raspberry Pi (RPi) em funcionamento são necessárias duas coisas: uma fonte de energia Micro USB e um cartão de memória com o Sistema Operativo escolhido. O primeiro é de relativamente fácil acesso, já que muitos Smartphones os utilizam. Para o caso do RPi é aconselhado que se use um que possua uma saída de 700mA a 1.2A. Caso o utilizador pretenda, pode também alimentar o RPi através de uma porta USB 3.0 de qualquer Laptop. No que ao cartão de memória diz respeito, o leitor do RPi é SD, pelo que qualquer cartão compatível com este formato (SD ou MiniSD e MicroSD, com respectivo adaptador) irá funcionar no aparelho.

Ao acedermos ao website da RPi Fundation (www.raspberrypi.org), secção de Downloads, podemos escolher, entre várias opções, qual o Sistema Operativo a instalar. O meu conselho vai para a utilização do pacote NOOBS – New Out of Box Software – que de forma automática instala o Sistema Operativo que pretende e pode ainda fazer Multi-Boot facilmente. Para começar, façamos download da versão mais actual do mesmo e coloquemos o conteúdo do Zip no cartão de memória, segunda as instruções fornecidas.

Assim que ligar o RaspberryPi, será pedido que seleccione o Sistema Operativo a instalar. Segue-se uma pequena descrição de cada um:

– Raspbian: primeiro Sistema Operativo criado para o RPi e o que detém mais suporte. É baseado em Debian e é de fácil interacção. Já traz várias ferramentas úteis como o programa Mathematica e Wolfram, bem como um ambiente gráfico leve e eficiente;

– RaspBMC: Distribuição do XBMC (XBOX Media Center) para o RPi. É muito útil caso pretenda tornar o seu RPi num HTPC para colocar na sala de estar, com o qual pode aceder ao conteúdo multimédia guardado nos discos da rede e ainda aceder ao Youtube, redes sociais, entre outros através da instalação de Plug-ins. Suporta stream de 1080p;

– Arch: O Archlinux é umas das distribuições de Linux mais leves que existem. Após a instalação da mesma, apenas terá acesso a um Terminal, a partir do qual poderá instalar tudo o que quiser, à sua escolha. É bastante personalizável e leve, mas requer algum domínio do mundo Linux para que a interacção se torne proveitosa;

– RiscOS: Distribuição de Linux criada para uso em dispositivos com arquitectura ARM. Bastante eficiente mas com interface gráfica um pouco pobre.

– Pidora: Distribuição do Sistema Operativo Fedora para o RPi. Possui todas as vantagens que o Fedora oferece e está optimizado para este dispositivo.

Existem outros Sistemas Operativos que se podem instalar no RPi, inclusive Android (ainda pouco estável). Contudo, neste artigo, focar-nos-emos no Raspbian.

Após instalar o mesmo, será apresentado um menu de configuração do Sistema Operativo.

Aqui pode alterar a password de defeito (raspberry), alterar o idioma do Raspbian, fazer Overclock ao RPi, mudar a time-zone, entre outras opções úteis. É importante alterar a password de defeito para uma do seu agrado bem como activar o SSH (Advanced Settings->SSH->Enable, caso este esteja desactivado). Sempre que pretender, pode voltar a este menu correndo o código:

sudo raspi-config

Após aplicações de todas as alterações, a máquina irá reiniciar e será apresentada uma linha de comandos. Para aceder ao ambiente gráfico, basta digitar o comando ‘startx’, seguindo de Enter.

Parte II

Após a instalação do Sistema Operativo, é útil aceder ao mesmo remotamente, sem ter que ter o dispositivo sempre ligado a teclado, rato e monitor dedicados. Contudo, para que isto seja possível, é necessário saber o endereço IP do RPi (ou seja, a sua localização na rede). Existem duas opções para tal:
– Saber através de acesso ao Router da Rede qual o endereço IP do RPi;
– Utilizar o Nmap, que executa um scan de rede e retorna os endereços IP dos dispositivos ligados, indicando o seu nome (permite descobrir o IP do RPi, consequentemente).

Para redes caseiras, a primeira alternativa é evidentemente a mais fácil de utilizar. Contudo, em redes partilhadas e bastante extensas (caso da rede Eduroam), é impossível usar a primeira alternativa simplesmente porque o acesso ao Switch de Rede não é permitido. Neste caso, é útil utilizar a ferramenta Nmap, compatível com Linux, Mac e Windows. Após fazer o seu download e instalação basta correr as seguintes linhas de código para iniciar a procura:

cd C:\Program Files (x86)\Nmap (localização por defeito do Nmap, alterar a directoria caso tenha instalado noutra localização)
nmap -sP 192.168.x.1-255

ou, em Linux:

sudo nmap -sn 192.168.x.0-255

Para determinar qual o digito a incluir no campo assinalado com ‘x’, corra o comando ipconfig ou ifconfig para Linux, e escolha o IP que mais se assemelha ao seu. O último campo (1-255) indica o número de IPs a varrer.
Caso, durante a instalação, tenha instalado o pacote Zenmap GUI, poderá fazer a mesma acção mas com um ambiente gráfico mais amigável.

Fazer este procedimento todas as vezes que queremos trabalhar com o RPi através da Rede pode tornar-se um pouco incomodativo. É, como tal, bastante útil ter uma forma automatizada que nos irá entregar o IP do RPi sempre que este estiver ligado à Internet. Com este objectivo, proponho a criação dum simples script que enviará para um e-mail pré-determinado o IP do dispositivo.

Antes de procedermos à elaboração do mesmo é necessário a instalação de alguns pacotes. Abra o terminal e digite os seguintes comandos:

sudo apt-get install ssmtp
sudo apt-get install mailutils
sudo apt-get install mpack

Após ter estes pacotes instalados, deverá proceder à configuração do SMTP. Digite o seguinte comando:

nano /etc/ssmtp/ssmtp.conf

De seguida, altere os seguintes campos:

mailhub=smtp.gmail.com:587
hostname=raspberrypi
AuthUser=(o seu endereço de email)@gmail.com
AuthPass=(a sua password)
UseSTARTTLS=YES
FromLineOverride=YES

Caso alguns campos acima indicados não existam por actualização do software, preencha apenas os que existem.
Após esta configuração podemos criar o script que enviará para o e-mail definido o IP do RPi. Para tal, introduza o seguinte comando no terminal:

nano ~/mail-script.py

Este comando abrirá o editor de texto Nano e criará um ficheiro com o nome mail-script no directoria principal (home/pi). De seguida, copie para o mesmo o seguinte código Python:

import subprocess
import smtplib
import socket
from email.mime.text import MIMEText
import datetime

# Change to your own account information
to = ‘me@example.com’ #Destinatário (deixar aspas intactas)
gmail_user = ‘test@gmail.com’ #E-mail de onde enviar
gmail_password = ‘yourpassword’ #Password da conta

smtpserver = smtplib.SMTP(‘smtp.gmail.com’, 587)
smtpserver.ehlo()
smtpserver.starttls()
smtpserver.ehlo
smtpserver.login(gmail_user, gmail_password)
today = datetime.date.today()

# Very Linux Specific
arg=’ip route list’
p=subprocess.Popen(arg,shell=True,stdout=subprocess.PIPE)
data = p.communicate()
split_data = data[0].split()
ipaddr = split_data[split_data.index(‘src’)+1]
my_ip = ‘IP do RPi: is %s’ %  ipaddr
msg = MIMEText(my_ip)
msg[‘Subject’] = ‘IP do RPi a %s’ % today.strftime(‘%b %d %Y’)
msg[‘From’] = gmail_user
msg[‘To’] = to
smtpserver.sendmail(gmail_user, [to], msg.as_string())
smtpserver.quit()

Após introdução do código, guarde com o nome ‘mail-script.py’ (CTRL+X->Y->Introduzir nome->Enter). Para verificar se o mesmo funciona experimente correr o código com o comando ‘python mail-script.py’. Se existirem erros relacionados com caracteres não-ASCII no código, experimente reescrever a linha toda. Isto pode-se dever à formatação UTF-8 utilizada no website, que o RPi não reconhece.Com o script a funcionar, teremos que o colocar na rotina de boot do RPi. Para tal, edite o ficheiro rc.local com o seguinte comando:

sudo nano /etc/rc.local

e coloque no mesmo o seguinte código (ter em atenção ao espaçamento, olhando para a imagem apresentada):

# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Print the IP address
IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
python /home/pi/mail-script.py
fi
exit 0

Feito! Experimente reiniciar a máquina e verifique se recebe o e-mail. Caso não receba, verifique a ligação à internet do RPi e reveja todos os passos acima descritos.

Parte III

Para que possamos utilizar o RaspberryPi remotamente, resta-nos apenas cumprir este último passo. Para tal, é necessário instalar os seguintes programas no seu PC:
– Putty: acesso ao terminal do RPi por SSH;
– UltraVNC: acesso ao ambiente gráfico do RPi por VNC.

O primeiro passo é aceder ao RPi por SSH usando o programa Putty (poderá fazer download do mesmo no website em referência, escolhendo o ficheiro putty.exe).

Para tal, introduza no campo IP deste programa o IP que recebeu por e-mail do seu RPi. O campo ‘port’ deverá ser 22 por defeito. O username será ‘pi’ e a password será ‘raspberry’ ou aquela que definiu.

Feito este passo, é necessário instalar o programa tightvnc. Para tal, execute o seguinte comando:

sudo apt-get install tightvncserver

Após instalar o cliente, corra o seguinte código para criar um Servidor VNC no RPi (Nota: quando reiniciar o dispositivo é necessário refazer este passo para aceder por VNC):

vncserver :1 -geometry 1280x800 -depth 16 -pixelformat rgb565:

Se não é a primeira vez que corre este código, pode avançar para o passo seguinte. Caso contrário, será necessário indicar uma palavra-passe para aceder ao dispositivo e outra (opcional) para visualizar o mesmo (esta última não permite controlar o RPi). O importante aspecto deste comando é o campo :1. Este será o porto do servidor no RPi (tal como o porto 22 é o porto de SSH no equipamento). Nota: É aconselhável usar este porto, predefinido. Não coloque neste campo :22, pois irá desconfigurar o porto SSH do RPi.Feito isto, basta correr a aplicação UltraVNC no seu PC e colocar o IP do RPi (fornecido no e-mail enviado pelo mesmo), seguido de :1 (ou qualquer outro porto que tenha definido).

Será, imediatamente, apresentada uma janela com o ambiente gráfico do RPi.

Para aceder ao RPi sem uma ligação Internet, existe um método para ligação directa ao computador. Para tal, terá de fazer os seguintes passos:

1)      Aceder às propriedades do protocolo TCP/IP através do Painel de Controlo, Centro de Rede e Partilha, Alterar Definições da Placa, tecla direita sobre a placa de rede e ir a Propriedades, seleccionar ‘Protocolo IP Versão 4 (TCP/IPv4)’ e clicar em propriedades. Verifique se a configuração está para obter o endereço IP automaticamente. Caso não esteja, altere para que o endereço IP seja obtido automaticamente;

2)      Executar no raspberrypi o seguinte comando:

sudo nano /boot/cmdline.txt

Caso a sua placa de rede esteja configurada para obter o endereço IP automaticamente, adicione este texto no final da última linha:

ip=169.254.0.2

Caso o IP seja obtido de forma automática, introduza o seguinte:

ip=192.168.0.2

3)      Ligar com um cabo de rede RJ45 o RPi ao PC e ligar a alimentação do mesmo. Após esperar alguns instantes para que o PC detecte as configurações de rede, pode utilizar o endereço IP definido tanto por SSH como por VNC.

Com este artigo o utilizador conseguirá ter uma base sólida para trabalhar com o RPi de diversas formas, seja onde for, e como quiser. Em breve será publicado o RPi-102, introdução ao GPIO com automação aplicada à domótica à mistura! Para quaisquer dúvidas verifique nas referências se a questão é esclarecida. Caso não seja, envie-me um e-mail para pedro.roque@hackerschool.ist.utl.pt . Have fun!

Referências:
Ligação RPi-PC sem Internet: http://pihw.wordpress.com/guides/direct-network-connection/in-a-nut-shell-direct-network-connection/
Ligação VNC e SSH: http://myraspberrypiexperience.blogspot.pt/p/setting-up-vnc.html
Script de Email: http://elinux.org/RPi_Email_IP_On_Boot_Debian
Script de Email: http://iqjar.com/jar/sending-emails-from-the-raspberry-pi/
Uso de Nmap:http://www.krenel.org/knowing-discovering-the-ip-of-your-raspberry-pi-the-first-time/
Uso de Nmap:http://trevorappleton.blogspot.pt/2013/03/remotely-find-raspberry-pi-ip-address.html
Download Nmap: http://nmap.org/download.html
Download Putty: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
Download UltraVNC: http://www.uvnc.com/downloads

Todos os direitos de autor reservados às respectivas entidades. O presente artigo foi baseado em informação encontrada nos link’s acima.