Índice:

Escala Inteligente Raspberry Pi: 10 etapas (com imagens)
Escala Inteligente Raspberry Pi: 10 etapas (com imagens)

Vídeo: Escala Inteligente Raspberry Pi: 10 etapas (com imagens)

Vídeo: Escala Inteligente Raspberry Pi: 10 etapas (com imagens)
Vídeo: Aula 10 - Captura e Processamento de Imagem com Raspberry Pi e Camera CSI/USB 2024, Julho
Anonim
Image
Image

Você está cansado de ficar olhando para aquela balança de banheiro chata, velha e de más notícias todas as manhãs? Aquele que você sempre diz "Eu te odeio" a cada vez que você pisa nele. Por que ninguém criou uma escala que seja realmente divertida ou motivadora de usar? É hora de criar uma escala que não seja apenas inteligente, mas tenha um pouco mais de personalidade para iluminar o seu dia. Vamos construir a nossa própria balança de banheiro com mensagem de texto e controle de peso, que vem com um senso de humor integrado.

Este é um projeto divertido e fácil que combina uma placa de equilíbrio do Wii, um Raspberry Pi e uma plataforma de análise de dados online para criar uma balança conectada à web controlada por um script Python que você pode hackear.

Nível do projeto: Iniciante Tempo aproximado para conclusão: 20 minutos Fator de diversão: Imensurável

Neste tutorial passo a passo, você irá:

  • conecte um balance board Wii a um Raspberry Pi através do bluetooth execute um script Python que mede seu peso quando você pisa no balance board
  • use um Raspberry Pi para transmitir seu peso para um serviço de nuvem (estado inicial)
  • configurar uma notificação por SMS toda vez que você se pesar
  • construir um painel de controle de peso que você pode acessar em seu navegador da web

Etapa 1: Equipamento

Escala Wii Balance Board
Escala Wii Balance Board

