Arduino සමඟ HC-SR04 Ultrasonic Sensor එක භාවිතා කරන හැටි

සම්පූර්ණ Tutorial එක — Wiring, Diagrams, Code Examples සමඟ Sinhala + English Technical Terms
1. හැඳින්වීම (Introduction)
Robot එකකට ඉස්සරහ තියෙන බාධකයක් අඳුනගන්න, water tank එකක level එක බලන්න, parking sensor එකක් හදන්න — මේ ඔක්කොටම ඕන වෙන්නේ distance measure කරන sensor එකක්. Arduino world එකේ ඒකට තියෙන ජනප්රියම සහ ලාබම විසඳුම තමයි HC-SR04 Ultrasonic Sensor එක. රුපියල් කීපසීයකට ගන්න පුළුවන් මේ sensor එකෙන් 2cm ඉඳන් 400cm (මීටර් 4ක්) දක්වා දුර 3mm accuracy එකකින් measure කරන්න පුළුවන්.
වඩාත්ම ලස්සන දේ — මේක වැඩ කරන්නේ වවුලෙක් (bat) වගේමයි! වවුලා sound waves යවලා, ඒවා ආපහු එනකම් බලාගෙන ඉඳලා, ඒ time එකෙන් දුර දැනගන්නවා වගේ, HC-SR04 එකත් ultrasonic sound waves use කරලා දුර measure කරනවා.
මේ tutorial එකේදී අපි ඉගෙන ගන්නේ:
- Ultrasonic sensor එකක් දුර measure කරන විදිහ (echo + timing)
- Distance calculation formula එක සහ ඒක code එකේ use කරන හැටි
- HC-SR04 pinout එක සහ Arduino UNO එකට wire කරන හැටි
- Trig/Echo pins වලින් distance කියවන complete sketch එකක්
- Sensor එකේ limitations සහ accuracy වැඩි කරගන්න tips
2. Ultrasonic Sensor එක වැඩ කරන හැටි
"Ultrasonic" කියන්නේ මිනිස් කනට ඇහෙන්නේ නැති තරම් frequency එක වැඩි sound waves වලට. HC-SR04 එක use කරන්නේ 40kHz sound waves — අපිට ඇහෙන උපරිමය 20kHz විතර නිසා මේවා අපිට ඇහෙන්නේ නැහැ.

Sensor එකේ මූණේ speaker වගේ පේන round components දෙක තමයි transducers. එකක් transmitter (T) — electrical signal එක ultrasonic sound බවට හරවනවා. අනිත් එක receiver (R) — ආපහු එන echo එක අහගෙන ඉන්නවා.
Measurement cycle එක මෙහෙම වැඩ කරනවා:
- පියවර 1 — Arduino එක Trig pin එකට 10µs (microseconds 10ක) HIGH pulse එකක් දෙනවා. මේක "measure කරන්න පටන් ගන්න" කියන command එක.
- පියවර 2 — Sensor එක 40kHz pulses 8ක burst එකක් අහසට යවනවා. Pulses 8ක් යවන්නේ echo එක noise වලින් වෙන් කරලා අඳුනගන්න ලේසි වෙන්න.
- පියවර 3 — ඒ මොහොතේම Echo pin එක HIGH වෙනවා. Sound waves object එකේ වැදිලා ආපහු receiver එකට ආවම Echo pin එක LOW වෙනවා.
- පියවර 4 — Echo pin එක HIGH වෙලා තිබ්බ කාලය = sound එක ගිහින් එන්න ගත්ත මුළු time එක. ඒකෙන් දුර calculate කරනවා.
Object එකක් හම්බුනේ නැත්නම් Echo pin එක 38ms කට පස්සේ timeout වෙලා LOW වෙනවා — ඒ කියන්නේ "range එකේ මුකුත් නැහැ".
2.1 Distance Calculation එක
Sound speed එක වාතයේ 340 m/s — ඒක microseconds වලින් ගත්තම 0.034 cm/µs. දුර calculate කරන formula එක:
distance (cm) = (echo time in µs × 0.034) / 2
2න් බෙදන්නේ ඇයි? Echo time එක කියන්නේ sound එක object එකට ගිහින් ආපහු එන්න ගත්ත මුළු කාලය — ඒ කියන්නේ දුර දෙගුණයක් travel කරලා. අපිට ඕන එක පැත්තක දුර විතරක් නිසා දෙකෙන් බෙදනවා.
උදාහරණයක්: Echo time එක 500µs නම් → (500 × 0.034) / 2 = 8.5cm. සරලයි!
3. Specifications සහ Pinout එක

4. Arduino UNO එකට Wire කිරීම
Wiring එක හරිම simple — wires 4යි. Trig සහ Echo ඕනෑම digital pins දෙකකට connect කරන්න පුළුවන් — අපි D9 සහ D10 use කරමු:

