SlideShare uma empresa Scribd logo
1 de 30
ii
RESUMO
Neste trabalho de grupo vamos explorar algumas das potencialidades do Raspberry Pi, e tentar,
descrever passo a passo todo o percurso, como também os métodos utilizados. O projeto que vamos
apresentar está estruturado em 10 capítulos.
No primeiro capítulo vamos começar por falar na razão da sua origem e no jovem percurso
histórico.
No capitulo 2, tentamos recolher todos as características técnicas disponíveis, e organiza-las de
forma a permitir uma consulta rápida.
No capítulo 3, reunimos os acessórios necessários para iniciar a instalação do sistema operativo e
sua configuração. De seguida, altera-mos a palavra passe de login e fizemos todas as atualizações
disponíveis como update e upgrade, depois aumenta-mos o tamanho da repartição do sistema para o
espaço total existente no cartão de memória SD (Secure Digital).
Nos capítulos 4 e 5, configuramos os dispositivos Wi fi(Wireless Fidelity) e Bluetooth nas portas
USB(Universal serial Bus), para podermos comunicar sem fios com o Raspberry Pi
No capítulo 6, vamos instalar os programas Putty e Xming de acesso remoto e, para transferir
ficheiros vamos usar o WinSCP.
No capítulo 7, apresentamos o expansor chamado K002-Slice PI/O, que usa como componente
principal o circuito integrado MCP27017, este IC(Integrated Circuit) vai nos permitir interagir com
o exterior, sem colocar em perigo o processador central do Raspberry.
No capítulo 8 e 9, configuramos o protocolo de comunicação I2C e, testamos o seu
funcionamento, depois integramos os seus comandos num script, e ao executa-lo, permitiu-nos
acender e apagar os leds RGB, numa determinada sequência de cores, seguindo uma lógica de
valores hexadecimais.
A partir do capítulo 10, instalamos todos os pacotes de software necessários para criar um
servidor Web apache e, nesse servidor, alojamos um script escrito em linguagem de programação
Python , que através de uma página web, foi possível executar as funções de ligar e desligar leds
RGB, em todos os bancos do nosso expansor.
iii
Índice Geral
Introdução ......................................................................................................................................................... 1
1)Breve História................................................................................................................................................. 2
2) Características Técnicas................................................................................................................................. 3
3) Sistema Operativo......................................................................................................................................... 5
3.1) Acessórios para instalação SO(Sistema Operativo)............................................................................... 5
3.2) Inicio da instalação do SO...................................................................................................................... 6
3.3) Alterar Palavra Passe.............................................................................................................................. 7
3.4 ) Atualização do Sistema.......................................................................................................................... 7
3.5) Aumentar a Repartição do Sistema....................................................................................................... 8
3.6) Alteração de IP ...................................................................................................................................... 9
4) Configurar controlador Wi Fi...................................................................................................................... 10
5) Configurar controlador Bluetooth............................................................................................................... 10
6) Instalação software remoto(Putty,Xming e WinSCP).................................................................................. 11
7) Expansor K002 de 16 portas In/Out com chip MPC23017 ...................................................................... 133
8) Instalação i2c e configuração ...................................................................................................................... 13
9) Interagir com os leds .................................................................................................................................. 16
10) instalação do Web server.......................................................................................................................... 18
12) Conclusão .................................................................................................................................................. 23
13) Referências................................................................................................................................................ 24
iv
Índice das Figuras
Figura 1-Diferenças entre os Modelo A e B....................................................................................................... 3
Figura 2-Descrição e localização das Ligações................................................................................................... 3
Figura 3-Ligações GPIO...................................................................................................................................... 4
Figura 4-Programa Win32 Disk imager.............................................................................................................. 6
Figura 5-Ecrã na fase de instalação. .................................................................................................................. 6
Figura 6-Ecrã de login........................................................................................................................................ 7
Figura 7-Tamanho atual da repartição.............................................................................................................. 8
Figura 8-Passos executados no utilitário Fdisk.................................................................................................. 8
Figura 9-Comando Resize2fs ............................................................................................................................. 8
Figura 10-Tamanho da repartição depois do uso dos comandos ..................................................................... 9
Figura 11- Configuração WI FI ......................................................................................................................... 10
Figura 12-Configuração Bluetooth .................................................................................................................. 11
Figura 13-Configuração do PuTTY ................................................................................................................... 11
Figura 14-Configuração do Xming ................................................................................................................... 12
Figura 15-Configuração do WinSCP................................................................................................................. 12
Figura 16-Montagem do expansor K002 Slice 16 I/O...................................................................................... 13
Figura 17-Blacklist de arranque do SO. ........................................................................................................... 13
Figura 18-Configuração dos Modules de arranque......................................................................................... 14
Figura 19-Deteção do IC MCP23017................................................................................................................ 15
Figura 20-Montagem dos leds na Breadboard e ligação ao expansor............................................................ 17
Figura 21- Sequência Hexadecimal para binário............................................................................................. 17
Figura 22-Primeira página do servidor Web apache....................................................................................... 18
Figura 23-Configurações do script de arranque do apache ............................................................................ 19
Figura 24-Página de acesso aos bancos A e B ................................................................................................. 22
1
Introdução
A realização do nosso trabalho de grupo teve origem, não só como inicio num desafio
proposto pelo professor de Redes de Comunicação, mas também na nossa curiosidade profunda e
inesgotável em explorar as potencialidades quase infinitas deste pequeno computador.
Ao longo deste trabalho de grupo, vamos tentar, dentro dos conhecimentos adquiridos nas
várias cadeiras deste curso de Especialização Tecnológica de Telecomunicações e Redes, conquistar
o desafio que nos foi proposto.
Mas no decorrer do projeto foi inevitável explorar mais do que tínhamos idealizado, portanto
o que vamos apresentar trata-se de um percurso descrito em várias fases.
Na fase inicial, iremos demonstrar a instalação do sistema operativo e sua atualização, na fase
seguinte, vamos configurar as redes sem fios Wi Fi e Bluetooth1
, depois vamos explorar o expansor
K002 e conhecer o funcionamento do protocolo I2C2
, teremos então na última fase, a criação de
um Servidor de Web Apache3
, e ao inserir-mos uma página construída em linguagem html4
e
Python5
vai permitir-nos interagir com dispositivos luminosos pela simples escolha de três opções.
Em todas as fases do projeto de grupo foi exigida uma intensa pesquisa, consulta e
persistência para alcançar os objetivos definidos, sendo todas elas necessárias para tentar
compreender o funcionamento e descobrir possíveis aplicações desta nova geração de
computadores.
1
Bluetooth é uma especificação industrial para áreas de redes pessoais sem fio (Wireless personal area networks). O Bluetooth
surgi-o da necessidade de conectar e trocar informações entre dispositivos como telefones celulares, notebooks, computadores,
impressoras, câmaras digitais e consoles de videogames digitais através de uma frequência de rádio de curto alcance globalmente
licenciada e segura.
2
I²C (Inter-Integrated Circuit) é um barramento serial "multi-master" desenvolvido pela Philips que é usado para conectar periféricos
de baixa velocidade.
3
O servidor Web Apache é o mais bem sucedido servidor web livre. Foi criado em 1995 por Rob McCool, então funcionário
do NCSA (National Center for Supercomputing Applications). Numa pesquisa realizada em dezembro de 2007, foi constatado que
a utilização do Apache representa cerca de 47.20% dos servidores ativos no mundo
4
HTML ( HyperText Markup Language), significa Linguagem de Marcação de Hipertexto, utilizada para produzir páginas na Web.
que podem ser interpretados por um Browser (navegadores da internet)
5
Python é uma linguagem de programação que foi lançada por Guido van Rossum em 1991. Atualmente possui um modelo de
desenvolvimento comunitário, aberto e gerenciado pela organização sem fins lucrativos Python Software Foundation
2
1) Breve História
O Raspberry pi é um mini computador de baixo custo desenvolvido no Reino Unido pela
fundação Raspberry Pi. A ideia de criar um computador pequeno e barato para estudantes, surgi-o
em 2006, por Eben Upton [1] e seus colegas Rob Mullins, Lang Jack e Mycroft Alan, todos eles
alunos da Universidade Cambridge, mas só em 2008 é que foram criados os primeiros protótipos, e
com o aparecimento da nova geração de processadores para telemóveis foi possível chegar ao atual
Raspberry Pi.
Tendo como principal objetivo promover e estimular o ensino das ciências da computação, e
sem cativar o interesse dos investidores, as primeiras unidades foram fabricadas no Reino Unido,
unicamente com os recursos da fundação, que vive exclusivamente de doações.
Nas primeiras semanas de 2012, antes do lançamento no mercado, foram colocadas em leilão
no ebay6
, cerca de 10 unidades do Raspberry Pi, com o intuito de angariar fundos, mas rapidamente
obteve grande atenção, e o valor total das vendas atingiu as 16.000 libras [2]. Com este resultado
nada previsível, criou grandes espectativas e impulsionou a produção para valores nunca esperados.
Seu lançamento oficial foi anunciado no dia 29 de Fevereiro de 2012, com um lote de 10000
unidades, mas desta vez fabricadas totalmente em Taiwan e na China.
Com o impensável tamanho de um cartão de crédito, incorpora numa única placa de circuito
impresso, todo o hardware de um computador completo pronto a funcionar. Baseando-se num
sistema de um único chip principal designada como SOC (System on a chip), que inclui no seu
interior: um processador central, uma unidade de processamento gráfico com potencialidade de
interpretar imagens HD (High Definition), e memória RAM(Random Access Memory).
Existe atualmente no mercado dois modelos, A e B. No modelo B foi introduzida mais
memória RAM, perfazendo um total de 512 MB, um ligação Ethernet7
, como também mais uma
porta USB. Esta evolução foi forçosamente necessária devido à grande adesão dos seguidores
perante o projeto inicial, que certamente, no futuro evoluirá para outros níveis.
6
eBay é o nome de uma empresa de comércio eletrônico fundada nos Estados Unidos, em Setembro de 1995, por Pierre Omidyar.
Atualmente é o maior site do mundo para a venda e compra de bens, sendo o mais popular shopping da Internet.
7
Ethernet é um protocolo de interconexão para redes locais - (LAN-Local area network).
3
Na tabela da figura 1 podemos analisar em pormenor as diferenças entre os modelos.
Figura 1-Diferenças entre os Modelo A e B.
Neste trabalho de grupo vamos unicamente utilizar o modelo B, como suporte para o nosso
projeto.
2) Características Técnicas
Vamos tentar reunir nesta parte do projeto, todas as características técnicas mais importantes
disponíveis no mercado. A figura 2 identifica a localização das ligações existentes no Raspberry Pi,
como também o seu processador central [3].
Figura 2-Descrição e localização das Ligações.
4
Legenda da figura 2:
1) Ligação Micro USB 5V 1 Ampére DC(Direct Current) para alimentação principal.
2) Num único modulo integrado, incorpora no seu interior: um Processador Broadcom BCM2835 de 700MHz ARM1176JZFS
com FPU( floating-point unit), um GPU(Graphics Processing Unit) Videocore8
, que proporciona uma tecnologia Open GL
(Open Graphics Library) ES 2.0 de hardware acelerado OpenVG(Open vector graphics.), que pode admitir imagens de alta
resolução 1080p30 H.2649
, com uma capacidade de 1Gpixel/s, 1.5Gtexel/s10
por imagem, e de 24 GFLOPs ( GigaFloating-
point Operations Per Second), com filtro de textura e infraestrutura DMA (Direct memory access), como também incorpora
512MB de memória RAM.
3) Uma saída HDMI (High-Definition Multimedia Interface) com 14 resoluções disponíveis, desde 640×350 a 1920×1200, que
suporta os sistemas PAL11
e NTSC12
. Utiliza uma tensão de 5volts 50 miliamperes.
4) Um Conector CSI( Camera Serial Interface) para micro camara de vídeo.
5) Um Conector Ethernet 10/100 Rj45
6) Duas portais USB 2.0
7) Led de sinalização de estado
ACT = Atividade do cartão SD - Vermelho
PWR = Presença dos 5v alimentação - Vermelho
FDX = Ligação Ethernet Full Duplex - Verde
LNK = Presençade ligação Ethernet - Verde
100 =Conexão Ethernet 100 Mbps - Laranja
8) Uma saída 3.5mm TRS( Tip-Ring-Sleeve) fêmea de áudio analógico
9) Uma saída RCA(Radio Corporation of America) fêmea de vídeo composto
10) Para uso exclusivo do fabricante. (Acesso direto CPUGPU JTAG-ETHERNET JTAG)
11) Portas GPIO (General Purpose Input output). São portas programáveis de entrada e saída de dados, no modelo B Rev2 temos
P1 e P5.
P1) P5)
Figura 3-Ligações GPIO
12) Ligação DSI(Display Serial Interface) para uso de Display
13) Ligação compatível com os formatos SD(Secure Digital ), MMC(MultiMediaCard) e SDIO(Secure Digital Input Output)
8
VideoCore é processador de baixo consumo de energia com arquitetura multimídia desenvolvida originalmente por Alphamosaic
Ltd e agora propriedade da Broadcom.
9
1080p30 H.264 representa 1080 linhas de resolução vertical, enquanto a letra p denota uma varredura progressiva de 30 imagens
por segundo, e H.264 refere-se ao método de compressão de vídeo usado denominado por codec.
10
Gigapixel é uma imagem digital bitmap composto de um bilhão (10 9
) pixels (elementos de imagem)
11
PAL (Phase Alternating Line), é uma forma de codificação da cor usada nos sistemas de transmissão televisiva em grande parte
do mundo exceto no continente Américano.
12
NTSC (National Television System Committee) é o sistema de televisão analógico em uso nos Estados Unidos e na maioria dos
países da América.
5
3) Sistema Operativo
No site oficial da fundação Raspberry Pi [4] na secção de download, é possível adquirir
gratuitamente várias versões de sistemas operativos, como também o software para a gravação da
imagem no cartão, nos optamos por utilizar a versão Wheezy13
, sendo esta a mais aconselhável para
iniciantes em Linux14
. Se os passos descritos no site da Fundação, forem seguidos com atenção,
facilmente o processo de instalação decorre sem problemas.
3.1) Acessórios para instalação SO(Sistema Operativo)
Fizemos a compra do Raspberry Pi na internet, podíamos ter optado pela versão que incluía
todos os acessórios necessários para a instalação. Talvez fosse uma boa escolha, mas no nosso caso,
não nos daria tanto gosto a explorar. Portanto, só com a placa do Raspberry Pi e com algum tempo
de pesquisa até foi fácil descobrir os acessórios que faltavam. Assim, tivemos que reunir os
componentes para alimentação principal, ligação ao monitor, teclado sem fios, como também para a
instalação do SO.
Na lista seguinte apresentamos os acessórios e Software utilizado nesta fase.
ACESSÓRIOS
 Transformador Micro USB 5V 1 Ampére (Não aconselhável a baixo de 700mA)
 Cartão SD de 4 Gigabytes (No mínimo de 2 Gigabytes)
 Leitor cartões SD
 Cabo HDMI
 Cabo rede Rj45
 Teclado e rato sem fios
 Monitor com entrada HDMI
