Objectivo do Projecto: Mostrar conteúdo informativo ( Vídeos - Slides - Imagens ) em monitores LCD (Entrada VGA ou HDMI) com um Raspberry Pi controlado remotamente - SSH
Motivação:
A Associação de Estudantes existe já desde 1936, trabalhando em prol dos Estudantes e dos seus interesses. Sendo que a comunidade IST tem 11589 alunos (ano de 2015) é difícil chegar a todos e cada um. Por este motivo foi necessário desenvolver uma solução que pudesse mostrar à comunidade académica todo o conteúdo que temos vindo a desenvolver.
Uma das maneiras de chegar mais facilmente aos alunos será através de Televisores espalhados pelo campus, com informação actualizada e desenvolvimentos concretizados pela AE.
Desta forma poderemos estar mais perto dos nossos estudantes e eles de nós.
Esta será a primeira televisão a ser activada:
Tópicos Abordados:
- Instalação do OS raspbian no Rpi;
- Montagem do Sistema;
- Criação de Script para:
- Instalação de Youtube-dl
- Instalação de Vncserver;
- Iniciar reprodução de um ciclo de Vídeos ao iniciar;
- Sincronizar conteúdo entre PC e o Rpi;
- Como ver vídeos do youtube através do Youtube-dl
NOTA: Tutorial direccionado para sistemas Linux!
Como desenvolver este projecto?
O que é preciso:
- - Teclado USB;
- - Rato USB;
- - Raspberry pi;
- - Cartão de memória - Recomendado 4GB ou mais;
- - Cabo micro usb para USB;
- - Carregador de tomada USB;
- - Cabo de Ethernet;
- - Router com ligação à Internet;
- - PC com ligação à Internet
- - Cabo HDMI ou Cabo conversor HDMI-VGA
- - Televisão com entrada HDMI ou entrada VGA
- - Caixa : Opcional mas Recomendado
Tabela dos componentes e respectivas referências Farnel:
Componente | Título Farnel | Referência Farnel |
Caixa Rpi | MULTICOMP MC-RP002-WHT ENCLOSURE, WHITE, RPI 2 MODEL B / B+ | 2445370 |
Raspberry Pi | RASPBERRYPI-2-MODB-1GB SBC | 2461029 |
Carregador 230V para USB | FTDI VA-PSU-EU1 PSU USB EU MODEL 5V/1A | 2355194 |
Cabo USB | CABLE, USB A TO MICRO B, | 2355195 |
Adaptador HDMI-VGA | ELEMENT14 PIVIEW ADAPTOR, HDMI TO VGA, | 2133899 |
Cartão de Memória – Micro SD – 8GB | SAMSUNG MBMS8GVCGDAW-CK001 MEMORY, MICRO-SD, 8GB CLASS10 (BULK) | 2471120 |
Rato USB | CHERRY M-5450 MOUSE SCROLL USB/PS/2 BLACK | 1279053 |
Teclado USB | BLAZE BL-K1208 KEYBOARD, USB MULTIMEDIA, UK | 1889759 |
Cabo HDMI | ROLINE 11.04.5733 AUDIO/VIDEO CABLE HDMI A PLUG 3M BLK | 2499351 |
Vamos começar!
Para o 1º passo precisas apenas de:
- Um computador com acesso à Internet;
- Cartão Micro SD com respectivo adaptador ligado ao PC;
1º Passo -Download e Instalação do Sistema Operativo Raspbian no cartão SD
Para tal, é necessário fazer download do Raspbian mais recente.
Este encontra-se no site oficial do Raspberry pi no formato ISO:
Depois de concluído o download, para o instalar no Cartão SD é necessário usar um de dois programas:
- Unetbootin - (existente em distros Linux)
- Rufus - https://rufus.akeo.ie/
- Devices: Selecciona o teu Cartão SD
- Selecciona "Create a bootable disk" "- ISO image" - clica no botão com o símbolo de CD
- Selecciona a directoria do ficheiro Raspbian
- Todas as outras opções podem ficar como predefinidas pelo programa
ATENÇÃO: Todo o conteúdo no cartão SD será apagado ao instalar o raspbian!
Assim que concluído, insere o Cartão SD no Raspberry PI
Primeiro passo concluído!
2º Passo - Montagem do sistema
Neste passo vais precisar de:
- Raspberry pi;
- Cartão SD com a imagem do Raspbian instalada;
- Ecrã;
- Cabo HDMI ou conversor VGA (dependendo do ecrã);
- Rato USB;
- Teclado USB;
Ao ligares o sistema é suposto observar o ambiente de trabalho:
NOTA: Caso isto não se verifique, volta a inserir o Cartão SD no computador e modifica o ficheiro "config.txt", tirando o "#" na opção HDMI_FORCE(...)
3º Passo - Vamos lá programar!
O que é suposto o Rpi fazer? E como?
Objectivos:
- Actualizar o sistema e instalar os programas em falta;
- Fazer loop de um vídeo no Rpi, e ser capaz de o modificar por SSH ( à distância, via internet)
Para facilitar a instalação de todos os programas no rPI desenvolveu-se um script em bash, que executa diversas tarefas:
- Instala a versão mais actualizada do raspbian;
- Instala os programas:
- Youtube-dl (Permite fazer download e ver streams do youtube);
- vncserver (Permite um controlo remoto com interface gráfica);
- Introduz um comando no Crontab (Objectivo - Manter um vídeo sempre a reproduzir);
- Raspi-Config (Para dar permitir acesso por SSH ao Rpi)
Para criar este Script,criem um ficheiro com nome "auto.sh" e os comandos a inserir no mesmo serão:
#!/bin/bash
sudo apt-get install upgrade -y; #upgrade do sistema
sudo apt-get install update -y; #update do mesmo
sudo apt-get install tightvncserver -y; #instala o serviço de controlo remoto com interface gráfica
Sudo apt-get youtube-dl -y; #instala programa que permite ver videos do youtube
sudo apt-get clean; #remove quaisquer ficheiros temporários criados
sudo apt-get autoremove; #idêntico ao acima
#escreve comando para o crontab para iniciar o script "loop.sh" ao reiniciar:
#este loop.sh é um script que quando iniciado irá buscar o vídeo pretendido e irá repeti-lo
touch
crontab -e;
echo @reboot sh /home/pi/AEISTV/loop.sh
sudo raspi-config; #abre menu onde se activa o SSH
Se tudo correr como planeado, estaremos agora no menu de configuração "raspi-config", com o intuito de permitir uma ligação por SSH ao Rpi.
Navegue até à opção SSH e active-a.
Estamos agora aptos a ligar-nos ao Rpi por SSH e através do VNC (Controlo remoto com interface gráfica)!
4º Passo - Colocar o vídeo em loop constante
Através do script auto.sh é possível verificar que este executa sempre que inicia (@reboot) o script "loop.sh"
Como explicado no script acima, o loop.sh é um script que quando iniciado irá buscar o vídeo pretendido e irá repeti-lo. Para tal é preciso criar um ficheiro, com nome por exemplo "loop.sh" e dar-lhe os seguintes comandos:
#!/bin/sh
SERVICE='omxplayer'
while true; do
if ps ax | grep -v grep | grep $SERVICE > /dev/null
then
echo "running" # >> /dev/null
else
for number in 1 2 3 4
do
omxplayer /home/nunos/Área\ de\ Trabalho/Rpi/Share/ae_%number.flv &
done
fi
done
Sempre que o serviço omxplayer estiver activo (neste caso é contínuo) escreve no terminal "running" e corre os videos "ae_%number.flv" representando o nome do vídeo e onde %number varia de 1 a 4.
Desta forma é possível reproduzir um conjunto de 4 vídeos de seguida e fazer loop dos mesmos.
No nosso caso é possível observar o final da configuração. De seguida é feito o reboot e são lançados automaticamente os vídeos do Arraial 2014:
Passos Adicionais
5º Passo - Sincronizar conteúdo com o Rpi por SSH
Para que os conteúdos possam ser dinâmicos e serem modificados mais facilmente, usou-se a ferramenta "rsync" existente no UBUNTU por predefinição.
Método de utilização:
Abrir terminal e executar:
#A partir do pc, copia pasta do pi /Dropbox-uploader para pasta Imagens/ no PC
rsync -avz -e ssh pi@192.168.5.149:Dropbox-Uploader/ Imagens/
#Copia pasta Imagens do PC para Dropboxuploader
rsync -avz Imagens/ -e ssh pi@192.168.1.109:Dropbox-Uploader/
-avz - Método de compressão do conteúdo a enviar
-e - Usado para ligar a um outro dispositivo por ssh
6º Passo (adicional) - Script para executar streams do youtube
Foi também desenvolvido um script tendo em conta um futuro desenvolvimento do sistema que permite ver vídeos e streamming do youtube.
Para a criação deste, à imagem dos anteriores, é necessário criar um ficheiro com nome ex: "ytstream.sh" e inserir as seguintes linhas de código:
#!/bin/sh
read -p "Youtube link:" link #pede para inserir o link com o vídeo/stream do Youtube
sleep 1
youtube-dl -F $link
echo "Select number:" #pede para selecionar o tipo de streaming pretendido
read number
sleep 1
omxplayer -o hdmi $(youtube-dl -g -f $number $link) #executa o omxplayer
exit 0
E para permitir novamente a execução do script, é necessário recorrer ao terminal, na directoria onde foi criado o ficheiro e inserir:
chmod +x ytstream.sh #para permitir a sua execução
Para executar o script, abre o terminal na directoria do ficheiro e escreve "./ytstream.sh"
Estamos agora aptos a inserir o Raspberry Pi na primeira televisão da Associação de Estudantes