18 julho 2014

Retropie

Meu filho mais velho está gostando de jogar video games, por incrível que parece gosta mais de jogar com controle do que no touch do tablet, ou no teclado do computador.

Resolvi então testar a distribuição Retropie, que é um Raspbian Customizado para executar vários emuladores de videogame.

Baixei a imagem de http://blog.petrockblock.com/download/retropie-project-image/

Gerei o SDCard como das vezes anteriores (Ver post anterior).

A primeira vez que você roda o Raspberry Pi com o Retropie ele não roda o raspi-config, ele apenas roda script para configurar os botões do controle do videogame (A,B, select, start e Setas), e não expande automaticamente o SDCARD.  Portanto, tem que sair do Retropie, com a Opção Exit, assim ele abrirá a linha de comando, e assim pode invocar o comando:

  • sudo raspi-config
E aí com utilizar a primeira opção para expandir o tamanho do SDCARD. Isso é importante, uma vez que não vi opção para executar os jogos (roms) fora do SDCARD.

Baixe umas roms no meu notebook, do site  http://www.freeroms.com/, alguns jogos do Atari (River Raid e Hero), jogos do Master System (Shinobi), MegaDrive (Sonic) e PSOne (Crash Bandid Coot).

Inseri novamente o SDCARD no meu notebook para copiar os arquivos, uma vez que estou usando Linux (Debian) posso fazer isso, se estiver usando outro OS (Microsoft ou Mac) é capaz de não conseguir enxergar a partição expandida pois utiliza o Sistema de Arquivos ext4.

Copiei as roms para o diretório /Retropie/roms, e coloquei novamente o SDCARD no Raspberry Pi para ver funcionar.

Para minha surpresa só aparecia a opção IBM (Dos) e dois jogos para PC, que já vem com a imagem do Retropie.

Pesquisando, descobri que tem que executar um script para que ele instale os emuladores. Utilizei o comando abaixo:
  • cd Retropi-setup
  • sudo ./retropie-setup 
Ele executa  um programa, e pergunta se deseja instalar os emuladores da própria imagem, ou se deseja instalar da internet (mais atualizado). Como estava sem Internet no momento, instalei direto da imagem, porém o recomendado é fazer pela Internet, se possível como indicado aqui: https://github.com/petrockblog/RetroPie-Setup

Após a instalação, que demora aproximadamente uns 5 minutos, ele gera dentro do diretório /home/pi/Retropie/roms um subdiretório para cada emulador, onde deve ser copiados os jogos.

Coloquei novamente o SDCard no notebook, e copie os jogos em seus respectivos diretórios. SDCard novamente no Raspberry Pi, e agora outras opções apareceram no Menu, onde pude rodar os jogos sem problemas, com exceção do Crash Bandit Coot (no emulador do PSOne), que ficou extremamente lento.

Os dois videos abaixo foram de grande valia.



MediaCenter Raspbmc

Resolvi testar a customização do Raspbian para Media Center, o chamado Raspbmc.

Existem duas distribuições para media center, uma baseada no OpenElec e outra baseada no próprio Raspbian que é o Raspbmc. Como já havia mexido com o Raspbian anteriormente, achei mais prático utilizar o Raspbmc

Baixei a imagem de http://www.raspberrypi.org/downloads/

Gravei a imagem utilizando os comandos:

Com o SDCARD inserido:
  • umount /dev/sdb1
  • dd bs=1M if=~/Downloads/raspbmc-2014-06-13.img of=/dev/sdb
  • sudo sync
Pronto, é só colocar o SDCARD no Raspberry PI e ligá-lo.

A primeira vez irá rodar o programa de configuração do Raspbian, que pode ser executado quando quiser através do comando
  • sudo raspi-config
Nele é possível configurar informações de fuso horário, tipo de teclado, ativação de SSH e principalmente expandir o espaço do SDCARD, se o seu SDCARD for maior que 4 GB.

Não realizei testes de transferência de arquivos pela rede, resolvi copiar os arquivos dentro do próprio SDCARD, uma vez que estava com um SDCARD de 16 GB.

Coloquei novamente o SDCARD no notebook, e como uso Linux (Debian) pude copiar diretamente os arquivos para o SDCARD, o caminho onde devem ser colocados os arquivos é:
  • /home/pi/.xbmc/playlist/video
Depois coloquei novamente o SDCard no Pi, e na opção de Videos, em Play List aparece os arquivos copiados. Nenhum era de alta resolução 1080p, mas mesmo assim gostei do teste realizado, apesar de ter usado uma TV de 21'' através da conexão RCA.

Tenho que fazer mais testes, mas acho que é um ótima opção para MediaCenter.  

 

25 março 2014

IDE Arduino no Debian 7


Decidi realizar experiências com o famoso microcontrolador Open Source Arduino. Adquiri um Arduino UNO. Decidi pela versão UNO primeiro pelo custo, que é a versão mais barata, e segundo pela quantidade de tutoriais e experiências publicadas na Internet.

Placa de Desenvolvimento - Arduino UNO

Para quem não conhece, o Arduino é um microcontrolador, não um mini-computador, o que o difere bastante do Raspberry Pi. O Pi, como micro-computador, possui processador, memória RAM, memória sólida (SD-Card), e interfaces de entrada e saída (ETHERNET, USB, RCA, HDMI, áudio e GPIO). O Arduino, como microcontrolador, possui memória interna, e suas interfaces para o mundo externo (Saídas e entradas digitais de 3.3V a 5V, entradas analógicas e pinos para RX e TX).