SOFTWARE
 2012-12-16-wheezy-raspbian.zip (Imagem Debian Sistema Operativo)
 win32diskimager-RELEASE-0.2-r23-win32 (programa para gravar a imagem no SD)
13
Wheezy é uma versão "testing" do Debian (Sistema Operativo), pertencendo a uma distribuição não comercial livre de código
fonte aberto GNU/Linux
14
Linux é um termo popularmente utilizado para se referir a sistemas operativos que utilizem o núcleo Linux. O núcleo Linux foi
desenvolvido pelo programador finlandês Linus Torvalds, O seu código fonte está disponível para que qualquer pessoa o possa
utilizar, estudar, modificar e distribuir livremente de acordo com os termos da licença.
6
3.2) Inicio da instalação do SO
O nosso primeiro passo da instalação foi: de colocar o cartão SD no leitor do computador
portátil, depois executar o programa win32diskimager. Na janela do programa, escolhemos a
localização da nossa imagem wheezy, e na parte do Device, a letra da unidade do SD de destino,
onde ira ser gravada posteriormente a imagem. De seguida foi só clicar no botão [write] para iniciar
o processo. Conforme se pode verifica na janela de configuração da figura numero 4.
Figura 4-Programa Win32 Disk imager.
Depois de terminada a gravação da imagem, colocamos o cartão SD na Slot localizada na
parte de trás do Raspberry Pi, ligamos o cabo HDMI ao monitor, como também a pen usb wireless
do teclado e do rato, finalmente podemos ligar a alimentação de 5V micro USB.
No processo inicial de arranque do sistema SO, surge a imagem no ecrã representada na
figura 5, onde foi habilitado o SSH15
server, para permitir comunicar remotamente usando esse
protocolo.
Figura 5-Ecrã na fase de instalação.
15
SSH (Secure Shell) é um protocolo de rede que permite a conexão com outro computador na rede de forma a garantir a execução
de comandos de uma unidade remota, com a vantagem da criptografia na conexão entre o cliente e o servidor.
7
Depois de terminado, fica a aguardar a introdução do login e palavra passe do utilizador, e
mostra o IP adquirido por DHCP16
, como na figura 6.
Figura 6-Ecrã de login
O login inicial por defeito é sempre:
Utilizador: Pi
Palavra passe: raspberry
Ao inserir-mos o login, temos acesso à linha de comandos do wheezy, mas para aceder-mos
ao GUI(Graphical User Interface), que no Raspberry Pi chama-se LXDE(Lightweight X1117
Desktop Environment) ,tivemos que usar o comando :
 pi@raspberrypi ~ $ starx
3.3) Alterar Palavra Passe
É aconselhável alterar a palavra passe de origem do utilizador pi , e atribuir uma ao utilizador
especial chamado root, antes de ligar o sistema à internet, isso é possível com os comandos:
 pi@raspberrypi ~ $ sudo passwd pi (Inserir a palavra passe duas vezes)
 pi@raspberrypi ~ $ sudo passwd root (Inserir a palavra passe duas vezes)
3.4 ) Atualização do Sistema
Depois de terminar a instalação do sistema operativo fizemos todas as atualizações do sistema
disponíveis para evitar falhas de incompatibilidade entre softwares, No terminal digitamos os
seguintes comandos:
 pi@raspberrypi ~ $ sudo -i
 root@raspberrypi:~# apt-get update
 root@raspberrypi:~# apt-get upgrade
 root@raspberrypi:~# shutdown -r now
16
DHCP(Dynamic Host Configuration Protocol), é um protocolo de serviço que oferece a atribuição de endereços IP(internet
Protocol) de host, Máscara de sub-rede, Default Gateway e DNS(Domain Name System).
17
X11 ou simplesmente X é um software de sistema e um protocolo que fornece uma base para interfaces gráficas de usuário.
8
3.5) Aumentar a Repartição do Sistema
Como a nossa imagem do sistema, foi gravada através de uma outra imagem pela ferramenta
do w32 disk imager , o espaço disponível na repartição não corresponde ao espaço total do cartão
SD, e assim, para instalar todos os pacotes de software livremente sem preocupações de espaço em
disco , tivemos que expandir a repartição da raiz, com a utilização dos seguinte comandos [5]:
 root@raspberrypi:/# df -h
Figura 7-Tamanho atual da repartição
Sequência de passos com utilitário Fdisk18
, representados na figura 8 e referênciados a vermelho.
 root@raspberrypi:/# fdisk -u -c /dev/mmcblk0
Figura 8-Passos executados no utilitário Fdisk
 root@raspberrypi:/# resize2fs -p /dev/mmcblk0p2
Figura 9-Comando Resize2fs
18
fdisk é um utilitário presente em diversos sistemas operacionais que realiza particionamento de discos rígidos. Há versões do fdisk
para Linux, DOS, Windows.
9
 root@raspberrypi:/# df -h
Figura 10-Tamanho da repartição depois do uso dos comandos
E assim, depois desta operação, ficamos com todo o espaço em cartão SD disponível.
3.6) Alteração de IP
O wheezy vem por defeito com o DHCP ativado, assumindo um IP atribuído pelo nosso
router , para alterar esta condição para um IP estático 19
e definido a nosso critério, tivemos que
fazer as seguintes alterações: primeiro executar o seguinte comando:
 pi@raspberrypi / $ sudo nano /etc/network/interfaces
Depois alteramos a linha: “iface eth0 inet dhcp” Para ficar assim:” iface eth0 inet static”.
E por baixo desta linha acrescenta-mos:
address 192.168.1.101
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns 192.168.1.1
Para gravar as alterações tivemos que carregar [CTRL+X] depois "y" e de seguida na tecla
[Enter] para confirmar.
19
IP estático- Endereço de IP introduzido pelo administrador do sistema, que depois de gravado, mantém a sua configuração.
10
4) Configurar controlador Wi Fi
Nesta conexão nos usamos uma pen USB 2.0 Wireless TP-LINK IEEE 802.11 b/g 2.4 Ghz
que utiliza os drivers da realtek, pertencendo a lista dos drivers compatíveis com o nosso SO.
Conectamos a Pen usb ao Raspberry e reinicia-mos o sistema, depois entramos no LXDE, clicamos
no ícone das configurações da rede Wifi que se encontra no ambiente de trabalho, e fizemos uma
busca das redes disponíveis. Escolhemos o SSID (Service Set IDentifier ) do nosso router e
introduzimos a chave de rede, passados alguns segundos estabeleceu-se a ligação. Na figura 11
podemos verificar os passos dados nesta configuração.
Figura 11- Configuração WI FI
5) Configurar controlador Bluetooth
Na conexão bluetooth, usamos uma pen do modelo : ANYCOM 250 USB versão 2.0 class 1
(100miliWatts, 20dBm20
até 100 metros), com taxas de transferência de 3M/bs.
Para o Raspberry poder reconhecer o dispositivo Bluetooth tivemos que instalar os seguintes
pacotes de software, através da linha de comandos em modo de utilizador especial:
root@raspberrypi:/# apt-get install bluetooth bluez-utils blueman
root@raspberrypi:/# ./etc/init.d/bluetooth status
[ ok ] bluetooth is running.
root@raspberrypi:/# startx
Para se estabelecer a conexão bluetooth, tem que primeiro existir uma ligação segura, através
do pedido de uma senha, que depois de se verificar a igualdade entre o pedido e a resposta, os
dispositivos ficam emparelhados, permitindo o envio de ficheiros e partilha de serviços. Estes
passos da configuração foram feitos no LXDE do nosso raspberry, no local "preference->Bluetooth
Manager " como se pode verificar na figura 12.
20
dBm é uma unidade de medida utilizada principalmente em telecomunicações para expressar a frequência absoluta mediante uma
relação logarítmica. Define-se como o nível de potência em decibéis em relação ao nível de referência de um 1 mW.
11
Figura 12-Configuração Bluetooth
6) Instalação software remoto (Putty,Xming e WinSCP)
Para podermos aceder ao raspberry remotamente e configurar o nosso web server, optamos
por instalar os programas Putty21
, Xming22
e WinSCP23
no nosso portátil, que tem como sistema
operativo o Windows 7. Para torna o acesso possível tivemos que fazer as seguintes configurações:
Verificar se o Protocolo SSH estava a correr, com o comando:
pi@raspberrypi / $ sudo /etc/init.d/ssh status
Obtivemos como resposta do comando a linha:
[ ok ] sshd is running.
Depois iniciamos o programa PuTTY [6], inserimos os dados e gravamos a sessão, como
ilustra na figura seguinte.
Figura 13-Configuração do PuTTY
21
PuTTy é um cliente de SSH destinado a promover o acesso remoto a servidores via Shell Seguro - SSH - e a construção de
"túneis" cifrados entre servidores.
22
Xming é usado em implementações de Secure Shell (SSH) para transmitir de forma segura X11 sessões de outros
computadores. Ele suporta PuTTY e ssh.exe, e vem com uma versão do PuTTY plink.exe.
23
WinSCP (Windows Secure Copy Protocolo) é uma aplicação de uso livre de SFTP(Secure File Transfer Protocol), SCP,(Secure
copy Protocol)para clientes Microsoft Windows. de transferência de ficheiros entre o sistema local e o computador remoto.
12
Depois de clicarmos no [Open,], ficamos com acesso a linha de comandos, mas só a linha de
comandos, nós queríamos também aceder ao LXDE remotamente, portanto tivemos que recorrer ao
programa Xming [7], iniciamos o XLaunch e, de seguida introduzimos as respetivas configurações:
Figura 14-Configuração do Xming
E assim, ao terminar a configuração, ficamos com as nossas definiçoes gravadas, e ao clicar
no atalho criado no ambiente de trabalho, conseguimos entrar no LXDE, como ilustra no último
passo da sequência representada na figura 14.
O winSCP [8] vai ser utilizado para editar as páginas web com maior facilidade e rapidez. Nas
configuração do WinSCP foi necessário introduzir o IP, o nome de utilizador e palavra passe, como
também porta e tipo de ligação. Ao executar a aplicação clicamos no botão [new], depois fizemos as
seguintes configurações como podemos verificar na figura 15.
Figura 15-Configuração do WinSCP.
Neste ambiente podemos criar, apagar e editar ficherios remotamente no SO do raspberry,
como tambem atribuir direitos, sem recorrer a linha de comandos, e com a vantagem de fazer copy
and paste24
do local onde estamos a trabalhar.
24
Copy and Paste é o procedimento usado para transferência de conteúdo (texto, dados, arquivos, objetos) de uma origem para um destino.
13
7) Expansor K002 de 16 portas In/Out com chip MPC23017
O expansor K002 usa o microchip MCP23017, este IC tendo apenas duas portas de
comunicação de endereço I2C, disponibiliza ao utilizador 16 portas de entrada ou saída, de 8 bits
por cada barramento, com capacidade de fornecer 25miliampéres (valor máximo) em cada porta e
suportando tensões entre 3,3V e 5V.
O expansor é fornecido em Kit de peças soltas, que foram estanhadas na placa de circuito
impresso. Na montagem foi definido o endereço a ser usado posteriormente com comandos i2c,
como também a tensão a utilizar no circuito
Utilizamos o manual de instalação [9] como consulta para toda a montagem.
Figura 16-Montagem do expansor K002 Slice 16 I/O.
8) Instalação i2c e configuração
Por definição, o I2C vem inserido na blacklist de arranque do sistema, por essa razão
tivemos que executar o comando «nano» e alterar as seguintes linhas:
 pi@raspberrypi /$ sudo nano /etc/modprobe.d/raspi-blacklist.conf
