50% OFF! Hot items selling fast—Grab them before they're gone!
The Infrared Obstacle Avoidance Sensor detects nearby reflective objects using an infrared emitter and receiver pair. It is designed for robot obstacle avoidance, conveyor counting, edge detection, and simple proximity-trigger projects.
The onboard potentiometer adjusts the detection threshold and effective range, while the digital output can be read directly by Arduino, ESP32, STM32, and Raspberry Pi Pico boards. Use it with the OpenELAB UNO R3 Intermediate Kit V2 for quick robot experiments.
The effective distance is typically adjustable from about 2 cm to 30 cm, but the actual range depends on object color, reflectivity, angle, and ambient infrared light.
| Parameter | Value |
|---|---|
| Sensor type | Infrared obstacle avoidance sensor |
| Detection principle | IR reflection from nearby obstacle |
| Output type | Digital signal, commonly active-low on detection |
| Operating voltage | 3.3 V to 5 V |
| Adjustable detection range | Approx. 2 cm to 30 cm |
| Sensitivity adjustment | Onboard potentiometer |
| Indicator | Blue detection indicator LED |
| Connector | 2.54 mm pitch 3-pin header |
| Pinout | GND, VCC, S |
| Recommended use | Robot obstacle avoidance, object counting, reflective detection |
| Development support | Arduino, ESP32, STM32, Raspberry Pi Pico GPIO |
Use Infrared Obstacle Avoidance Sensor as a digital line sensor. The output is commonly active-low when a reflective target is detected, so the code prints line state for calibration.
const int SENSOR_PIN = 2;void setup() { pinMode(SENSOR_PIN, INPUT); Serial.begin(115200);}void loop() { bool activeLow = digitalRead(SENSOR_PIN) == LOW; Serial.println(activeLow ? “line_or_reflection_detected” : “background”); delay(50);}
A single sensor can be used for simple demonstrations, or duplicated left/right for a basic line-following robot.
const int LEFT_SENSOR = 2;const int RIGHT_SENSOR = 3;const int LEFT_MOTOR = 5;const int RIGHT_MOTOR = 6;void setup() { pinMode(LEFT_SENSOR, INPUT); pinMode(RIGHT_SENSOR, INPUT); pinMode(LEFT_MOTOR, OUTPUT); pinMode(RIGHT_MOTOR, OUTPUT);}void loop() { bool left = digitalRead(LEFT_SENSOR) == LOW; bool right = digitalRead(RIGHT_SENSOR) == LOW; analogWrite(LEFT_MOTOR, right ? 180 : 90); analogWrite(RIGHT_MOTOR, left ? 180 : 90);}
Count passing marks, slots, or reflective labels with a debounce interval to prevent repeated triggers.
const int SENSOR_PIN = 2;unsigned long lastHit = 0;unsigned long count = 0;void setup() { pinMode(SENSOR_PIN, INPUT); Serial.begin(115200);}void loop() { bool detected = digitalRead(SENSOR_PIN) == LOW; if (detected && millis() – lastHit > 150) { count++; lastHit = millis(); Serial.println(count); }}
Q: Can this module work with Arduino?
A: Yes. Connect VCC, GND, and the signal pin to an Arduino-compatible board or an OpenELAB Sensor Shield V5.
Q: Can it work with 3.3 V controllers?
A: Yes for the listed 3.3 V to 5 V modules, but keep analog output within the controller ADC range.
Q: Is calibration required?
A: For threshold or quantitative use, calibrate in the final installation and record baseline readings.
Q: Can I use long wires?
A: Shorter wires are better for analog stability; use averaging in firmware if readings fluctuate.
Q: Does the module output precise engineering units?
A: Most of these modules provide relative analog or digital signals, not certified measurement data.
Q: What should I check first if it does not trigger?
A: Verify power, ground, pin mapping, threshold setting, and whether the signal is active-high or active-low.
Q: Is it suitable outdoors?
A: Only with enclosure protection. Keep connectors and electronics away from water and corrosion.
Q: Can it drive a relay or motor directly?
A: No. Use the module as an input to a controller, then drive a suitable relay or motor driver.