50% OFF! Hot items selling fast—Grab them before they're gone!
The Infrared Trace Sensor is designed for line-following robots that need a stable digital reflection signal without repeated potentiometer adjustment. It uses an infrared emitter and receiver pair to detect reflected light from a nearby surface, making it suitable for black-white track detection, reflective mark reading, and compact robot chassis projects.
After the reflected signal is processed by an inverter or Schmitt trigger circuit, the module outputs a digital signal that a microcontroller can read directly. It works with 3.3 V and 5 V systems and connects easily to an OpenELAB Sensor Shield V5 or Arduino-style digital input.
Use it at a short working distance from the floor or target surface, since infrared reflection depends strongly on color, distance, ambient light, and material finish.
| Parameter | Value |
|---|---|
| Sensor type | Infrared reflection trace sensor |
| Detection principle | IR emitter and receiver pair |
| Signal processing | Inverter / Schmitt trigger digital output |
| Output type | Digital signal, commonly active-low on detection |
| Operating voltage | 3.3 V / 5 V |
| Detection response distance | 1 mm to 20 mm |
| Connector | 2.54 mm pitch 3-pin header |
| Pinout | GND, VCC, S |
| Indicator | Blue detection indicator LED |
| Mounting | Dual screw fixing |
| Development support | Arduino, ESP32, STM32, Raspberry Pi Pico digital input |
Use Infrared Trace 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.