Cofre para Coding Dojo com Arduino

De Garoa Hacker Clube
Revisão de 05h55min de 19 de outubro de 2017 por DQ (discussão | contribs) (Foram revertidas as edições de Yangping55 (disc) para a última versão por Pitanga)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegação Ir para pesquisar

Esta página descreve a montagem de um "Cofre" para uso em um Coding Dojo com Arduino.

Cofre1.jpg

Motivação

O Garoa vem realizando há anos sessões do Coding Dojo com Arduino usando um display de 7 segmentos e um potenciômetro (originalmente de forma artesanal e mais recentemente com o Garoa Dojo Shield). Este hardware é plenamente adequado para uma primeira experiência de programação, mas:

  • As variações do desafio são limitadas, reduzindo a atração por uma segunda sessão.
  • É voltado para o novato em programação e Arduino.
  • Depois da décima vez, os instrutores perdem o pique (pelo menos eu!)

O hardware proposto apresenta um nível maior de complexidade, tanto na variedade dos elementos como no comportamento final desejado. Novatos podem ser atendidos por um subconjunto do comportamento proposto para o cofre.

Elementos do Hardware

O hardware é composto por:

  • Um servo motor, que é a trava do cofre
  • Um botão para comandar a abertura
  • Um LED bicolor (acende verde ou vermelho) para indicar se o comando de abertura foi aceito
  • Um potenciômetro, alterado para girar continuamente, para entrada da combinação
  • Um sensor de efeito Hall, para detectar se a tampa do cofre está aberta ou fechada

Comportamento Desejado

  1. No estado inicial o cofre está aberto e a trava desativada. O botão e o potenciômetro são ignorados, apenas o sensor da tampa é monitorado.
  2. Quando o sensor da tampa indicar que ela foi fechada, a trava é acionada. Botão e potenciômetro passam a ser monitorados.
  3. Quando o botão for apertado, é conferido se a combinação foi entrada corretamente.
    1. Se sim, acende o LED na cor verde, a trava é liberada, aguarda abrir e volta ao estado inicial.
    2. Se não, acende o LED é aceso na cor vermelha.
  4. A combinação correta é:
    1. Girar no sentido horário até a posição 7
    2. Girar no sentido anti-horário até a posição 2
    3. Girar no sentido horário até a posição 9

Sugestão de Tarefas para Solução

A lista abaixo é um sugestão das tarefas a serem feitas para montar uma solução. Exceto por dependência diretas a ordem das tarefas não importa.

  • Controle do Servo motor:
    • Mover o servo
    • Determinar as posições para travado e livre
  • Botão:
    • Detectar botão apertado e solto
  • LED:
    • Acender o LED na cor vermelha
    • Acender o LED na cor verde
  • Potenciômetro:
    • Ler a posição atual
    • Determinar se está sendo girado no sentido horário ou anti-horário
    • Determinar se a combinação foi entrada corretamente
  • Sensor de efeito Hall:
    • Detectar a abertura e fechamento da tampa

Resolvidas individualmente estas tarefas, evoluir com a lógica do programa para obter o comportamento desejado.

Opções Simplificadas

Algumas sugestões de problemas simplificados:

  • Acender o LED conforme a tampa está aberta ou fechada
  • Usar o botão diretamente para travar e liberar a tampa, sem necessidade da combinação
  • Travar automaticamente quando fecha a tampa e liberar quando aperta o botão
  • Considerar a combinação como uma posição do potenciômetro (por exemplo, libera a trava quando aperta o botão se o potenciômetro está na posição 8).

Detalhes dos Componentes e Conexões ao Arduino

  • Servo motor:
    • Motor que permite controlar a posição angular de 0 a 180 graus
    • Posição é definida pela largura do pulso no seu sinal de controle
    • Arduino vem com biblioteca e exemplo para controle de servo motor [1]
    • Sinal de controle ligado ao pino digital 2
  • Botão:
    • Chave de contato momentâneo
    • Um contato está ligado ao pino 3 e o outro a GND
    • Quando o botão está apertado o pino 3 estará ligado a GND, quando solto o pino 3 estará desconectado
    • Ver exemplo Digital | DigitalInputPullup
  • LED:
    • LED que acende vermelho ou verde conforme a polaridade da alimentação
    • Conectado aos pinos digital 4 e 5
  • Potenciômetro:
    • Resistor variável
    • Um extremo conectado ao +5V e o outro a GND
    • Terminal central ligado ao pino analógico 0
    • Ver exemplo AnalogreadSerial
    • Devido à alteração para girar livremente tem uma região onde a leitura não é confiável
  • Sensor de efeito Hall:
    • Sensor A1120LUA
    • Funciona como um botão que é apertado pelo polo sul de um imã
    • Saída ligada ao pino 6

Sketch de teste no github

Montagem Física

Cofre4.jpg Cofre3.jpg Cofre2.jpg

Ideias de Aperfeiçoamento

  • Incluir um buzzer e disparar se o sensor da tampa indicar que ela foi aberta sem a devida combinação.