Adicionamos um cardinal no inicio de cada linha, para as mesmas passarem a comentário, e assim
serem ignoradas pelo arranque do sistema. Segue como exemplo a figura 17.
Figura 17-Blacklist de arranque do SO.
Para gravar as alterações tivemos que carregar [CTRL+X] depois "y" e de seguida na tecla
[Enter] para confirmar.
14
Depois inserimos o I2C nos módulos Kernel25
de arranque, com o comando:
pi@raspberrypi /$ sudo nano /etc/modules
Inserimos a linha i2c-dev como se pode verificar na figura 18.
Figura 18-Configuração dos Modules de arranque.
Voltamos a Carregar nas teclas [Ctrl+X] depois "y" para confirmar e de seguida [Enter], para
gravar as alterações.
Instalamos finalmente o pacote de software I2c-tools, com o comando:
 pi@raspberrypi ~ $ sudo apt-get install i2c-tools
Depois, foi necessário inserir um utilizador registado no sistema ao grupo I2C com a seguinte
linha:
 pi@raspberrypi ~ $ sudo adduser pi i2c
Para recarregar as novas alterações, tivemos que reiniciar o raspberry com:
pi@raspberrypi ~ $ sudo shutdown -r now
Depois, para verificar se o nosso IC está presente no sistema, e se realmente o seu endereço é
0x20, utilizamos o comando:
 pi@raspberrypi ~ $ sudo i2cdetect -y 1
25
Kernel é o componente central do sistema operativo ele serve de ponte entre aplicativos e o processamento de dados feito a nível
de hardware e gerência a comunicação entre componentes de hardware e software.
15
E obtivemos como resultado a imagem da figura 19.
Figura 19-Deteção do IC MCP23017
A partir deste momento foi possível definir se as portas do IC são de entrada ou saída, como
também no caso das saídas, se o seu estado e ligado=1 ou desligado=0
Por exemplo:
 pi@raspberrypi ~ $ sudo i2cset -y 1 0x20 0x00 0x00 ( Portas A, todas são de saída)
 pi@raspberrypi ~ $ sudo i2cset -y 1 0x20 0x01 0x00 ( Portas B, todas são saídas)
 pi@raspberrypi ~ $ sudo i2cset -y 1 0x20 0x00 0xff ( Portas A, todas são entradas)
 pi@raspberrypi ~ $ sudo i2cset -y 1 0x20 0x01 0xff ( Portas B, todas são entradas)
 pi@raspberrypi ~ $ sudo i2cset -y 1 0x20 0x12 0x01 ( Porta A0 ligada (0000 0001))
 pi@raspberrypi ~ $ sudo i2cset -y 1 0x20 0x13 0x07 ( Portas B0,B1 eB2, ligadas (0000 0111))
A comunicação com o IC é feita pela sequência de três secções de endereços específicos. Na
primeira secção representada por 0x20, refere-se ao endereço do integrado a que se destina, a
secção seguinte, que poderá tomar quatro valores diferentes, refere-se ao endereço para onde ira a
sequência de 8 bites, no caso se for 0x12 para a Banco A, ou 0x13 para a Banco B, mas também
pode definir o tipo de ligações (saída ou entrada) dos bancos, se for 0x00 refere-se ao banco A, no
caso 0x01 ao banco B. Na ultima secção, temos o endereço do valor dos 8 bits a serem enviados,
estes valores são introduzidos no sistema hexadecimal, depois convertidos para linguagem binária.
16
9) Interagir com os leds
Com a placa do Raspberry devidamente preparada, foi instalada numa base plana, fixa com
dois pontos de suporte, junto a uma breadboard26
, para permitir fazer as ligações ao expansor
facilmente.
Nós optamos numa fase inicial fazer as ligações ao banco A, e com um script em execução,
vamos ligar e desligar os dois leds RGB27
, e assim exibir cores diferentes.
O script foi gravado num ficheiro chamado " testes.sh" com o editor « nano»:
 pi@raspberrypi ~ $ sudo nano teste.sh
Foi criado o seguinte script:
# Programa para acender e apagar os leds RGB
sudo i2cset -y 1 0x20 0x00 0x00 #todas as portas A definidas como saídas.
while true
do
for i in { 01,02,04,08,10,20,09,12,24,12,09,00,2d,1b,36,3f,00 } # Valores Hexadecimais
do
sudo i2cset -y 1 0x20 0x12 0x$i #Executa o comando com o valor da variável
sleep 1.25 # Tempo entre a mudança do estado da variável
done
done
Para podermos utilizar o ficheiro tivemos que atribuir-lhe permissões.
 pi@raspberrypi ~ $ sudo chmod 777 teste.sh
Depois ao montar o circuito na breadboard, tivemos que calcular as resistências a usar nas
ligações dos leds às portas do banco A do K002. Com os valores de referência fornecidos pelo
fabricante, e recorrendo a lei de Ohm28
com a formula R=V-Vf/If
29
, como também atribuindo uma
margem de segurança, optamos por usar resistências de 150 Ohm ligadas em série com cada led.
Na figura 17 podemos verificar as ligações utilizadas nesta montagem.
26
Breadboard é uma placa de montagem que não necessita de solda , é reutilizável e assim torna mais fácil a criação de protótipos
temporários e experiências com o projeto de circuito.
27
LED (Light Emitting Diode) é um diodo semicondutor, que quando é energizado emite luz visível . RGB é a abreviatura do
sistema de cores aditivas, formado por Vermelho (Red), Verde (Green) e Azul (Blue).
28
O ohm (símbolo: Ω) é a unidade de medida da resistência elétrica, padronizada pelo SI (Sistema Internacional de Unidades) O
nome desta unidade é uma homenagem a Georg Simon Ohm (1787-1854)
29
R=V-Vf/If - V corresponde à tensão do sistema, Vf refere-se a tensão de trabalho do LED e If a corrente de funcionamento do
LED.
17
Figura 20-Montagem dos leds na Breadboard e ligação ao expansor
Ao executarmos o script, os leds acendem e apagam conforme o valor assumido pela variável,
passando por todos os valores colocados nos parênteses, infinitamente em loop, até ser interrompido
com a sequência de teclas [Ctrl+C].
 pi@raspberrypi ~ $ ./teste.sh #Executar o script
A figura 21 da tabela seguinte, demonstra como é feito o processo de leitura dos valores.
Figura 21- Sequência Hexadecimal para binário.
18
10) instalação do Web server
Neste capítulo, vamos incorporar no sistema operativo do Raspberry Pi, um Web server
Apache [10] com o módulo de interface modwsgi, e assim, com um script alojado escrito em
linguagem Python e html, irá permitir-nos acender e apagar os leds RGB, através da escolha de três
opções numa página web, e nessas opções, podemos escolher qualquer uma das portas dos bancos
do expansor K002.
Para colocar o servidor web a trabalhar, tivemos que instalar os seguintes pacotes de software:
pi@raspberrypi ~ $ sudo apt-get install python-smbus
Depois instalamos o pache webserver com:
pi@raspberrypi ~ $ sudo apt-get install apache2
De seguida adicionamos um grupo ao "www-data", e depois um utilizador, para poder ser
usado pelo web server, com os comandos:
pi@raspberrypi / $ sudo addgroup www-data
pi@raspberrypi / $ sudo adduser www-data www-data
E assim, para verificar-mos se o web server estava a funciona corretamente, inserimos no
browser de um computador integrado na mesma rede, o seguinte endereço: http://raspberrypi.home
Como resultado, obtivemos a página representada na figura 22:
Figura 22-Primeira página do servidor Web apache.
Tivemos também que instalar o "mod-wsgi" para poder integrar a linguagem python no
apache :
pi@raspberrypi / $ sudo apt-get install libapache2-mod-wsgi
Habilitamos o acesso ao módulo de interface com a comando:
pi@raspberrypi /$ sudo a2enmod wsgi
19
Depois editamos o ficheiro com o comando «nano», da seguinte forma:
pi@raspberrypi / $ sudo nano /etc/apache2/sites-available/default
Acrescentamos o seguintes texto: " ExecCGI " e " AddHandler wsgi-script .wsgi " no script
de arranque do apache, como se verifica na figura 23, referênciado a vermelho:
Figura 23-Configurações do script de arranque do apache
A seguir tivemos que adicionar o utilizador do apache ao grupo do I2C.
 pi@raspberrypi / $ sudo adduser www-data i2c
Tivemos que criar um ficheiro na diretoria " /var/www/ " com o nome " mcp23017.wsgi ".
 pi@raspberrypi /$ sudo nano /var/www/ mcp23017.wsgi
E com o editor «nano», gravamos o seguinte script:
from wsgiref.simple_server import make_server
from cgi import parse_qs, escape
import smbus
import sys
import getopt
bus = smbus.SMBus(1)
address = 0x20 # I2C address of IO Expander
bus.write_byte_data(0x20,0x00,0x00) # Set all of bank A to outputs
bus.write_byte_data(0x20,0x01,0x00) # Set all of bank B to outputs
# The HTML used to build the full web page option
html = """
<html>
<body>
<form method="get" action="mcp23017.wsgi">
<p>
<b>Bank</b><br />
<input name="portas" type="radio" value="a"> A
<input name="portas" type="radio" value="b"> B <br />
</p>
20
<p>
<b>Output</b><br />
<input name="output" type="radio" value="0"> 0 <br />
<input name="output" type="radio" value="1"> 1 <br />
<input name="output" type="radio" value="2"> 2 <br />
<input name="output" type="radio" value="3"> 3 <br />
<input name="output" type="radio" value="4"> 4 <br />
<input name="output" type="radio" value="5"> 5 <br />
<input name="output" type="radio" value="6"> 6 <br />
<input name="output" type="radio" value="7"> 7 <br />
</p>
<p>
<b>state:</b>
<input name="state" type="radio" value="high"> High
<input name="state" type="radio" value="low"> Low
</p>
<p>
<input type="submit" value="Submit">
</p>
</form>
<p>
Bank: %s<br>
Output: %s<br>
State: %s<br>
Debug: %s
</p>
</body>
</html>
"""
# HTML for the minimal JSON response (activated with &mode=json in the query string)
htmlshort = """{"%s%s":"%s"}"""
def application(environ, start_response):
# Get the query string variables
d = parse_qs(environ['QUERY_STRING'])
bank = d.get('portas', [''])[0]
output = d.get('output', ['8'])[0]
state = d.get('state', [''])[0]
mode = d.get('mode', [''])[0]
# Escape user input
bank = escape(portas)
output = int(escape(output))
state = escape(state)
mode = escape(mode)
# Set the correct register for the banks
if portas == "a" :
register = 0x12
elif portas == "b" :
register = 0x13
21
else:
register = 0
# Read current values from the IO Expander
value = bus.read_byte_data(address,register)
# Shift the bits for the register value, checking if they are already set first
if state == "high":
if not (value >> output) & 1 :
value += (1 << output)
elif state == "low":
if (value >> output) & 1 :
value -= (1 << output)
else:
state = "none"
# Quick sanity check
if (0 <= output < 8) and register != 0 and state != "none":
# Looks OK, now write to the IO expander
bus.write_byte_data(address,register,value)
if mode == "json" : # minimal mode
response_body = htmlshort % (bank.upper(), output, state.upper())
else: # otherwise show full web page
response_body = html % (bank.upper(), output, state.upper(), value)
elif mode == "json" :
response_body = "SYNTAX ERROR"
else:
response_body = html % ("n/a", "n/a", "n/a", value)
# Show the HTML page
status = '200 OK'
response_headers = [('Content-Type', 'text/html'),
('Content-Length', str(len(response_body)))]
start_response(status, response_headers)
return [response_body]
Atribuímos permissões totais de acesso ao ficheiro com o comando:
 pi@raspberrypi / $ sudo chmod 777 /var/www/mcp23017.wsgi
