Índice:

Como controlar tomadas usando um Raspberry Pi: 6 etapas
Como controlar tomadas usando um Raspberry Pi: 6 etapas

Vídeo: Como controlar tomadas usando um Raspberry Pi: 6 etapas

Vídeo: Como controlar tomadas usando um Raspberry Pi: 6 etapas
Vídeo: O que é RaspberryPi? Conheça esse mini computador revolucionário! 2024, Julho
Anonim
Como controlar tomadas usando um Raspberry Pi
Como controlar tomadas usando um Raspberry Pi
Como controlar pontos de venda usando um Raspberry Pi
Como controlar pontos de venda usando um Raspberry Pi
Como controlar tomadas usando um Raspberry Pi
Como controlar tomadas usando um Raspberry Pi

Neste Instructable, vou demonstrar a você como criar uma interface da web para controlar os pontos de venda em sua casa usando um Raspberry Pi. Escolhi escrever este projeto quando vi o concurso Sensors, e como este projeto envolve o uso de um sensor para ler códigos do controle remoto fornecido com as tomadas que você compra, achei que esse projeto seria o ajuste perfeito.

Vou trabalhar para manter isso o mais alto possível e fornecer o código para fazer tudo isso funcionar. Para todos vocês, macacos de código, fiquem à vontade para cavar o código e me examinar nos comentários! Estou sempre procurando melhorar. Há muita coisa acontecendo nisso, então se você tiver dúvidas sobre qualquer etapa, deixe um comentário para que eu possa atualizar o Instructable com os detalhes necessários.

Este projeto usa tomadas controladas por radiofrequência em 433 MHz acopladas a um transmissor RF conectado ao seu raspberry pi. As tomadas vêm com controles remotos que podem ligar / desligar as tomadas, mas isso não é divertido! Em vez disso, usaremos um servidor da web em execução no raspberry pi que permite que qualquer pessoa conectada à rede ligue ou desligue certas tomadas. Um front-end da web para este projeto é ideal, pois qualquer dispositivo conectado à web em sua rede pode ser usado como seu controle remoto.

Este é um projeto que eu sonhava realizar há anos e, embora ainda haja espaço para acréscimos, o projeto descrito a seguir é um sistema funcional.

Suprimentos

  • Um Raspberry Pi (usei um RPi 3 Modelo B +)
  • Um transmissor e receptor de 433 MHz (usei este aqui)
  • Saídas de 433 MHz (eu usei isso)
  • Jumpers de mulher para mulher (comprei este bando)
  • Um computador ou dispositivo portátil capaz de acessar a internet

Etapa 1: Configurar seu Raspberry Pi

Configure o seu Raspberry Pi
Configure o seu Raspberry Pi

Comece instalando a versão mais recente do Raspbian em seu novo Raspberry Pi. Se você planeja usar um Pi existente (o que você pode fazer), tudo o que você precisa é ter certeza de que tem Python 3 em seu Pi, já que é nele que todo o código-fonte que forneço está escrito. Para fazer isso, modelo

python3

na linha de comando. Se você tiver o Python 3, deverá ver o terminal python aberto. Saia do terminal fechando ou digitando

saída()

Depois de confirmar isso, você precisa instalar o frasco em seu Pi. O Flask nos permite criar nosso servidor web. Na linha de comando Pi, digite

frasco de instalação sudo pip3

No caso de você não ter pip instalado em seu Pi, você precisará digitar

sudo apt-get install python3-pip

Prefiro desenvolver no meu Raspberry Pi do conforto do meu computador desktop. Se você também preferir essa opção, será necessário instalar algum tipo de ambiente para SSH no Pi. PuTTY funcionará, mas eu prefiro ter uma GUI (interface gráfica do usuário), o que faz parecer que você está diretamente no Pi. Para a opção GUI, você desejará instalar o VNC Viewer no computador no qual planeja trabalhar. Existem também configurações que você precisará ajustar em seu Pi. As instruções para modificar as configurações podem ser encontradas aqui.

Etapa 2: conectando seu hardware