Aqui está uma lista de todos os equipamentos que usaremos neste tutorial com links para onde você pode comprar cada item.

  • Raspberry Pi 3 com um cartão SD e fonte de alimentação (https://init.st/psuufmj)
  • Wii Balance Board (https://init.st/qg4ynjl)
  • Pacote de bateria recarregável Wii Fit (https://init.st/iyypz2i)
  • Almofadas de feltro de 3/8 "(https://init.st/8gywmjj)
  • Lápis (não estou lhe dando um link de onde comprar um lápis … você deve ter um desses)

Observação: se você tiver um Raspberry Pi 1 ou 2, precisará de um adaptador bluetooth (https://init.st/7y3bcoe)

Etapa 2: Escala Wii Balance Board

Por que um Wii Balance Board? Acontece que é uma balança muito boa e durável que tem conectividade bluetooth. Isso nos permitirá conectá-lo a um computador de placa única (Raspberry Pi) para ler seu peso em um script Python e enviar essas medições a um serviço de dados online para fazer coisas legais. Além disso, há uma boa chance de que você ou alguém que você conhece já tenha um que esteja simplesmente juntando poeira.

Precisaremos fazer algumas modificações simples em nosso Wii Balance Board para realmente tornar este projeto prático e conveniente.

Etapa 3: configuração do Bluetooth

O Raspberry Pi 3 vem com bluetooth integrado, tudo de que precisamos para nos comunicarmos com o Wii Balance Board. Se você tiver um Raspberry Pi 1 ou 2, teremos que usar uma de nossas portas USB para conectar um adaptador.

Ligue o seu Pi (presumo que você já tenha instalado o Raspbian e ele inicialize) e vá para a janela do terminal do Raspberry Pi. Você pode ver o endereço do seu dongle bluetooth com o comando "hcitool dev":

$ hcitool devDevices: hci0 00: 1A: 7D: DA: 71: 13

Instale os módulos bluetooth que usaremos em nossos scripts Python:

$ sudo apt-get install python-bluetooth

Depois de concluída a instalação, estamos prontos para nos conectar e nos comunicar com o Wii Balance Board. Não iremos emparelhar permanentemente nossa placa com nosso Pi como fazemos com a maioria de nossos dispositivos bluetooth. O Wii Balance Board nunca foi pensado para ser emparelhado com outra coisa senão um Wii, e o emparelhamento permanente provou ser um desafio bastante confuso. O emparelhamento acontecerá sempre que executarmos nosso script Python.

Etapa 4: Leitura da escala

É hora de conectar nosso Wii Balance Board ao Raspberry Pi. Faremos isso modificando uma versão do script Gr8W8Upd8M8.py de Stavros Korokithakis (https://github.com/skorokithakis/gr8w8upd8m8). O script Python que usaremos nesta etapa está localizado aqui. Você pode copiar o conteúdo desse arquivo para um arquivo criado no Raspberry Pi ou pode clonar todos os arquivos Python que usaremos para todo o projeto. Vamos fazer o último. Digite os seguintes comandos em um terminal em seu Raspberry Pi:

$ cd ~ $ git clone $ git clone https: github.com/initialstate/smart-scale.git clonagem em 'escala inteligente' … remoto: Contando objetos: 14, concluído. remoto: Comprimir objetos: 100% (12/12), pronto. remoto: Total 14 (delta 1), reutilizado 8 (delta 0), embalagem reutilizada 0 Desembalando objetos: 100% (14/14), concluído. Verificando a conectividade … concluído.

clonagem em 'escala inteligente'… remoto: Contando objetos: 14, concluído. remoto: Comprimir objetos: 100% (12/12), pronto. remoto: Total 14 (delta 1), reutilizado 8 (delta 0), embalagem reutilizada 0 Desembalando objetos: 100% (14/14), concluído. Verificando a conectividade … concluído.

Você deve ver dois arquivos python no novo diretório smart-scale - smartscale.py e wiiboard_test.py.

$ cd smart-scale $ lsREADME.md smartscale.py wiiboard_test.py

Execute o script wiiboard_test.py para testar a comunicação e fazer leituras de peso no Wii Balance Board:

$ sudo python wiiboard_test.py

Você verá a seguinte resposta:

Descobrindo a placa … Pressione o botão vermelho de sincronização na placa agora

Remova a tampa da bateria embaixo da placa para localizar o botão vermelho de sincronização. Certifique-se de pressionar o botão alguns segundos após a execução do script ou ocorrerá um tempo limite. Depois de bem-sucedido, você verá algo semelhante ao seguinte:

Wiiboard encontrado no endereço 00: 23: CC: 2E: E1: 44 Tentando conectar… Conectado ao Wiiboard no endereço 00: 23: CC: 2E: E1: 44Wiiboard conectadoACK para gravação de dados recebida84,9185297 lbs84,8826412 lbs84,9275927 lbs

O script wiiboard_test.py está pegando o número de medidas de peso especificadas na linha 10 e gerando a média:

# --------- Configurações do usuário --------- WEIGHT_SAMPLES = 500 # ------------------------- --------

Você pode brincar com esse número alterando o valor e executando novamente o script para ver a variação no peso medido e o tempo necessário para cada medição. Pese-se, pese seu cachorro, pese o que for e veja se as medidas fazem sentido. Para interromper o script, pressione CTRL + C.

Você acabou de converter com sucesso seu Wii Balance Board em uma balança conectada Raspberry Pi. Agora, vamos fazer uma escala legal.

Etapa 5: ajustes de hardware

Ajustes de hardware
Ajustes de hardware

A Nintendo presumiu que você sempre alimentaria seu Wii Balance Board com quatro baterias AA e não incluiu adaptador de energia AC. Ter apenas a energia da bateria seria inconveniente porque não podemos emparelhar permanentemente o nosso Wii Board com o nosso Pi através do bluetooth. Precisamos sincronizá-lo e permitir que ele permaneça sincronizado sem descarregar as baterias para que possamos simplesmente subir na balança e pesar. Felizmente, existem vários adaptadores de terceiros feitos para o Wii Balance Board que podemos usar para fornecer energia constante de uma tomada de parede. Substitua as baterias por um pacote de bateria e conecte o adaptador ac na tomada.

Ter que emparelhar o Wii Balance Board e o Raspberry Pi toda vez que rodamos nosso script Python apresenta outro inconveniente devido à localização do botão de sincronização. O botão de sincronização está na parte inferior do Wii Board, o que significa que teríamos que virá-lo toda vez que precisarmos sincronizar. Podemos consertar isso fazendo uma pequena alavanca usando um lápis e três almofadas de feltro de 3/8 "como mostrado acima. A bateria recarregável expõe o botão de sincronização para a superfície inferior da placa. Cole um lápis (ou algo semelhante) que se estenda do botão de sincronização para a frente externa da placa. Empilhe três almofadas de feltro de 3/8 "(ou algo semelhante) no centro do lápis para criar um pivô estacionário. Tenha cuidado para não expor muito o lápis do quadro, pois você não quer que alguém o chute acidentalmente. Vire a placa e você pode pressionar o botão de sincronização simplesmente pressionando a alavanca. Um pouco hack, mas eficaz.

Dependendo de como você armazena seu Wii Board, você pode querer remover as almofadas de borracha dos pés da placa (as almofadas são apenas adesivos que você pode retirar). Almofadas de feltro de 3/8 podem ser colocadas nos pés da placa para facilitar o deslizamento.

Etapa 6: estado inicial

Estado inicial
Estado inicial

Queremos transmitir nosso peso / dados para um serviço de nuvem e fazer com que esse serviço transforme nossos dados em um bom painel que possamos acessar de nosso laptop ou dispositivo móvel. Nossos dados precisam de um destino. Usaremos Estado inicial como esse destino.

Etapa 1: Registre-se para a conta de estado inicial Vá para https://iot.app.initialstate.com e crie uma nova conta.

Etapa 2: Instale o ISStreamerInstall o módulo Python de estado inicial em seu Pi: Em um prompt de comando (não se esqueça de usar SSH em seu Pi primeiro), execute o seguinte comando:

$ cd / home / pi / $ / curl -sSL https://get.initialstate.com/python -o - | sudo bash

Etapa 3: Faça um Automagic. Após a Etapa 2, você verá algo semelhante à seguinte saída na tela:

pi @ raspberrypi ~ $ / curl -sSL https://get.initialstate.com/python -o - | sudo bashPassword: Iniciando a instalação fácil do ISStreamer Python! A instalação pode demorar alguns minutos, pegue um café:) Mas não se esqueça de voltar, terei perguntas mais tarde!

Easy_install: setuptools 1.1.6 encontrado

Pip encontrado: pip 1.5.6 de /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7) versão principal do pip: 1 versão secundária do pip: 5 ISStreamer encontrado, atualizando… Requisito já atualizado: ISStreamer em /Library/Python/2.7/site-packages Limpando… Você deseja obter um script de exemplo automagicamente? [s / N]

(a saída pode ser diferente e demorar mais se você nunca instalou o módulo de streaming Python de estado inicial antes)

Quando solicitado a obter automaticamente um script de exemplo, digite y. Isso criará um script de teste que podemos executar para garantir que possamos transmitir dados para o estado inicial de nosso Pi. Você será solicitado:

Onde você deseja salvar o exemplo? [padrão:./is_example.py]:

Você pode digitar um caminho local personalizado ou pressionar Enter para aceitar o padrão. Ser-lhe-á pedido o seu nome de utilizador e palavra-passe que acabou de criar quando registou a sua conta Initial State. Insira ambos e a instalação será concluída.

Etapa 4: Chaves de acesso

Vamos dar uma olhada no exemplo de script que foi criado.

$ nano is_example.py

Na linha 15, você verá uma linha que começa com streamer = Streamer (bucket_…. Essa linha cria um novo intervalo de dados chamado “Python Stream Example” e está associado à sua conta. Essa associação ocorre por causa da access_key =”…” parâmetro na mesma linha. Essa longa série de letras e números é a chave de acesso da sua conta do Estado inicial. Se você acessar sua conta do Estado inicial no navegador da web, clique em seu nome de usuário no canto superior direito e vá para "Minhas configurações", você encontrará a mesma chave de acesso na parte inferior da página em “Chaves de acesso de streaming”.

Cada vez que você cria um fluxo de dados, essa chave de acesso irá direcionar esse fluxo de dados para sua conta (portanto, não compartilhe sua chave com ninguém).

Etapa 5: execute o exemplo

Execute o script de teste para se certificar de que podemos criar um fluxo de dados para sua conta de estado inicial. Execute o seguinte:

$ python is_example.py

Etapa 6: Lucro

Volte para sua conta do estado inicial no navegador da web. Um novo depósito de dados chamado “Exemplo de fluxo do Python” deve ter aparecido à esquerda em sua prateleira de registro (pode ser necessário atualizar a página). Você pode visualizar os dados em blocos para ver esses mesmos dados no formulário de painel.

Etapa 7: Script Final

Supondo que você executou o comando "git clone https://github.com/InitialState/smart-scale.git" na Parte 2, o script final que junta tudo é chamado smartscale.py em seu diretório ~ / smart-scale. (https://github.com/InitialState/smart-scale/blob/master/smartscale.py)

Algumas configurações precisam ser definidas no script antes que você possa executá-lo. Abra smartscale.py em seu editor de texto favorito, como o nano.

$ cd ~ $ cd escala inteligente $ nano smartscale.py

Perto do topo deste arquivo, há uma seção Configurações do usuário.

# --------- Configurações do usuário --------- BUCKET_NAME = ": apple: Meu histórico de peso" BUCKET_KEY = "weight11" ACCESS_KEY = "COLOQUE SUA CHAVE DE ACESSO AO ESTADO INICIAL AQUI" METRIC_UNITS = FalseWEIGHT_SAMPLES = 500THROWAWAY_SAMPLES = 100WEIGHT_HISTORY = 7 # ---------------------------------

  • BUCKET_NAME define o nome do intervalo de dados do estado inicial para o qual seu peso / dados serão transmitidos. Isso pode ser definido aqui e alterado posteriormente na IU.
  • BUCKET_KEY é o identificador exclusivo do intervalo que especifica para onde seus dados serão transmitidos. Se você deseja criar um bucket / painel diferente, use um identificador diferente aqui (* observe, se você arquivar um bucket, você não pode reutilizar sua chave em um novo bucket).
  • ACCESS_KEY é a chave da sua conta de estado inicial. Se você não colocar sua ACCESS_KEY neste campo, seus dados não aparecerão em sua conta.
  • METRIC_UNITS permite que você especifique seu peso em kg se definido como Verdadeiro ou lb se definido como Falso.
  • WEIGHT_SAMPLES especifica quantas medições são feitas e calculadas juntas para obter seu peso real. 500 medições levam cerca de 4-5 segundos e fornecem resultados bastante precisos.
  • THROWAWAY_SAMPLES especifica o número de amostras que são jogadas fora quando você pisa na placa pela primeira vez. Isso evita que as etapas iniciais e mudanças prejudiquem a medição final. Deve ser sempre muito menor que WEIGHT_SAMPLES.
  • WEIGHT_HISTORY define o número de medidas tomadas antes que uma atualização extra seja enviada. Apenas as medições feitas com duas horas ou mais de intervalo contam para o histórico.

Depois de especificar cada parâmetro nesta seção e salvar suas alterações, você está pronto para executar o script final. Antes de executar o script, vamos ver o que ele fará.

  • No início do script, você será solicitado a emparelhar o Wii Balance Board com o Raspberry Pi. Use a alavanca que você hackeado na seção Parte 2: Ajustes de hardware para pressionar o botão de sincronização quando solicitado.
  • Assim que o script estiver rodando, pise no Wii Board para começar a medir seu peso. Depois de 4-5 segundos, seu peso será enviado automaticamente para sua conta do estado inicial.
  • Depois de configurarmos as notificações por SMS (em algumas etapas), você receberá uma mensagem de texto logo após a medição.

Execute o script para iniciar a mágica.

$ sudo python smartscale.py

Etapa 8: Painel

Painel
Painel

Vá para sua conta de estado inicial e clique no novo intervalo de dados com o nome correspondente ao parâmetro BUCKET_NAME (ou seja, Meu histórico de peso). Clique em Ladrilhos para ver o painel do seu histórico de peso. Você deve ver três blocos na primeira vez que visualizar seus dados em blocos - atualização, data do peso e peso (lb). Você pode personalizar seu painel redimensionando e movendo blocos, bem como alterando os tipos de visualização e até mesmo adicionando blocos. Este painel dá a você a capacidade de ver seu histórico de peso em um relance. É compatível com dispositivos móveis e você pode até mesmo compartilhá-lo com outras pessoas.

Você pode adicionar uma imagem de plano de fundo ao seu painel para dar aos seus dados mais personalidade e contexto.

Etapa 9: SMS

SMS
SMS

Vamos criar um alerta SMS sempre que a balança fizer uma medição de peso. Certifique-se de que seu balde de dados de histórico de peso esteja carregado.

  1. Clique nas configurações do depósito (sob seu nome) na janela do depósito de dados.
  2. Clique na guia Triggers.
  3. Selecione o fluxo de dados para disparar. Você pode usar a lista suspensa para selecionar a partir de fluxos existentes, uma vez que um depósito de dados foi carregado ou você pode digitar o nome / chave do fluxo manualmente. Na captura de tela do exemplo acima, "Atualizar" está selecionado.
  4. Selecione o operador condicional, neste caso 'match'.
  5. Selecione o valor de Disparo que irá disparar uma ação (digite manualmente o valor desejado). Digite lb se você não estiver usando unidades métricas ou em kg se estiver usando unidades métricas. Sempre que o fluxo "Atualizar" contiver "lb" (ou "kg"), você receberá uma notificação por mensagem de texto.
  6. Clique no botão '+' para adicionar a condição de acionamento.
  7. Digite seu endereço de e-mail ou número de telefone no campo "Contatos para notificar".
  8. Clique no botão '+' para adicionar as informações de contato.
  9. Insira qualquer código de verificação se adicionar um novo número de telefone para concluir a configuração.
  10. Clique no botão Concluído na parte inferior para retornar à tela principal. Seu gatilho agora está ativo e será disparado quando a condição for atendida.

Depois que a configuração estiver concluída, você receberá um SMS sempre que se pesar contendo seu peso, quanto seu peso mudou desde a última medição e uma piada / insulto / elogio aleatório.

Etapa 10: Conclusão

Existem opções ilimitadas para você construir sobre o que você criou agora. Aqui estão algumas idéias para este projeto:

  • Você pode transmitir dados de outras fontes para o mesmo painel de histórico de peso (informações) para criar seu próprio painel de saúde pessoal.
  • Você pode alterar as piadas nas funções messageWeighFirst, messageWeighLess, messageWeighMore e messageWeighSame para seu próprio senso de humor.
  • Você pode transformar as piadas em mensagens práticas ou removê-las e usar o código da escala para rastrear o peso de algo mais importante além do seu próprio peso corporal.
  • Você pode criar sua própria geladeira de cerveja / vinho inteligente usando a mesma abordagem. Já existe um tutorial incrível feito para isso aqui.

Hackeie e me diga se este tutorial o inspira a criar algo incrível.

Recomendado: