Índice:

Relógio de localização 'Weasley' com 4 ponteiros: 11 etapas (com fotos)
Relógio de localização 'Weasley' com 4 ponteiros: 11 etapas (com fotos)

Vídeo: Relógio de localização 'Weasley' com 4 ponteiros: 11 etapas (com fotos)

Vídeo: Relógio de localização 'Weasley' com 4 ponteiros: 11 etapas (com fotos)
Vídeo: HARRY POTTER STUDIO TOUR LONDON | COMPLETE WALK THROUGH 2024, Julho
Anonim
Relógio de localização 'Weasley' com 4 ponteiros
Relógio de localização 'Weasley' com 4 ponteiros

Então, com um Raspberry Pi que já estava no ar há algum tempo, eu queria encontrar um projeto legal que me permitisse fazer o melhor uso dele. Eu encontrei este excelente relógio de localização Weasley com instruções para construir seu próprio Weasley por ppeters0502 e pensei que seria bom tentar.

O relógio consiste basicamente em um Raspberry Pi que controla os servos para girar os ponteiros do relógio. Como na casa da família Weasley nos livros / filmes de Harry Potter, cada membro da família tem sua própria mão. Cada mão aponta para a localização atual desse membro da família. O relógio consegue isso recebendo mensagens dos celulares da família sempre que eles entram ou saem de um raio pré-definido.

As principais diferenças em relação ao Instructable anterior eram que eu precisava ter 4 ponteiros, não 2 (caso contrário, minhas filhas reclamariam) e decidi construir o quadro também, não pegar um relógio antigo para reutilizar. Isso porque eu estava preocupado que o espaço fosse um problema em uma caixa de relógio existente, com a necessidade de encaixar 4 servos etc.

Demorou muito mais do que eu esperava, embora principalmente quando me deparei com problemas complicados que me confundiram e que não parecem ter sido cobertos pela postagem original. Nada contra o Instructable original, que geralmente era ótimo, mas alguns anos se passaram e as versões das coisas mudaram … etc. Além disso, estar no Reino Unido significava que alguns dos elementos Imperial / Metric causaram mais desafios do que eu esperava.

Além disso, embora eu esteja bem com a codificação, a construção física do relógio definitivamente me esticou e exigiu algumas ferramentas adicionais, o que também me atrasou um pouco.

No final, incluirei uma seção sobre "Coisas que eu faria diferente / melhor se estivesse fazendo de novo …"

Suprimentos:

Uma das coisas que me impressionaram foi que os componentes caros tinham a ver com os ponteiros do relógio. 4 mãos é definitivamente muito mais caro do que 2. Decidi colocar alguns custos para que você tenha uma ideia. É a primeira vez que somei tudo e, desconsiderando as ferramentas, acho que gastei cerca de £ 200. Além de algumas coisas que não usei (e não incluí abaixo), mais o Pi, mais a fonte de alimentação que eu já tinha.

Pi etc

  1. Raspberry Pi - não me lembro quanto custava originalmente, mas era um modelo 2B. Eu acho que se você ainda não tiver um, então até mesmo um Pi Zero provavelmente serviria. Eu tinha adicionado um dongle wi-fi e um cartão SD com Raspbian. E eu tinha um velho carregador de celular Android por aí.
  2. Servohat Adafruit para o Pi - £ 16
  3. Fonte de alimentação para o Servohat - Isso eu realmente tive dificuldade em encontrar, já que todos os sites apenas apontavam para o site da adafruit, que obviamente recomenda uma fonte de alimentação dos EUA. Então percebi que tinha uma fonte de tensão variável antiga com pontas intercambiáveis, então usei-a. Mas o dos EUA custa US $ 8, então esse é o valor aproximado.
  4. Caixa para o Pi, para que eu pudesse anexá-lo ao quadro do relógio. £ 5

Servo's e engrenagens

Aqui estou citando o preço de todos os 4, então divida se quiser menos mãos (somando-o é ~ £ 40 POR MÃO = £ 160: -o

  1. 4 x Servos - usei os recomendados por ppeters0502 - encontrados no ebay por ~ £ 15 cada = £ 60 - pesquisei o seguinte texto "GWS-Digital-Servo-Sail-Winch-S125-1T-2BB-360-degrees "mas às vezes eles não estavam disponíveis
  2. 4 tubos de latão que se encaixavam exatamente uns nos outros - ~ £ 3 cada. Eu tenho 1 cada de 1/4 ", 7/32", 3/16 ", 5/32" = £ 11
  3. 4 x grampos que se prendem aos tubos de latão para permitir que você prenda as engrenagens. ~ £ 7 cada = £ 28. Eu os comprei da ActiveRobots que fazem pedidos regulares da Servocity nos EUA, permitindo que você evite o envio internacional. Eles também podem obter qualquer outra coisa que você possa encontrar no site principal da Servocity nos EUA. Isso foi muito útil para os próximos 2 itens
  4. 4 x acetil 0,770 "padrão de engrenagens para montagem nos cubos de fixação. ~ £ 6 cada = £ 24
  5. 4 engrenagens de acetil montadas em acetil spline para montagem nos servos. ~ £ 6,50 cada = £ 26
  6. 1 x pacote de porcas sextavadas para engrenagens conectadas às porcas de fixação = £ 2,60
  7. 1 x 7/64 "chave hexagonal (chave allen) porque qualquer coisa vinda dos EUA é imperial, então as centenas de chaves allen que eu já tenho são inúteis = £ 1

Para a construção física

Aqui, usei principalmente sobras de coisas que menti sobre

  1. 2 x quadrados de madeira compensada para a placa 'frontal' e 'posterior'
  2. Em seguida, cortei cilindros de 4x10cm de um corrimão antigo que eu tinha, a fim de conectar a parte de trás ao rosto
  3. Alguns blocos para montar os servos no deslocamento correto - apenas sobras de madeira macia que cortei no tamanho certo.
  4. Parafusos variados. de muito pequeno (para anexar a caixa Pi ao quadro) a médio (para anexar o quadro)
  5. Folha de aço carbono de 0,75 mm com cerca de 50 cm x 20 cm (para cortar as mãos). Esta foi a única coisa que comprei ~ £ 9 da Wickes

Ferramentas

Algumas coisas eu tinha e outras eu peguei emprestado ou comprei

  1. Ferro de soldar + solda elétrica - para anexar os conectores ao Adafruit Hat & Pi.
  2. Jigsaw - para cortar a forma áspera das mãos
  3. Furar. apenas uma broca 18V sem fio normal
  4. Brocas - Lembre-se de que você PRECISARÁ de brocas imperiais para fazer orifícios que combinem com os tubos de latão. Consegui pegar emprestado.
  5. Serrote - para cortar os tubos de latão. Não faça o que eu fiz e gaste £ 3 no cortador de tubos, ele funciona por pressão e faz com que o interior dos tubos fique um pouco menor. então o tubo de tamanho seguinte não se encaixa através
  6. Moedor de bancada - eu não tinha um desses, mas um amigo tinha e tornava MUITO mais fácil moldar as mãos. Até então eu estava apenas usando arquivos. Eu não compraria um só para este projeto, mas para as mãos de metal foi ótimo.
  7. Comprei alguns arquivos de ponta de diamante variados (muito pequenos). útil para as mãos e tubos em torno de £ 15
  8. lixa áspera e lisa
  9. alguns pequenos grampos prendem as coisas no lugar durante a perfuração.
  10. um vício pelo mesmo motivo.

Etapa 1: Configurando seus telefones para enviar sua localização para seu Pi (Parte I Corretor MQTT)

Este bit é muito bem descrito por ppeters0502 em seu excelente Weasley Clock Instructable. Estranhamente, embora talvez refletindo diferentes conjuntos de habilidades, ele começou com a construção e depois mudou para o software, eu fiz o contrário. Então, comecei com o telefone … espere um pouco, não, comecei com o corretor MQTT, que é a Etapa 6 em seu Instructable. Omitirei todas as partes que ele faz muito bem e apenas adicionarei algumas partes que devo acrescentar. Eu segui a rota CloudMQTT que ele mencionou.

Mas enquanto estava escrevendo isso, verifiquei o link dos planos e descobri que não existe mais um plano grátis! Eles o retiraram, pelo que parece ser motivos razoáveis. ou seja, que as pessoas configurariam uma instância gratuita e nunca a usariam. Não percebi porque as instâncias atuais podem continuar. Então eu não vou mudar. Mas torna as instruções um pouco redundantes. Parece haver 3 opções.

  1. Pague US $ 5 por mês pelo Cloud MQTT (mas isso parece caro para o relógio em uma base contínua).
  2. Vá para a rota Mosquitto on Pi conforme descrito no primeiro Instructable. Não posso comentar sobre isso, mas pode ser uma boa opção.
  3. Apenas google "corretor de nuvem MQTT gratuito" e parece que existem alguns outros.

Portanto, supondo que você tenha um broker MQTT funcionando, se for semelhante ao CloudMQTT, haverá um Servidor, Usuário, Senha e Porta exibidos. Você precisará de tudo isso para configurar seus telefones para enviar ao corretor suas localizações / movimentos.

Etapa 2: configurar seus telefones para enviar sua localização para o seu Pi (trilhas próprias da parte II)

Isso também é muito bem abordado no Instructable original, nas etapas 7 (Android), 8 (iOS) e 9 (configuração de regiões).

Eu só tinha dispositivos iOS, então não tentei a etapa 7.

O que eu adicionaria a essas instruções?

  1. Na configuração existem também os campos TrackerID e DeviceID. Você deve ter essas informações para poder identificá-lo em sua família. Por exemplo. Eu os tinha como R e RPhone respectivamente. Isso significa que você pode passar para o relógio, qual servo e, portanto, qual ponteiro girar.
  2. Regiões são o nome dos locais que você deseja rastrear.
  3. Cada região é definida por um nome, uma latitude, uma longitude e um raio.
  4. Como eu queria ter vários locais como uma seção no meu Relógio, usei uma convenção de nomenclatura, que acabou sendo muito útil. Outros métodos são possíveis, mas funcionou para mim.

    • Por exemplo, para a seção FAMÍLIA do relógio, eu queria ter meus pais e irmãos e os pais e irmãos de minha esposa. Portanto, eu tinha locais como "Family Tom", "Family Dick", Family Harry "e" Family Parents R ". Isso significava que a próxima etapa poderia saber o que passar para o Relógio.
    • Lembre-se de que as pessoas podem estar em locais diferentes. Mas, desde que sejam consistentes com a convenção de nomenclatura, tudo bem. Por exemplo. meu trabalho seria diferente da região de trabalho de minha esposa e chamado de forma diferente. mas, desde que ambos comecem a "Trabalho", está tudo bem.
  5. Você deseja que o modo seja definido como 'Significativo' na tela Mapas. Isso significa que você (na maioria das vezes) só recebe mensagens ao entrar ou sair de regiões. Esta parece ser a versão atualizada da nota marcada como IMPORTANTE: no final da Etapa 8 no Instructable original.
  6. Conforme mencionado no Instructable original, usar o Google Maps é uma ótima maneira de descobrir a latitude / longitude de algum lugar. Achei mais eficiente fazer isso em massa, descobrindo todos os Lat / Longs da minha localização, depois os colei no Notes (no meu Mac) e com a sincronização da nuvem, isso significa que eles apareceram magicamente no meu iPhone no Notes e poderia copiá-los / colá-los no Owntracks. Também significava que eu poderia enviar o arquivo para os telefones da minha família e todos nós tínhamos localizações consistentes.
  7. Locais próximos podem causar problemas. Meu irmão mora a 2 ruas de distância, e inicialmente meu telefone pensava que eu estava simultaneamente na região de sua casa e também em casa. Eventualmente, eu tive que colocar lógica adicional no Node Red para capturar e ignorar esse acontecimento.

Etapa 3: Configurando o Raspberry Pi

Configurando o Raspberry Pi
Configurando o Raspberry Pi

Portanto, aqui estou assumindo que você tem uma base Pi configurada e em wi-fi. Eu estava comandando o Raspbian, mas isso não deveria importar. Use as instruções em raspberrypi.org para configurar tudo.

Observe que um Pi tem portas para exibição em um monitor e teclado / mouse etc. MAS obviamente, uma vez que você o tenha no relógio, você não quer nada disso. Portanto, a resposta, sugerida por alguém no site do Raspberry pi, eu acho, foi configurar uma conexão VNC. Isso permite que você se conecte de outro dispositivo ao Pi e o controle também. Eu faço isso no meu Mac, mas também no iPad. Eu sugiro usar algo com teclado para facilitar o uso.

Acabei de descobrir que eles parecem ter facilitado desde que me conectei … veja aqui

Essencialmente, você se conecta e obtém uma janela que é a interface Pi padrão.

Então, você tem uma janela para o seu Pi no seu laptop ou computador.

Agora você precisa conectar os Servos.

Primeiro você precisa fazer uma solda bastante básica para colocar o chapéu adafruit no Pi. É um pouco complicado, mas apesar de não ter soldado por 30 anos, estava bem. Como sempre, encontrei um vídeo útil no YouTube para me orientar, o que foi de grande ajuda.

Enquanto o chapéu pode rodar 16 servos, eu só precisei de 4 e então me incomodei em soldar o primeiro conjunto de 4 pinos.

Em seguida, os servos apenas se encaixam nos pinos. Fiz um primeiro para verificar se conseguia realmente fazer o servo se mover.

Foi aqui que encontrei meu primeiro grande obstáculo. Eu tinha um script python muito básico para mover os servos e literalmente nada aconteceu. Passei cerca de uma semana tentando novos scripts, etc, e então começou a aparecer fumaça no chapéu. Desligando tudo, verifiquei o esquema. Era um componente que protege contra polaridade reversa. Como eu tinha uma fonte de alimentação multitensão e multitensão, não percebi que você poderia ter a saída CC indo para os dois lados invertendo a ponteira. Eu entendi errado (chance 50:50) e acabei de queimar meu primeiro chapéu adafruit

:-(Então, um pequeno atraso enquanto eu comprei um novo, soldou novamente e corrigiu a ponta. Muito melhor.

Em seguida, eu precisava descobrir como mover os servos para o ponto correto do relógio. Isso virá na Etapa 5, mas o que eu fiz, sem ter construído o relógio real, foi parafusar levemente os servos em um pedaço de madeira aleatório e colar um pouco de fita adesiva com uma flecha neles, como na foto. Isso deu um feedback muito visual sobre o que eu estava codificando.

Etapa 4: Instalando o Node Red (obtendo as mensagens do servidor MQTT para o script Python)

Instalando o Node Red (obtendo as mensagens do servidor MQTT para o script Python)
Instalando o Node Red (obtendo as mensagens do servidor MQTT para o script Python)
Instalando o Node Red (obtendo as mensagens do servidor MQTT para o script Python)
Instalando o Node Red (obtendo as mensagens do servidor MQTT para o script Python)
Instalando o Node Red (obtendo as mensagens do servidor MQTT para o script Python)
Instalando o Node Red (obtendo as mensagens do servidor MQTT para o script Python)
Instalando o Node Red (obtendo as mensagens do servidor MQTT para o script Python)
Instalando o Node Red (obtendo as mensagens do servidor MQTT para o script Python)

Node-RED é um programa que você instala no Pi, que oferece uma interface visual (em seu navegador) para receber mensagens de seu servidor MQTT e usá-lo para passar as informações corretas para seu script python (abordado na próxima etapa (Etapa 5). Eu praticamente usei as instruções de ppeters0502 na Etapa 5. Há lógica nesses fluxos, e lógica adicional no python, e você pode ter mais ou menos em cada um, dependendo de sua preferência. Basicamente, você precisa fazer a seguir

  1. Têm nós de recebimento para as mensagens MQTT - estes são roxo claro e eu tinha 1 por membro da família
  2. Mapeie isso para o servo que você deseja mover (numerado 0, 1, 2, 3)
  3. Determine se você está entrando ou saindo de um raio no OwnTracks
  4. Descubra para qual local o servo precisa estar apontando

    Houve algumas exceções às regras básicas que eu precisava incorporar

  5. Defina o ângulo corretamente

Eu tinha o Node-RED fazendo os 4 primeiros e mantive o Python relativamente simples.

Você pode ver o fluxo básico aqui, e todos os fluxos podem ser exportados para o formato aqui, o que significa que você pode importar este fluxo básico em seu Node-RED e então adaptar. Observe que eliminei todas as conexões dos nós roxos para que você não possa acessar minha instância MQTT. Eu também eliminei todos os nós de teste, pois eles contêm dados reais … você pode precisar alterar esse tipo de arquivo para flows.json a fim de importar para o seu Node-RED, mas o Instructables não me deixou fazer o upload.

Os nós verdes são nós de depuração que, em seguida, exibem a saída na janela de depuração à direita da tela (pode ser necessário expandir - encontre a seta no meio do caminho para a direita)

O primeiro bit a fazer é o bit "Ao vivo - apenas para depuração". Isso verifica se você pode receber as mensagens MQTT e ver o que há nelas. json é apenas uma versão mais estruturada das mensagens, o que permite que você extraia os dados mais facilmente. Nesse fluxo, quando ativo, eu conecto os nós roxos da parte superior esquerda ao nó json à direita deles.

Nós de teste

Depois de saber como as mensagens ficarão ao vivo, fica muito chato ter que sair de casa e descer a rua e voltar, apenas para acionar um evento. Depois de fazer isso, você pode copiar a mensagem em um gatilho de TESTE e, em seguida, clicar nele para simular o evento. Você também pode alterar os dados, para fingir que são para locais diferentes (certifique-se de que eles correspondam exatamente aos nomes dos locais em Owntracks).

Você pode ver no fluxo que todos os casos de teste vão para um nó separado e, em seguida, vão para o nó json. Isso serve apenas para limpar a tela.

Não consigo enfatizar o suficiente o quão úteis esses nós foram, e ainda são.

Chamando Python

Então, eu cheguei ao próximo obstáculo. Este exigiu MUITA pesquisa no Google em fóruns, etc. Meu fluxo funcionaria perfeitamente, mas não acionaria meu script python. Não consegui resolver isso, mas vou poupá-lo dos palavrões etc. Só para dizer que, conforme destacado na segunda captura de tela, você deve especificar python3, pois aparentemente o Node-RED assume python2, a menos que você especifique.

2 complicações adicionais - apenas se necessário

Então, tive uma série de desafios em que a lógica não funcionou muito bem. A primeira foi que o Owntracks ficou um pouco estranho e, como meu irmão mora a 2 ruas de distância, costumava dizer que eu estava em 2 lugares ao mesmo tempo, ou ficava alternando entre eles. A única maneira de contornar isso era adicionar uma condição para impedir os falsos positivos. Se alegasse que eu estava na casa dele, então eu direcionava e verificava a longitude / latitude real na mensagem e abortava se dissesse que eu estava realmente em casa.

O outro problema era que, ao passear com meu cachorro, eu não conseguia realmente obter um bom raio. Eu geralmente caminho na mesma área, então aqui, eu disse "se eu entrar nesta área, com certeza vou passear com o cachorro, e estarei até chegar em casa." isso significava que não mudaria para o pub que eu passo no caminho para casa, ou vários outros lugares locais que poderiam ser desencadeados enquanto passeava com o cachorro. Para fazer isso, eu precisei configurar algumas variáveis de contexto persistentes (procure-as no Node-RED. Veja a captura de tela. Essas variáveis persistem até que o Node-RED seja reiniciado e então posso dizer Se em um passeio de cachorro, defina a variável de contexto para "Cachorro". Em seguida, ignore QUALQUER COISA a menos que eu 'Entre' na Casa.

A última captura de tela é a do meu fluxo final real, com todas as exceções, apenas para seu interesse.

Etapa 5: realmente movendo servos com Python no Pi

Um curto desvio para servos. Eu não sabia nada sobre servos, mas há muitas informações online. Os que usei são servos contínuos que podem girar 360 graus e suavemente. O outro tipo principal são servos de passo que se movem em pedaços (passos) e aparentemente só vão até cerca de 180 graus (claramente não é útil aqui). A vantagem dos servos de passo é que você pode simplesmente colocá-los em um ângulo e eles se moverem até aquele ponto e parar. Toda a documentação que encontrei dizia que os servos contínuos funcionam recebendo uma velocidade e um tempo para manter essa velocidade (por exemplo, velocidade total por 1s) e eles terminam onde terminam, mas é relativo ao seu ponto inicial. Depois de muitas tentativas, não consegui fazer isso funcionar, mas descobri, usando a bancada de testes, que os servos voltavam consistentemente ao mesmo ponto dado o mesmo ângulo. O que é muito mais fácil, então acabei de fazer isso. Pode haver alguma desvantagem que eu não conheça, mas funciona para mim. Observe, entretanto, que cada servo é único e, portanto, você deve ter um conjunto único de ângulos para cada servo. Achei mais fácil ter um script Python de 'calibração', onde eu poderia definir os servos em ângulos, por sua vez, refinando-os até que parecessem certos. Este é o primeiro script anexado. Você apenas comenta os servos que não está testando, concentra-se em um e ajusta os valores conforme a necessidade. NOTA: a calibração para a bancada de teste é simples, grosseira e pronta. Você precisará recalibrar quando o relógio for montado, porque as engrenagens, etc, vão mudar tudo. Então, o segundo script é bastante básico. Faz o seguinte

  1. Importar algumas bibliotecas
  2. mover as variáveis provenientes do Node-RED para variáveis no script
  3. mapeia os ângulos determinados pelo script de calibração para os locais no relógio.
  4. verifique se o local é encontrado na lista e, se não for, vá para "Perigo"
  5. escreva o que foi feito em um arquivo de log
  6. mova o servo necessário para o ângulo necessário
  7. Impedir que um servo 'zumba' *

3 coisas a serem observadas.

O arquivo de log é muito útil para depuração. Isso significa que você pode examinar a depuração do Node-RED de uma mensagem e ver o que aconteceu no script. a saída fica assim. Os três primeiros são eu levando o cachorro para passear e, em seguida, a criança 1 saindo de casa e chegando à escola. Nota para verificar a hora no Pi. O padrão pode ser UTC e não permitir mudanças no horário de verão / inverno. Por exemplo. os tempos abaixo são de 1 hora.

2020-12-07_05: 36: 03 Who = 0, loc = Travelling, detail = Home, Angle = 10, index = 8

2020-12-07_05: 36: 04 Who = 0, loc = Dog, detail = Astons, Angle = 86,5, index = 10

2020-12-07_06: 07: 49 Quem = 0, loc = Casa, detalhe = entrada, Ângulo = 75, índice = 0

2020-12-07_06: 23: 53 Who = 2, loc = Travelling, detail = Home, Angle = 19, index = 8

2020-12-07_06: 30: 48 Quem = 2, loc = Escola, detalhe = N, Ângulo = 60,5, índice = 2

Servo-zumbido

Um dos Servos (0) continuou zumbindo após o final do script. Como você pode imaginar, isso é super chato de ter em nossa cozinha. Eu encontrei um tópico em algum lugar que mencionava definir o ângulo do servo para 'nenhum', o que de alguma forma o define como ocioso. Isso funcionou de forma brilhante e pode ser visto no roteiro no final.

Horários

Tenha em mente o quão baixo um ponteiro leva para fazer uma varredura em volta do relógio. Você pode ver no script que há uma linha time.sleep (4) logo antes de definirmos o servo para parar de zumbir. Isso porque você deve permitir que a mão chegue ao seu destino antes de colocá-la no modo inativo. Caso contrário, ele simplesmente para. Isso também é importante ao calibrá-lo, porque você está fazendo vários movimentos dentro do script. Eu configuraria para mover para todos os 12 locais por vez, para que eu pudesse verificar todos eles novamente. mas você precisa de um pouco de tempo entre eles.

Etapa 6: Finalizando o Software - Telefones para Servos

Depois de configurar o banco de testes e os scripts, você pode executá-lo 'ao vivo' um pouco e ver como funciona em tempo real. Foi aqui que encontrei as exceções que precisava adicionar ao meu fluxo Node-RED.

Você pode facilmente desconectar e conectar membros da família no fluxo Node-RED se quiser se concentrar em um. Por exemplo, se dois estão causando problemas, mas você deseja consertar um de cada vez. Caso contrário, lembre-se de que você continuará a receber mensagens de todos os telefones conectados.

Mencionei o problema de andar com o cachorro e a casa do meu irmão ser muito próxima. Eu tive 2 outros desafios.

Primeiro, locais dentro de outros locais. Minha esposa estava fazendo um curso em uma faculdade em Londres. Queríamos que fosse registrado como 'Escola', mas também é em 'Londres'. Então, precisamos reutilizar o contexto para dizer que se você estava saindo da 'Escola', então vá para 'Londres' e não para 'Viajar'.

Em segundo lugar, as condições de corrida. Como mencionado, a casa do meu irmão fica a 2 ruas de distância e também perto do nosso pub / restaurante favorito. Isso significa que às vezes 2 sinais são recebidos ao mesmo tempo ou muito próximos. Isso pode configurar uma 'condição de corrida' em que você obtém resultados diferentes, dependendo de qual passa pela lógica mais rápido, levando a resultados imprevisíveis. Para evitar isso, fiz com que todas as mensagens 'entrantes' tivessem um atraso de 1s na lógica, o que parecia resolver o problema. Pode haver maneiras melhores e mais elegantes de resolver isso, mas parecia funcionar.

Etapa 7: Construindo o Relógio Físico - Parte I - Servos e Eixo

Construindo o Relógio Físico - Parte I - Servos e Eixo
Construindo o Relógio Físico - Parte I - Servos e Eixo
Construindo o Relógio Físico - Parte I - Servos e Eixo
Construindo o Relógio Físico - Parte I - Servos e Eixo
Construindo o Relógio Físico - Parte I - Servos e Eixo
Construindo o Relógio Físico - Parte I - Servos e Eixo

Agora, a parte em que eu estava menos confiante, por isso deixei para durar. Eu queria um rosto de tamanho decente e construção fácil. Eu também estava nervoso por colocar fisicamente 2 servos em volta do eixo central. Isso significava que, tendo olhado brevemente no ebay em busca de relógios antigos como no instrutível que eu estava seguindo, decidi dar a mim mesmo mais chances construindo-o eu mesma.

  • Eu tenho 2 quadrados grandes (~ 30 cm) de madeira compensada que eu tinha espalhados (cerca de 9 mm de espessura).
  • Então cortei um velho corrimão em seções de 4x10 cm e aparafusei as placas frontal e traseira.
  • Tendo marcado o orifício central, perfurei-o para ficar do mesmo tamanho que o maior tubo de latão.
  • Então eu pintei com tinta brilhante branca normal.
  • Depois de algumas experiências, percebi que provavelmente não conseguiria colocar 4 servos em volta do mesmo eixo se todos estivessem presos à placa traseira (ou frontal). Então, eu precisava ter 3 + 1 ou 2 + 2, em cada prato. Acabei com 3 atrás e 1 na frente.
  • Calculei os deslocamentos necessários em um pedaço de papel e, em seguida, cortei os tubos de latão para combinar. Observe que o tubo mais grosso é o mais curto e o mais fino deve ir até a placa traseira. (Na verdade, embuti o menor em um orifício que perfurei parcialmente na placa traseira, mas não totalmente para que o eixo não se movesse para trás).
  • Para os tubos, comprei um cortador de tubos, mas que usa pressão para cortá-los e isso significa que você não pode colocar o tubo menor dentro. Usei uma serra e tive que fazer uma boa lima para fazê-los funcionar. Os arquivos de ponta de diamante foram inestimáveis aqui.
  • Em seguida, combinei o diagrama com os deslocamentos reais para os grampos e engrenagens *.
  • Assim que tive os offsets, soube o quão 'alto' fazer os blocos para montar os servos. Quebrei alguns blocos serrando-os muito finos e também perfurando o buraco para deixar o arame sair.
  • Em seguida, veio a parte complicada de onde colocar os blocos para que eles encontrassem exatamente as engrenagens do eixo. Eu aparafusei um bloco e então pude girar o servo para encontrar o eixo e então aparafusar no segundo bloco a outra extremidade do servo. Também descobri que precisava cortar um pouco de alguns blocos para evitar prender outras engrenagens. Demorou bastante.
  • Depois de fazer tudo isso, peguei meu estojo de framboesa, fiz dois furos e aparafusei na placa frontal. Então eu poderia adicionar o Pi, fechar as placas frontal e traseira (tendo conectado os servos ao pi (lembrando qual servo era para qual membro da família) e virar para as mãos …

* Aqui encontrei o maior problema, que ainda não resolvi completamente. Os tubos de latão eram de 1/4 ", 7/32", 3/16 ", 5/32". Mas os grampos eram métricos (exceto um que tinha 1/4 "). Convertendo os tubos em métricos eles tinham 6,35 mm, 5,56 mm, 4,76 mm e 3,97 mm. Os grampos restantes tinham diâmetro de 4 mm, 5 mm e 6 mm. O menor 2 e o os maiores estão bem. mas claramente o 0,44 mm é muito curso para a braçadeira, então eu tive que preenchê-lo com papel. Eu tentei várias vezes e funcionou bem por um tempo e depois se soltou novamente. Então, o segundo maior mão não funciona corretamente. No entanto, funcionou bem por cerca de 6 meses, então o tempo gasto fazendo isso bem foi um tempo bem investido. Mas se eu estivesse fazendo isso de novo, poderia ter aumentado ou diminuído um tamanho, com uma lacuna para tentar obter um grampo melhor para encaixe do tubo. Por exemplo, vá para 9/32 ", 1/4", (folga), 3/16 ", 5/32"

Etapa 8: os ponteiros do relógio

Os ponteiros do relógio
Os ponteiros do relógio
Os ponteiros do relógio
Os ponteiros do relógio
Os ponteiros do relógio
Os ponteiros do relógio

Decidi usar a chapa de aço porque queria algo rígido, mas menos provável que se partisse enquanto o estava fazendo. Também ser magro significava que 4 mãos eram menos problemáticas.

  • Primeiro, esbocei uma forma.
  • Em seguida, transferi para o aço em cima de uma fita adesiva.
  • Então, muito inexperientemente, recortei-os com meu quebra-cabeça. Eles eram, e são, todos diferentes, mas não me importo com isso.
  • Então um amigo sugeriu que eu pegasse emprestado seu moedor de bancada para modelá-los, e isso foi ótimo. altamente recomendado. Caso contrário, o arquivamento leva séculos.
  • Ainda havia algum lixamento a fazer e depois lixar para garantir que não houvesse arestas vivas e também um bom acabamento.
  • Tive de fazer furos para combinar os respectivos tubos de latão (use tubos cortados para verificar, não os montados no relógio).
  • Descobri que os orifícios precisavam de um pouco de lima para colocá-los nos tubos, mas uma vez colocados eles estavam firmes e não precisavam de cola. A exceção era a mão da frente que eu queria ter uma 'capa'. Então, cortei um pedaço de aço (quase sempre) redondo, depois de perfurar o orifício e colocá-lo no tamanho certo, e colei-o na frente. você pode ver na última foto. Ocasionalmente, a mão da frente precisaria de um pouco de cola para prendê-la, mas depois de algumas tentativas falsas, as mãos funcionam muito bem.
  • Eu havia rejeitado a ideia das fotos (porque as crianças reclamariam rapidamente das nossas fotos de encontros), então me contentei com a pintura de iniciais com tinta acrílica.

Etapa 9: Concluir

Completo!
Completo!
Completo!
Completo!

Tudo funciona muito bem. Os ponteiros às vezes estão um pouco desviados, dependendo de onde vieram, mas na verdade não importa porque cada local é uma seção e não apenas uma linha.

Às vezes, estranhamente, meu telefone se recusa a reconhecer que estou em casa. Estou claramente dentro do raio do Owntracks quando mostrado no mapa, e mesmo quando a precisão é boa … Não tenho ideia do porquê. não parece afligir o resto da minha família. mas a configuração é a mesma. Isso significa que o Owntracks nunca envia uma mensagem e eu fico preso em 'Viajar'. Mas geralmente se resolve eventualmente.

Tem sido muito útil ter em nossa cozinha, principalmente para saber quando as meninas estão voltando da escola, ou da casa de seus amigos, e então quando ter comida / chá pronto para elas.

Mais uma vez, um grande agradecimento a @ ppeters0502 pelas excelentes instruções a seguir. Esperançosamente, eles podem adicionar algo em torno de fazer um relógio com 4 ponteiros.

Etapa 10: Coisas que aprendi e que faria melhor / de forma diferente se tivesse que fazer de novo

  • As construções físicas precisam de tentativa e erro. Não há como prever os problemas de espaço, você só precisa mergulhar e tentar.
  • Para o código, pesquisar problemas no Google é essencial
  • Comece básico e aumente. Os servos na madeira da bancada de teste significava que eu poderia fazer a maior parte funcionar sem a construção física
  • Posso ter as mãos cortadas a laser em uma máquina CNC. Mas eu não sabia onde ficava o local, e gosto de como funcionava o aço-carbono (era barato e a esmerilhadeira tornava-o muito mais fácil)
  • um motor de passo pode ser possível se você usar a engrenagem para dar uma volta de 360º. mas você pode ter que ter os servos muito perto do eixo central
  • Existem 2 tipos de servo (Futaba e HiTech). Certifique-se de ter verificado isso, pois eles têm diferentes números de dentes na ranhura. E comprei os errados inicialmente …
  • Não conecte o chapéu com a polaridade errada;-)
  • Google e Stack Overflow são seus amigos quando estão presos. Mas você precisa usar bons termos de pesquisa …
  • A bancada de testes é, na verdade, uma maneira de obter uma versão mais simples e barata com muito mais facilidade. A maior parte da complicação com a construção vem de ter que ter as mãos girando em torno do mesmo eixo. Se você se comprometer com isso, tudo será muito mais fácil. E eu acho que 4 pode ser o limite de um único eixo, a menos que o eixo fique muito mais longo. Você poderia, suponho, ter 3 na placa frontal e três na placa traseira se o eixo fosse mais longo …

Etapa 11: Possíveis extensões futuras …?

As idéias que tive sobre as próximas etapas são as seguintes.

  1. Eu gostaria de reformular um iPad antigo como mostrador do relógio. ou seja, faça um relógio digital. Possivelmente baseado em navegador ou um aplicativo. Como um relógio físico é essencialmente sem estado (ou seja, não sabe onde está atualmente, exceto pelo fato dos ponteiros estarem em uma posição física), eu precisaria ter um armazenamento persistente de dados. O Node Red pode gravar no sistema de arquivos local, então provavelmente eu faria isso.
  2. Se eu fizesse isso, gostaria de poder ver de fora de casa. Mas então realmente precisamos resolver a segurança. Como o acesso na mesma rede wi-fi é uma coisa, o acesso pela internet é outra. No momento, não tenho ideia da melhor forma de fazer isso, mas suspeito que uma assinatura MQTT indo para o outro lado poderia funcionar (pi publica o status atual e dispositivos externos assinam isso) …?
  3. Eu gostaria muito de uma mão para 'Abroad'. mas isso pode ser complexo do ponto de vista do OwnTracks. Talvez pudesse apenas usar long / lat combinado com alguns raios enormes?

Recomendado: