Timer - Prática
Lab 3 - Timer - Prática |
---|
Prazo: 09/9 (Antes da aula) |
Repositório no classroom |
💰 70% nota de lab |
Neste laboratório, aplicaremos os conceitos de timer para realizarmos a leitura de um sensor de distância e criarmos um dataloger.
HC-SR04
Para isso, vocês precisarão de:
Lista de Materiais | Valor |
---|---|
1x HC-SR04 | R$ 14,00 |
Requisitos
O sistema deve fazer a interface com o módulo de ultrasom, fazer a leitura de forma periódica e enviar os valores pela UART. Além disso, o sistema deve poder ser configurado via um terminal.
HC-SR04
O sensor opera com tensão de 5v, mas nossa placa trabalha com 3v3 por conta disso será necessário:
- Ligar o HC-SR04 no 5V (VBUS)
- Fazer um divisor resistivo no pino do
ECHO
- Trigger não precisa fazer nada!
No pullup
O HC-SR04 é um sensor ativo, não devemos ativar o pullup
no pino do ECHO!
Trigger
Se o sistema ativado, vocês devem gerar um pulso no pino trigger (pesquisa o tempo do pulso), isso vai fazer com que o sensor comece a leitura.
Echo
Vocês devem utilizar o periférico de timer para fazer a leitura do tempo que o Echo
fica em alto. Além disso, devem usar um alarme do RTC timer para detectar se por algum motivo o sensor não retornou um sinal.
Terminal
O usuário deve ser capaz de controlar algumas opções do sistema pelo terminal:
Start
: Inicializa a leituraStop
: Para a leitura
Em modo start o sistema deve produzir um log no terminal com a hora, minuto e segundo que a leitura foi realizada e o valor da distância:
Resultado esperado:
Dicas
A seguir algumas dicas de como fazer, você pode ou não seguir:
- Comece pela leitura do sensor (imprima o resultado na serial).
- Para cancelar um alarme use
cancel_alarm(alarm);
- Para cancelar um alarme use
- Implemente a detecção de falha.
- Para testar basta desconectar qualquer fio do sensor!
- VOcê
- Adicione o RTC (atualize o print).
- Você deve incluir o RTC no projeto, para isso consulte a página do RTC (configurando
cmake
)
- Você deve incluir o RTC no projeto, para isso consulte a página do RTC (configurando
-
Implemente a parte de leitura da serial.
-
Para ler dado da serial/terminal sem que o programa fique travado para sempre esperando um dado.
// Return a character from stdin if
// there is one available within a timeout.
int caracter = getchar_timeout_us (uint32_t timeout_us)
Info
Não esqueçam de verificar o code quality! Agora ele vai começar a apitar na cabeça de vocês!
Desafios extras
Gostou e quer fazer mais? Que tal:
- Pense em uma forma de calibrar o sensor.
- Tente ler dois sensores ao mesmo tempo.
- Modo alerta, se a distância chegar a um limite gere um som de alarme!
- Crie um código em python para exibir o valor.