O Arduino tem sua utilidade maior para a comunicação com o mundo externo, é mais performático que o Raspberry Pi através da GPIO. Exemplos como: controlar servo-motores e leitura de sensores mais sensíveis, são ótimas funcionalidade para o Arduino.

O casamento do Raspberry Pi, como cabeça pensante e comunicação através TCP/IP com a Internet, e o Arduino como olhos, braços e pernas para a interação com o mundo externo, é uma ótima opção para construção de solução de IoT.

Como usuário do Debian 7, resolvi relatar o que é necessário para instalar e configurar o Arduino IDE,

Instalando os pacotes
Para a instalação dos pacotes basta utilizar o apt-get conforme as linhas abaixo:

$ sudo apt-get update
$ sudo apt-get install arduino arduino-core

Os pacotes foram instaladas junto com suas dependências, e o Arduino IDE ficou disponível entre os Aplicativos.

Executando o Arduino IDE
Para executar o Arduino IDE, basta digitar na linha de comando:

$ arduino 

Ou então, clicar no ícone do Arduino IDE entre os Aplicativos instalados.
  
Na primeira tentativa de executar o Arduino IDE, apareceu uma mensagem avisando que é necessário adicionar o meu usuário ao grupo 'dialout' para realizar a comunicação com a USB, e um botão com a opção de 'Adicionar'.

Cliquei no botão, e inseri a senha de root como foi solicitado. Apareceu outra janela avisando que as alterações só surtiriam efeito após reiniciar o sistema. Reiniciei o sistema e a mesma mensagem apareceu. Achei estranho, e fui procurar informações no site do Arduino, onde achei:

http://playground.arduino.cc/Linux/All#Permission

Verifiquei o grupo do device USB do Arduino com o comando:

$ ls -la /dev/tty*

O Arduino é idenficado como ttyAXXX, no meu caso a saída foi:

crw-rw---T   1 root dialout   166,   0 Mar 25 23:22 ttyACM0

Adicionei meu usuário ao grupo dialout com o comando:

$ sudo usermod -a -G dialout $user

Após isso, reinicie o Debian. Abri novamente o Arduino IDE e não apareceu mais a mensagem.

Testando
O Arduino IDE vem como série de exemplo que podem ser encontrados em /usr/share/arduino/examples. Escolhi o diretório 01.Basics/Blink e abri o arquivo Blink.ino, que é um código para fazer um led piscar no pino 13. Abaixo segue o código:

int led = 13;

// the setup routine runs once when you press reset:
void setup() {               
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);    
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(led, HIGH);   

  delay(1000);           
  digitalWrite(led, LOW);
  delay(1000);
}


O código é transferido através do botão "Upload", e após colocar o Led no pino 13, ele começa a piscar. O vídeo abaixo é do Youtube, que demonstra a execução do código Blink.ino, para demonstrar o resultado que consegui.


Apesar de ser uma aplicação boba, ascender o LED foi o teste que o ambiente está configurado e funcional, e agora irei tentar fazer a comunicação Raspberry Pi e Arduino. 

04 março 2014

Hack de Carnaval: PiFM



Descobri que é possível transmitir em FM com o RaspberryPi através de software, utilizando a GPIO4.

O Imperial Club Robotic Society, um clube de estudantes de robótica do Reino Unido, realizou uma competição, onde saiu o código chamado PiFm. O código em C, se utiliza da GPIO4 (saída para geração de clocks) uma vez que é possível programar essa saída para diferentes frequências (de 88 MHz a 108 MHz), é possível gerar um sinal em FM modulado através de software.


O único hardware adicional é um pedaço de fio, de cerca de 20 cm para funcionar como antena.

Basta baixar o software daqui, e agora através deste repositório do github em que copie, e fiz alguns testes.

Descompacte o arquivo, ou faça um clone do repositório do github, e já está pronto para utilizar.

Para realizar um teste, basta entrar no diretório do projeto executar o código binário "pifm", passando o arquivo .wav desejado e a frequência de transmissão.

# ./pifm sound.wav 100.3

ATENÇÃO: O arquivo wav deve ser de 16 bits e faixa de frequênciad e 22050 Hz. O código só trabalha nessas configurações de arquivo wave. Maiores informações neste fórum: http://www.element14.com/community/thread/25073/l/pifm--raspberry-pi-as-a-trasmitter--music-problem.



O projeto original já vem com um código em python chamado PiFm.py, que é uma função escrita em python de como invocar o arquivo binário escrito em C.

Fiz uma pequena alteração para fixar a frequência de 100.3 MHz, pois o rádio que estava utilizando para testes tinha dificuldades em sintonizar a frequência de 100 MHz que é a default do código escrito em C.

Depois criei um código exemplo, para demonstar que é possível chamar vários arquivos em sequência, e criei o myPiFm.py



Tudo bem simples, em questão de umas 2 horas foi possível realizar esse Hack. Mais uma façanha da plaquinha "bombril" Raspberry PI.

Fontes utilizadas:
http://www.icrobotics.co.uk/wiki/index.php/Turning_the_Raspberry_Pi_Into_an_FM_Transmitter

http://pplware.sapo.pt/linux/raspberry-pi/transforme-o-raspberry-pi-numa-emissora-fm-em-1-minuto/

http://www.hack4fun.com/raspberry-pi/turning-the-raspberry-pi-into-an-fm-transmitter-with-pifm/