1Aug

Construa um indicador LED com um Pi de framboesa( para email, tempo ou qualquer coisa)

O Raspberry Pi faz uma ótima plataforma compacta para conectar uma luz indicadora para todos os tipos de projetos - notificação meteorológica, novos e-mails, etc. Leia mais como mostramos como conectar um módulo LED ao seu Pi e configurar alguns básicosnotificações.

Por que eu quero fazer isso?

Porque é divertido. Ao contrário de muitos de nossos tutoriais, onde incluímos um pouco de discussão no topo, descrevendo exatamente o benefício que você obterá do projeto, o blurb é bastante curto neste caso porque o benefício é simplesmente se divertir.

O Raspberry Pi é um dispositivo perfeito para brincar, experimentar com eletrônicos e aprender alguma programação. Ninguém precisa de um indicador de chuva ambiente em sua cozinha, por exemplo, mas construir um é um exercício divertido e um excelente lembrete para trazer seu guarda-chuva com você em dias potenciais de tempestade.

O que eu preciso?

Para acompanhar o tutorial, você precisará de algumas coisas. Em primeiro lugar, assumimos que você já seguiu o nosso tutorial anterior: O Guia do HTG para Começar com o Raspberry Pi( e, assim, ter os conceitos básicos cobertos para instalar o Rasbian no nosso Raspberry Pi).

Se você está olhando para fazer este projeto com um orçamento, podemos confiantemente dizer-lhe que o mais novo modelo de framboesa Pi é um excesso significativo para o trabalho e nós o encorajamos a tirar a poeira de um Pi Raspberry antigo que você obteveempurrado no armário ou pegar um usado barato fora do eBay ou similar. Por orçamento, o Long-in-the-tooth, um Raspberry Pi 1 Modelo A ou Modelo B, arrebatado o eBay por US $ 10-15 é um ajuste perfeito para este projeto ao comprar uma nova geração atual de $ 35 Pi.

