Índice:

Monitoramento doméstico Raspberry Pi com Dropbox: 7 etapas
Monitoramento doméstico Raspberry Pi com Dropbox: 7 etapas

Vídeo: Monitoramento doméstico Raspberry Pi com Dropbox: 7 etapas

Vídeo: Monitoramento doméstico Raspberry Pi com Dropbox: 7 etapas
Vídeo: Live Merlin - Aprenda como obter seu próprio sistema de armazenamento de conteúdo em nuvem. 2024, Novembro
Anonim
Raspberry Pi Home Monitoring com Dropbox
Raspberry Pi Home Monitoring com Dropbox

Este tutorial mostrará como criar um sistema de monitoramento residencial simples e expansível usando um Raspberry Pi, uma webcam, alguns componentes elétricos e sua conta do Dropbox. O sistema finalizado permitirá que você solicite e visualize imagens remotamente de sua webcam enquanto usa um sensor de temperatura digital pronto para uso para monitorar a temperatura de sua casa pela Internet, tudo usando o Dropbox.

Este foi o primeiro projeto que pensei depois de receber um Raspberry Pi 2 modelo B. Meu objetivo era criar um sistema de monitoramento baseado em Python que pudesse controlar e receber dados da Internet. Embora existam muitas maneiras diferentes de fazer isso, decidi usar o Dropbox como a interface entre o Pi e a internet, pois eles têm uma API Python simples que permite carregar, modificar e pesquisar arquivos em pastas específicas usando algumas linhas de código.

Eu também queria que minha solução fosse leve e simples e evitasse sobrecarregar meu Pi com bibliotecas e programas desnecessários. O componente de software deste projeto consiste em um único script Python, o que significa que você pode continuar a usar seu Pi normalmente, mesmo quando o sistema de monitoramento está funcionando.

Para este projeto, você precisará de:

A Raspberry Pi. Qualquer modelo deve funcionar, usei um kit inicial completo, mas talvez você precise apenas da unidade central

Uma webcam USB. Comprei um ADVENT AWC72015 barato, que funcionou bem. Pode ser uma boa ideia consultar esta lista de webcams confirmadas que funcionam com o Pi. Observe que alguns requerem um hub USB alimentado (o meu funciona bem sem ele)

Uma conta Dropbox. Eu uso minha conta gratuita padrão, pois este projeto não requer muito espaço de armazenamento

Um sensor de temperatura digital DS18B20 e um resistor de 4,7k. Você pode comprar o sensor aqui e pode valer a pena pegar um pacote de vários resistores também

Alguns acessórios de construção de circuitos. Eu recomendo usar uma placa de ensaio e alguns cabos jumper para tornar o processo de construção do circuito o mais fácil possível

[Se você decidir comprar qualquer um desses produtos, eu agradeceria muito se você acessasse as listagens usando os links acima - assim, eu recebo uma pequena parte dos lucros sem nenhum custo extra para você!]

Etapa 1: configurar o hardware

Configure o Hardware
Configure o Hardware

A primeira etapa é garantir que seu Pi e os periféricos associados estejam configurados.

Primeiro, conecte seu Pi à Internet. Isso é necessário para garantir que o programa de monitoramento possa receber suas solicitações e fazer upload de dados para o Dropbox. Eu uso uma conexão Ethernet para garantir a confiabilidade, mas uma conexão Wi-Fi também deve funcionar bem, além de ter a vantagem de maior portabilidade. Se você escolher Wi-Fi, recomendo este dongle USB para o Pi.

Em seguida, conecte sua webcam ao Pi conectando-o a uma das portas USB. Embora as instruções da minha webcam Advent não dissessem explicitamente que ela funcionaria com Linux, tudo o que tive de fazer foi conectá-la e inicializar o Pi. Nenhuma instalação adicional foi necessária. Outras webcams podem variar. Você pode verificar se sua webcam foi detectada pelo Linux usando o seguinte comando:

lsusb

Na imagem acima, minha webcam está listada como '0c45: 6340 Microdia'

Finalmente, você pode conectar seu sensor de temperatura DS18B20 ao cabeçalho GPIO do Pi. Eu uso minha placa de ensaio para tornar o processo de criação de circuitos mais fácil e recomendo que você faça o mesmo, especialmente porque o DS18B20 requer um resistor de 4,7 k para ser colocado entre dois de seus três pinos. Este link fornece um bom diagrama de fiação mostrando como uma placa de ensaio pode ser usada para conectar a este sensor de temperatura.

