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 quais benefícios 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 alguns programas. 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, presumimos que você já seguiu nosso tutorial anterior: O Guia HTG de Introdução ao Raspberry Pi (e, portanto, ter o básico necessário para instalar o 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 US $ 35 Pi.
Além de ter uma unidade Pi funcional com Raspbian instalada, 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 caso Raspberry Pi 1 modelo B.
Nota: O estojo transparente / fosco é totalmente opcional, mas se você estiver usando um estojo opaco, seu indicador LED ficará escondido. Você precisará abrir um buraco no seu gabinete para liberar a luz ou usar um cabo de extensão GPIO com um kit inovador - como este da Adafruit Industries - para vincular 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
A instalação do módulo é rápida, pois foi projetada para se encaixar diretamente nos pinos GPIO do Pi. Primeiro, desligue seu Pi e abra o gabinete.
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 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 ainda referenciá-los, mas eles eram muito mais escuros do que o LedBorg que não era mais uma distração.
Uma vez que você tenha o LedBorg instalado e tenha, opcionalmente, coberto os LEDs indicadores do Pi com fita isolante, é hora de fechar o processo. Inicialize seu Pi antes de passar para a próxima fase do tutorial.
Instalando o software LedBorg
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 quadro do 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 pegamos o arquivo raspbian-2013-02-09-rev1.zip.
Para instalar todos os brindes, precisamos abrir o terminal no Pi. e, em seguida, insira 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 https://www.piborg.org/downloads/ledborg/raspbian-2013-02-09-rev1.zip unzip 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:
É aqui na seção Modo de demonstração 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 nisso - o Fast atualiza o LED muito rapidamente e torna o indicador da CPU uma distração, em vez de ú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 forma como o LedBorg lida com os 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. Por exemplo, 001 definiria o canal vermelho em 0%, o canal verde em 0% e o canal azul em 50%.
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
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 para obter 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 é:
https://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 é:
https://api.wunderground.com/api/YOUR API KEY/forecast/q/STATE/CITY.json
Você pode gerar a previsão para qualquer cidade dos EUA digitando 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:
from urllib2 import urlopen import json
req = urlopen('https://api.wunderground.com/api/YOUR API KEY/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 mude # o inteiro para um 0-100 para testar # a resposta do LED.
# pop = 0
print 'Current chance of precipitation is {}.'.format(pop)
# The default setting is to turn on the LED # for any chance of rain above 20%. You can adjust # the value in 'if pop > 20:' as you wish.
if pop > 20: LedBorg = open('/dev/ledborg', 'w') LedBorg.write('002') del LedBorg print ('Rain!') else: LedBorg = open('/dev/ledborg', 'w') LedBorg.write('000') del LedBorg print ('No rain!')
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:
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 e-mail a seguir, abordaremos a configuração de um cron job depois de mostrarmos como configurar o outro script.
Configurando seu LedBorg como um indicador do Gmail
Precisamos expandir um pouco a funcionalidade de nossa instalação em 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
# Enter your Gmail username # and password. Don't include # the @gmail.com portion of # your username.
username = 'username' password = 'password'
mail = int(feedparser.parse('https://' + username + ':' + password +'@mail.google.com/gmail/feed/atom')['feed']['fullcount'])
# O seguinte é um valor de depuração. # Edite o hash e mude # o inteiro para 0 ou 1 para testar # a resposta do LED.
# mail = 0
if mail > 0: LedBorg = open('/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 e-mail na sua caixa de entrada do Gmail, o LED ficará verde e você receberá uma resposta como esta:
Entre na próxima seção do tutorial para definir seu script do Gmail para ser executado em um cronograma.
Configurando um trabalho Cron para executar seu script
Agora que temos dois scripts para brincar, precisamos configurar uma tarefa cron para executá-los ao longo do dia para manter o indicador LED atualizado.
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, é possível abrir o editor do cron. Se você nunca configurou um cron job antes, sugerimos fortemente que você consulte nosso guia para usá-lo aqui. Dito isso, orientaremos você na configuração de uma programação básica 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 chuva - você poderia até argumentar que é um pouco agressivo demais - mas se você estiver tentando manter o controle de seu e-mail, será um período longo demais para notificação. 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
Essa 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 em seu script Python - médias do mercado de ações, contagem 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 e estrutura básicas de uma linguagem que eu nunca usei antes.