Wednesday, March 18, 2015

Servo Motor Controlling via TCP/IP

ဒီေနရာမွာ ေရးသားတင္ျပတာေတြဟာ ကၽြန္ေတာ္တို႕ျပဳလုပ္ခဲ႕တဲ႕ လုပ္ေဆာင္ခ်က္ေတြကို မွတ္တမ္းတစ္ခု အေနနဲ႕ ေရးသားထားတာျဖစ္ၿပီး စဥ္းစားပံုစဥ္းစားနည္း နဲ႕ အခက္အခဲေတြ ၊ ကၽြန္ေတာ္တို႕ အသံုးျပဳခဲ႕တဲ႕ logic ေတြကိုသာ အဓိကထား ရွင္းလင္းသြားမွာျဖစ္ပါတယ္။ Programming Coding မ်ားရွင္းလင္းခ်က္ အေသးစိတ္ကိုေတာ့ ေနာက္ပိုင္း post ေတြမွပဲ တင္ျပေဆြးေႏြးသြားမွာျဖစ္ပါတယ္။

ကၽြန္ေတာ္တို႕အေနနဲ႕ လက္တံကို ေမာင္းႏွင္ဖို႕စဥ္းစားတဲ႕အခါ နည္းလမ္းမ်ားစြာကိုေတြ႕ရပါတယ္။ Servo Motor ေတြကို တိုက္ ရိုက္ျဖစ္ေစ remote နဲ႕ျဖစ္ေစ ေမာင္းႏွင္ႏိုင္ပါတယ္။

   ေမာင္းႏွင္နည္းအခ်ိဳ႕ကို တင္ျပရရင္

 - Keypad ေတြကို ႏွိပ္ၿပီး တိုက္ရုိက္ခိုင္းေစျခင္း
 - Joystick ကိုအသံုးျပဳၿပီး ထိန္းခ်ဳဳပ္ႏိုင္ျခင္း
 - Wireless Transceiver Module မ်ားအသံုးျပဳၿပီးခိုင္းေစျခင္း
 - Joystick ႏွင့္ Wireless Module မ်ားေပါင္းစပ္အသံုးျပဳၿပီး အေဝးမွ ထိန္းခ်ဳဳပ္ျခင္း
 - Gyro Sensor, IMU Sensor မ်ားအသံုးျပဳ၍ ထိန္းခ်ဳပ္ျခင္း
 - Computer အသံုးျပဳ၍ USB, Serial Communication မ်ားျဖင့္ ထိန္းခ်ဳပ္ျခင္း
 - အသံ ၊ Motion ႏွင့္ အျခားေသာ Sensor မ်ားအသံုးျပဳ ေမာင္းႏွင္ျခင္း..
....
အစရွိသျဖင့္ Robotic Arm တစ္ခုကို ထိန္းခ်ဳပ္ေမာင္းႏွင္ႏိုင္ရန္ နည္းလမ္းမ်ားစြာရွိပါတယ္။
 

2014 ခုႏွစ္အတြင္းမွာေတာ့ ကၽြန္ေတာ္တို႕ဟာ TCP/IP ကို အသံုးျပဳၿပီး Network ခ်ိတ္ထားတဲ႕ Computer ေတြပၚကေန ေမာင္းႏွင္ႏိုင္ဖို႕ လုပ္ေဆာင္ခဲ႕ၾကပါတယ္။ 

TCP/IP ဟာ တကမာၻလံုး အသံုးအမ်ားဆံုးေသာ ဆက္သြယ္ေရး protocol တစ္ခုျဖစ္ပါတယ္။ ကၽြန္ေတာ္တို႕ ယခု အင္တာနက္ကို အသံုးျပဳၿပီးစာေတြ ေရးသား ဖတ္ရႈႏိုင္ျခင္းဟာ TCP/IP ရဲ႕ ေက်းဇူးေၾကာင့္ျဖစ္ပါတယ္။ ကမာၻတစ္ဝွမ္း သန္းေထာင္ေပါင္းမ်ားစြာေသာ ကြန္ပ်ဴတာေတြဟာ ၄င္းတို႕ အခ်င္းခ်င္း TCP/IP ကိုအသံုးျပဳ ၿပီး ကြန္ရက္ႀကီးမ်ား ခ်ိတ္ဆက္ထားၾကတာျဖစ္ပါတယ္။ ကၽြန္ေတာ္ကိုယ္တိုင္လဲ Wireless Networking သမားတစ္ေယာက္ျဖစ္တာမို႕ TCP/IP ကို အသံုးျပဳၿပီး WiFi ေပၚကေန ခိုင္းေစႏိုင္ဖို႕ကို ဦးစားေပး လုပ္ေဆာင္ခဲ႕ပါတယ္။

