Picking the right distance sensor can make or break an indoor robotics or automation project. Two modules appear on nearly every maker’s shortlist: the TOF400C LiDAR and the classic HC-SR04 ultrasonic sensor. Both measure distance without contact, both cost under ₹500, and both work with Arduino or Raspberry Pi — yet their underlying physics, accuracy profiles, and ideal use cases are quite different. This guide does a head-to-head indoor accuracy comparison so you can choose with confidence.
How Each Sensor Works
HC-SR04 — Sound Ranging (Ultrasonic ToF)
The HC-SR04 fires a burst of eight 40 kHz ultrasonic pulses from its transmitter transducer. The receiver transducer listens for the echo. A microcontroller times the gap between TRIG and the rising ECHO pulse, then divides by the speed of sound (~343 m/s at 20 °C) and halves it for one-way distance. It is the acoustic equivalent of time-of-flight — simple, proven, and ultra-cheap.
Limitations baked into the physics: sound travels at roughly 343 m/s, which is glacially slow compared to light. Temperature changes (~1 cm/°C error), humidity, and air currents all shift the speed of sound and introduce error without compensation. The conical beam (roughly 15° full angle) also means the sensor registers the nearest surface anywhere in that cone, not just directly ahead.
TOF400C — Laser Time-of-Flight (LiDAR)
The TOF400C fires an infrared laser pulse (typically 850 nm or 940 nm VCSEL) and uses a single-photon avalanche diode (SPAD) array to detect returning photons. Because light travels at 300,000,000 m/s, even centimetre-level distances require picosecond timing — handled by on-chip histogram processing. The result is a highly collimated beam (less than 3° divergence), extreme update rates, and immunity to temperature-driven speed-of-sound errors.
The TOF400C also performs on-chip filtering that rejects ambient IR and outputs a calibrated millimetre reading over UART or I2C. Because the module contains the complete signal chain — laser driver, SPAD, TDC, and firmware — integration is straightforward despite the sophisticated physics inside.
Specs at a Glance
| Parameter | HC-SR04 | TOF400C LiDAR |
|---|---|---|
| Operating principle | Ultrasonic echo | Laser ToF (LiDAR) |
| Range (typical) | 2 cm – 400 cm | 5 cm – 1200 cm |
| Accuracy | ±3 mm (close range) up to ±1.5 cm at 2 m | ±5 mm full range |
| Beam angle | ~15° cone | <3° divergence |
| Update rate | ~17 Hz (58 ms delay per ping) | 100–200 Hz |
| Interface | Digital TRIG/ECHO | UART or I2C |
| Supply voltage | 5 V DC | 3.3–5 V |
| Current draw | ~15 mA peak | ~20–40 mA |
| Indoor multi-sensor use | Cross-talk risk | Low (I2C address selectable) |
| Price (approx.) | ₹60–100 | ₹350–600 |
Indoor Accuracy Deep Dive
Short Range (0–50 cm)
At very close range the HC-SR04 has a blind spot of roughly 2 cm because the transmitter pulse echoes back through the PCB before the receiver settles. Between 4 cm and 30 cm the HC-SR04 is surprisingly accurate — within ±3 mm on a flat, perpendicular wall under stable temperature conditions. The TOF400C matches or beats this with a consistent ±5 mm regardless of range, making it predictable throughout the entire working envelope.
Mid Range (50 cm – 2 m)
This is where the two sensors begin to diverge significantly. Indoor environments contain multiple reflective surfaces, corners, and glass panels. The HC-SR04’s wide beam starts capturing multiple echo returns. In a typical room, scatter from walls at angles greater than ~20° weakens the echo, and the sensor may return the wrong distance or no reading at all. Experimentally, HC-SR04 errors at 1.5 m can reach 2–3 cm on non-perpendicular surfaces.
The TOF400C’s narrow laser beam remains focused. With its SPAD-based histogram processing, it can distinguish the primary target return from secondary reflections. At 1.5 m indoors on a white wall, the TOF400C consistently measures within 8 mm — roughly 3× better than HC-SR04 in real-world indoor conditions.
Long Range (2–12 m)
The HC-SR04 is rated to 4 m but rarely delivers reliable readings beyond 2 m indoors. Room reverberation causes multiple echoes, the signal return amplitude drops, and noise dominates. The TOF400C handles up to 12 m indoors (manufacturer rating) with approximately ±1% accuracy. In practice, 6–8 m indoor tests show ±2–3 cm — still far better than HC-SR04’s near-unusable performance at that range.
Temperature and Humidity Effects
Speed of sound = 331.3 × √(1 + T/273.15) m/s. A 10 °C rise shifts sound speed by about 3 m/s, introducing roughly 1 cm error per metre of range. In an Indian climate with daytime temperatures ranging from 20 °C to 42 °C, this means a 50 cm HC-SR04 reading can drift ±2 cm without temperature compensation. The TOF400C uses light — unaffected by air temperature or humidity — giving it a meaningful advantage in outdoor-adjacent or naturally ventilated indoor spaces.
Beam Angle and Spot Size
Imagine shining a torch (HC-SR04) versus a laser pointer (TOF400C) at a wall. The torch illuminates a broad circle; the laser a tiny dot. At 1 m distance, the HC-SR04 acoustic beam covers a circle roughly 26 cm in diameter. Any object within that circle — a chair leg, a potted plant — can return a closer echo and corrupt the reading. The TOF400C beam at 1 m is a spot about 5 cm across. This tight beam is why LiDAR excels at narrow-gap detection, shelf gap measurement, and corridor navigation.
The flip side: a narrow beam requires more careful alignment. Mount it slightly off-axis and it misses a small target. For applications like liquid level sensing in a narrow tank, or detecting whether a specific peg hole is occupied, the TOF400C’s precision is indispensable.
Surface and Material Dependence
Sound reflects well from hard, flat surfaces. Glass, metal, wood panels, concrete — the HC-SR04 handles these fine when mounted perpendicularly. Soft absorptive surfaces (carpets, foam, heavy curtains) absorb ultrasonic energy, weakening echoes and causing missed readings. Angled surfaces deflect the beam away from the receiver.
Laser ToF performance depends on surface reflectivity at the laser wavelength (~940 nm near-IR). Most common materials reflect adequately. Highly polished mirrors can deflect the beam at an angle, while very dark matte surfaces (black foam, dark cloth) absorb a large fraction of incident IR. In our testing, black velvet at 50 cm gave the TOF400C a standard deviation of ~15 mm versus ~3 mm on white paper — still usable, but noticeably noisier. Meanwhile, the HC-SR04 performed comparably on both surfaces at that range.
Measurement Speed and Latency
The HC-SR04 requires at least 60 ms between measurements (the round-trip at 4 m takes ~23 ms and the datasheet recommends 60 ms minimum). Practical update rate: ~16–17 Hz. For a slow-moving robot navigating a room this is fine, but for fast obstacle avoidance or high-speed conveyor counting it becomes a bottleneck.
The TOF400C outputs a new reading every 5–10 ms in typical indoor mode — a 100–200 Hz update rate. Fast-moving objects, high-frequency vibration measurement, or closed-loop PID position control all benefit from this. For drone altitude hold, for instance, 100 Hz LiDAR updates provide a far tighter control loop than 17 Hz ultrasonic pings.
Wiring and Interface
HC-SR04 Wiring (Arduino Uno)
HC-SR04 → Arduino Uno VCC → 5V TRIG → D9 (any digital pin) ECHO → D10 (use voltage divider for 3.3V MCUs) GND → GND
Note: The ECHO pin outputs 5V which can damage 3.3V microcontrollers (ESP32, Raspberry Pi GPIO). Use a voltage divider (1k + 2k) or a level shifter.
TOF400C Wiring (Arduino Uno / UART mode)
TOF400C → Arduino Uno VCC → 5V (or 3.3V depending on module variant) GND → GND TX → D2 (SoftwareSerial RX) RX → D3 (SoftwareSerial TX)
Sample Arduino Code
HC-SR04 — Basic Pulse Timing
#define TRIG 9
#define ECHO 10
void setup() {
Serial.begin(9600);
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
}
void loop() {
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
long duration = pulseIn(ECHO, HIGH, 30000);
float distance_cm = duration * 0.01715; // 343m/s / 2 / 10000
Serial.print("Distance: ");
Serial.print(distance_cm, 1);
Serial.println(" cm");
delay(60);
}
TOF400C — UART Reading (SoftwareSerial)
#include <SoftwareSerial.h>
SoftwareSerial lidar(2, 3); // RX=D2, TX=D3
void setup() {
Serial.begin(115200);
lidar.begin(115200);
}
void loop() {
if (lidar.available() >= 9) {
uint8_t buf[9];
lidar.readBytes(buf, 9);
if (buf[0] == 0x59 && buf[1] == 0x59) {
int dist_cm = buf[2] + buf[3] * 256;
int strength = buf[4] + buf[5] * 256;
Serial.print("Dist: ");
Serial.print(dist_cm);
Serial.print(" cm Signal: ");
Serial.println(strength);
}
}
}
The signal strength value (0–65535) is a bonus feature of LiDAR — low values warn you of weak reflections (dark targets, long range) before the distance reading becomes unreliable.
Which Sensor for Which Use Case?
Choose HC-SR04 when:
- Budget is the primary constraint (10× cheaper)
- Range under 1.5 m, surface is flat and perpendicular
- Speed under 1 m/s and 17 Hz update is sufficient
- No precision needed — collision avoidance rather than positioning
- Driving 4–6 sensors on a single Arduino (multiplexed, cheap)
Choose TOF400C LiDAR when:
- Accuracy of ±5 mm matters at any range
- Measuring through glass or across rooms (2–8 m)
- High update rate needed (100+ Hz) for PID loops or fast-moving objects
- Surface type varies (mixed materials, angled targets)
- Drone altitude hold, AGV navigation, or precision conveyor gap sensing
- Temperature varies significantly (outdoor adjacent, near HVAC vents)
Recommended Products from Zbotic
JSN-SR04T Waterproof Ultrasonic Rangefinder Module V3.0
An upgraded waterproof ultrasonic module — great for HC-SR04-style projects needing weather resistance. Same TRIG/ECHO interface, IP67-rated transducer.
Benewake AD2-S-X3 High-Performance Automotive-Grade LiDAR
Next step up from TOF400C — automotive-grade LiDAR for autonomous driving, AGV navigation, and high-accuracy indoor mapping.
25kHz Ultrasonic Sensor Transmitter T25 16mm
Industrial-grade 25 kHz ultrasonic transducer for DIY flow meters, level sensors, or custom ranging designs beyond the HC-SR04 module.
Frequently Asked Questions
Can the TOF400C work outdoors?
Yes, but with reduced range. Direct sunlight floods the SPAD with photons, reducing maximum reliable range to around 3–5 m outdoors versus 12 m indoors. The HC-SR04 also degrades outdoors due to wind disrupting the acoustic path. For outdoor long-range ranging, consider the Benewake TFmini or automotive-grade LiDAR modules.
Can I use multiple HC-SR04 sensors simultaneously?
Only with careful sequencing. Two HC-SR04 sensors firing simultaneously will pick up each other’s echoes. Trigger them one at a time with at least 60 ms between firings, or point them in orthogonal directions. The TOF400C uses focused light — less cross-talk, and different I2C addresses can be set for multi-sensor arrays.
Is the TOF400C compatible with 3.3V systems like ESP32?
Most TOF400C modules accept 3.3 V supply and communicate at 3.3 V logic levels. Always check your specific module’s datasheet. Unlike HC-SR04’s 5V ECHO line, the TOF400C’s UART/I2C pins are ESP32 and Raspberry Pi safe without level shifting.
Which is better for a line-following or maze-solving robot?
For wall following in a corridor the HC-SR04 is adequate and cheaper. For maze solving where you need to detect side openings accurately and quickly, the TOF400C’s narrow beam and higher update rate give cleaner data. Many competition teams use one LiDAR facing forward and two HC-SR04s on the sides to balance cost and performance.
Does glass confuse either sensor?
Glass is largely transparent to 40 kHz ultrasound — HC-SR04 often returns the distance to the wall behind a glass panel, not the glass itself. The TOF400C laser reflects off the glass surface (partial reflection ~4% Fresnel) giving the glass distance, though it may also pick up the wall behind if the glass is thin. For glass detection specifically, LiDAR is more reliable.
Browse Zbotic’s full range of distance and proximity sensors — from budget HC-SR04-compatible ultrasonic modules to high-accuracy LiDAR units. Free shipping above ₹999, with same-day dispatch from our Mumbai warehouse.
Add comment