Getting Started with Arduino
Ko Gyi Kaung Htet
Contributor
7 min read
Arduino ကို သူငယျခငြျးတှေ သုံးနတော၊ Project လေးတှလေုပျနတောတှကေို အှနျလိုငျးပေါျမှာတှေ့တှေ့ နတေော့ စမျးသုံးကွညျ့ခငြျခဲ့တယျ။ အဲ့အခြိနျက လကျထဲမှာ Raspberry Pi Model B လေးတဈလုံးပဲ ရှိတော့ Piလေးကိုပဲ ဟိုစမျးဒီစမျး လုပျဖွဈခဲ့တယျ။ Opensource Hardware နဲ့ Electronic ပိုငျးကို စလေ့လာမိကတညျးက ရတဲ့မုနျ့ဖိုးလေးတှစေုပွီး component လေးတှေ၊ sensor လေးတှေ ဝယျဖွဈခဲ့တာဆိုတော့ Arduino လေး တဈဘုတျလောကျတော့ ဝယျဦးမယျလို့ တေးထားခဲ့တယျ။ လိုခငြျတာက Arduino Uno ဒါမှမဟုတျ Arduino Mega ပေါ့လေ၊ အဲ့တုနျးက ပိုကျဆံမရှိခြိနျဖွဈနတေော့ Nano လေးပဲ ဝယျပွီး စစမျးဖွဈခဲ့ပါတယျ။ တကယျတော့ Arduino ကို စတငျအသုံးပွုမယျ့ သူတှအေတှကျတော့ အကုနျအကမြမြားခငြျရငျ စြေးလညျးသကျသာ၊ bread board လေးမှာ စိုကျပွီး လှယျလှယျကူကူအသုံးပွုနိုငျတဲ့ Arduino Nano လေးကို စဝယျသငျ့ပါတယျ။ ၅၀၀၀ကပြျဝနျးကငြျပဲ ရှိပါတယျ။ နောကျပိုငျးကမြှ ကိုယျ့Projectရဲ့ လိုအပျခကြျပေါျမူတညျပွီး အဆငျ့မွှငျ့တငျရငျ တငျနိုငျပါတယျ။
What is Arduino?
Arduino Project ကို ၂၀၀၅ခုနှဈမှာ ကြောငျးသားမြားအတှကျရညျရှယျပွီး အီတလီနိုငျငံရှိ Interaction Design Institute မှ စတငျခဲ့ပါတယျ။ Arduino ဆိုတာက Open Source Prototyping Platform ပေါျမှာ အခွခေံတဲ့၊ အသုံးပွုရလှယျကူတဲ့ Microcontroller တဈမြိုးဖွဈပါတယျ။ သူ့ကိုအသုံးပွုပွီး Sensorတှေ၊ LEDတှေ၊ Motorတှေ ကိုထိနျးခြုပျနိုငျပါတယျ။ ဆကျစပျပွီးတော့ Bluetooth module, Wifi module, GSM shield, Ethernet shield ကဲ့သို့သော Shield တှေ၊ module တှေ ထပျခြိတျပွီး wireless control project တှေ ပွုလုပျနိုငျပါတယျ။ Robotic Project, 3D printing, Home Automation, Green House ကဲ့သို့သော Project မြိုးတှေ မွောကျမြားစှာကို ပွုလုပျနိုငျပါတယျ။ Arduino အမြိုးအစားပေါငျး မွောကျမြားစှာရှိပါတယျ။ www.arduino.cc မှာ သှားရောကျလေ့လာနိုငျပါတယျ။ Arduino အမြိုးအစားပေါျမူတညျပွီး သူ့မှာပါဝငျတဲ့ GPIO pin အရအေတှကျ၊ Processor, CPU Speed တို့ ကှာခွားသှားမှာဖွဈပါတယျ။

