Como usar o Sensor Tilt RPI-1031 com Arduino
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!
Parabéns pelo excelente Trabalho. Vou colocar na janela para informa a posição/estado
Valeu Carlos! 🙂
Abraço.
Adilson
Ola, tudo joia. Estou querendo comprar algumas unidades desse sensor. Não tô encontrando.
Bom dia Sérgio!
Tudo bem? Eu tenho 8 unidades a venda, neste link: https://arduinoecialoja.mercadoshops.com.br/MLB-2206937198-sensor-rpi-1031-tilt-direco-e-ngulo-4dof-arduino-raspberry-_JM
Abraço e obrigado!
Adilson