Conectando Seu Hardware
Conectando Seu Hardware

Neste ponto, é hora de fazer todas as conexões físicas que você precisará fazer na preparação para configurar o código-fonte para este projeto. Você conectará os pinos do transmissor e do receptor aos pinos GPIO do seu Pi. Você desejará referenciar religiosamente o diagrama de pinagem dos pinos GPIO. Para fazer isso, abra o terminal em seu Pi e digite

pinagem

A seguir estão as conexões que fiz. Você pode ter uma configuração diferente se tiver adquirido um hardware de transmissor / receptor diferente do que indiquei na introdução. Se você decidir escolher números de pin diferentes dos que indico abaixo, não tenha medo! Ao baixar o código-fonte, simplesmente modifique os números dos pinos conforme necessário no arquivo RxTx.py.

Receptor (big chip):

  • GND - Qualquer pino de aterramento designado
  • DADOS - Pino 11
  • DER - Não conectado
  • + 5V - Qualquer pino + 5V designado
  • ------
  • + 5V - Qualquer pino + 5V designado
  • GND - Qualquer pino de aterramento designado
  • GND - não conectado
  • ANT - Não conectado

Nota: Você pode conectar uma antena conforme necessário, mas descobri que não precisava. Este pequeno chip era surpreendentemente sensível e detecta fielmente sinais de pelo menos 50 pés de onde estava e através de pelo menos duas paredes.

Transmissor:

  • P - O pino de 3,3 V
  • DA - pino 7
  • G - Qualquer pino de aterramento designado
  • AN - não conectado

Nota: Novamente, você pode conectar uma antena ao transmissor conforme necessário, mas descobri que não era necessário. O alcance é mais do que suficiente (50 + pés).

Etapa 3: Adicionando o Código

Essa é a parte em que passei a maior parte do meu tempo no desenvolvimento deste projeto. Tento comentar o máximo possível, mas provavelmente deixei lacunas que podem exigir explicação se algum de vocês passar algum tempo tentando entendê-las. Se isso acontecer com você, por favor deixe um comentário!

Os idiomas envolvidos aqui são:

  • Pitão
  • CSS
  • Javascript
  • HTML
  • JQuery / Ajax

O Python é usado no servidor flask e no

RxTx.py

arquivo, que trata da transmissão e recebimento do código. CSS é usado para gerar o estilo da página da web. Quem quer um site chato !? Javascript é usado em qualquer manipulação de eventos (apertar um botão, etc.). HTML é o bloco de construção central da página da web. Finalmente, JQuery / Ajax é usado para comunicação entre a página da web e o back-end Python.

Se todas essas linguagens parecem intimidantes, não se preocupe! Eu só conhecia o Python nesse projeto, que por acaso era a linguagem que menos envolvia codificação, vai entender … Basta dizer, leve o seu tempo vasculhando o código se for isso que você decidir fazer. Se você não quiser, não precisa!

A seguir está a estrutura de diretório que escolhi empregar com esta página da web. A pasta compactada anexada a esta etapa contém todo o código-fonte na estrutura a seguir.

Outlet Switch-> comm-- DataRW.py-- keys.py-- RxTx.py-> webpage-- static ----- favicon.ico ----- style.css-- templates ----- index.html ----- schedule.html-- app.py-- data.file

Você pode colocar a pasta Outlet Switch em qualquer lugar do seu Pi. Quando você estiver pronto para executar seu servidor web, abra o terminal em seu Pi, e

CD

(alterar o diretório) para o diretório da página da web. Então digite

python3 app.py

no terminal. Se não houver erros, você deve estar pronto para prosseguir!

P. S. Por favor, seja paciente se você encontrar algum bug. Tentei esmagar todos eles antes de enviar.

Etapa 4: Experimente

Dê uma chance!
Dê uma chance!

Agora que você está executando o código, pode ter uma ideia da interface da web ao seu alcance. O controle do sistema é muito simples:

  • Você pode adicionar quantas tomadas quiser usando a interface da web.
  • A exclusão é tão simples quanto clicar em editar, selecionar as lojas que deseja excluir e clicar em excluir.