Arduino boards
Why Arduino?
Arduino board တှဟောဈေးနှုနျးသကျသာခွငျး၊ Cross Platform ဖွဈခွငျး၊ board ဟာအသုံးပွုရလှယျကူပွီး ကိုယျ့Project အတှကျ လိုအပျတဲ့ Program တှကေိုလညျး Programming အခွခေံရှိသူတိုငျး လှယျကူရိုးရှငျးစှာ ဖနျတီးနိုငျခွငျးတို့အပွငျ၊ Open Source ဖွဈတဲ့အတှကျ board design တှကေို ထပျမံပွီး modify ပွုလုပျနိုငျခွငျးတို့ကွောငျ့ Arduino board ဟာ အားသာခကြျမြားစှာ ရှိနပေါတယျ။ အခုအခြိနျမှာဆိုရငျ ပွညျတှငျးမှာလညျး Arduino နဲ့ သူ့အတှကျ ဆကျစပျပစ်စညျးတှကေို လှယျကူစှာ ဝယျယူလို့ရနပေါပွီ။ Online ပေါျမှာလညျး Project တှေ၊ Tutorial တှမြေားစှာကို လေ့လာလို့ရပါတယျ။ ကြောငျးသား/သူတှအေနနေဲ့ ကြောငျးProject တှကေို လှယျကူစှာပွုလုပျနိုငျလာတဲ့အပွငျ၊ Home Automation ကဲ့သို့ ကိုယျ့အိမျသုံးဖို့အတှကျ Project မြိုးတှလေညျး အခကျအခဲမရှိ ပွုလုပျနိုငျလာပါတယျ။
Intro to Arduino Uno

Arduino Uno
နမူနာအဖွဈပွောပွပေးမယျ့ Arduino board ကတော့ Arduino Uno ဖွဈပါတယျ။ ၎င်းငျးရဲ့ အရေးကွီးအစိတျအပိုငျးတှကေတော့ USB connector ဖွဈပါတယျ။ ကိုယျ့ကှနျပြူတာနဲ့ Arduino board ကို ခြိတျဆကျပွီး Program မြား ထညျ့သှငျးရနျအတှကျ ဖွဈပါတယျ။ ကှနျပြူတာနှငျ့ ခြိတျဆကျထားပါက Arduino board မှာ ပါဝါဝငျနပွေီ ဖွဈတဲ့အတှကျ Arduino ကို သီးသနျ့ပါဝါ ထပျပေးမထားရပါ။ သီးသနျ့ပါဝါထပျပေးမိပါက အခနျ့မသငျ့လြှငျ ကှနျပြူတာသို့ ပါဝါပွနျဝငျပွီး ကှနျပြူတာကော၊ board ပါ လောငျတတျ၍ ဖွဈပါတယျ။
Arduino board ဟာ electronic device တဈခုဖွဈတဲ့အတှကျ ပါဝါပေးရနျ လိုအပျပါတယျ။ Project တှေ လုပျတဲ့အခါ ကှနျပြူတာမှာ USB ကွိုးနဲ့ အမွဲတမျးခြိတျဆကျထားမှာ မဟုတျတဲ့အတှကျ Arduino ကို AC adapter တဈခု အသုံးပွုပွီး ပါဝါပေးရမှာဖွဈပါတယျ။ တခြို့ AC adapter တှမှော Jack pin အမြိုးအစား မြိုးစုံပါဝငျတဲ့အပွငျ Voltage ကိုလညျး လိုသလောကျခြိနျလို့ရပါတယျ။ adapter ကို Arduino ရဲ့ Power Jack မှာ တပျပါ၊ 9Volts ပါဝါပေးပါ၊ ပေးလို့ရတဲ့ voltage range ကတော့ 7V မှ 12 V အထိ ဖွဈပါတယျ။ အခုလို ပွငျပ ပါဝါပေးထားခြိနျမှာ ကှနျပြူတာနဲ့ ခြိတျဆကျမထားရပါ။

