No post de hoje vamos verificar o funcionamento do sensor mostrado na imagem abaixo, o Sensor Tilt RPI-1031, usado para detecção de direção e movimento.
Apesar de não possuir a precisão de um acelerômetro, este sensor é muito fácil de usar e se adapta bem a projetos robóticos.
Você pode por exemplo detectar o tombamento de um carrinho ou verificar se realmente ele virou para a posição “A” ou “B”. Vamos ver como esse sensor funciona.
Como funciona o sensor de movimento e direção RPI-1031
O RPI-1031 funciona de uma maneira muito simples: dentro do sensor existe um led infravermelho, que se comunica com dois receptores fotossensíveis através de uma superfície reflexiva.
Entre esses componentes e a superfície reflexiva existe uma espécie de “tampa” que de acordo com a movimentação do componente pode cobrir o sensor IR ou os receptores.
Assim, enquanto movimentamos o sensor podemos ter 4 estados:
- LED IR bloqueado
- Receptor 1 bloqueado
- Receptor 2 bloqueado
- nenhum dos 3 bloqueados.
Esses sinais são enviados para os pinos S1 e S2 do módulo:
O que precisamos fazer então é uma leitura básica do estado desses dois pinos e então sabemos para qual lado o sensor foi movimentado, de acordo com o nosso projeto.
Conexão do RPI-1031 no Arduino
Nos nossos testes vamos conectar o sensor RPI-1031 no Arduino Uno. Usamos somente os pinos digitais 4 e 6, conforme imagem abaixo:
A alimentação do módulo será feita pelo pino 5V do Arduino, mas também é possível usar em 3.3V sem problemas.
Programa RPI-1031 e Arduino
Como vamos apenas ler o estado dos pinos de saída S1 e S2 do RPI-1031, não há necessidade de utilização de bibliotecas então vamos usar somente os comandos digitalRead().
No programa abaixo serão mostrados no serial monitor os valores de 0 a 3, conforme movimentarmos o módulo:
Eu chamei de 0, 1, 2 e 3 mas obviamente você pode alterar o programa de acordo com o seu projeto e colocar um nome mais amigável como direita/esquerda, acima/abaixo, etc.
//Programa: Sensor de direcao e movimento RPI-1031 com Arduino //Autor: Arduino e Cia //Definicoes dos pinos de conexao de saida int pino_S1 = 4; int pino_S2 = 6; int valor_s1, valor_s2; void setup() { Serial.begin(9600); //Definicao dos pinos como saida pinMode(pino_S1, INPUT); pinMode(pino_S2, INPUT); Serial.println("Teste de sensor tilt RPI-1031"); } void loop() { int position = getTiltPosition(); Serial.print("Posicao: "); Serial.print(position); Serial.print("\tSaida S1: "); Serial.print(valor_s1); Serial.print("\tSaida S2: "); Serial.println(valor_s2); //Aguarda 200ms e repete o processo delay(200); } int getTiltPosition() { valor_s1 = digitalRead(pino_S1); valor_s2 = digitalRead(pino_S2); return (valor_s1 << 1) | valor_s2; //bitwise math to combine the values }
No serial monitor da IDE do Arduino você acompanha o estado das saídas:
Simples, não? Utilize o Sensor de Movimento Tilt RPI-1031 também com Raspberry Pi, ESP8266, ESP32 e outras placas e microcontroladores.
Gostou? Confira outros posts usando sensores aqui mesmo no Arduino e Cia!