Construa um indicador de LED com um Raspberry Pi (para e-mail, clima ou qualquer coisa)
O Raspberry Pi é uma ótima plataforma compacta para acoplar um indicador luminoso a todos os tipos de projetos - notificação meteorológica, novos e-mails, etc. Leia como mostramos como conectar um módulo LED ao seu Pi e configurar algumas notificações básicas.
Por que eu quero fazer isso??
Porque é divertido. Ao contrário de muitos dos nossos tutoriais, onde incluímos uma pequena sinopse no topo descrevendo exatamente o benefício que você obterá do projeto, a sinopse é bem curta nesse caso porque o benefício é simplesmente se divertir.
O Raspberry Pi é um dispositivo perfeito para brincar, experimentar eletronicamente e aprender programação. Ninguém necessidades um indicador de chuva ambiente em sua cozinha, por exemplo, mas construir um é um exercício divertido e um ótimo lembrete para levar seu guarda-chuva consigo em dias potencialmente tempestuosos..
O que eu preciso?
Para acompanhar o tutorial, você precisará de algumas coisas. Primeiro, assumimos que você já seguiu o nosso tutorial anterior: O Guia HTG para Introdução ao Raspberry Pi (e, portanto, ter um básico sobre a instalação do Rasbian em nosso Raspberry Pi).
Se você está procurando fazer este projeto com um orçamento, podemos confiantemente dizer-lhe que o mais novo modelo Raspberry Pi é um exagero significativo para o trabalho e nós encorajamos você a soprar a poeira de um velho Raspberry Pi que você foi empurrado no armário ou pegar um barato usado um fora eBay ou similar. Orçamento sábio o longo-no-dente um Raspberry Pi 1 modelo A ou modelo B roubado eBay por US $ 10-15 é um ajuste perfeito para este projeto sobre a compra de uma marca nova geração de $ 35 Pi atual.
Além de ter uma unidade Pi funcional com o Raspbian instalado, você precisará dos seguintes itens:
- 1 módulo do LedBorg (~ $ 5,00 com envio de $ 4 do Reino Unido para os EUA, funciona com todos os modelos Raspberry Pi).
- 1 Clear Raspberry Pi Case compatível com seu modelo Pi particular como este Raspberry Pi 1 Model B case.
Nota: O caso Pi claro / fosco é totalmente opcional, mas se você estiver usando um gabinete opaco, o indicador LED ficará escondido. Você precisará cortar um buraco no seu gabinete para liberar a luz ou usar um cabo de extensão GPIO com um kit de fuga - como este da Adafruit Industries - para conectar o LedBorg ao seu Raspberry Pi. Embora o uso do cabo breakout acrescente cerca de US $ 8 às despesas do projeto, ele oferece mais potencial para personalizar o produto final, pois é mais fácil colocar o LED dentro das coisas ou sob algo que você deseja iluminar..
Instalando o LedBorg
Enquanto você certamente poderia construir um indicador LED completamente arranhado (e uma pesquisa de mecanismo de busca irá atrair muitas pessoas que o fizeram) a organização Piborg produz um módulo LED tão compacto e barato, o LedBorg, que nós não pudemos. t resistir a usá-lo como base para o nosso projeto de indicador LED Raspberry Pi.
A instalação do módulo é instantânea, pois foi projetada para se encaixar diretamente sobre os pinos GPIO no Pi. Primeiro, desligue seu Pi e abra o estojo.
A parte mais importante do processo de instalação é que você oriente o módulo para que o ícone do LedBorg fique mais próximo do módulo RCA na placa Raspberry Pi (e, assim, a borda do LedBorg está nivelada com as bordas da placa Pi com o ressalto) porção do LedBorg pairando sobre a placa Pi e não fora da borda). Veja a foto acima.
Enquanto você tem o quadro Pi aberto, agora seria um excelente momento para cobrir os indicadores LED on-board (ao lado das portas USB), especialmente se você estiver usando um caso claro. Você não quer que seja confuso ler o seu indicador do LedBorg porque as luzes indicadoras de energia e rede são tão brilhantes.
Cobrimos a nossa com uma camada de fita isolante branca. Isso diminuiu o suficiente para que pudéssemos nos referir a eles, mas eles eram muito mais escuros do que o LedBorg, não era mais uma distração..
Uma vez que você tenha o LedBorg instalado e tenha, opcionalmente, coberto os indicadores LED do Pi com fita isolante, é hora de fechar o gabinete. Inicialize seu Pi antes de passar para a próxima fase do tutorial.
Instalando o software LedBorg
O PiBorg fornece um excelente pacote de software para o LedBorg, que inclui tanto um controlador GUI quanto drivers para acessar o LedBorg a partir da linha de comando..
Antes de começarmos, você precisa ter certeza de que está pegando o pacote certo para a sua versão do Rasbian e o número de revisão do seu painel Raspberry Pi..
Se a sua placa Raspberry Pi não tiver orifícios de montagem, é a Revisão 1. Se o seu Raspberry Pi tiver orifícios de montagem (localizados pelas portas USB e entre a alimentação e a porta HDMI), então é a Revision 2. Você também precisa saber a versão do kernel da sua instalação em Rasbian. Abra o terminal e digite o seguinte comando para verificar:
uname -r
Uma vez que você tenha o número de Revisão e o número do kernel, você pode visitar a seção Pacotes aqui para pegar o link para o seu pacote. No nosso caso, estamos usando uma placa Revision 1 com o kernel 3.6.11, então pegaríamos o arquivo raspbian-2013-02-09-rev1.zip.
Para instalar todos os brindes, precisamos abrir o terminal no Pi. e, em seguida, introduza os seguintes comandos para instalar o pacote do LedBorg.
Nota: Você deve substituir a URL no terceiro comando pela URL do pacote para sua combinação de placa / kernel.
mkdir ~ / ledborg-setup
cd ~ / ledborg-setup
wget -O setup.zip http://www.piborg.org/downloads/ledborg/raspbian-2013-02-09-rev1.zip
descompacte setup.zip
chmod + x install.sh
./install.sh
Neste ponto, você agora tem o wrapper GUI para os drivers do LedBorg e os próprios drivers instalados. Na área de trabalho do Raspbian, você verá um ícone para o wrapper da GUI:
Vá em frente e clique no ícone do LedBorg para iniciar o wrapper da GUI. Você será tratado com a interface do selecionador de cores da seguinte forma:
Agora é o momento perfeito para garantir que seu módulo esteja funcional. Escolha qualquer cor, exceto preto, para experimentá-la. Vamos testá-lo escolhendo algumas cores:
Parece bom! É brilhante e o plástico fosco do case que encomendamos para o projeto oferece difusão moderada. Se você quiser brincar com o módulo LED mais antes de prosseguir, clique em Modo Demo:
No modo de demonstração, você pode percorrer todas as cores em várias velocidades, verificar a saída alta / baixa e, por outro lado, colocar o módulo LED nos passos.
É aqui na seção Demo Mode que você também pode transformar seu LedBorg no primeiro de muitos indicadores. Ao selecionar a CPU na seção Cores, o LED começará a mudar de verde para amarelo para vermelho para indicar carga no processador ARM do Raspberry Pi. Sugerimos que você mude a Velocidade para Lento enquanto estiver nele - o Fast atualiza o LED muito rapidamente e faz com que o indicador da CPU distraia em vez de ser útil.
Além de usar a interface GUI para selecionar cores, você pode escolher cores no terminal usando valores RGB. Abra o terminal e digite o seguinte comando para desligar o LED:
echo "000"> / dev / ledborg
A maneira como o LedBorg lida com valores RGB é que 0 significa que o canal está desligado, 1 significa que o canal tem metade da potência e 2 significa que o canal está com potência máxima. Então, por exemplo, 001 definiria o canal vermelho em 0%, o canal verde em 0% e o canal azul em 50% de potência.
Altere o valor para 002 e a saída do LED permanece azul, mas fica mais brilhante porque o canal Azul está agora com 100% de saída. Altere o valor para 202 e o vermelho e o azul na potência máxima combinam para criar uma cor magenta.
Agora que sabemos como manipular o LED manualmente, vamos analisar os scripts para transformar nosso LED de uma luz simples em um indicador real.
Configurando seu LedBorg como um indicador de chuva
Para esta parte do tutorial, vamos combinar várias coisas para transformar nosso módulo LED do LedBorg em um indicador de chuva baseado na previsão do tempo para a nossa localização. Usaremos um script Python para chamar uma API climática que, por sua vez, lerá a chance de chuva para o dia e, em seguida, alternará o LED para azul brilhante para indicar a chuva prevista..
Primeiro, precisamos obter uma chave de acesso à API para o Weather Underground. Para uso pessoal e pequenos projetos de desenvolvimento, a API é gratuita. Visite a página de inscrição da Weather API aqui e inscreva-se em uma chave de API.
Depois de ter sua chave de API, visite o Weather Underground e pesquise a cidade que você deseja monitorar. No nosso caso, vamos monitorar San Fransisco, CA. O URL da página de previsão de São Francisco é:
http://www.wunderground.com/US/CA/San_Francisco.html
A parte importante para os nossos propósitos é a última parte da URL: /CA/San_Francisco.html. Vamos usar isso para editar o URL de previsão da ferramenta da API. O URL base é:
http://api.wunderground.com/api/YOUR KEY API / forecast / q / STATE / CITY.json
Você pode gerar a previsão para qualquer cidade dos EUA inserindo sua chave de API, o código de estado de duas letras e o nome da cidade no URL obtido dos resultados de pesquisa do Weather Underground.
Depois de ter o URL da API com sua chave de API e estado / cidade inseridos, você pode editar o seguinte script Python criando um novo documento de texto em seu Pi usando o Leafpad e colando o seguinte código nele:
de urliben import urllib2
importar json
req = urlopen ('http://api.wunderground.com/api/CODE API KEY / forecast / q / STATE / CITY.json')
parsed_json = json.load (req)
pop = int (parsed_json ['previsão'] ['txt_forecast'] ['previsão'] [0] ['pop'])# O seguinte é um valor de depuração.
# Edite o hash e mude
# o inteiro para um 0-100 para testar
# a resposta do LED.# pop = 0
print 'A chance atual de precipitação é .'. format (pop)
# A configuração padrão é ligar o LED
# para qualquer chance de chuva acima de 20%. Você pode ajustar
# o valor em "if pop> 20:" como você deseja.
se pop> 20:
LedBorg = open ('/ dev / ledborg', 'w')
LedBorg.write ('002')
del LedBorg
imprimir ('Chuva!')
outro:
LedBorg = open ('/ dev / ledborg', 'w')
LedBorg.write ('000')
del LedBorg
print ('Sem chuva!')
Salve o arquivo como wunderground.py no diretório / home / pi /. Abra o terminal e digite o seguinte comando:
python wunderground.py
Se você inseriu sua chave de API e seus códigos de estado / cidade corretamente, ela deve retroceder uma resposta que se pareça com:
Se a precipitação é prevista para a sua área, a saída do seu LedBorg deve ser semelhante a:
Agora, esperar por um dia chuvoso para testar corretamente o roteiro seria tedioso. Se não houver chance de chuva em sua área hoje e você quiser ver o LED aceso, edite o script wunderground.py e substitua o valor de passagem “pop = pop” na linha 13 por um valor maior que 20, como o 60 que nossa previsão retornou. Apenas lembre-se de mudar a linha de volta para “pop = pop” quando estiver pronto.
A etapa final é configurar um cron job para executar automaticamente o script que acabamos de salvar em um intervalo regular para manter o indicador LED atualizado. Como essa tarefa é necessária para esse script e para o indicador de email a seguir, abordaremos a configuração de uma tarefa cron depois de mostrarmos como configurar o outro script.
Configurando seu LedBorg como um indicador do Gmail
Quem não gosta da correção de dopamina que acompanha o recebimento de novos e-mails em sua caixa de entrada? Nesta parte do tutorial, vamos mostrar como usar o LedBorg como um novo indicador do Gmail. Assim como da última vez, vamos combinar uma entrada externa (neste caso, um feed Atom em vez de uma API) e um script simples para conduzir nosso LED.
Precisamos expandir um pouco a funcionalidade da nossa instalação do Python instalando o FeedParser, uma ferramenta de leitura de feeds RSS / Atom Python. Abra o terminal e digite o seguinte comando:
sudo easy_install feedparser
Quando a instalação estiver concluída, poderemos começar a criar nosso script de verificação do Gmail. Novamente, usando o Leafpad, cole o seguinte texto no editor. Altere o nome de usuário e a senha para corresponder ao nome de usuário e senha da conta do Gmail que você deseja verificar.
import feedparser
# Digite seu nome de usuário do Gmail
# e senha. Não incluir
# the @ gmail.com porção de
# seu nome de usuário.
nome de usuário = "nome de usuário"
senha = "senha"
mail = int (feedparser.parse ("https: //" + nome de usuário + ":" + senha + "@ mail.google.com/gmail/feed/atom")["feed"]["fullcount"]]
# O seguinte é um valor de depuração.
# Edite o hash e mude
# o inteiro para um 0 ou 1 para testar
# a resposta do LED.# mail = 0
se mail> 0:
LedBorg = open ('/ dev / ledborg', 'w')
LedBorg.write ('020')
del LedBorg
print ('Mail!')
outro:
LedBorg = open ('/ dev / ledborg', 'w')
LedBorg.write ('000')
del LedBorg
print ('Não mail!')
Salve o script como gmailcheck.py. Abra o terminal e digite o seguinte comando:
python gmailcheck.py
Se você tiver um e-mail na sua caixa de entrada do Gmail, o LED ficará verde e você receberá uma resposta como esta:
Se você tiver um e-mail na sua caixa de entrada do Gmail, seu LedBorg será assim:
Assim como o script de verificação de chuva, incluímos um valor de depuração. Se você não tiver um novo e-mail, envie um e-mail para aumentar a contagem da caixa de entrada para 1 ou edite o hash de comentário e altere a linha de depuração para "mail = 1" para testar o script. Lembre-se de reverter a linha quando terminar de testar.
Entre na próxima seção do tutorial para definir seu script do Gmail para ser executado em um agendamento.
Configurando um trabalho Cron para executar seu script
Agora que temos dois scripts para jogar, precisamos configurar um cron job para executá-los ao longo do dia para manter o indicador LED atual.
A primeira coisa que queremos fazer é desligar o LED se ele estiver atualmente em nossos experimentos anteriores. No tipo de terminal:
echo “000”> / dev / ledborg
Enquanto você ainda está na linha de comando, você pode abrir o editor cron. Se você nunca configurou um cron job antes, sugerimos fortemente que consulte nosso guia para usá-lo aqui. Dito isso, vamos orientá-lo na criação de um cronograma básico aqui.
No tipo de terminal:
sudo crontab -e
Isto irá abrir a tabela cron do Raspbian no editor de texto Nano. Use as setas do teclado para rolar até a parte inferior. É aqui que vamos configurar o trabalho recorrente do cron para nossos scripts em Python.
Se você quiser configurar o script rain, digite a seguinte linha na tabela cron:
* / 5 * * * * python /home/pi/wunderground.py
Pressione CTRL + X para sair; selecione sim para salvar e sobrescrever a tabela cron existente. O valor que inserimos na tabela cron “* / 5 * * * *” define o script para ser executado a cada 5 minutos, para sempre.
A cada 5 minutos é um bom intervalo de tempo para um script que verifica a previsão de chuvas - você poderia até argumentar que é um pouco agressivo demais - mas se você quiser manter o controle do seu e-mail é um pouco longo demais para ser notificado . Se você estiver configurando a programação do script de notificação do Gmail, insira a seguinte linha na tabela cron:
* / 1 * * * * python /home/pi/wunderground.py
Esta entrada executa o script gmailcheck.py a cada minuto para uma notificação de atualização muito mais rápida.
Isso é tudo que existe para isso! Você pode experimentar seus próprios scripts Python levantando as instruções if / else das nossas e testando-as com novas variáveis. Se você puder encontrar uma fonte de entrada para os dados, você pode transformá-la em uma variável nas médias do mercado de ações script Python, contagens de pólen, menções do Twitter, se houver uma API para isso, você pode transformá-la em um indicador LED de ambiente.
Finalmente, quero agradecer a todos os grandes recursos que usei para trabalhar neste projeto. Já faz um pouco mais de uma década desde que eu estava escrevendo programas ativamente e foram necessários alguns golpes para tirar a poeira e a ferrugem. Os contribuidores do / r / LearnPython me ajudaram a mexer na saída da API para o Weather Underground, estudando como Michael, da Mitch Tech, lidou com o Gmail Atom, facilitou a análise para o LedBorg, e estudou os módulos de aprendizado do Python na Code Academy. uma ótima maneira de entender a sintaxe básica e a estrutura de uma linguagem que eu nunca tinha usado antes.