AC adapter
အခုဆိုရငျ Arduino board ကို ပါဝါပေးလို့ရတဲ့ နညျး ၂နညျးကို သိသှားပါပွီ။ သို့ပမေယျ့ တခြို့ project တှကေို portable ဖွဈလိုတဲ့အခါမှာ အထကျပါနညျး၂နညျးလုံးနဲ့ အဆငျမပွတေော့ပါဘူး။ 9V battery, 6V battery ကဲ့သို့သော portable power supply ပေးခငြျတယျဆိုရငျ Vin နဲ့ GND လို့ label တပျထားတဲ့ Pin ပေါကျမြားမှာ ခြိတျဆကျနိုငျပါတယျ။ ထို့အတူ Arduino board ရဲ့ 3V3 နဲ့ 5V Pin မြားမှ ပွငျပ device တှကေို ပါဝါ ပွနျပေးလို့ ရပါသေးတယျ။ GND pin ကတော့ တဈဘုတျလုံးမှာ ၃ပေါကျ ပါဝငျပါတယျ။
Analog input pin မြားကတော့ A0 မှ A5 အထိ ၆pin ပါဝငျပါတယျ။ temperature sensor ကဲ့သို့သော analog sensor မြားကို ခြိတျဆကျအသုံးပွုနိုငျပါတယျ။ ၎င်းငျး pin မြားမှ sensor data မြားကို ရယူပွီး 0 နှငျ့ 1023 အတှငျးရှိ ကိနျးဂဏာနျးမြားအဖွဈသို့ ပွောငျးလဲပေးပါတယျ။
Digital IO pin မြားကတော့ D0 မှ D13 အထိ ၁၄ pin ပါဝငျပွီး digital input, output တို့ကို ပွုလုပျနိုငျပါတယျ။ ဒီ Pin မြားအတှငျးမှာမှ (D3, D5, D6, D9, D10, D11) ၆pin ဟာ analog output pin မြားအဖွဈလညျး အလုပျလုပျပေးနိုငျပါသေးတယျ။ ဂဏာနျးတနျဖိုးအနနေဲ့တော့ 0 မှ 255 အထိသာ analog voltage အဖွဈသို့ ပွောငျးလဲပေးနိုငျပါတယျ။
ဒီ Pin တှအေားလုံးဟာ microcontroller ဆီသို့ ဆကျသှယျခြိတျဆကျထားပါတယျ။ microcontroller တှဟော ATmega328 or ATmega168 8bit microcontroller တှဖွေဈကွပါတယျ။
ကိုယျ့ Project ကို run နခြေိနျအတှငျး reset button ကို နှိပျလိုကျပါက Program ဟာ အစမှ ပွနျလညျ အလုပျလုပျမှာ ဖွဈပါတယျ။ အခုဖောျပွခကြျတှကေ Arduino Uno ပေါျမှာ အခွခေံပွီး ဖောျပွထားတာ ဖွဈပမေယျ့ အခွား Arduino board အမြိုးအစားမြားမှာလညျး အတူတူပငျဖွဈပါတယျ။ Arduino Mega မှာဆိုရငျ input, output pin မြားစှာ ပါဝငျလာမှာ ဖွဈပါတယျ။ Arduino nano ရဲ့ design ကတော့ bread board (Project board) ပေါျမှာ စိုကျပွီး အသုံးပွုနိုငျအောငျ ပွုလုပျထားတာဖွဈတဲ့အတှကျ beginner မြားအနနေဲ့ တတျနိုငျမယျဆိုရငျ Standard ဖွဈတဲ့ Uno board ကိုသာ အသုံးပွုစလေိုပါတယျ။

Arduino Nano on bread board.
How do I use Arduino?
Arduino IDE
Arduino board သို့ Program ထညျ့သှငျးရနျအတှကျ Arduino IDE (Integrated Development Environment) လိုအပျပါတယျ။ Arduino IDE ဟာ Java နဲ့ရေးထားတာ ဖွဈပွီးတော့ cross platform application ဖွဈပါတယျ။ cross platform ဖွဈတယျဆိုတာကတော့ မညျသညျ့ Operating System မှာမဆို အလုပျလုပျနိုငျတယျလို့ ဆိုလိုတာပါ။ Arduino IDE ကို Window အတှကျမှာသာမက၊ Linux နဲ့ Mac OS တို့မှာလညျး အသုံးပွုနိုငျပွီး၊ မညျသညျ့ OS မှာမဆို compatible ဖျွစပါတယျ။ IDE ကို www.arduino.cc/en/Main/Software မှာ ဒေါငျးလုပျရယူနိုငျပါတယျ။ Windows OS အသုံးပွုသူတှအေတှကျကတော့ Arduino website မှာဒေါငျးလုပျရယူရနျ လိုအပျပွီး Ubuntu OS အသုံးပွုသူမြားကတော့ Ubuntu Software Center မှာ Arduino လို့ရိုကျရှာပွီး install ပွုလုပျနိုငျပါတယျ။ Arduino Program တှကေို C နဲ့ ရေးသားရမှာဖွဈပါတယျ။ C ဆိုပမေယျ့ C Programming language အစဈမဟုတပြါဘူး၊ Arduino အတှကျ ပွုပွငျပွောငျးလဲထားတာဖွဈပါတယျ။ Arduino အတှကျရေးထားတဲ့ Program သို့မဟုတျ Code တှကေို Sketch လို့ခေါျပါတယျ။

Arduino IDE (Blink Program)
အထကျပါ Program ကတော့ Arduino IDE မှာ ပါဝငျတဲ့ LED Blink example sketch တဈခုဖွဈပါတယျ။ ၎င်းငျးကို File>Examples>01.Basics>Blink မှာ ဖှငျ့နိုငျပါတယျ။ LED မီးလုံးလေးကို မှိတျတုတျ မှိတျတုတျ (Blink) ဖွဈအောငျ လုပျပေးမယျ့ Program ဖွဈပါတယျ။
- ပထမဦးစှာ LED ကို Arduino board ရဲ့ digital pin 13 မှာခြိတျဆကျမှာဖွဈတဲ့အတှကျ int(integer) constant အသုံးပွုပွီး pin 13 ကို ကွငွောပါတယျ။ led ဆိုတဲ့ variable name ဟာ Arduino board ရဲ့ digital IO pin 13 ကို ရညျညှှနျးပါတယျ။
- Arduino program တိုငျးမှာ void setup() ဆိုတဲ့ function တဈခု လိုအပျပါတယျ။ function တဈခုမှာ function header နဲ့ statement body ဆိုတဲ့အပိုငျး၂ခု ပါဝငျနပွေီး function header မှာ အောကျပါအတိုငျး အပိုငျး၃ပိုငျးပါဝငျပါတယျ။
‘(‘ - ‘)’
အခု function မှာ return value type ဟာ void ဖွဈပွီး၊ function name က setup ဖွဈပါတယျ။ parameter list ကတော့ ဘာမှမပါ empty ဖွဈပါတယျ။
ကြှနျတောျတို့ကွငွောခဲ့တဲ့ digital pin 13 ကို output pin အဖွဈပွောငျးလဲရနျအတှကျ pinMode() method ကို အသုံးပွုပါတယျ။ - နောကျထပျ function တဈခုကတော့ void loop() ဖွဈပါတယျ။ ၎င်းငျးဟာ Arduino မှာ power ရနသေရှေ့ program ကို ထပျခါထပျခါ run စမှောဖွဈပါတယျ။ pin 13 မှာ တပျဆငျထားတဲ့ LED ကို ပထမဦးစှာ မီးလငျးစရေနျအတှကျ digitalWrite() ကိုအသုံးပွုပွီး pin 13 ကို HIGH state မှာရှိနစေပေါတယျ။ ဒီအခြိနျမှာ pin 13 ဟာ output 5volts ထှကျပွီး တပျဆငျထားတဲ့ LED မီးလငျးလာမှာဖွဈပါတယျ။ ဆကျလကျပွီး pin 13 ကို LOW state အခွအေနသေတျမှတျပေးထားခြိနျမှာ LED မီးငွိမျးမှာဖွဈပါတယျ။ ထိုအခွအေနေ၂ရပျ အတှငျးမှာ delay() function အသုံးပွုပွီး 1000 milliseconds သတျမှတျပေးခွငျးဖွငျ့ 1 second ခွားစီ မီးလငျး၊ မီးမှိတျမှာ ဖွဈပါတယျ။ 500 သတျမှတျပေးပါက milliseconds ဖွဈတဲ့အတှကျ စက်ကနျ့ဝကျ မီးလငျး၊ စက်ကနျ့ဝကျ မီးမှိတျမှာ ဖွဈပါတယျ။ ထိုအခွအေနတေို့ကို looping ပတျခွငျးဖွငျ့ LED ဟာ မှိတျတုတျမှိတျတုတျ blink ဖွဈနမှော ဖွဈပါတယျ။
- Program အတှငျး left brace { တှနျ့ကှငျးအစဟာ function ထဲက statement တှကေို စတငျဖွရှေငျးရနျ ကွငွောတာဖွဈပွီး right brace } တှနျ့ကှငျးအပိတျဟာ statement တှကေို ဖွရှေငျးပွီးကွောငျး ကွငွောတာ ဖွဈပါတယျ။ Statement တဈခုရေးပွီးတိုငျးမှာ semicolon (;) နဲ့ ပိတျပေးရပါမယျ။ ဒါမှသာ statement ပွီးဆုံးကွောငျးကို compiler က သိမှာဖွဈပါတယျ။
အထကျပါ example program ကို Arduino board သို့ မထညျ့သှငျးခငျ Arduino IDE မှာ ပွငျဆငျရနျအခကြျ ၂ခကြျရှိပါတယျ။ Tools>Board သို့သှားပွီး ကိုယျအသုံးပွုတဲ့ Arduino ရဲ့အမြိုးအစားကို ရှေးခယြျပေးရနျနဲ့ Tools>Serial Port မှာ Arduino board ကို ခြိတျဆကျထားတဲ့ port ကို ရှေးခယြျပေးရနျ ဖွဈပါတယျ။ Linux အသုံးပွုသူမြားအတှကျ port မြားဟာ /dev/ttyUSB0, /dev/ttyUSB1 စသဖွငျ့ ရှိနပေါမယျ။ Windows OS မှာ driver မသိပါက www.arduined.eu/files/CH341SER.zip ဒီနရောမှာ driver ကို download ဆှဲပါ။ ပွီးလြှငျ Window Device manager ရဲ့ other devices မှာ ခြိတျဆကျထားတဲ့ Arduino Uno ကို double click ပွီး Update driver ကို နှိပျကာ down ထားတဲ့ driver ဖိုငျကို ရှေးခယြျပေးလိုကျပါ။ Port အနနေဲ့ COM1, COM2 စသဖွငျ့ ရှိနပေါလိမျ့မယျ။

ထိုအခကြျတှေ ရှေးခယြျပွီးပါက IDE မှာ program ကို compile အရငျပွုလုပျပွီး Upload button ကို နှိပျကာ Arduino board အတှငျး program ကို ထညျ့သှငျးပေးရမှာဖွဈပါတယျ။ ခြိတျဆကျထားတဲ့ LED မှိတျတုတျ မှိတျတုတျ ဖွဈပွီး အလုပျလုပျလာတာကို တှေ့ရှိရမှာဖွဈပါတယျ။ ဆကျလကျပွီးတော့ led လို့သတျမှတျခဲ့တဲ့ variable name ကို အမညျပွောငျးခွငျး၊ LED ခြိတျဆကျမယျ့ pin နံပါတျပွောငျးခွငျး၊ delay မှာ LED pause မယျ့ မီလီစက်ကနျ့ အခြိနျပွောငျးခွငျးတို့ကိုပွုလုပျပွီး ထပျမံစမျးသပျကွညျ့လို့ရပါတယျ။