O vídeo do YouTube acima demonstra como realmente proceder para adicionar uma nova saída à sua lista. Para resumir o que mostra:

  • Primeiro, digite o título do outlet no campo Título
  • Clique ou toque fora do campo Título para permitir que o programa verifique se o título ainda não existe. Você não pode ter títulos com o mesmo nome
  • Depois de validado, os botões Código LIGADO e Código DESLIGADO são habilitados.
  • Pressione e segure o botão LIGAR no controle remoto fornecido e clique rapidamente no botão Código LIGAR na interface. Segure o botão no controle remoto até que seu código binário preencha o campo adjacente.
  • Repita a etapa anterior para o Código OFF.
  • Clique em OK e agora você está pronto para trocar esta tomada!

Conforme mencionado na introdução, o projeto não está 100% completo para meu próprio uso. O maior componente que ainda preciso concluir e implementar é a capacidade de agendamento. Pretendo permitir que o usuário crie uma programação que permita que as tomadas sejam ligadas e desligadas em horários designados automaticamente.

Etapa 5: depuração e arquivo RxTx.py

Depuração e o arquivo RxTx.py
Depuração e o arquivo RxTx.py
Depuração e o arquivo RxTx.py
Depuração e o arquivo RxTx.py
Depuração e o arquivo RxTx.py
Depuração e o arquivo RxTx.py
Depuração e o arquivo RxTx.py
Depuração e o arquivo RxTx.py

A única limitação conhecida do sistema é que há uma chance de incompatibilidade entre os pontos de venda de diferentes fornecedores. As mensagens de código de ativação e desativação têm 25 bits para o meu sistema e, se um sistema tiver um comprimento de mensagem diferente, ele não será imediatamente compatível com este projeto. Se você seguiu exatamente as instruções e ainda está tendo problemas para fazer isso funcionar, o seguinte seria a melhor maneira de depurar o problema.

  • Certifique-se de ter matplotlib instalado em seu Pi. Você pode fazer isso digitando o seguinte no terminal do Pi:

    • python3

    • importar matplotlib

    • Se você receber um erro, precisará instalar o matplotlib.
    • Saia do shell python usando

      saída()

  • Para instalar matplotlib, digite

    sudo pip3 install matplotlib

  • no terminal
  • Baixe o arquivo test.py anexado e coloque-o ao lado do arquivo RxTx.py em seu Pi
  • Abra o terminal Python e mude de diretório para a pasta comm.
  • Modelo

    python3 test.py

  • Quando disser "** Gravação iniciada **", pressione e segure o botão ATIVAR ou DESATIVAR no controle remoto até que a gravação termine.
  • O programa carregará uma figura matplotlib semelhante à anterior. Aumente o zoom até ver o sinal repetitivo, conforme demonstrado nas fotos acima.
  • Conte o total lógico 1 e lógico 0 para cada mensagem, onde uma mensagem é uma iteração do sinal repetitivo visto acima. Se o total for 25, o arquivo RxTx.py provavelmente não é o culpado. Se você encontrar algo diferente de 25, certifique-se de comentar abaixo, e eu irei reorganizar o arquivo RxTx.py para ser mais aberto (ou sinta-se à vontade para tentar fazer isso).

E se eu não vir um sinal repetitivo?

Se você não vir um sinal repetitivo, uma das duas coisas está errada. Primeiro, verifique se todas as conexões dos fios de jumper estão feitas corretamente. Se tudo estiver certo, você pode ter um receptor ruim. Você comprou o que eu sugeri? Quando comprei meu primeiro chip receptor, ele era muito barulhento. Tão barulhento que não consegui obter um sinal claro. Em seguida, devolvi o chip e peguei aquele que vinculei e não poderia ter funcionado melhor.

Etapa 6: Divirta-se

Você sabe que tem a capacidade de ligar / desligar as tomadas de seu telefone, tablet, computador ou outro dispositivo habilitado para web! Deixe-me saber o que você pensa nos comentários!

Recomendado: