Obstacle Avoiding Robot using Raspberry Pi

Obstacle Avoiding Robot using Raspberry Pi

ဒီတစ္ေခါက္ Raspberry Pi အသံုးျပဳတည္ေဆာက္ထားတဲ့ Obstacle Avoiding Robot ေလးကုိ ေဖာ္ျပေပးခ်င္ပါတယ္။ ဒီ Project မွာေတာ့ Program ကုိ C Language နဲ႔ ေရးထားၿပီး Open Source Project တစ္ခုျဖစ္တာေၾကာင့္ code file ေတြကုိ ေလ့လာခ်င္ရင္ Email ေပးပုိ႔ ေတာင္းယူႏုိင္ပါတယ္။ Robot Chassis ကုိ Composite Plate နဲ႔ပဲ အလြယ္တကူ ျဖတ္ေတာက္တပ္ဆင္ထားတာပါ။ Raspberry Pi OS boot တက္စဥ္မွာ program ကုိ Auto run ေစဖုိ႔ သတ္မွတ္ခဲ့မယ္ဆုိရင္ေတာ့ Wifi Dongle တပ္ဆင္ဖုိ႔လုိမွာ မဟုတ္ပါဘူး။ Raspberry Pi ကလည္း robot creation ေတြအတြက္ လံုးဝသင့္ေတာ္ပါတယ္။ သူ႔ရဲ႕ GPIO pin ေတြကုိ motor ေတြ၊ sensor ေတြ control ဖုိ႔ အသံုးျပဳႏုိင္သလုိ server တစ္လံုးအျဖစ္လည္း အလုပ္လုပ္ႏုိင္ပါေသးတယ္။

Hardware Assembling အေၾကာင္း နည္းနည္းေျပာျပပါ့မယ္။ Composite Plate ေတြမွာ Gear wheel ၄လံုး တပ္ဆင္ထားၿပီး ပါဝါေပးဖုိ႔ကုိ 6V, 1.3A battery အသံုးျပဳထားပါတယ္။ Raspberry pi အတြက္ကုိေတာ့ Power bank တစ္လံုး သီးသန္႔အသံုးျပဳေပးပါတယ္။ Pi ရဲ႕ GPIO pin ေတြကေန output signal ေပးႏုိင္ေပမယ့္ DC motor ေတြကုိ တုိက္႐ိုက္ေမာင္းႏွင္ႏုိင္ဖုိ႔ကုိ L298N motor driving board အသံုးျပဳပါတယ္။ Ultrasonic Sensor ကုိ Obstacle အတားအဆီးေတြကုိ သိရွိႏုိင္ဖုိ႔ အသံုးျပဳပါတယ္။ သူက Distance တုိင္းတာတဲ့ sensor တစ္ခုျဖစ္ၿပီး အလုပ္လုပ္ပံုက လင္းႏုိ႔ေတြ၊ လင္းပုိင္ေတြနဲ႔ တူပါတယ္။ Echo မွ ႀကိမ္ႏႈန္းျမင့္လိႈင္းတစ္ခုကုိ transmit လုပ္ၿပီး Obstacle ကုိ ထိၿပီး ျပန္လာတဲ့ လိႈင္းကုိ Trigger မွ ျပန္ဖမ္းယူပါတယ္။ ႀကိမ္ႏႈန္းျမင့္လိႈင္းကုိ ပထမလႊင့္လုိက္တဲ့ အခ်ိန္ရယ္၊ လိႈင္းကုိျပန္လက္ခံတဲ့ အခ်ိန္တုိ႔ကုိ ျခားနားၿပီး ရရွိလာတဲ့ ၾကာခ်ိန္ကေန Distance ကုိ တြက္ထုတ္ေပးတာပါ။ Ultrasonic Sensor ကုိ Raspberry Pi မွာ ခ်ိတ္တဲ့အခါ သတိထားရမွာကေတာ့ Echo Pin မွာ 10K Ohm Resistor တစ္လံုးၾကားခံခ်ိတ္ေပးဖုိ႔ပါ။ Raspberry Pi ရဲ႕ GPIO Pin ေတြက 3.3V ျဖစ္လို႔ Sensor ကေန 5V ျပန္ဝင္မွာစုိးလုိ႔ပါ။

Robot ရဲ႕ ေရွ႕မွာ အတားအဆီးရွိေနခ်ိန္ Robot ဟာ ဘယ္ဘက္နဲ႔ ညာဘက္ကုိ ေရြးခ်ယ္သြားလာႏုိင္ဖုိ႔ Sensor ဟာ တိုင္းတာရပါမယ္။ ဒီအတြက္ Ultrasonic Sensor ကုိ Servo motor တစ္လံုးရဲ႕ အေပၚမွာ တပ္ဆင္ေပးထားပါတယ္။ Servo ဟာ ဘယ္နဲ႔ညာ (ဥပမာ - 0Degree or 180Degree) လွည့္ေပးၿပီး Distance တိုင္းတာဖုိ႔ ကူညီေပးမွာျဖစ္ပါတယ္။ SG-90 9g Servo Motor သံုးထားပါတယ္။

Raspberry Pi ရဲ႕ GPIO Pin ေတြကုိ control လုပ္ႏုိင္ဖုိ႔ WiringPi Library ကုိ သံုးထားပါတယ္။ WiringPi Library က GPIO pin ေတြကုိ HIGH/LOW သတ္မွတ္ဖုိ႔ လြယ္ကူေစတဲ့အျပင္ PWM (Pulse Width Modulation) ကုိလည္း support ေပးပါတယ္။ ဒီ Library အျပင္ Robot ရဲ႕ Main Program မွာ Servo, Sensor နဲ႔ Motor driver အတြက္ header file ၃ဖုိင္ ပါဝင္ပါတယ္။ Program ကုိ စတင္တဲ့အခါ Sensor မွ data collect ျပဳလုပ္ၿပီး Servo ကုိလည္း လွည့္ပတ္ေစႏုိင္မွာျဖစ္ပါတယ္။ Servo အေနနဲ႔ possible position element ၁၁ခုထိ ရွိႏုိင္မွာျဖစ္ၿပီးေတာ့ distance data ေတြကုိလည္း Array တစ္ခုထဲမွာ element ၁၁ခုထိ ထည့္သြင္းေပးမွာပါ။ ဒီ ရရွိလာတဲ့ Array ထဲက data ေတြကုိ စစ္ေဆးၿပီး Robot ရဲ႕ Direction ကုိ ေျပာင္းလဲေပးမွာ ျဖစ္ပါတယ္။ Direction အားလံုးဟာ Robot ေရွ႕ဆက္သြားဖုိ႔ မျဖစ္ႏုိင္ရင္ေတာ့ ေနာက္ျပန္ဆုတ္ဖို႔ သတ္မွတ္ေပးထားပါတယ္။

Raspberry Pi နဲ႔ ပတ္သက္ၿပီး အေျခခံအေနနဲ႔ ေလ့လာခ်င္တယ္ဆုိရင္ေတာ့ www.phoewa.science မွာ Guide တခ်ိဳ႕ကုိ တင္ေပးထားပါတယ္။ Project Code File ေတြကုိ ေလ့လာခ်င္တယ္ဆုိရင္ Email ေပးပုိ႔ ေတာင္းယူႏုိင္ပါတယ္။ 😉

www.phoewa.science
info@phoewa.science

No Comments Yet.

Leave a comment