A próxima página do tutorial acima também cobre as etapas necessárias para ler os dados do DS18B20 e mostra como verificar se ele está funcionando. É importante executar essas etapas de configuração antes de usar o DS18B20 para este projeto. Também estaremos integrando o script Python de amostra do tutorial em nosso programa de monitoramento, então você pode querer dar uma olhada rápida neste código.

Anote também o número exclusivo do seu DS18B20. É o número que começa com '28 - 'que você encontrou durante o tutorial de configuração. Você precisará inseri-lo no próximo programa Python para permitir que ele leia a temperatura.

Etapa 2: configurar o Dropbox

Configurar Dropbox
Configurar Dropbox

Para que seu Pi faça interface com o Dropbox, você precisa configurar um novo aplicativo do Dropbox. Isso fornecerá os detalhes necessários para que seu Pi execute o gerenciamento de arquivos online usando Python. Supondo que você tenha criado uma conta do Dropbox e conectado, você pode criar um novo aplicativo usando a opção de menu 'Desenvolvedores'. Veja a imagem acima para um resumo das etapas importantes.

No menu 'Desenvolvedores', selecione 'Meus aplicativos' e pressione o botão 'Criar aplicativo'. Para preencher o formulário resultante, selecione 'API Dropbox' seguido de 'Pasta do aplicativo'. Por fim, você pode escolher um nome exclusivo para seu aplicativo no Dropbox. Clique em 'Criar aplicativo'.

Você será direcionado para a página de configurações do seu aplicativo no Dropbox. Há apenas mais uma coisa que você precisa fazer aqui - gerar para você mesmo um token de acesso. Para fazer isso, role para baixo até a seção 'OAuth 2' e em 'Token de acesso gerado', clique no botão 'Gerar'.

Isso apresentará uma longa sequência de caracteres que são necessários para acessar sua conta do Dropbox usando Python. Anote este token de acesso, pois você precisará especificá-lo posteriormente em seu código. Se você perder o token, pode navegar de volta para as configurações do seu aplicativo clicando em 'Meus aplicativos' na seção 'Desenvolvedores' do Dropbox e gerar um novo token.

Você pode deixar as outras configurações como estão. Para confirmar que seu aplicativo criou as pastas necessárias em sua conta do Dropbox, navegue até a página inicial de armazenamento e procure a pasta 'Aplicativos'. Dentro desta pasta deve haver uma subpasta com o nome que você escolheu para seu novo aplicativo. É aqui que todos os arquivos do seu sistema de monitoramento serão colocados.

Etapa 3: Preparando a pasta do aplicativo Dropbox

Preparando a pasta do aplicativo Dropbox
Preparando a pasta do aplicativo Dropbox

Depois de configurar seu aplicativo Dropbox, é hora de pensar em como você usará a pasta resultante em sua conta do Dropbox para interagir com seu Pi. Isso é feito de forma bastante simples. O script Python que será executado no Pi usará um subconjunto de comandos da API do Dropbox para pesquisar e modificar os nomes de alguns arquivos vazios e sem extensão na pasta do seu aplicativo. Chamaremos esses arquivos de 'arquivos de parâmetros', pois cada um permitirá que você controle um aspecto diferente do comportamento do sistema de monitoramento. A imagem acima mostra os quatro arquivos de parâmetros que precisam estar presentes na pasta do aplicativo Dropbox para este projeto. Criá-los é simples:

Começando com a pasta do aplicativo completamente vazia, abra um programa editor de texto em seu computador. Embora isso pudesse ser feito usando o Pi, achei mais fácil usar meu laptop Windows para esta fase de configuração. Uma vez que o editor de texto é aberto (eu usei o Notepad no Windows 7), tudo que você precisa fazer é salvar um arquivo de texto completamente vazio em qualquer lugar do seu computador. Como nosso primeiro exemplo, criaremos o primeiro parâmetro na imagem do cabeçalho. Nomeie o arquivo 'delay = 10' ao salvá-lo.

Para recapitular, agora você deve ter um arquivo de texto vazio armazenado em seu computador com o nome 'delay = 10'. O arquivo também terá uma extensão '.txt' que pode ou não estar visível.

A próxima etapa é enviar esse arquivo para a pasta do aplicativo Dropbox. É como qualquer outro upload do Dropbox. Basta navegar até a pasta do seu aplicativo e clicar em 'Upload' e escolher o arquivo 'delay = 10'.

Quando este arquivo for carregado, você deve remover a extensão '.txt' que agora deve estar visível no nome do arquivo. Para fazer isso, basta clicar com o botão direito no arquivo e selecionar 'Renomear'. Remova a parte '.txt' do nome do arquivo. Agora você deve ficar com um arquivo chamado 'delay = 10' sem extensão de arquivo, conforme mostrado na imagem do cabeçalho.

O arquivo de parâmetro 'atraso' é um dos quatro que serão usados pelo programa de monitoramento. Para criar os outros, você pode simplesmente copiar e renomear seu arquivo de 'atraso' clicando com o botão direito nele. Depois de criar três cópias, nomeie-as conforme mostrado na imagem do cabeçalho para que a pasta do seu aplicativo seja idêntica à mostrada no início desta etapa.

Etapa 4: Primeiros passos com o código

Conforme discutido, o núcleo do nosso sistema de monitoramento consistirá em um único script Python que fará interface com o Dropbox. Para que o programa de monitoramento esteja ativo, este script terá que ser executado em segundo plano no seu Pi. Eu acho que é descrito com mais precisão como um script 'daemon', o que significa que você pode apenas configurá-lo para execução e esquecê-lo. O script está anexado a esta etapa, portanto, não há sentido em repetir o código aqui. Agora pode ser uma boa hora para baixá-lo e familiarizar-se com ele.

Antes de poder executar o script, é importante garantir que você tenha as bibliotecas Python relevantes instaladas. Os que você precisa estão listados no início do script em anexo. Eles são:

importar caixa de depósito

import pygame.camera import os import time

A instalação do Python no meu Pi já incluía pygame, os e time, então o único que tive que instalar foi o Dropbox. Fiz isso usando suas instruções de instalação muito simples com pip.

Assim que suas bibliotecas estiverem configuradas, você precisará editar as duas primeiras linhas do script em anexo para corresponder ao seu Token de acesso Dropbox e ao identificador exclusivo do seu sensor de temperatura DS18B20. Estas são as duas linhas que precisam ser editadas:

APP_ACCESS_TOKEN = '**********'

THERMOMETER_FILE = '/ sys / bus / w1 / devices / 28 - ********** / w1_slave'

Basta substituir os **** s pelos valores corretos. Neste ponto, você está realmente pronto para começar a usar o programa de monitoramento! Em vez de apenas começar, recomendo que você continue na próxima etapa para obter uma visão geral do código.

IMPORTANTE: Ao executar este script, você deseja que ele seja executado em segundo plano para que a) possa continuar a usar o Pi eb) ao fechar a sessão SSH, o script continuará a ser executado. Este é o comando que uso ao executar o script:

nohup python DropCamTherm.py &

Isso realiza três coisas: ele executará o script ('python DropCamTherm.py'), retornará o controle para a linha de comando imediatamente para que você possa continuar a usar o Pi ('&') e enviará saídas Python que normalmente é exibido na linha de comando em um arquivo chamado 'nohup.out'. Isso pode ser lido usando um editor de texto Linux (meu favorito é o nano) e será criado automaticamente no diretório a partir do qual o script está sendo executado.

Etapa 5: Aprofundando o Código

Ao abrir o script, você notará que ele consiste em três funções junto com um bloco de código que implementa essas funções quando o script é executado. As funções usam a API do Dropbox ee acessam o arquivo de registro de temperatura do DS18B20 para ouvir os comandos do Dropbox e fazer upload da leitura de temperatura mais recente. Abaixo está uma visão geral do que as funções fazem e como são usadas para fazer o sistema de monitoramento funcionar:

- poll_parameter ():

Esta função mostra a finalidade dos arquivos de parâmetro do Dropbox que criamos na etapa 3. Ela procura na pasta do aplicativo Dropbox um arquivo que contém o texto 'param ='. Em seguida, extrai o texto após '=' e tenta convertê-lo em um inteiro. Você pode ver que isso nos permite controlar o programa anexando números relevantes ao final dos arquivos de parâmetro manualmente. A próxima etapa conterá um breve manual de instruções mostrando como usar cada um dos arquivos de parâmetro para controlar um aspecto do programa.

- set_parameter ():