ကၽြန္ေတာ္တို႕အသံုးျပဳတဲ႕ Programming Language က C# .NET ျဖစ္ပါတယ္။ လက္ထဲမွာ ရွိတဲ႕ Visual Studio 2010 ကို အသံုးျပဳၿပီး TCP/IP ေပၚကေန ကြန္ပ်ဴတာအခ်င္းခ်င္း communicate လုပ္ႏိုင္ဖို႕ စဥ္းစားခဲ႕ၾကပါတယ္။ TCP/IP ကို အသံုးျပဳႏိုင္ဖို႕ ကၽြန္ေတာ္တို႕ဟာ Online Library ေတြလို႕ ေခၚဆိုရမယ့္ Search Engine ေတြကိုပဲ အသံုးျပဳခဲ႕ရွာေဖြခဲ႕ပါတယ္။ အရင္ဆံုး စဥ္းစားမိတာကေတာ့ Chatting Program ပါ။ LAN (Local Area Network ) ထဲမွာ ကြန္ပ်ဴတာတစ္လံုးနဲ႕တစ္လံုး အျပန္အလွန္ စာရုိက္ၿပီး မက္ေဆ့ပို႕ ႏိုင္တဲ႕ program ထဲမွာ TCP/IP ကိုအသံုးျပဳမွာေသခ်ာပါတယ္။ ဒါေၾကာင့္ How to make a Chatting Program in C#? .... ရွာေဖြရင္းနဲ႕ပဲ ကၽြန္ေတာ္တို႕ TCP/IP အတြက္ လိုအပ္တဲ႕ socket ဖြင့္၊ပိတ္ နည္း၊ ဦးတည္ထားတဲ႕ IP address ဆီ data ပို႕လႊတ္နည္း၊ IP address တစ္ခုဆီမွ Data မ်ားလက္ခံရယူနည္း၊ အခ်င္းခ်င္း ခ်ိတ္ဆက္ဖို႕ port မ်ားသတ္မွတ္နည္း စသည္တို႕ သိရွိလာရပါတယ္။


ကၽြန္ေတာ္တို႕ Client Program နဲ႕ Server Program ဆိုၿပီး Program ႏွစ္ခု ခြဲေရးခဲ႕ပါတယ္။ အရင္ဆံုး IP ႏွစ္ခု အျပန္အလွန္ ခ်ိတ္ဆက္ data ေတြ အျပန္အလွန္ပို႕ၿပီး communicate လုပ္ႏိုင္လာပါတယ္။

Data ေတြ အျပန္အလွန္ပို႕ၿပီးတဲ႕ ေနာက္မွာ Servo Motor ေတြကို ေမာင္းႏွင္ဖို႕ စဥ္းစားရပါတယ္။ Servo Motor ေတြေမာင္းႏွင္ႏိုင္ဖို႕ USB port ကေန data ထုတ္ၿပီး 32 Ch Servo Controller ကတဆင့္   ေမာင္းႏွင္ခဲ႕ပါတယ္။  32 Ch Servo Controller အေၾကာင္းကို ေနာက္ထပ္ ပို႕စ္ တစ္ခုနဲ႕ ရွင္းျပေပးထား ပါတယ္။

Servo Motors Controlling via TCP/IP  လုပ္ငန္းအတြက္ Block Diagram ကေတာ့ ေအာက္ပါ အတိုင္းျဖစ္ပါတယ္။

(background color  ေၾကာင့္မျမင္ရခဲ႕ရင္ ပံုကိုႏွိပ္ၾကည့္ႏိုင္ပါတယ္။)



Servo Motor ေတြကို Degree အလိုက္ တန္ဖိုးေတြေပးပို႕ၿပီး WiFi ေပၚကေန လိုရာကိုေမာင္းႏွင္ႏိုင္ခဲ႕ ပါတယ္။ ဒီအဆင့္အထိဟာ Servo Motor Controlling over TCP/IP communications ပဲျဖစ္ပါတယ္။ Robotic Arm တစ္ခု ေမာင္းႏွင္ႏိုင္တဲ႕ အဆင့္ေတာ့ မဟုတ္ေသးပါဘူး။ ေအာက္ပါ GUI ေတြကေတာ့ ကၽြန္ေတာ္တို႕ စမ္းသပ္ ေရးသားခဲ႕တဲ႕ program ေတြျဖစ္ပါတယ္။



No comments:

Post a Comment