Mudanças entre as edições de "Cofre para Coding Dojo com Arduino"

De Garoa Hacker Clube
Ir para navegação Ir para pesquisar
m
m (Foram revertidas as edições de Yangping55 (disc) para a última versão por Pitanga)
 
(Uma revisão intermediária por um outro usuário não está sendo mostrada)
(Sem diferença)

Edição atual tal como às 05h55min de 19 de outubro de 2017

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.