Reiniciamos o sistema com :
pi@raspberrypi / $ sudo shutdown -r now
Depois, para verificar-mos se o web server estava a funciona corretamente, inserimos no
browser de um computador integrado na mesma rede, o seguinte endereço:
http://raspberrypi.home/mcp23017.wsgi
22
E obtivemos como resultado a página representada na figura 24.
Figura 24-Página de acesso aos bancos A e B
Esta página alojada no nosso servidor de web, acessível através de um browser http, a
todos os dispositivos integrados na rede, permitiu-nos aceder aos dois bancos do expansor K002 e,
mudar o estado das suas portas para ligado(High) e desligado(low), com a simples escolha de três
opções individuais. E se configurarmos o nosso Router para colocar o servidor Web acessível na
internet, podemos aceder à página em qualquer parte do mundo.
23
12) Conclusão
O Raspberry Pi representa sem dúvida o inicio de uma nova era no ensino da computação.
Permite explorar áreas de conhecimento que anteriormente só estavam disponíveis para um grupo
restrito de utilizadores, em que não as revelavam, para protegerem o seu investimento.
A aceitação deste mini computador no mercado foi algo surpreendente e inesperado, tendo
neste momento milhares de unidades espalhadas a escala mundial. É previsível que iram surgir
projetos inovadores criados por utilizadores comuns, e que, se bem aplicados no mercado, poderão
abrir novas áreas de negócio.
O seu potencial é algo promissor, pois ele pode transformar-se num dispositivo multimédia e,
se o colocarmos ao lado da televisão, podemos assistir filmes, ouvir musica ou até mesmo viajar na
internet, mas também pode ser o cérebro de um robô, que gere o seu comportamento em decisões
perante obstáculos, ou ainda pode controlar a nossa casa, e executar tarefas agendadas, como
acender luzes, fechar portas, ligar o aquecimento central ou enviar informação. Tudo isto pode ser
assistido e comandado por um site na internet em qualquer parte do globo.
Podíamos falar de imensas possibilidades de aplicar o Raspberry Pi, mas não iríamos
conseguir esgotar todas elas, e por outro lado, este trabalho de grupo iria tomar proporções
gigantescas.
Certamente o Raspberry Pi, irá dar lugar no futuro a um outro mini computador com
características superiores, mas ele ficará sempre referenciado na história da evolução dos
computadores, como o primeiro do género a atingir níveis tão elevados de comercialização.
24
13) Referências
[1] Fundação Raspberry Pi, “raspberrypi.org-about,” [Online]. Available:
http://www.raspberrypi.org/about.
[2] “wikipedia.org-história,” [Online]. Available: http://en.wikipedia.org/wiki/Raspberry_Pi. [Acedido em
12 01 2013].
[3] Fundação Raspberry Pi, “Raspberry-Pi-Schematics-R1.0.pdf,” [Online]. Available:
http://www.raspberrypi.org/wp-content/uploads/2012/04/Raspberry-Pi-Schematics-R1.0.pdf.
[Acedido em 11 01 2013].
[4] Fundação Raspberry Pi, “Secção de downloads,” [Online]. Available:
http://www.raspberrypi.org/downloads. [Acedido em 25 11 2012].
[5] YouTube, “Raspberry Pi - Resize the partition to fill the SD card,” [Online]. Available:
http://www.youtube.com/watch?v=R4VovMDnsIE. [Acedido em 24 01 2013].
[6] Simon Tatham, “greenend.org-PuTTY,” [Online]. Available:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html. [Acedido em 01 01 2013].
[7] “straightrunning.com-Xming,” [Online]. Available: http://www.straightrunning.com/XmingNotes/.
[Acedido em 01 01 2013].
[8] University of Economics in Prague, “winscp.net-winSCP,” [Online]. Available:
http://winscp.net/eng/download.php. [Acedido em 01 01 2013].
[9] Openmicros, “I/O Expander Board,” [Online]. Available: http://openmicros.org/index.php/articles/94-
ciseco-product-documentation/raspberry-pi/223-slice-of-pio". [Acedido em 11 11 2012].
[10] N. Chantrell, “nathan.chantrell.net,” [Online]. Available:
http://nathan.chantrell.net/20120602/raspberry-pi-io-expander-board/. [Acedido em 25 01 2013].
[11] wikipedia.org. [Online]. Available:
http://pt.wikipedia.org/wiki/Sistema_de_numera%C3%A7%C3%A3o_bin%C3%A1rio. [Acedido em 28
01 2013].
[12] Fundação Raspberry Pi, 28 01 2013. [Online]. Available: http://www.raspberrypi.org/about.
[13] “labdegaragem.com-Led RGB,” [Online]. Available: http://labdegaragem.com/profiles/blogs/tutorial-
led-rgb-com-arduino.
[14] “rapidtables.com-RGB,” rapidtables, [Online]. Available:
http://www.rapidtables.com/web/color/RGB_Color.htm. [Acedido em 21 01 2013].
25

Mais conteúdo relacionado

Mais procurados

Mais procurados (10)

Caelum java-web-fj21
Caelum java-web-fj21Caelum java-web-fj21
Caelum java-web-fj21
 
Focalinux iniciante
Focalinux inicianteFocalinux iniciante
Focalinux iniciante
 
Klavaro manual-pt-1.0.8
Klavaro manual-pt-1.0.8Klavaro manual-pt-1.0.8
Klavaro manual-pt-1.0.8
 
Apostila Debian
Apostila DebianApostila Debian
Apostila Debian
 
Foca 1e2
Foca 1e2Foca 1e2
Foca 1e2
 
Foca Linux 2
Foca Linux 2Foca Linux 2
Foca Linux 2
 
Indice2 Coleção de Dias Delphi
Indice2 Coleção de Dias DelphiIndice2 Coleção de Dias Delphi
Indice2 Coleção de Dias Delphi
 
Lpi 101
Lpi 101Lpi 101
Lpi 101
 
Instalei o Ubuntu e agora? (18.04)
Instalei o Ubuntu e agora? (18.04)Instalei o Ubuntu e agora? (18.04)
Instalei o Ubuntu e agora? (18.04)
 
Foca linux 1
Foca linux 1Foca linux 1
Foca linux 1
 

Destaque

Rasberry Pi + XBMC
Rasberry Pi + XBMC Rasberry Pi + XBMC
Rasberry Pi + XBMC Igo Romero
 
O potencial educativo do Raspberry Pi
O potencial educativo do Raspberry PiO potencial educativo do Raspberry Pi
O potencial educativo do Raspberry PiEdgar Costa
 
RASPBERRY PI BRASIL REVISÃO "B"
RASPBERRY PI BRASIL REVISÃO "B"RASPBERRY PI BRASIL REVISÃO "B"
RASPBERRY PI BRASIL REVISÃO "B"Lojamundi
 
Desvendando o BrewPi
Desvendando o BrewPiDesvendando o BrewPi
Desvendando o BrewPiLuis Balbinot
 
Arduino, Raspberry Pi Ou FPGA?
Arduino, Raspberry Pi  Ou FPGA?Arduino, Raspberry Pi  Ou FPGA?
Arduino, Raspberry Pi Ou FPGA?Pedro Henrique
 
Arquitetura ARM - Raspberry Pi
Arquitetura ARM - Raspberry PiArquitetura ARM - Raspberry Pi
Arquitetura ARM - Raspberry PiJuliane Silva
 
Aulas papel social_escola
Aulas papel social_escolaAulas papel social_escola
Aulas papel social_escolaSonia Souza
 
O mundo mágico do Trabalho Remoto
O mundo mágico do Trabalho RemotoO mundo mágico do Trabalho Remoto
O mundo mágico do Trabalho RemotoIgor Leroy
 
import brasil: Dados Abertos de Forma Fácil
import brasil: Dados Abertos de Forma Fácilimport brasil: Dados Abertos de Forma Fácil
import brasil: Dados Abertos de Forma FácilÁlvaro Justen
 
Datos Tabulares: La Manera Pythónica
Datos Tabulares: La Manera PythónicaDatos Tabulares: La Manera Pythónica
Datos Tabulares: La Manera PythónicaÁlvaro Justen
 
Introdução a Programação com Python
Introdução a Programação com PythonIntrodução a Programação com Python
Introdução a Programação com PythonÁlvaro Justen
 
Introdução ao Arduino: ArduinoDay Rio 2015
Introdução ao Arduino: ArduinoDay Rio 2015Introdução ao Arduino: ArduinoDay Rio 2015
Introdução ao Arduino: ArduinoDay Rio 2015Álvaro Justen
 
[PyBr11] Lendo dados tabulares: versão pythônica
[PyBr11] Lendo dados tabulares: versão pythônica[PyBr11] Lendo dados tabulares: versão pythônica
[PyBr11] Lendo dados tabulares: versão pythônicaÁlvaro Justen
 

Destaque (20)

Faculdade jk
Faculdade jkFaculdade jk
Faculdade jk
 
Palestra semana pedagógica2
Palestra semana pedagógica2Palestra semana pedagógica2
Palestra semana pedagógica2
 
Rasberry Pi + XBMC
Rasberry Pi + XBMC Rasberry Pi + XBMC
Rasberry Pi + XBMC
 
O potencial educativo do Raspberry Pi
O potencial educativo do Raspberry PiO potencial educativo do Raspberry Pi
O potencial educativo do Raspberry Pi
 
RASPBERRY PI BRASIL REVISÃO "B"
RASPBERRY PI BRASIL REVISÃO "B"RASPBERRY PI BRASIL REVISÃO "B"
RASPBERRY PI BRASIL REVISÃO "B"
 
Desvendando o BrewPi
Desvendando o BrewPiDesvendando o BrewPi
Desvendando o BrewPi
 
Arduino, Raspberry Pi Ou FPGA?
Arduino, Raspberry Pi  Ou FPGA?Arduino, Raspberry Pi  Ou FPGA?
Arduino, Raspberry Pi Ou FPGA?
 
Arquitetura arm
Arquitetura armArquitetura arm
Arquitetura arm
 
Oficina II - RASPBX
Oficina II - RASPBXOficina II - RASPBX
Oficina II - RASPBX
 
Arquitetura ARM - Raspberry Pi
Arquitetura ARM - Raspberry PiArquitetura ARM - Raspberry Pi
Arquitetura ARM - Raspberry Pi
 
Internet das coisas
Internet das coisasInternet das coisas
Internet das coisas
 
Saber eletrônica 465
Saber eletrônica 465Saber eletrônica 465
Saber eletrônica 465
 
Aulas papel social_escola
Aulas papel social_escolaAulas papel social_escola
Aulas papel social_escola
 
Raspberry Pi: o hardware para Python
Raspberry Pi: o hardware para PythonRaspberry Pi: o hardware para Python
Raspberry Pi: o hardware para Python
 
O mundo mágico do Trabalho Remoto
O mundo mágico do Trabalho RemotoO mundo mágico do Trabalho Remoto
O mundo mágico do Trabalho Remoto
 
import brasil: Dados Abertos de Forma Fácil
import brasil: Dados Abertos de Forma Fácilimport brasil: Dados Abertos de Forma Fácil
import brasil: Dados Abertos de Forma Fácil
 
Datos Tabulares: La Manera Pythónica
Datos Tabulares: La Manera PythónicaDatos Tabulares: La Manera Pythónica
Datos Tabulares: La Manera Pythónica
 
Introdução a Programação com Python
Introdução a Programação com PythonIntrodução a Programação com Python
Introdução a Programação com Python
 
Introdução ao Arduino: ArduinoDay Rio 2015
Introdução ao Arduino: ArduinoDay Rio 2015Introdução ao Arduino: ArduinoDay Rio 2015
Introdução ao Arduino: ArduinoDay Rio 2015
 
[PyBr11] Lendo dados tabulares: versão pythônica
[PyBr11] Lendo dados tabulares: versão pythônica[PyBr11] Lendo dados tabulares: versão pythônica
[PyBr11] Lendo dados tabulares: versão pythônica
 

Semelhante a Explorar o raspberry pi final

Gerência de redes utilizando o cacti
Gerência de redes utilizando o cactiGerência de redes utilizando o cacti
Gerência de redes utilizando o cactiIsraelCunha
 
Java web fj21-- apostila da caelum
Java web fj21-- apostila da caelumJava web fj21-- apostila da caelum
Java web fj21-- apostila da caelumAgenor Neto
 
Guia Foca - Linux - Avançado
Guia Foca - Linux - AvançadoGuia Foca - Linux - Avançado
Guia Foca - Linux - AvançadoEliel Prado
 
Foca avancado
Foca avancadoFoca avancado
Foca avancadoTiago
 
Fatec sbc lpbd-php_completo_como_programar
Fatec sbc lpbd-php_completo_como_programarFatec sbc lpbd-php_completo_como_programar
Fatec sbc lpbd-php_completo_como_programarTiago
 
Proj uml restaurante online
Proj uml restaurante onlineProj uml restaurante online
Proj uml restaurante onlineEvandro Gf
 
3265 hardware
3265 hardware3265 hardware
3265 hardwarecreulyane
 
3265 hardware
3265 hardware3265 hardware
3265 hardwarecreulyane
 
Dissertação de Mestrado - Planejamento para Serviços Web Semânticos
Dissertação de Mestrado - Planejamento para Serviços Web SemânticosDissertação de Mestrado - Planejamento para Serviços Web Semânticos
Dissertação de Mestrado - Planejamento para Serviços Web SemânticosJuliana Chahoud
 
4 formacao-de-suporte-tecnico-proinfo
4 formacao-de-suporte-tecnico-proinfo4 formacao-de-suporte-tecnico-proinfo
4 formacao-de-suporte-tecnico-proinfoElizabete Bahia
 
Cópia de apostila nova curso idosos
Cópia de apostila nova curso idososCópia de apostila nova curso idosos
Cópia de apostila nova curso idososPaulo Rosa
 

Semelhante a Explorar o raspberry pi final (20)

Gerência de redes utilizando o cacti
Gerência de redes utilizando o cactiGerência de redes utilizando o cacti
Gerência de redes utilizando o cacti
 
Monografia ifes-everton-bada
Monografia ifes-everton-badaMonografia ifes-everton-bada
Monografia ifes-everton-bada
 
Java web fj21-- apostila da caelum
Java web fj21-- apostila da caelumJava web fj21-- apostila da caelum
Java web fj21-- apostila da caelum
 
Guia Foca - Linux - Avançado
Guia Foca - Linux - AvançadoGuia Foca - Linux - Avançado
Guia Foca - Linux - Avançado
 
Foca avancado
Foca avancadoFoca avancado
Foca avancado
 
Apache
ApacheApache
Apache
 
Servidor apache
Servidor apacheServidor apache
Servidor apache
 
Projeto de-rede-escola-particular
Projeto de-rede-escola-particularProjeto de-rede-escola-particular
Projeto de-rede-escola-particular
 
Fatec sbc lpbd-php_completo_como_programar
Fatec sbc lpbd-php_completo_como_programarFatec sbc lpbd-php_completo_como_programar
Fatec sbc lpbd-php_completo_como_programar
 
Curso delphi 7 nova
Curso delphi 7 novaCurso delphi 7 nova
Curso delphi 7 nova
 
Caelum html-css-javascript-php
Caelum html-css-javascript-phpCaelum html-css-javascript-php
Caelum html-css-javascript-php
 
Proj uml restaurante online
Proj uml restaurante onlineProj uml restaurante online
Proj uml restaurante online
 
3265 hardware
3265 hardware3265 hardware
3265 hardware
 
3265 hardware
3265 hardware3265 hardware
3265 hardware
 
Entendendo e dominando_o_linux
Entendendo e dominando_o_linuxEntendendo e dominando_o_linux
Entendendo e dominando_o_linux
 
Rslinx classic portugues
Rslinx classic portuguesRslinx classic portugues
Rslinx classic portugues
 
android
androidandroid
android
 
Dissertação de Mestrado - Planejamento para Serviços Web Semânticos
Dissertação de Mestrado - Planejamento para Serviços Web SemânticosDissertação de Mestrado - Planejamento para Serviços Web Semânticos
Dissertação de Mestrado - Planejamento para Serviços Web Semânticos
 
4 formacao-de-suporte-tecnico-proinfo
4 formacao-de-suporte-tecnico-proinfo4 formacao-de-suporte-tecnico-proinfo
4 formacao-de-suporte-tecnico-proinfo
 
Cópia de apostila nova curso idosos
Cópia de apostila nova curso idososCópia de apostila nova curso idosos
Cópia de apostila nova curso idosos
 

Último

Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...AnaAugustaLagesZuqui
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxMarcosLemes28
 
3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptxMarlene Cunhada
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.denisecompasso2
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxMarcosLemes28
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfAutonoma
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º anoRachel Facundo
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do séculoBiblioteca UCS
 
QUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geralQUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geralAntonioVieira539017
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfcomercial400681
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Centro Jacques Delors
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docPauloHenriqueGarciaM
 
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de LedAula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de LedJaquelineBertagliaCe
 
Poesiamodernismo fase dois. 1930 prosa e poesiapptx
Poesiamodernismo fase dois. 1930 prosa e poesiapptxPoesiamodernismo fase dois. 1930 prosa e poesiapptx
Poesiamodernismo fase dois. 1930 prosa e poesiapptxPabloGabrielKdabra
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...azulassessoria9
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...azulassessoria9
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmicolourivalcaburite
 
APRESENTAÇÃO - BEHAVIORISMO - TEORIA DA APRENDIZAGEM.pdf
APRESENTAÇÃO - BEHAVIORISMO - TEORIA DA APRENDIZAGEM.pdfAPRESENTAÇÃO - BEHAVIORISMO - TEORIA DA APRENDIZAGEM.pdf
APRESENTAÇÃO - BEHAVIORISMO - TEORIA DA APRENDIZAGEM.pdfgerathird
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...MariaCristinaSouzaLe1
 
Aula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptAula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptNathaliaFreitas32
 

Último (20)

Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptx
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do século
 
QUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geralQUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geral
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
 
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de LedAula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
 
Poesiamodernismo fase dois. 1930 prosa e poesiapptx
Poesiamodernismo fase dois. 1930 prosa e poesiapptxPoesiamodernismo fase dois. 1930 prosa e poesiapptx
Poesiamodernismo fase dois. 1930 prosa e poesiapptx
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
APRESENTAÇÃO - BEHAVIORISMO - TEORIA DA APRENDIZAGEM.pdf
APRESENTAÇÃO - BEHAVIORISMO - TEORIA DA APRENDIZAGEM.pdfAPRESENTAÇÃO - BEHAVIORISMO - TEORIA DA APRENDIZAGEM.pdf
APRESENTAÇÃO - BEHAVIORISMO - TEORIA DA APRENDIZAGEM.pdf
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
 
Aula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptAula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .ppt
 

