In this article we look at a tilt sensor – this time its the RPI-1031 and we will connect it to a Wemos
The RPI-1031 tilt sensor is capable of sensing a change in orientation in four different directions: forward, back, left or right</p
This tilt sensor can be used to detect multiple orientations. Inside the sensor are infrared emitters which are either reflected or not, depending on the orientation of the sensor. By reading the output of the various pins you can easily determine the orientation of the sensor and your project.
Being a tilt sensor this is just a metal ball that rolls around inside the case. The ball is always up against one side even when it is flat.
The sensor needs power and ground, you can then connect the 2 digital pins. These 2 digital pins will output LOW/LOW, LOW/HIGH, HIGH/LOW and HIGH/HIGH depending on the wall it is touching.
Parts Required
Name | Link |
Wemos Mini | D1 mini – ESP8266 |
RPI-1031 | RPI-1031 Angle Sensor 4DOF Attitude HM Module 4 Direction For Arduino |
Connecting wire | Free shipping Dupont line 120pcs 20cm male to male + male to female and female to female jumper wire |
sensor shield | Expansion IO Board Sensor Shield |
Schematic/Connection
Wemos | Sensor |
3v3 | Vcc |
Gnd | Gnd |
D5 | S1 |
D6 | S2 |
Code Example
The code for this sensor is really basic, it just checks the 2 pins, to see what side is being touched – The simple function simply takes the 2 digital outputs and returns 0,1,2 or 3 depending on the side.
[codesyntax lang=”cpp”]
int tilt_s1 = 2;
int tilt_s2 = 3;
void setup(){
pinMode(tilt_s1, INPUT);
pinMode(tilt_s2, INPUT);
Serial.begin(9600);
}
void loop(){
int position = getTiltPosition();
Serial.println(position);
delay(200); //only here to slow down the serial output
}
int getTiltPosition(){
int s1 = digitalRead(tilt_s1);
int s2 = digitalRead(tilt_s2);
return (s1 << 1) | s2; //bitwise math to combine the values
}
[/codesyntax]
Output
Open the serial monitor and you should see something like this, I was moving the sensor around.
Not the most intuitive readings admittedly and it seems to work
3
3
3
2
0
0
Links
https://github.com/sparkfun/Tilt-a-Whirl_Breakout