5. Arduino Code Example එක
මේ sketch එක හැම තත්පර භාගයකටම වරක් දුර measure කරලා Serial Monitor එකේ cm වලින් පෙන්නනවා:
const int trigPin = 9;
const int echoPin = 10;
float duration; // echo time එක (µs)
float distance; // දුර (cm)
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
// Trig pin එක clean කරලා 10µs pulse එක දෙනවා
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Echo pulse එකේ දිග (µs) කියවනවා
duration = pulseIn(echoPin, HIGH);
// දුර calculate කරනවා
distance = (duration * 0.034) / 2;
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
delay(500);
}
5.1 Code එක තේරුම් ගනිමු
digitalWrite(trigPin, LOW) + delayMicroseconds(2) — Pulse එක දෙන්න කලින් Trig pin එක ටිකකට LOW කරනවා, clean edge එකක් ලැබෙන්න.
delayMicroseconds(10) — Trig pin එක හරියටම 10µs HIGH තියනවා — sensor එකට ඕන trigger pulse එක ඒකයි.
pulseIn(echoPin, HIGH) — Echo pin එක HIGH වෙනකම් බලාගෙන ඉඳලා, HIGH වෙලා තියෙන කාලය microseconds වලින් return කරනවා. මේක තමයි sketch එකේ වැදගත්ම line එක.
distance = (duration * 0.034) / 2 — කලින් ඉගෙන ගත්ත formula එකම code එකේ.
5.2 Serial Monitor Output එක
Distance: 27.54 cm
Distance: 27.61 cm
Distance: 12.94 cm
Distance: 8.50 cm
Distance: 152.32 cm
5.3 Bonus — LCD එකේ Distance එක පෙන්නමු
කලින් LCD tutorial එකේ wiring එකම තියාගෙන, HC-SR04 එකත් එකතු කරලා distance meter එකක් හදන්න පුළුවන්:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int trigPin = 9;
const int echoPin = 10;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
lcd.begin(16, 2);
lcd.print("Distance Meter");
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
float d = (pulseIn(echoPin, HIGH) * 0.034) / 2;
lcd.setCursor(0, 1);
lcd.print(d);
lcd.print(" cm "); // පරණ අගය මකන්න spaces
delay(300);
}
6. NewPing Library එක (Optional)
Timing වැඩ ඔක්කොම තනියම කරනවා වෙනුවට NewPing library එක use කරන්නත් පුළුවන් (Library Manager එකෙන් install කරන්න). Code එක ගොඩක් කෙටි වෙනවා:
#include <NewPing.h>
#define TRIG_PIN 9
#define ECHO_PIN 10
#define MAX_DISTANCE 400 // cm
NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE);
void setup() {
Serial.begin(9600);
}
void loop() {
delay(100);
Serial.print(sonar.ping_cm()); // දුර cm වලින්
Serial.println(" cm");
}
NewPing එකේ ping_median(5) වගේ functions වලින් readings 5ක median එක අරගෙන noise අඩු කරගන්නත් පුළුවන් — accuracy වැඩි වෙනවා.
7. Limitations සහ Tips
- Soft surfaces — රෙදි, sponge, cotton වගේ මෘදු දේවල් sound absorb කරන නිසා echo එක දුර්වලයි — detect වෙන්නේ අමාරුවෙන්.
- Angled surfaces — Object එකේ මතුපිට sensor එකට කෝණයකින් තියෙනවා නම් echo එක වෙන පැත්තකට reflect වෙලා sensor එකට ආපහු එන්නේ නැති වෙන්න පුළුවන්.
- පොඩි objects — හරිම පොඩි දේවල් reflect කරන sound energy එක මදි නිසා miss වෙන්න පුළුවන්.
- මීටර් 4 limit එක — 400cm ට වඩා දුර readings unreliable. ඒ වගේම 2cm ට කිට්ටු දේවලුත් measure වෙන්නේ නැහැ.
- උෂ්ණත්වයේ බලපෑම — Sound speed එක temperature එක අනුව ටිකක් වෙනස් වෙනවා (0.034 cm/µs කියන්නේ 20°C විතරදී). හරිම precise measurements වලට temperature compensation කරන්න වෙනවා — normal projects වලට ප්රශ්නයක් නැහැ.
- Readings jump වෙනවා නම් — Median filter එකක් (NewPing ping_median) use කරන්න, measurements අතර 50ms+ ඉඩ තියන්න, සහ sensor එක object එකට කෙළින්ම face වෙන්න mount කරන්න.
8. Project Ideas
- Obstacle-Avoiding Robot — බාධක අඳුනගෙන මගහරින robot එකක්.
- Parking Sensor — දුර අඩු වෙනකොට වේගයෙන් beep වෙන buzzer එකක් එක්ක.
- Water Level Monitor — Tank එක උඩින් sensor එක දාලා water level එක බලන්න.
- Full Combo Project — මේ series එකේ ඔක්කොම එකට: PIR එකෙන් motion detect කරලා, HC-SR04 එකෙන් දුර measure කරලා, LCD එකේ පෙන්නලා, microSD card එකට log කරන security system එකක්!
9. සාරාංශය (Summary)
HC-SR04 එක distance measurement වලට තියෙන ලාබම සහ ලේසිම විසඳුමයි. මතක තියාගන්න ඕන ප්රධාන කරුණු: Trig pin එකට 10µs pulse එකක් දුන්නාම sensor එක 40kHz burst එකක් යවනවා, Echo pin එක HIGH තියෙන කාලය sound travel time එක, දුර = (time × 0.034) / 2, range එක 2cm–400cm, සහ soft/angled surfaces වලදී පරිස්සම්. දැන් ඔයාට robot එකක් හදන්න පුළුවන්!
Reference / මූලාශ්රය:
මේ tutorial එක ලියුවේ පහත මූලාශ්රයේ තොරතුරු පදනම් කරගෙන (රූප සටහන් සහ code examples අලුතින්ම හදපු ඒවා): Last Minute Engineers — How HC-SR04 Ultrasonic Sensor Works & Interface It With Arduino