Além de ter uma unidade Pi funcional com o Raspbian instalado, você precisará das seguintes coisas:

  • 1 módulo LedBorg( ~ $ 5.00 com US $ 4 do Reino Unido para 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 modelo B case.

Nota: O caso Pi claro / fosco é inteiramente opcional, mas se você estiver usando um caso opaco, então seu indicador LED será escondido no interior. Você precisará cortar um buraco no seu caso para deixar a luz ou usar um cabo de extensão GPIO com um kit de fuga - como este da Adafruit Industries - para amarrar o LedBorg ao seu Raspberry Pi. Ao usar o cabo breakout adiciona cerca de US $ 8 à custa do projeto, ele oferece mais potencial para personalizar o produto final, pois você pode colocar mais facilmente o LED dentro das coisas ou em algo que você deseja iluminar.

Instalando o LedBorg

Embora você possa criar um indicador de LED completamente diferente de zero( e um inquérito no mecanismo de pesquisa irá gerar muitas pessoas que o fizeram), a organização Piborg produz um módulo LED tão compacto e barato, o LedBorg, que não conseguimos resistir a utilizá-lo como base para o nosso projeto de indicador de LED Raspberry Pi.

Instalar o módulo é um encaixe, pois é projetado para caber diretamente sobre os pinos GPIO no Pi. Primeiro, desligue o seu Pi e abra a caixa.

A parte mais importante do processo de instalação é que você orienta o módulo para que o ícone LedBorg seja o mais próximo do módulo RCA na placa Raspberry Pi( e, portanto, a borda do LedBorg está nivelada com as bordas da placa Pi com oporção pendente do LedBorg pendurado sobre a placa Pi e não fora da borda).Veja a fotografia acima.

Enquanto você tem a placa Pi aberta, agora seria um excelente momento para cobrir os indicadores LED a bordo( ao lado das portas USB), especialmente se você estiver usando um caso claro. Você não quer confundir para ler seu indicador LedBorg porque as luzes indicadoras de energia e rede são tão brilhantes.

Cobrimos o nosso com uma camada de fita elétrica branca. Isso os apagou o suficiente para que ainda pudéssemos fazer referência a eles, mas eles eram muito mais fracos que o LedBorg, não era mais uma distração.

Depois de ter o LedBorg instalado e, opcionalmente, cobriu os indicadores LED do Pi com fita elétrica, é hora de fechar a caixa de segurança. Arranque 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çar, você precisa ter certeza de que está agarrando o pacote certo para a sua versão do Rasbian e a revisão do seu quadro de framboesa.

Se a sua placa de framboesa não tem orifícios de montagem, é a Revisão 1. Se o Raspberry Pi tiver orifícios de montagem( localizados nas portas USB e entre a porta de alimentação e HDMI), é a Revisão 2. Você também precisa conhecer o kernelversão da sua instalação Rasbian. Abra o terminal e insira o seguinte comando para verificar:

uname -r

Depois de ter o número de revisão e o número do kernel, você pode visitar a seção de Pacotes aqui para pegar o link para o seu pacote. No nosso caso, estamos usando um quadro da Revisão 1 com o kernel 3.6.11 para que possamos pegar o arquivo raspbian-2013-02-09-rev1.zip.

Para instalar todas as peças, precisamos abrir o terminal no Pi.e depois insira os seguintes comandos para instalar o pacote LedBorg.

Nota: Você deve substituir o URL no terceiro comando pelo 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
descomprimir setup.zip
chmod + x install.sh
. /install.sh

Neste ponto você agora possui o wrapper GUI para os drivers LedBorg e os próprios drivers instalados. Na sua área de trabalho Raspbian você verá um ícone para o wrapper GUI:

Vá em frente e clique no ícone LedBorg para iniciar o wrapper GUI.Você será tratado com a interface do seletor de cores, assim:

Agora é o momento perfeito para garantir que o seu módulo seja funcional. Escolha qualquer cor, economize para preto, para experimentá-lo. Vamos testá-lo escolhendo algumas cores:

Parece bom!É brilhante e o plástico fosco do invólucro que pedimos para o projeto oferece difusão moderada. Se você quiser jogar com o módulo LED mais antes de avançar, clique em Modo Demo:

No modo de demonstração, você pode percorrer todas as cores a várias velocidades, verificar a saída alta / baixa e, de outra forma, colocar o módulo LED através dos ritmos.

Está aqui na seção Demo Mode, que também pode transformar seu LedBorg em primeiro de muitos indicadores. Ao selecionar 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 alterar a Velocidade para Lentamente enquanto você está nela - Rápida atualiza o LED muito rapidamente e faz com que o indicador da CPU distraia em vez de útil.

Além de usar a interface GUI para selecionar cores, você pode escolher cores do terminal usando valores RGB.Abra o terminal e digite o seguinte comando para desligar o LED:

eco "000" & gt;/dev/ ledborg

A maneira como o LedBorg lida com valores RGB é que 0 significa que o canal está desligado, 1 significa que o canal é de meia potência e 2 significa que o canal está com potência total. Assim, por exemplo, 001 ajustaria o canal vermelho em 0%, o canal verde a 0% eo canal azul com 50% de potência.

Mude o valor para 002 e a saída do LED fica azul, mas fica mais brilhante porque o canal azul está agora com 100% de saída. Mude o valor para 202 e o vermelho e o azul em plena potência combinam para fazer uma cor magenta.

Agora que sabemos como manipular o LED manualmente, vejamos usando scripts para transformar nosso LED de uma luz simples para um indicador real.

Configurando o LedBorg como indicador de chuva

Para esta parte do tutorial, estaremos penteando várias coisas juntas para transformar o nosso módulo LedBorg LED em um indicador de chuva com base na previsão do tempo para a nossa localização. Usaremos um script Python para chamar uma API de clima que, por sua vez, lê a chance de chuva para o dia e, em seguida, alternar o LED de desligado para azul brilhante para indicar a chuva prevista.

Primeiro, precisamos obter uma chave de acesso à API para Weather Underground. Para uso pessoal e pequenos projetos de desenvolvimento, a API é gratuita. Visite a página de inscrição da API do tempo aqui e inscreva-se para obter uma chave da API.

Depois de ter sua chave API, visite o Weather Underground e procure a cidade que deseja monitorar. No nosso caso, vamos monitorar San Fransisco, CA.O URL da página de previsão de San Fransisco é:

http: //www.wunderground.com/US/CA/ San_Francisco.html

A parte importante para nossos propósitos é a última parte do URL: /CA/ San_Francisco.html. Nós vamos usar isso para editar o URL da previsão para a ferramenta API.O URL de base é:

http: //api.wunderground.com/api/ SUA CHAVE DE 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 da URL que você retirou do seu TempoResultados de pesquisa subterrânea.

Depois de ter o URL da API com sua chave de API e estado / cidade inserida, você pode editar o seguinte script de Python criando um novo documento de texto em seu Pi usando o Leafpad e colando o seguinte código:

de urllib2 importar urlopen
importar json

req = urlopen( 'http: //api.wunderground.com/api/ SUA TECLA DE API /forecast/q/STATE/ CITY.json')
parsed_json = json.load( req)
pop = int( parsed_json ['forecast'] ['txt_forecast'] ['forecastday'][0] ['pop'])

# O seguinte é um valor de depuração.
# Edite o hash e altere
# 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 "se pop & gt; 20:" como desejar.

se pop & gt;20:
LedBorg = aberto( '/dev/ ledborg', 'w')
LedBorg.write( '002')
del LedBorg
print( 'Rain!')
else:
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 adequadamente, ele deve retroceder uma resposta que se parece com:

Se a precipitação está prevista para sua áreasua saída do LedBorg deve parecer:

Agora, aguardando um dia chuvoso para testar corretamente o script, seria tedioso. Se não houver chance de chuva na sua área hoje e você quiser ver o LED acender, edite o script wunderground.py e substitua o valor de passagem "pop = pop" na linha 13 por um valor maior que 20, como os 60que nossa previsão retornou. Basta lembrar de mudar a linha de volta para "pop = pop" quando terminar.

O passo final é configurar um trabalho cron para executar automaticamente o script que acabamos de salvar em um intervalo regular para manter o indicador LED atual. Uma vez que esta tarefa é necessária tanto para este script quanto para o indicador de e-mail que se segue, vamos abordar a configuração de um trabalho 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 vem com o novo e-mail em sua caixa de entrada? Nesta parte do tutorial, vamos mostrar-lhe como usar o LedBorg como um novo indicador do Gmail. Assim como a última vez, vamos combinar uma entrada externa( neste caso, um feed Atom em vez de uma API) e um script simples para direcionar nosso LED.

Precisamos expandir a funcionalidade da nossa instalação do Python um pouco instalando o FeedParser, uma ferramenta de leitura de feeds RSS / Atom Python. Abra o terminal e digite o seguinte comando:

sudo easy_install feedparser

Uma vez concluída a instalação, podemos configurar o trabalho criando 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 combinar o nome de usuário e a senha da conta do Gmail que deseja verificar.

import feedparser

# Digite seu nome de usuário do Gmail,
# e senha. Não inclua
# a porção @ gmail.com 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/ átomo") ["feed"] [" fullcount "])

# O seguinte é um valor de depuração.
# Edite o hash e altere
# o número inteiro para 0 ou 1 para testar
# a resposta do LED.

# mail = 0

se mail & gt;0:
LedBorg = aberto( '/dev/ ledborg', 'w')
LedBorg.write( '020')
del LedBorg
print( 'Mail!')
else:
LedBorg = open( '/dev/ ledborg', 'w ')
LedBorg.write( ' 000 ')
del LedBorg
print( ' No mail! ')

Salve o script como gmailcheck.py. Abra o terminal e digite o seguinte comando:

python gmailcheck.py

Se você tiver um email sentado na sua caixa de entrada do Gmail, o LED ficará verde e você receberá uma resposta como tal:

Se você tiver o correio na caixa de entrada do Gmail, seu LedBorgParecerá assim:

Assim como o script de verificação da chuva, incluímos um valor de depuração. Se você não tiver nenhum email novo, você pode enviar um e-mail para aumentar a contagem da caixa de entrada para 1 ou você pode editar o hash do comentário e alterar a linha de depuração para "mail = 1" para testar o script. Lembre-se de reverter a linha quando você terminar de testar.

Entre na próxima seção do tutorial para configurar seu script do Gmail para ser executado em uma programação.

Configurando um trabalho Cron para executar o seu script

Agora que temos dois scripts para jogar, precisamos configurar um trabalho cron para executá-los ao longo do dia para manter o indicador LED atual.

A primeira coisa que queremos fazer é desligar o LED se estiver atualmente em nossos experimentos anteriores. No tipo de terminal:

eco "000" & gt;/dev/ ledborg

Enquanto você ainda está na linha de comando, você pode abrir o editor cron. Se você nunca configurou um trabalho cron antes, recomendamos que consulte nosso guia para usá-lo aqui. Dito isto, nós o guiaremos por configurar um cronograma básico aqui.

No tipo de terminal:

sudo crontab -e

Isso abrirá a tabela Cron Raspbian no editor de texto Nano. Use as teclas de seta para rolar para baixo até o fundo.É aqui que vamos configurar o trabalho cron recorrente para os nossos scripts Python.

Se você deseja configurar o script de chuva, digite a seguinte linha na tabela cron:

* / 5 * * * * python /home/pi/ wunderground.py

Pressione CTRL + X para sair;selecione sim para salvar e substituir 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 amplo período de tempo para um script que verifica a chuva prevista - você poderia até argumentar que é um pouco agressivo -, mas se você está tentando manter o topo do seu e-mail é um período muito longo paranotificação. Se você estiver configurando o cronograma para o script de notificação do Gmail, digite a seguinte linha na tabela cron:

* / 1 * * * * python /home/pi/ wunderground.py

Esta entrada executa o script gmailcheck.py cada minuto por muito mais rápidonotificação de atualização.

Isso é tudo aí!Você pode experimentar com seus próprios scripts Python, levantando as afirmações if / else dos nossos e experimentando com novas variáveis. Se você pode encontrar uma fonte de entrada para os dados, você pode transformá-la em uma variável em suas médias do Python script-stock market, contagens de pólen, menções do Twitter, se houver uma API para isso, você pode transformá-lo em um indicador de LED ambiente.

Finalmente, quero agradecer todos os grandes recursos que eu costumava trabalhar nesse projeto. Foi um pouco mais de uma década desde que eu estava ativamente escrevendo programas e demorou algumas batidas para tirar a poeira e ferrugem. Os colaboradores da /r/ LearnPython me ajudaram a aumentar a produção da API para o Weather Underground, estudando como o Michael em Mitch Tech lidou com o feed do Atômico do Gmail fez análise para o LedBorg fácil e estudar os módulos de aprendizagem do Python na Code Academy foi um ótimomaneira de escolher a sintaxe básica e a estrutura de um idioma que nunca usei antes.