Tutorial Raspberry Pi – Sistema de notificação do twitter com LED
Por Bruno Santos da Comunidade Linux Pplware
O Raspberry Pi é um dos mini PCs mais populares e potentes, que tem servido de base a muitos projectos interessantes (pode consultar os projectos na página do projecto aqui). Este mini equipamento, do tamanho de um cartão de crédito é capaz de reproduzir vídeo com qualidade Blu-ray e renderizar gráficos 3D, entre outras tarefas.
No seguimento dos nosso artigos sobre o Raspberry Pi, , hoje vamos aprender um pouco a utilizar o GPIO (General purpose Input/Output) para termos um LED como sistema de notificação do twitter.
Para criar então um sistema de notificações do Twitter, com base num LED do Raspberry PI basta que acompanhem este tutorial.
Preparar o Raspberry PI
Primeiro, vamos efetuar o download de uma distribuição Linux para o Raspberry PI . Para iniciantes, o Raspbian é uma excelente escolha. Para isso basta ir aqui e escolham a vossa distribuição.
Para a instação, basta um cartão SD de pelo menos 4GB. Para começar, num terminal, descompactem o ficheiro que descarregaram:
unzip 2013-05-25-wheezy-raspbian.zip Archive: 2013-05-25-wheezy-raspbian.zip inflating: 2013-05-25-wheezy-raspbian.img |
Assim, que tiverem a imagem, coloquem o cartão SD no vosso leitor. Certifiquem-se que ele não está montado. Conforme o ambiente de trabalho usado, deverá (ou não ) aparecer uma nova janela do vosso explorador de ficheiros com o conteúdo do cartão (se algum).
Os comandos seguintes devem ser executados como root ou usando o comando sudo.
Executem o comando df -h e vejam se ele está montado ou não. Deverá ser listado como “/dev/sdb1” ou “/dev/sdc1”, conforme o numero de dispositivos que tenham. Recordem-se que, consoante as partições que tenham no cartão, o dispositivo pode aparecer várias vezes.
Se aparecer listado, desmontem o cartão (se aparecer várias vezes, desmontem todas as partições). Neste tutorial vamos usar o dispositivo sdb.
Agora, vamos colocar a imagem que descarregamos no cartão:
dd if=2013-05-25-wheezy-raspbian.img of=/dev/sdb bs=4M |
462+1 records in 462+1 records out 1939865600 bytes (1.9 GB) copied, 183.326 s, 10.6 MB/s |
Nota: Relativamente ao tamanho dos blocos de copia do dd, 4M (ou seja, copia 4 MB de cada vez) deverá funcionar a maioria das vezes. Se não, podem experimentar 1M – mas será mais demorado. Podem também experimentar com valores superiores a 4M.
Explicação do comando:
- if= Lê um ficheiro, em vez do stdin
- of= Escreve para um ficheiro, em vez de stdout
- bs= numero de bytes copiados de cada vez.
Se virem que está a demorar muito tempo, podem terminar o processo (noutro terminal).
Se tudo correr bem, executem sync (ou sudo sync) e retirem o cartão SD e coloquem no vosso PI !
Criar aplicação no Twitter
Para criar uma aplicação no twitter, deve seguir os seguintes passos:
Passo 1) Ir a https://dev.twitter.com/
Passo 2) Autentiquem-se com o vosso utilizador
Eu tive bastante dificuldade em encontrar depois a página certa, mas para mais rapidamente irem ao local para registar a vossa aplicação acedam aqui
Pressionem em “Create a new application”
Preencham os campos necessários:
- Nome: Nome da vossa aplicação – A palavra Twitter não pode ser usada.
- Descrição: Uma pequena descrição da aplicação.
- Website: Coloquem o que quiserem. A vossa página do twitter serve.
- Callbackurl: Não precisam de preencher.
Assim que avançarem, irão ver uma tabela com as vossas definições de autenticação.
Na mesma página, necessitam de criar tokens de acesso. Para isso, basta pressionar o botão “Create my access token”.
Posteriormente, podem verificar na opção de “OAuth tool" os tokens de acesso.
Raspberry PI
Ligações hardware
Para acender um LED, temos que o ligar ao Raspberry PI.
O Raspberry PI tem aquilo que se chama um GPIO (General purpose Input/Output). Os PINs podem ser ligados ou desligados (HIGH/LOW) para controlar dispositivos externos. É através do GPIO que vamos acender o LED.
Nota: Os números mostrados nas duas colunas do meio mostram qual a posição do PIN internamente ao Raspberry PI, não a posição física no GPIO – A ordem apresentada na tabela é a posição física no GPIO.
Aqui ficam mapas do GPIO do Raspberry PI, das duas versões:
Imagens da hobbytronics.co.uk
Para o nosso pequeno projecto, vamos usar o GPIO4 – PIN 7 internamente ao Raspberry PI – 4º PIN físico no GPIO.
O LED usado é um LED 3mm Luz Azul de alto brilho. Para ser correto, para ligar o LED ao GPIO4 de 3.3v, devemos ligar uma resistência de 270 Ohms pelo meio. No meu caso não liguei e funcionou perfeitamente – mas pelo sim pelo não, liguem.
Aqui fica um esquema da ligação do LED (com resistência):
Após tudo ligado (sem resistência), este é o aspecto do PI:
Uma imagem mais próxima da ligação do LED:
Software
Agora que já temos o hardware preparado, vamos tratar do software. Liguem o vosso PI e deixem-no arrancar para a vossa distribuição escolhida.
Existe um pacote oficial do Twitter para Python, que temos que instalar.
- Ir à página oficial e descarregar o pacote
- Descomprimir com “tar -zxvf twitter-x.xx.x.tar.gz”
- Entrar na diretoria: cd twitter-x.xx.x”
- Instalar com “python setup.py install” - (se não forem root, usem sudo antes do comando)
- Podem remover a diretoria se desejarem.
Se tiverem algum problema com a instalação, pode faltar a instalação do pacote python-setuptools. Instalem o pacote e experimentem novamente.
sudo apt-get install python-setuptools |
Escrever a aplicação
Estamos prontos para começar a diversão. Abram um novo ficheiro, usando o vosso editor preferido.
Nota: Conforme o site onde foi retirado este pequeno script (compu2learn.co.uk), no final “adormecemos 1 minuto” porque o Twitter adicionou restrições ao número de chamadas à API num determinado momento. Podem colocar menos tempo, mas arriscam-se a um bloqueio de 15m.
Escrever a aplicação
Estamos prontos para começar a diversão. Abram um novo ficheiro, usando o vosso editor preferido.
vi TwettRaspberryPI.py |
Nota: Conforme o site onde foi retirado este pequeno script (compu2learn.co.uk), no final “adormecemos 1 minuto” porque o Twitter adicionou restrições ao número de chamadas à API num determinado momento. Podem colocar menos tempo, mas arriscam-se a um bloqueio de 15m.
Importar as bibliotecas necessárias
Criar uma variável que irá guardar o URL para as chamadas à API
Criar quatro variáveis que irão guardar os nossos dados de autenticação (definidos no inicio)
Criar um objeto que será usado para interagir com a API do Twitter
Preparar os objectos para o GPIO e certificar-mo-nos que os PINs são os corretos
A parte interessante vem agora – Iremos procurar por atualizações ao Twitter que possam indicar que o LED deva ser ligado ou desligado.
Finalmente, guardem o programa e executem-no. Experimentem enviar tweets pelo vosso utilizador e ver o LED a acender ou a apagar.
Nota: Caso vos dê algum erro ao executar o programa porque não encontra a biblioteca simplejson, basta instalar e executar novamente:
sudo apt-get install python-simplejson |
Este pequeno tutorial é apenas uma amostra do que se pode fazer com um RaspberryPI e a manipulação do GPIO. Com um pouco de electrónica e imaginação conseguem fazer projetos excelentes. Obtenha aqui o script usado no projecto deste artigo
Referências
- http://compu2learn.co.uk/raspberry-pi/twitter-to-led
- http://elinux.org/RPi_Easy_SD_Card_Setup
- https://pypi.python.org/pypi/RPi.GPIO
- http://www.rpiblog.com/2012/09/using-gpio-of-raspberry-pi-to-blink-led.html
- https://projects.drogon.net/raspberry-pi/wiringpi/pins/
- http://elinux.org/Rpi_Low-level_peripherals
Este artigo tem mais de um ano
Keep them coming!
Como o LED acenderá por pouco tempo, este não vai queimar…
So se estivesse muito tempo ligado directo sem resistência é que queimava…
A questão nem é tanto proteger o LED. Um LED de auto brilho aguenta bem os 3,3V mesmo sem resistência (máx 3,4V). Mesmo que queime, são 20 ou 30 cêntimos. Nada de grave!
A questão é mesmo proteger a saída GPIO. Não conheço a corrente máxima admitida por cada pino da saída (é uma questão de ver o datasheet), mas o consumo de corrente de um LED destes polarizado com 3,3V deve andar pelos 20mA. Se ultrapassar o valor admitido pelo RPi, podemos ter chamusco. Com a resistência, que até pode ter um valor um pouco menor, 100 ou 150 Ohms, já limita bastante a corrente. Claro que temos menos brilho.
Queimaria?
Uma led branca/azul tem um Vd mair que 3.3v, por isso nao é necessário nenhuma resistencia
Muito bom, estava à espera de um tutorial para brincar com a GPIO!!!
Já agora, nota de preguiçoso, os comandos serem selecionáveis (sem ser em imagem) é que era ehehe Mas pronto, assim obriga a teclar o código e obriga a tentar prestar atenção sem ser COPY&PASTE.
Obrigado,
Ribas
eh eh eh, Pois, o problema é que o código ficava meio “ranhoso”. Tens no final o download do script
Antes de mais parabéns pelo tutorial, é bastante útil para os entusiastas de tecnologia que querem começar a brincar um pouco com a electrónica.
Falando agora do pequeno script, não percebo qual o motivo da criação da variável “turl”, ela nunca é usada no código a não ser na declaração. Da mesma forma que não percebo também o import da biblioteca json, não consigo perceber onde é usada.
Não sou programador de Python e portanto posso estar em erro, mas o código até parece ser simples de perceber.
Tens toda a razão.
Na altura nem me apercebi. Não são utilizadas. Podes comentar ou remover.
No entanto, sem experimentar não faço ideia – não sei se as funções twitter_results e statuses.home_timeline() usam ou não as funções de json internamente e requerem que sejam importadas . Só testando.
Abraco
Olá, tenho visto os tutoriais do Pplware sobre o Raspberry e tenho adorado. Queria saber onde posso comprar um Raspberry?
Boas Francisco. Manda-me um mail sff ppinto AT pplware.com
boas pedro.
também queria comprar um.
na inmotion
Em primeiro lugar gostava de dar os parabéns ao autor do artigo e à iniciativa de colocar artigos criativos baseados no Raspberry.
Aproveito já agora, para fazer uma pequena correcção. Tenho visto sucessivamente o termo renderizar aqui em artigos, esse termo não existe em português (não sei se existe em PT-BR), a tradução certa de rendering é render (sinónimo de produzir)
Não dá para fazer tambem para o facebook em vez do twitter?
Onde se pode comprar esses 2 cabos que ligam do raspberry pi ao led?
Cumps
Ola !
Esses cabos foram comprados na inmotion.pt, mas qualquer loja de eletronica deverá ter. São chamadas jumper wires ! (depois tens varios – macho-macho, femea-macho, femea-femea : os que estão a ligar o raspberry ao LED)
Abraco
Podes comprar ou ir à sucata de casa buscar. Para quem gosta de inventar, pode tirá-los de um velho PC das fichas de ligação da motherboard ao painel frontal. No LED pode-se soldar com estanho.
Alguem me sabe dizer se esta pequena bomba desbloqueia canais de tv 🙂
Ou foruns onde possa aprender mais alguma coisa
O Rpi desbloquear .. não desbloqueia nada que eu saiba.. mas serve com media center (Openelec de preferência um recente com o libRTMP já actualizado) e com addon pra TV Portuguesa para ver tv em streaming (Plugin para ver canais portugueses no XBMC com relativa boa qualidade), e o addon navi-x tem centenas de canais mundiais.. o DevilSport..
http://fightnightaddons.atwebpages.com/
Olá, obrigado por mais este artigo, devo estar a receber o meu primeiro raspberry esta semana, vou utiliza-lo com raspbmc, e posteriormente estou a pensar em adquirir outro para aprender mais de linux, etc, isto claro quando tiver mais tempo livre. Era interessante a criação de uma area de “investigação ou e-learning de raspberry”. um abraço
Tutorials do raspberry são sempre bem-vindos!
Bruno Santos,
a loja onde comprou os componentes inmotion é de confiança?
Obrigado
Ola Pedro.
Ate hoje, nunca falhou. E ja gastei lá bom dinheiro com os componentes para o Arduino. As encomendas, em 3 dias estão no destino – Muito bom. e o melhor de tudo é Portuguesa ! Eu recomendo