Explorar o raspberry pi final

  • 1.
  • 2.
  • 3. ii RESUMO Neste trabalho de grupo vamos explorar algumas das potencialidades do Raspberry Pi, e tentar, descrever passo a passo todo o percurso, como também os métodos utilizados. O projeto que vamos apresentar está estruturado em 10 capítulos. No primeiro capítulo vamos começar por falar na razão da sua origem e no jovem percurso histórico. No capitulo 2, tentamos recolher todos as características técnicas disponíveis, e organiza-las de forma a permitir uma consulta rápida. No capítulo 3, reunimos os acessórios necessários para iniciar a instalação do sistema operativo e sua configuração. De seguida, altera-mos a palavra passe de login e fizemos todas as atualizações disponíveis como update e upgrade, depois aumenta-mos o tamanho da repartição do sistema para o espaço total existente no cartão de memória SD (Secure Digital). Nos capítulos 4 e 5, configuramos os dispositivos Wi fi(Wireless Fidelity) e Bluetooth nas portas USB(Universal serial Bus), para podermos comunicar sem fios com o Raspberry Pi No capítulo 6, vamos instalar os programas Putty e Xming de acesso remoto e, para transferir ficheiros vamos usar o WinSCP. No capítulo 7, apresentamos o expansor chamado K002-Slice PI/O, que usa como componente principal o circuito integrado MCP27017, este IC(Integrated Circuit) vai nos permitir interagir com o exterior, sem colocar em perigo o processador central do Raspberry. No capítulo 8 e 9, configuramos o protocolo de comunicação I2C e, testamos o seu funcionamento, depois integramos os seus comandos num script, e ao executa-lo, permitiu-nos acender e apagar os leds RGB, numa determinada sequência de cores, seguindo uma lógica de valores hexadecimais. A partir do capítulo 10, instalamos todos os pacotes de software necessários para criar um servidor Web apache e, nesse servidor, alojamos um script escrito em linguagem de programação Python , que através de uma página web, foi possível executar as funções de ligar e desligar leds RGB, em todos os bancos do nosso expansor.
  • 4. iii Índice Geral Introdução ......................................................................................................................................................... 1 1)Breve História................................................................................................................................................. 2 2) Características Técnicas................................................................................................................................. 3 3) Sistema Operativo......................................................................................................................................... 5 3.1) Acessórios para instalação SO(Sistema Operativo)............................................................................... 5 3.2) Inicio da instalação do SO...................................................................................................................... 6 3.3) Alterar Palavra Passe.............................................................................................................................. 7 3.4 ) Atualização do Sistema.......................................................................................................................... 7 3.5) Aumentar a Repartição do Sistema....................................................................................................... 8 3.6) Alteração de IP ...................................................................................................................................... 9 4) Configurar controlador Wi Fi...................................................................................................................... 10 5) Configurar controlador Bluetooth............................................................................................................... 10 6) Instalação software remoto(Putty,Xming e WinSCP).................................................................................. 11 7) Expansor K002 de 16 portas In/Out com chip MPC23017 ...................................................................... 133 8) Instalação i2c e configuração ...................................................................................................................... 13 9) Interagir com os leds .................................................................................................................................. 16 10) instalação do Web server.......................................................................................................................... 18 12) Conclusão .................................................................................................................................................. 23 13) Referências................................................................................................................................................ 24
  • 5. iv Índice das Figuras Figura 1-Diferenças entre os Modelo A e B....................................................................................................... 3 Figura 2-Descrição e localização das Ligações................................................................................................... 3 Figura 3-Ligações GPIO...................................................................................................................................... 4 Figura 4-Programa Win32 Disk imager.............................................................................................................. 6 Figura 5-Ecrã na fase de instalação. .................................................................................................................. 6 Figura 6-Ecrã de login........................................................................................................................................ 7 Figura 7-Tamanho atual da repartição.............................................................................................................. 8 Figura 8-Passos executados no utilitário Fdisk.................................................................................................. 8 Figura 9-Comando Resize2fs ............................................................................................................................. 8 Figura 10-Tamanho da repartição depois do uso dos comandos ..................................................................... 9 Figura 11- Configuração WI FI ......................................................................................................................... 10 Figura 12-Configuração Bluetooth .................................................................................................................. 11 Figura 13-Configuração do PuTTY ................................................................................................................... 11 Figura 14-Configuração do Xming ................................................................................................................... 12 Figura 15-Configuração do WinSCP................................................................................................................. 12 Figura 16-Montagem do expansor K002 Slice 16 I/O...................................................................................... 13 Figura 17-Blacklist de arranque do SO. ........................................................................................................... 13 Figura 18-Configuração dos Modules de arranque......................................................................................... 14 Figura 19-Deteção do IC MCP23017................................................................................................................ 15 Figura 20-Montagem dos leds na Breadboard e ligação ao expansor............................................................ 17 Figura 21- Sequência Hexadecimal para binário............................................................................................. 17 Figura 22-Primeira página do servidor Web apache....................................................................................... 18 Figura 23-Configurações do script de arranque do apache ............................................................................ 19 Figura 24-Página de acesso aos bancos A e B ................................................................................................. 22
  • 6. 1 Introdução A realização do nosso trabalho de grupo teve origem, não só como inicio num desafio proposto pelo professor de Redes de Comunicação, mas também na nossa curiosidade profunda e inesgotável em explorar as potencialidades quase infinitas deste pequeno computador. Ao longo deste trabalho de grupo, vamos tentar, dentro dos conhecimentos adquiridos nas várias cadeiras deste curso de Especialização Tecnológica de Telecomunicações e Redes, conquistar o desafio que nos foi proposto. Mas no decorrer do projeto foi inevitável explorar mais do que tínhamos idealizado, portanto o que vamos apresentar trata-se de um percurso descrito em várias fases. Na fase inicial, iremos demonstrar a instalação do sistema operativo e sua atualização, na fase seguinte, vamos configurar as redes sem fios Wi Fi e Bluetooth1 , depois vamos explorar o expansor K002 e conhecer o funcionamento do protocolo I2C2 , teremos então na última fase, a criação de um Servidor de Web Apache3 , e ao inserir-mos uma página construída em linguagem html4 e Python5 vai permitir-nos interagir com dispositivos luminosos pela simples escolha de três opções. Em todas as fases do projeto de grupo foi exigida uma intensa pesquisa, consulta e persistência para alcançar os objetivos definidos, sendo todas elas necessárias para tentar compreender o funcionamento e descobrir possíveis aplicações desta nova geração de computadores. 1 Bluetooth é uma especificação industrial para áreas de redes pessoais sem fio (Wireless personal area networks). O Bluetooth surgi-o da necessidade de conectar e trocar informações entre dispositivos como telefones celulares, notebooks, computadores, impressoras, câmaras digitais e consoles de videogames digitais através de uma frequência de rádio de curto alcance globalmente licenciada e segura. 2 I²C (Inter-Integrated Circuit) é um barramento serial "multi-master" desenvolvido pela Philips que é usado para conectar periféricos de baixa velocidade. 3 O servidor Web Apache é o mais bem sucedido servidor web livre. Foi criado em 1995 por Rob McCool, então funcionário do NCSA (National Center for Supercomputing Applications). Numa pesquisa realizada em dezembro de 2007, foi constatado que a utilização do Apache representa cerca de 47.20% dos servidores ativos no mundo 4 HTML ( HyperText Markup Language), significa Linguagem de Marcação de Hipertexto, utilizada para produzir páginas na Web. que podem ser interpretados por um Browser (navegadores da internet) 5 Python é uma linguagem de programação que foi lançada por Guido van Rossum em 1991. Atualmente possui um modelo de desenvolvimento comunitário, aberto e gerenciado pela organização sem fins lucrativos Python Software Foundation
  • 7. 2 1) Breve História O Raspberry pi é um mini computador de baixo custo desenvolvido no Reino Unido pela fundação Raspberry Pi. A ideia de criar um computador pequeno e barato para estudantes, surgi-o em 2006, por Eben Upton [1] e seus colegas Rob Mullins, Lang Jack e Mycroft Alan, todos eles alunos da Universidade Cambridge, mas só em 2008 é que foram criados os primeiros protótipos, e com o aparecimento da nova geração de processadores para telemóveis foi possível chegar ao atual Raspberry Pi. Tendo como principal objetivo promover e estimular o ensino das ciências da computação, e sem cativar o interesse dos investidores, as primeiras unidades foram fabricadas no Reino Unido, unicamente com os recursos da fundação, que vive exclusivamente de doações. Nas primeiras semanas de 2012, antes do lançamento no mercado, foram colocadas em leilão no ebay6 , cerca de 10 unidades do Raspberry Pi, com o intuito de angariar fundos, mas rapidamente obteve grande atenção, e o valor total das vendas atingiu as 16.000 libras [2]. Com este resultado nada previsível, criou grandes espectativas e impulsionou a produção para valores nunca esperados. Seu lançamento oficial foi anunciado no dia 29 de Fevereiro de 2012, com um lote de 10000 unidades, mas desta vez fabricadas totalmente em Taiwan e na China. Com o impensável tamanho de um cartão de crédito, incorpora numa única placa de circuito impresso, todo o hardware de um computador completo pronto a funcionar. Baseando-se num sistema de um único chip principal designada como SOC (System on a chip), que inclui no seu interior: um processador central, uma unidade de processamento gráfico com potencialidade de interpretar imagens HD (High Definition), e memória RAM(Random Access Memory). Existe atualmente no mercado dois modelos, A e B. No modelo B foi introduzida mais memória RAM, perfazendo um total de 512 MB, um ligação Ethernet7 , como também mais uma porta USB. Esta evolução foi forçosamente necessária devido à grande adesão dos seguidores perante o projeto inicial, que certamente, no futuro evoluirá para outros níveis. 6 eBay é o nome de uma empresa de comércio eletrônico fundada nos Estados Unidos, em Setembro de 1995, por Pierre Omidyar. Atualmente é o maior site do mundo para a venda e compra de bens, sendo o mais popular shopping da Internet. 7 Ethernet é um protocolo de interconexão para redes locais - (LAN-Local area network).
  • 8. 3 Na tabela da figura 1 podemos analisar em pormenor as diferenças entre os modelos. Figura 1-Diferenças entre os Modelo A e B. Neste trabalho de grupo vamos unicamente utilizar o modelo B, como suporte para o nosso projeto. 2) Características Técnicas Vamos tentar reunir nesta parte do projeto, todas as características técnicas mais importantes disponíveis no mercado. A figura 2 identifica a localização das ligações existentes no Raspberry Pi, como também o seu processador central [3]. Figura 2-Descrição e localização das Ligações.
  • 9. 4 Legenda da figura 2: 1) Ligação Micro USB 5V 1 Ampére DC(Direct Current) para alimentação principal. 2) Num único modulo integrado, incorpora no seu interior: um Processador Broadcom BCM2835 de 700MHz ARM1176JZFS com FPU( floating-point unit), um GPU(Graphics Processing Unit) Videocore8 , que proporciona uma tecnologia Open GL (Open Graphics Library) ES 2.0 de hardware acelerado OpenVG(Open vector graphics.), que pode admitir imagens de alta resolução 1080p30 H.2649 , com uma capacidade de 1Gpixel/s, 1.5Gtexel/s10 por imagem, e de 24 GFLOPs ( GigaFloating- point Operations Per Second), com filtro de textura e infraestrutura DMA (Direct memory access), como também incorpora 512MB de memória RAM. 3) Uma saída HDMI (High-Definition Multimedia Interface) com 14 resoluções disponíveis, desde 640×350 a 1920×1200, que suporta os sistemas PAL11 e NTSC12 . Utiliza uma tensão de 5volts 50 miliamperes. 4) Um Conector CSI( Camera Serial Interface) para micro camara de vídeo. 5) Um Conector Ethernet 10/100 Rj45 6) Duas portais USB 2.0 7) Led de sinalização de estado ACT = Atividade do cartão SD - Vermelho PWR = Presença dos 5v alimentação - Vermelho FDX = Ligação Ethernet Full Duplex - Verde LNK = Presençade ligação Ethernet - Verde 100 =Conexão Ethernet 100 Mbps - Laranja 8) Uma saída 3.5mm TRS( Tip-Ring-Sleeve) fêmea de áudio analógico 9) Uma saída RCA(Radio Corporation of America) fêmea de vídeo composto 10) Para uso exclusivo do fabricante. (Acesso direto CPUGPU JTAG-ETHERNET JTAG) 11) Portas GPIO (General Purpose Input output). São portas programáveis de entrada e saída de dados, no modelo B Rev2 temos P1 e P5. P1) P5) Figura 3-Ligações GPIO 12) Ligação DSI(Display Serial Interface) para uso de Display 13) Ligação compatível com os formatos SD(Secure Digital ), MMC(MultiMediaCard) e SDIO(Secure Digital Input Output) 8 VideoCore é processador de baixo consumo de energia com arquitetura multimídia desenvolvida originalmente por Alphamosaic Ltd e agora propriedade da Broadcom. 9 1080p30 H.264 representa 1080 linhas de resolução vertical, enquanto a letra p denota uma varredura progressiva de 30 imagens por segundo, e H.264 refere-se ao método de compressão de vídeo usado denominado por codec. 10 Gigapixel é uma imagem digital bitmap composto de um bilhão (10 9 ) pixels (elementos de imagem) 11 PAL (Phase Alternating Line), é uma forma de codificação da cor usada nos sistemas de transmissão televisiva em grande parte do mundo exceto no continente Américano. 12 NTSC (National Television System Committee) é o sistema de televisão analógico em uso nos Estados Unidos e na maioria dos países da América.
  • 10. 5 3) Sistema Operativo No site oficial da fundação Raspberry Pi [4] na secção de download, é possível adquirir gratuitamente várias versões de sistemas operativos, como também o software para a gravação da imagem no cartão, nos optamos por utilizar a versão Wheezy13 , sendo esta a mais aconselhável para iniciantes em Linux14 . Se os passos descritos no site da Fundação, forem seguidos com atenção, facilmente o processo de instalação decorre sem problemas. 3.1) Acessórios para instalação SO(Sistema Operativo) Fizemos a compra do Raspberry Pi na internet, podíamos ter optado pela versão que incluía todos os acessórios necessários para a instalação. Talvez fosse uma boa escolha, mas no nosso caso, não nos daria tanto gosto a explorar. Portanto, só com a placa do Raspberry Pi e com algum tempo de pesquisa até foi fácil descobrir os acessórios que faltavam. Assim, tivemos que reunir os componentes para alimentação principal, ligação ao monitor, teclado sem fios, como também para a instalação do SO. Na lista seguinte apresentamos os acessórios e Software utilizado nesta fase. ACESSÓRIOS  Transformador Micro USB 5V 1 Ampére (Não aconselhável a baixo de 700mA)  Cartão SD de 4 Gigabytes (No mínimo de 2 Gigabytes)  Leitor cartões SD  Cabo HDMI  Cabo rede Rj45  Teclado e rato sem fios  Monitor com entrada HDMI SOFTWARE  2012-12-16-wheezy-raspbian.zip (Imagem Debian Sistema Operativo)  win32diskimager-RELEASE-0.2-r23-win32 (programa para gravar a imagem no SD) 13 Wheezy é uma versão "testing" do Debian (Sistema Operativo), pertencendo a uma distribuição não comercial livre de código fonte aberto GNU/Linux 14 Linux é um termo popularmente utilizado para se referir a sistemas operativos que utilizem o núcleo Linux. O núcleo Linux foi desenvolvido pelo programador finlandês Linus Torvalds, O seu código fonte está disponível para que qualquer pessoa o possa utilizar, estudar, modificar e distribuir livremente de acordo com os termos da licença.
  • 11. 6 3.2) Inicio da instalação do SO O nosso primeiro passo da instalação foi: de colocar o cartão SD no leitor do computador portátil, depois executar o programa win32diskimager. Na janela do programa, escolhemos a localização da nossa imagem wheezy, e na parte do Device, a letra da unidade do SD de destino, onde ira ser gravada posteriormente a imagem. De seguida foi só clicar no botão [write] para iniciar o processo. Conforme se pode verifica na janela de configuração da figura numero 4. Figura 4-Programa Win32 Disk imager. Depois de terminada a gravação da imagem, colocamos o cartão SD na Slot localizada na parte de trás do Raspberry Pi, ligamos o cabo HDMI ao monitor, como também a pen usb wireless do teclado e do rato, finalmente podemos ligar a alimentação de 5V micro USB. No processo inicial de arranque do sistema SO, surge a imagem no ecrã representada na figura 5, onde foi habilitado o SSH15 server, para permitir comunicar remotamente usando esse protocolo. Figura 5-Ecrã na fase de instalação. 15 SSH (Secure Shell) é um protocolo de rede que permite a conexão com outro computador na rede de forma a garantir a execução de comandos de uma unidade remota, com a vantagem da criptografia na conexão entre o cliente e o servidor.
  • 12. 7 Depois de terminado, fica a aguardar a introdução do login e palavra passe do utilizador, e mostra o IP adquirido por DHCP16 , como na figura 6. Figura 6-Ecrã de login O login inicial por defeito é sempre: Utilizador: Pi Palavra passe: raspberry Ao inserir-mos o login, temos acesso à linha de comandos do wheezy, mas para aceder-mos ao GUI(Graphical User Interface), que no Raspberry Pi chama-se LXDE(Lightweight X1117 Desktop Environment) ,tivemos que usar o comando :  pi@raspberrypi ~ $ starx 3.3) Alterar Palavra Passe É aconselhável alterar a palavra passe de origem do utilizador pi , e atribuir uma ao utilizador especial chamado root, antes de ligar o sistema à internet, isso é possível com os comandos:  pi@raspberrypi ~ $ sudo passwd pi (Inserir a palavra passe duas vezes)  pi@raspberrypi ~ $ sudo passwd root (Inserir a palavra passe duas vezes) 3.4 ) Atualização do Sistema Depois de terminar a instalação do sistema operativo fizemos todas as atualizações do sistema disponíveis para evitar falhas de incompatibilidade entre softwares, No terminal digitamos os seguintes comandos:  pi@raspberrypi ~ $ sudo -i  root@raspberrypi:~# apt-get update  root@raspberrypi:~# apt-get upgrade  root@raspberrypi:~# shutdown -r now 16 DHCP(Dynamic Host Configuration Protocol), é um protocolo de serviço que oferece a atribuição de endereços IP(internet Protocol) de host, Máscara de sub-rede, Default Gateway e DNS(Domain Name System). 17 X11 ou simplesmente X é um software de sistema e um protocolo que fornece uma base para interfaces gráficas de usuário.
  • 13. 8 3.5) Aumentar a Repartição do Sistema Como a nossa imagem do sistema, foi gravada através de uma outra imagem pela ferramenta do w32 disk imager , o espaço disponível na repartição não corresponde ao espaço total do cartão SD, e assim, para instalar todos os pacotes de software livremente sem preocupações de espaço em disco , tivemos que expandir a repartição da raiz, com a utilização dos seguinte comandos [5]:  root@raspberrypi:/# df -h Figura 7-Tamanho atual da repartição Sequência de passos com utilitário Fdisk18 , representados na figura 8 e referênciados a vermelho.  root@raspberrypi:/# fdisk -u -c /dev/mmcblk0 Figura 8-Passos executados no utilitário Fdisk  root@raspberrypi:/# resize2fs -p /dev/mmcblk0p2 Figura 9-Comando Resize2fs 18 fdisk é um utilitário presente em diversos sistemas operacionais que realiza particionamento de discos rígidos. Há versões do fdisk para Linux, DOS, Windows.
  • 14. 9  root@raspberrypi:/# df -h Figura 10-Tamanho da repartição depois do uso dos comandos E assim, depois desta operação, ficamos com todo o espaço em cartão SD disponível. 3.6) Alteração de IP O wheezy vem por defeito com o DHCP ativado, assumindo um IP atribuído pelo nosso router , para alterar esta condição para um IP estático 19 e definido a nosso critério, tivemos que fazer as seguintes alterações: primeiro executar o seguinte comando:  pi@raspberrypi / $ sudo nano /etc/network/interfaces Depois alteramos a linha: “iface eth0 inet dhcp” Para ficar assim:” iface eth0 inet static”. E por baixo desta linha acrescenta-mos: address 192.168.1.101 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1 dns 192.168.1.1 Para gravar as alterações tivemos que carregar [CTRL+X] depois "y" e de seguida na tecla [Enter] para confirmar. 19 IP estático- Endereço de IP introduzido pelo administrador do sistema, que depois de gravado, mantém a sua configuração.
  • 15. 10 4) Configurar controlador Wi Fi Nesta conexão nos usamos uma pen USB 2.0 Wireless TP-LINK IEEE 802.11 b/g 2.4 Ghz que utiliza os drivers da realtek, pertencendo a lista dos drivers compatíveis com o nosso SO. Conectamos a Pen usb ao Raspberry e reinicia-mos o sistema, depois entramos no LXDE, clicamos no ícone das configurações da rede Wifi que se encontra no ambiente de trabalho, e fizemos uma busca das redes disponíveis. Escolhemos o SSID (Service Set IDentifier ) do nosso router e introduzimos a chave de rede, passados alguns segundos estabeleceu-se a ligação. Na figura 11 podemos verificar os passos dados nesta configuração. Figura 11- Configuração WI FI 5) Configurar controlador Bluetooth Na conexão bluetooth, usamos uma pen do modelo : ANYCOM 250 USB versão 2.0 class 1 (100miliWatts, 20dBm20 até 100 metros), com taxas de transferência de 3M/bs. Para o Raspberry poder reconhecer o dispositivo Bluetooth tivemos que instalar os seguintes pacotes de software, através da linha de comandos em modo de utilizador especial: root@raspberrypi:/# apt-get install bluetooth bluez-utils blueman root@raspberrypi:/# ./etc/init.d/bluetooth status [ ok ] bluetooth is running. root@raspberrypi:/# startx Para se estabelecer a conexão bluetooth, tem que primeiro existir uma ligação segura, através do pedido de uma senha, que depois de se verificar a igualdade entre o pedido e a resposta, os dispositivos ficam emparelhados, permitindo o envio de ficheiros e partilha de serviços. Estes passos da configuração foram feitos no LXDE do nosso raspberry, no local "preference->Bluetooth Manager " como se pode verificar na figura 12. 20 dBm é uma unidade de medida utilizada principalmente em telecomunicações para expressar a frequência absoluta mediante uma relação logarítmica. Define-se como o nível de potência em decibéis em relação ao nível de referência de um 1 mW.
  • 16. 11 Figura 12-Configuração Bluetooth 6) Instalação software remoto (Putty,Xming e WinSCP) Para podermos aceder ao raspberry remotamente e configurar o nosso web server, optamos por instalar os programas Putty21 , Xming22 e WinSCP23 no nosso portátil, que tem como sistema operativo o Windows 7. Para torna o acesso possível tivemos que fazer as seguintes configurações: Verificar se o Protocolo SSH estava a correr, com o comando: pi@raspberrypi / $ sudo /etc/init.d/ssh status Obtivemos como resposta do comando a linha: [ ok ] sshd is running. Depois iniciamos o programa PuTTY [6], inserimos os dados e gravamos a sessão, como ilustra na figura seguinte. Figura 13-Configuração do PuTTY 21 PuTTy é um cliente de SSH destinado a promover o acesso remoto a servidores via Shell Seguro - SSH - e a construção de "túneis" cifrados entre servidores. 22 Xming é usado em implementações de Secure Shell (SSH) para transmitir de forma segura X11 sessões de outros computadores. Ele suporta PuTTY e ssh.exe, e vem com uma versão do PuTTY plink.exe. 23 WinSCP (Windows Secure Copy Protocolo) é uma aplicação de uso livre de SFTP(Secure File Transfer Protocol), SCP,(Secure copy Protocol)para clientes Microsoft Windows. de transferência de ficheiros entre o sistema local e o computador remoto.
  • 17. 12 Depois de clicarmos no [Open,], ficamos com acesso a linha de comandos, mas só a linha de comandos, nós queríamos também aceder ao LXDE remotamente, portanto tivemos que recorrer ao programa Xming [7], iniciamos o XLaunch e, de seguida introduzimos as respetivas configurações: Figura 14-Configuração do Xming E assim, ao terminar a configuração, ficamos com as nossas definiçoes gravadas, e ao clicar no atalho criado no ambiente de trabalho, conseguimos entrar no LXDE, como ilustra no último passo da sequência representada na figura 14. O winSCP [8] vai ser utilizado para editar as páginas web com maior facilidade e rapidez. Nas configuração do WinSCP foi necessário introduzir o IP, o nome de utilizador e palavra passe, como também porta e tipo de ligação. Ao executar a aplicação clicamos no botão [new], depois fizemos as seguintes configurações como podemos verificar na figura 15. Figura 15-Configuração do WinSCP. Neste ambiente podemos criar, apagar e editar ficherios remotamente no SO do raspberry, como tambem atribuir direitos, sem recorrer a linha de comandos, e com a vantagem de fazer copy and paste24 do local onde estamos a trabalhar. 24 Copy and Paste é o procedimento usado para transferência de conteúdo (texto, dados, arquivos, objetos) de uma origem para um destino.
  • 18. 13 7) Expansor K002 de 16 portas In/Out com chip MPC23017 O expansor K002 usa o microchip MCP23017, este IC tendo apenas duas portas de comunicação de endereço I2C, disponibiliza ao utilizador 16 portas de entrada ou saída, de 8 bits por cada barramento, com capacidade de fornecer 25miliampéres (valor máximo) em cada porta e suportando tensões entre 3,3V e 5V. O expansor é fornecido em Kit de peças soltas, que foram estanhadas na placa de circuito impresso. Na montagem foi definido o endereço a ser usado posteriormente com comandos i2c, como também a tensão a utilizar no circuito Utilizamos o manual de instalação [9] como consulta para toda a montagem. Figura 16-Montagem do expansor K002 Slice 16 I/O. 8) Instalação i2c e configuração Por definição, o I2C vem inserido na blacklist de arranque do sistema, por essa razão tivemos que executar o comando «nano» e alterar as seguintes linhas:  pi@raspberrypi /$ sudo nano /etc/modprobe.d/raspi-blacklist.conf Adicionamos um cardinal no inicio de cada linha, para as mesmas passarem a comentário, e assim serem ignoradas pelo arranque do sistema. Segue como exemplo a figura 17. Figura 17-Blacklist de arranque do SO. Para gravar as alterações tivemos que carregar [CTRL+X] depois "y" e de seguida na tecla [Enter] para confirmar.
  • 19. 14 Depois inserimos o I2C nos módulos Kernel25 de arranque, com o comando: pi@raspberrypi /$ sudo nano /etc/modules Inserimos a linha i2c-dev como se pode verificar na figura 18. Figura 18-Configuração dos Modules de arranque. Voltamos a Carregar nas teclas [Ctrl+X] depois "y" para confirmar e de seguida [Enter], para gravar as alterações. Instalamos finalmente o pacote de software I2c-tools, com o comando:  pi@raspberrypi ~ $ sudo apt-get install i2c-tools Depois, foi necessário inserir um utilizador registado no sistema ao grupo I2C com a seguinte linha:  pi@raspberrypi ~ $ sudo adduser pi i2c Para recarregar as novas alterações, tivemos que reiniciar o raspberry com: pi@raspberrypi ~ $ sudo shutdown -r now Depois, para verificar se o nosso IC está presente no sistema, e se realmente o seu endereço é 0x20, utilizamos o comando:  pi@raspberrypi ~ $ sudo i2cdetect -y 1 25 Kernel é o componente central do sistema operativo ele serve de ponte entre aplicativos e o processamento de dados feito a nível de hardware e gerência a comunicação entre componentes de hardware e software.
  • 20. 15 E obtivemos como resultado a imagem da figura 19. Figura 19-Deteção do IC MCP23017 A partir deste momento foi possível definir se as portas do IC são de entrada ou saída, como também no caso das saídas, se o seu estado e ligado=1 ou desligado=0 Por exemplo:  pi@raspberrypi ~ $ sudo i2cset -y 1 0x20 0x00 0x00 ( Portas A, todas são de saída)  pi@raspberrypi ~ $ sudo i2cset -y 1 0x20 0x01 0x00 ( Portas B, todas são saídas)  pi@raspberrypi ~ $ sudo i2cset -y 1 0x20 0x00 0xff ( Portas A, todas são entradas)  pi@raspberrypi ~ $ sudo i2cset -y 1 0x20 0x01 0xff ( Portas B, todas são entradas)  pi@raspberrypi ~ $ sudo i2cset -y 1 0x20 0x12 0x01 ( Porta A0 ligada (0000 0001))  pi@raspberrypi ~ $ sudo i2cset -y 1 0x20 0x13 0x07 ( Portas B0,B1 eB2, ligadas (0000 0111)) A comunicação com o IC é feita pela sequência de três secções de endereços específicos. Na primeira secção representada por 0x20, refere-se ao endereço do integrado a que se destina, a secção seguinte, que poderá tomar quatro valores diferentes, refere-se ao endereço para onde ira a sequência de 8 bites, no caso se for 0x12 para a Banco A, ou 0x13 para a Banco B, mas também pode definir o tipo de ligações (saída ou entrada) dos bancos, se for 0x00 refere-se ao banco A, no caso 0x01 ao banco B. Na ultima secção, temos o endereço do valor dos 8 bits a serem enviados, estes valores são introduzidos no sistema hexadecimal, depois convertidos para linguagem binária.
  • 21. 16 9) Interagir com os leds Com a placa do Raspberry devidamente preparada, foi instalada numa base plana, fixa com dois pontos de suporte, junto a uma breadboard26 , para permitir fazer as ligações ao expansor facilmente. Nós optamos numa fase inicial fazer as ligações ao banco A, e com um script em execução, vamos ligar e desligar os dois leds RGB27 , e assim exibir cores diferentes. O script foi gravado num ficheiro chamado " testes.sh" com o editor « nano»:  pi@raspberrypi ~ $ sudo nano teste.sh Foi criado o seguinte script: # Programa para acender e apagar os leds RGB sudo i2cset -y 1 0x20 0x00 0x00 #todas as portas A definidas como saídas. while true do for i in { 01,02,04,08,10,20,09,12,24,12,09,00,2d,1b,36,3f,00 } # Valores Hexadecimais do sudo i2cset -y 1 0x20 0x12 0x$i #Executa o comando com o valor da variável sleep 1.25 # Tempo entre a mudança do estado da variável done done Para podermos utilizar o ficheiro tivemos que atribuir-lhe permissões.  pi@raspberrypi ~ $ sudo chmod 777 teste.sh Depois ao montar o circuito na breadboard, tivemos que calcular as resistências a usar nas ligações dos leds às portas do banco A do K002. Com os valores de referência fornecidos pelo fabricante, e recorrendo a lei de Ohm28 com a formula R=V-Vf/If 29 , como também atribuindo uma margem de segurança, optamos por usar resistências de 150 Ohm ligadas em série com cada led. Na figura 17 podemos verificar as ligações utilizadas nesta montagem. 26 Breadboard é uma placa de montagem que não necessita de solda , é reutilizável e assim torna mais fácil a criação de protótipos temporários e experiências com o projeto de circuito. 27 LED (Light Emitting Diode) é um diodo semicondutor, que quando é energizado emite luz visível . RGB é a abreviatura do sistema de cores aditivas, formado por Vermelho (Red), Verde (Green) e Azul (Blue). 28 O ohm (símbolo: Ω) é a unidade de medida da resistência elétrica, padronizada pelo SI (Sistema Internacional de Unidades) O nome desta unidade é uma homenagem a Georg Simon Ohm (1787-1854) 29 R=V-Vf/If - V corresponde à tensão do sistema, Vf refere-se a tensão de trabalho do LED e If a corrente de funcionamento do LED.
  • 22. 17 Figura 20-Montagem dos leds na Breadboard e ligação ao expansor Ao executarmos o script, os leds acendem e apagam conforme o valor assumido pela variável, passando por todos os valores colocados nos parênteses, infinitamente em loop, até ser interrompido com a sequência de teclas [Ctrl+C].  pi@raspberrypi ~ $ ./teste.sh #Executar o script A figura 21 da tabela seguinte, demonstra como é feito o processo de leitura dos valores. Figura 21- Sequência Hexadecimal para binário.
  • 23. 18 10) instalação do Web server Neste capítulo, vamos incorporar no sistema operativo do Raspberry Pi, um Web server Apache [10] com o módulo de interface modwsgi, e assim, com um script alojado escrito em linguagem Python e html, irá permitir-nos acender e apagar os leds RGB, através da escolha de três opções numa página web, e nessas opções, podemos escolher qualquer uma das portas dos bancos do expansor K002. Para colocar o servidor web a trabalhar, tivemos que instalar os seguintes pacotes de software: pi@raspberrypi ~ $ sudo apt-get install python-smbus Depois instalamos o pache webserver com: pi@raspberrypi ~ $ sudo apt-get install apache2 De seguida adicionamos um grupo ao "www-data", e depois um utilizador, para poder ser usado pelo web server, com os comandos: pi@raspberrypi / $ sudo addgroup www-data pi@raspberrypi / $ sudo adduser www-data www-data E assim, para verificar-mos se o web server estava a funciona corretamente, inserimos no browser de um computador integrado na mesma rede, o seguinte endereço: http://raspberrypi.home Como resultado, obtivemos a página representada na figura 22: Figura 22-Primeira página do servidor Web apache. Tivemos também que instalar o "mod-wsgi" para poder integrar a linguagem python no apache : pi@raspberrypi / $ sudo apt-get install libapache2-mod-wsgi Habilitamos o acesso ao módulo de interface com a comando: pi@raspberrypi /$ sudo a2enmod wsgi
  • 24. 19 Depois editamos o ficheiro com o comando «nano», da seguinte forma: pi@raspberrypi / $ sudo nano /etc/apache2/sites-available/default Acrescentamos o seguintes texto: " ExecCGI " e " AddHandler wsgi-script .wsgi " no script de arranque do apache, como se verifica na figura 23, referênciado a vermelho: Figura 23-Configurações do script de arranque do apache A seguir tivemos que adicionar o utilizador do apache ao grupo do I2C.  pi@raspberrypi / $ sudo adduser www-data i2c Tivemos que criar um ficheiro na diretoria " /var/www/ " com o nome " mcp23017.wsgi ".  pi@raspberrypi /$ sudo nano /var/www/ mcp23017.wsgi E com o editor «nano», gravamos o seguinte script: from wsgiref.simple_server import make_server from cgi import parse_qs, escape import smbus import sys import getopt bus = smbus.SMBus(1) address = 0x20 # I2C address of IO Expander bus.write_byte_data(0x20,0x00,0x00) # Set all of bank A to outputs bus.write_byte_data(0x20,0x01,0x00) # Set all of bank B to outputs # The HTML used to build the full web page option html = """ <html> <body> <form method="get" action="mcp23017.wsgi"> <p> <b>Bank</b><br /> <input name="portas" type="radio" value="a"> A <input name="portas" type="radio" value="b"> B <br /> </p>
  • 25. 20 <p> <b>Output</b><br /> <input name="output" type="radio" value="0"> 0 <br /> <input name="output" type="radio" value="1"> 1 <br /> <input name="output" type="radio" value="2"> 2 <br /> <input name="output" type="radio" value="3"> 3 <br /> <input name="output" type="radio" value="4"> 4 <br /> <input name="output" type="radio" value="5"> 5 <br /> <input name="output" type="radio" value="6"> 6 <br /> <input name="output" type="radio" value="7"> 7 <br /> </p> <p> <b>state:</b> <input name="state" type="radio" value="high"> High <input name="state" type="radio" value="low"> Low </p> <p> <input type="submit" value="Submit"> </p> </form> <p> Bank: %s<br> Output: %s<br> State: %s<br> Debug: %s </p> </body> </html> """ # HTML for the minimal JSON response (activated with &mode=json in the query string) htmlshort = """{"%s%s":"%s"}""" def application(environ, start_response): # Get the query string variables d = parse_qs(environ['QUERY_STRING']) bank = d.get('portas', [''])[0] output = d.get('output', ['8'])[0] state = d.get('state', [''])[0] mode = d.get('mode', [''])[0] # Escape user input bank = escape(portas) output = int(escape(output)) state = escape(state) mode = escape(mode) # Set the correct register for the banks if portas == "a" : register = 0x12 elif portas == "b" : register = 0x13
  • 26. 21 else: register = 0 # Read current values from the IO Expander value = bus.read_byte_data(address,register) # Shift the bits for the register value, checking if they are already set first if state == "high": if not (value >> output) & 1 : value += (1 << output) elif state == "low": if (value >> output) & 1 : value -= (1 << output) else: state = "none" # Quick sanity check if (0 <= output < 8) and register != 0 and state != "none": # Looks OK, now write to the IO expander bus.write_byte_data(address,register,value) if mode == "json" : # minimal mode response_body = htmlshort % (bank.upper(), output, state.upper()) else: # otherwise show full web page response_body = html % (bank.upper(), output, state.upper(), value) elif mode == "json" : response_body = "SYNTAX ERROR" else: response_body = html % ("n/a", "n/a", "n/a", value) # Show the HTML page status = '200 OK' response_headers = [('Content-Type', 'text/html'), ('Content-Length', str(len(response_body)))] start_response(status, response_headers) return [response_body] Atribuímos permissões totais de acesso ao ficheiro com o comando:  pi@raspberrypi / $ sudo chmod 777 /var/www/mcp23017.wsgi Reiniciamos o sistema com : pi@raspberrypi / $ sudo shutdown -r now Depois, para verificar-mos se o web server estava a funciona corretamente, inserimos no browser de um computador integrado na mesma rede, o seguinte endereço: http://raspberrypi.home/mcp23017.wsgi
  • 27. 22 E obtivemos como resultado a página representada na figura 24. Figura 24-Página de acesso aos bancos A e B Esta página alojada no nosso servidor de web, acessível através de um browser http, a todos os dispositivos integrados na rede, permitiu-nos aceder aos dois bancos do expansor K002 e, mudar o estado das suas portas para ligado(High) e desligado(low), com a simples escolha de três opções individuais. E se configurarmos o nosso Router para colocar o servidor Web acessível na internet, podemos aceder à página em qualquer parte do mundo.
  • 28. 23 12) Conclusão O Raspberry Pi representa sem dúvida o inicio de uma nova era no ensino da computação. Permite explorar áreas de conhecimento que anteriormente só estavam disponíveis para um grupo restrito de utilizadores, em que não as revelavam, para protegerem o seu investimento. A aceitação deste mini computador no mercado foi algo surpreendente e inesperado, tendo neste momento milhares de unidades espalhadas a escala mundial. É previsível que iram surgir projetos inovadores criados por utilizadores comuns, e que, se bem aplicados no mercado, poderão abrir novas áreas de negócio. O seu potencial é algo promissor, pois ele pode transformar-se num dispositivo multimédia e, se o colocarmos ao lado da televisão, podemos assistir filmes, ouvir musica ou até mesmo viajar na internet, mas também pode ser o cérebro de um robô, que gere o seu comportamento em decisões perante obstáculos, ou ainda pode controlar a nossa casa, e executar tarefas agendadas, como acender luzes, fechar portas, ligar o aquecimento central ou enviar informação. Tudo isto pode ser assistido e comandado por um site na internet em qualquer parte do globo. Podíamos falar de imensas possibilidades de aplicar o Raspberry Pi, mas não iríamos conseguir esgotar todas elas, e por outro lado, este trabalho de grupo iria tomar proporções gigantescas. Certamente o Raspberry Pi, irá dar lugar no futuro a um outro mini computador com características superiores, mas ele ficará sempre referenciado na história da evolução dos computadores, como o primeiro do género a atingir níveis tão elevados de comercialização.
  • 29. 24 13) Referências [1] Fundação Raspberry Pi, “raspberrypi.org-about,” [Online]. Available: http://www.raspberrypi.org/about. [2] “wikipedia.org-história,” [Online]. Available: http://en.wikipedia.org/wiki/Raspberry_Pi. [Acedido em 12 01 2013]. [3] Fundação Raspberry Pi, “Raspberry-Pi-Schematics-R1.0.pdf,” [Online]. Available: http://www.raspberrypi.org/wp-content/uploads/2012/04/Raspberry-Pi-Schematics-R1.0.pdf. [Acedido em 11 01 2013]. [4] Fundação Raspberry Pi, “Secção de downloads,” [Online]. Available: http://www.raspberrypi.org/downloads. [Acedido em 25 11 2012]. [5] YouTube, “Raspberry Pi - Resize the partition to fill the SD card,” [Online]. Available: http://www.youtube.com/watch?v=R4VovMDnsIE. [Acedido em 24 01 2013]. [6] Simon Tatham, “greenend.org-PuTTY,” [Online]. Available: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html. [Acedido em 01 01 2013]. [7] “straightrunning.com-Xming,” [Online]. Available: http://www.straightrunning.com/XmingNotes/. [Acedido em 01 01 2013]. [8] University of Economics in Prague, “winscp.net-winSCP,” [Online]. Available: http://winscp.net/eng/download.php. [Acedido em 01 01 2013]. [9] Openmicros, “I/O Expander Board,” [Online]. Available: http://openmicros.org/index.php/articles/94- ciseco-product-documentation/raspberry-pi/223-slice-of-pio". [Acedido em 11 11 2012]. [10] N. Chantrell, “nathan.chantrell.net,” [Online]. Available: http://nathan.chantrell.net/20120602/raspberry-pi-io-expander-board/. [Acedido em 25 01 2013]. [11] wikipedia.org. [Online]. Available: http://pt.wikipedia.org/wiki/Sistema_de_numera%C3%A7%C3%A3o_bin%C3%A1rio. [Acedido em 28 01 2013]. [12] Fundação Raspberry Pi, 28 01 2013. [Online]. Available: http://www.raspberrypi.org/about. [13] “labdegaragem.com-Led RGB,” [Online]. Available: http://labdegaragem.com/profiles/blogs/tutorial- led-rgb-com-arduino. [14] “rapidtables.com-RGB,” rapidtables, [Online]. Available: http://www.rapidtables.com/web/color/RGB_Color.htm. [Acedido em 21 01 2013].
  • 30. 25