Controlando o Player Rhythmbox através do Arduino e Controle Remoto

Olá caros leitores desse humilde blog. Como vocês já devem ter visto no tutorial passado fiz uma demonstração de como ligar uma lâmpada através de um controle remoto, hoje irei demonstrar algo muito mais fácil porem bastante útil! Primeiramente contarei uma pequena historia de onde veio a inspiração para o projeto:

Certa noite estava deitado em minha cama ouvindo algumas músicas novas no meu notebook quando senti a necessidade de um controle remoto para poder controlar o player e assim ficar mais a vontade. Mas junto com essa necessidade veio o problema! – Meu notebook não possui controle remoto como é o caso de alguns modelos encontrados no mercado, então pensei: E agora, quem poderá me salvar? Imediatamente uma voz do meu subconsciente gritou a palavra ARDUINOOOOOOOO…(rsrsrsrsr)

Fiquei pensando por alguns instantes e cheguei a seguinte conclusão: Se eu posso acender uma lâmpada pelo controle remoto, conheço um pouco de python e uso um Player com documentação e código fonte livre, porque não tentar unir o útil com o agradável?!!!!! Arduino + Python + C + Controle Remoto + Rhythmbox.

Eis que surgiu este esquema em minha mente:

Depois de pensar nessa solução fui em busca da documentação do player, achei muitas coisas interessantes, porem, não poderiam ser aplicadas ao projeto. Em determinado momento descobri uma alternativa através do shell para manipular o Rhythmbox, na verdade era um modo cliente do player que possui varias opções de linha de comando entre elas as mais comuns como aumentar ou baixar o volume, tocar ou para uma musica entre outras…

Após ler a documentação iniciei a montagem do projeto.

Esquema montado no Fritzing:

Repare na montagem e na configuração dos pinos do receptor IR, essa configuração pode variar dependendo do fabricante e do sensor que você está usando…

Código do Arduino:

/*
# Autor: Fernando Krein Pinheiro
# Data: 01/03/2012
# Linguagem: C/C++

# ========= IMPORTANTE ===========
# O codigo esta livre para usar,
# citar e compartilhar desde que
# mantida sua fonte e seu autor.
# Obrigado.

=================================

Valores correspondentes
lidos do controle remoto.

OBS: Os valores podem variar
dependendo do controle usado!

BOTAO  -    VALOR
  1    -   4261527360
  2    -   4244815680
  3    -   4228104000
  4    -   4211392320
  5    -   4194680640
  6    -   4177968960
  7    -   4161257280
  8    -   4144545600
  9    -   4127833920

ON/OFF - 3977428800
VOL(+) - 3843735360
VOL(-) - 3776888640
CH (+) - 3827023680
CH (-) - 3760176960
MENU   - 4044275520
MUTE   - 4010852160
S      - 3960717120
AV     - 3944005440
*/

#include <WProgram.h>
#include <NECIRrcv.h>
#define InfraVermelho 10

#define ONOFF 3977428800
#define VOLMAIS 3843735360
#define VOLMENOS 3776888640
#define CHMAIS 3827023680
#define MENU 4044275520
#define STOP 4010852160
#define INFVOL 4261527360
#define QUIT 3960717120
#define PLAY 3944005440

unsigned long int valor_lido = 0;
NECIRrcv ir(InfraVermelho) ;

void setup()
{
  Serial.begin(9600);
  ir.begin() ;
}

void loop()
{
    while (ir.available())
    {
 	 valor_lido = ir.read();
         switch(valor_lido)
         {

     		case ONOFF:
		{
     			Serial.println(1);
     			break;
  		}
  		case PLAY:
  		{
     			Serial.println(2);
     			break;

  		}
  		case STOP:
  		{
     			Serial.println(3);
     			break;
  		}
  		case CHMAIS:
  		{
     			Serial.println(4);
     			break;

  		}
  		case MENU:
  		{
     			Serial.println(5);
     			break;

  		}
  		case VOLMAIS:
  		{
     			Serial.println(6);
     			break;
  		}
  		case VOLMENOS:
  		{
     			Serial.println(7);
    			 break;
  		}
  		case INFVOL:
  		{
    			 Serial.println(8);
     			 break;
      		}
		case QUIT:
  		{
     			Serial.println(9);
     			break;
  		}

	}
     }
}

Código em Python:


# Autor: Fernando Krein Pinheiro
# Data: 01/03/2012
# Linguagem: Python

# ========= IMPORTANTE ===========
# O codigo esta livre para usar,
# citar e compartilhar desde que
# mantida sua fonte e seu autor.
# Obrigado.

#=================================

import serial
import sys
import os
import time

porta = '/dev/ttyUSB0'
baud_rate = 9600
arduino = serial.Serial(porta, baud_rate)

openPlayer = "rhythmbox-client"
playMusic = "rhythmbox-client --play"
stopMusic = "rhythmbox-client --pause"
nextMusic = "rhythmbox-client --next"
informationSongArtist = "rhythmbox-client --print-playing"
volUp = "rhythmbox-client --volume-up"
volDown = "rhythmbox-client --volume-down"
informationVol = "rhythmbox-client --print-volume"
quitPlayer = "rhythmbox-client --quit"

os.system("clear")
print 'Iniciando a interface...'
time.sleep(3)
print 'Aguardando pelos comandos'

while True:

 	valor_recebido = arduino.readline()
        acao = int(valor_recebido)

	if acao == 1:
		print 'Abrindo o Player...'
		os.system(openPlayer)

	elif acao == 2:
		print 'Iniciando a Musica...'
                os.system(playMusic)

	elif acao == 3:
		print 'Pausando a Musica...'
		os.system(stopMusic)

	elif acao == 4:
		print 'Proxima Musica...'
		os.system(nextMusic)

	elif acao == 5:
		print 'Informacoes do Album e Artista'
		os.system(informationSongArtist)

	elif acao == 6:
		print 'Aumentando Volume...'
		os.system(volUp)

	elif acao == 7:
		print 'Baixando Volume...'
		os.system(volDown)

	elif acao == 8:
		print 'Informacoes sobre o Volume...'
		os.system(informationVol)

	elif acao == 9:
		print 'Fechando o Player...'
		os.system(quitPlayer)

	else:
		print 'Acao desconhecida....'

Para executar o código em Python basta digitar no terminal: python NomeDoArquivo.py

Vídeo de Demonstração do funcionamento:
Desculpe pela má qualidade do vídeo (foi gravado de um celular). As bandas que tocam no vídeo são: OverKill e Despised Icon

Pequena referencia para o controle do Player:
http://www.digipedia.pl/man/doc/view/rhythmbox-client.1/

Anúncios
por ferpinheiro Postado em Arduino

5 comentários em “Controlando o Player Rhythmbox através do Arduino e Controle Remoto

  1. oii eu eu tava botando esse codigo no arduino e deu erro em : NECIRrcv ir(InfraVermelho) ; o que deu erro foi o teu codigo ir MAS me diz uma coisa o sensor ir eu posso conseguir aonde tem algum equipamento domestico que tenha ele pra min pegar ?

    • sky net, esse código foi testado e esta funcionando corretamente no projeto que montei! Verifique se voce possui a biblioteca NECIRrcv.h e se não faltou alguma parte do código…

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s