Esta função permite que o programa renomeie um arquivo de parâmetro de dentro do Python. Ele faz isso em algumas ocasiões, principalmente para reduzir a necessidade de renomeação manual excessiva dos arquivos.

- set_latest_temp ():

Esta função usa set_parameter () para fazer o upload da última temperatura para a pasta do aplicativo Dropbox anexando-a ao arquivo de parâmetro 'temperatura'. A função lê a última temperatura do arquivo de log do DS18B20 (que está disponível no Linux no caminho apontado pela variável THERMOMETER_FILE).

A parte final do programa contém o código que será executado quando o script for executado. Após algumas etapas de configuração necessárias para o sensor DS18B20, ele abre uma sessão do Dropbox usando seu token de acesso e usa o pygame para pesquisar sua webcam. Se uma webcam for encontrada, ela entrará em um loop onde usa poll_parameter () para extrair informações do Dropbox e agir sobre elas.

IMPORTANTE: você notará a seguinte linha de código:

cam = pygame.camera. Camera (cam_list [0], (864, 480))

… Isso tenta criar uma interface de câmera utilizável a partir da primeira webcam que o pygame detecta. A resolução pode precisar ser alterada para corresponder à sua webcam. Experimente vários valores para descobrir o que funciona melhor.

Etapa 6: usando os arquivos de parâmetro do Dropbox

Portanto, agora você deve ter um script de trabalho que, quando executado usando as instruções da etapa 4, permitirá que seu Pi comece a monitorar a pasta do aplicativo para suas entradas. Em sua primeira execução, a pasta do aplicativo deve conter os seguintes arquivos de parâmetro:

atraso = 10

exitprogram = 0 imagerequest = 0 temperatura = 0

A interação com o programa é alcançada renomeando manualmente os arquivos de parâmetro via Dropbox. Para fazer isso, apenas clique com o botão direito em um dos arquivos e selecione 'renomear'. Cada arquivo de parâmetro tem uma função diferente:

- atraso:

Este arquivo informa ao programa de monitoramento quantos segundos deve aguardar entre cada iteração do loop de monitoramento. Quando sei que não vou interagir muito com o programa, defino-o como 60 ou 120. Quando sei que quero solicitar dados do Pi com frequência, defino-o como 10.

- sair do programa:

Deve ser definido como 1 ou 0. Se o programa detectar que está definido como 1, ele encerrará o script. Se você definir como 1 e o script sair, você precisará fazer login no Pi novamente para reiniciá-lo. Este parâmetro existe para que você possa encerrar normalmente o programa de monitoramento quando não precisar mais que ele esteja em execução (por exemplo, se você voltou para casa e não deseja mais monitorar a webcam remotamente).

- imagerequest:

Este é talvez o parâmetro mais importante. Deve ser definido como 1 ou 0. Se o programa detectar que está definido como 1, ele solicitará uma imagem da webcam e a carregará na pasta do aplicativo (com o título 'imagem.jpg'). Se houver outro 'image.jpg', ele o substituirá.

- temperatura:

Esta é a leitura de temperatura DS18B20 definida pela função set_latest_temp (). Você nunca deve precisar editar este arquivo de parâmetro - ele é definido automaticamente pelo programa.

Observe que se você definir 'exitprogram' ou 'imagerequest' como 1, o programa os retornará automaticamente para 0 antes de executar o código relevante. Isso é por conveniência. Você também pode notar que o código contém muitos blocos 'try' e 'except' envolvendo muitas das funções críticas. Isso é para garantir que o script não lance exceções (e, portanto, pare de ser executado) se algo der errado (como um problema de conectividade com a Internet impedindo o acesso ao Dropbox).

Etapa 7: Conclusão

Este projeto apresentou uma maneira de controlar um Raspberry Pi usando Python e Dropbox. Embora o hardware usado neste projeto seja um sensor de temperatura e uma webcam USB, existem muitas outras aplicações para este método de controle do Pi. Na verdade, qualquer componente de hardware acessível via GPIO pode ser controlado usando uma estrutura de programa semelhante, tornando o sistema muito fácil de expandir.

Como próximo passo, você também pode usar uma biblioteca GUI, como o Tkinter, junto com a API do Dropbox para criar um programa cliente que permitiria a você modificar os arquivos de parâmetro sem precisar fazer login no Dropbox.

Espero que este tutorial tenha sido claro, e se você tiver alguma dúvida ou quiser que eu esclareça alguma coisa, por favor poste um comentário!

Recomendado: