ติดต่อผู้เขียน

บทความนี้ กล่าวถึง arduino uno เป็นส่วนใหญ่ โดยพัฒนาผ่าน windows

ท่านสามารถติดต่อผู้เขียนได้ โดยผ่านทาง niran@flowco.co.th
หรือ https://www.facebook.com/kongimi

วันพุธที่ 6 สิงหาคม พ.ศ. 2557

ทดลอง I/O port

สวัสดีครัชพี่น้อง

  วันนี้ได้ทดลองเล่น arduino uno โดยควบคุม I/O port ตามปกติ ง่ายๆทั่วไป
  โดยเอามาต่อกับ Isolate Relay สำเร็จรูป ดังรูป


รูปที่ 1 ต่อ Isolate Relay กับ Arduino

โดยบอร์ด Relay ที่ซื้อมานี้ จะแสดงผล LED ให้สว่างเมื่อมีการสั่ง on Relay และไม่สว่างเมื่อ off ทำให้สังเกตได้ง่ายว่า Relay ทำงานอยู่หรือไม่

 และได้เขียน code ต่อไปนี้

int Relay1 = 12;
int Relay2 = 13;
// the setup routine runs once when you press reset:
void setup()
{
// initialize the digital pin as an output.
pinMode(Relay1, OUTPUT);
pinMode(Relay2, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop()
{
digitalWrite(Relay1, HIGH); // turn the RELAY on(HIGH is the voltage level)
digitalWrite(Relay2, HIGH);
delay(1000); // wait for a second
digitalWrite(Relay1, LOW); // turn the RELAY off by making the voltage LOW
digitalWrite(Relay2, LOW);
delay(1000); // wait for a second
}
รูปที่ 2 Relay ทำงานปกติ

ก็สามารถสั่งงานได้ปกติ เมื่อต่อ vcc 5V
ด้วยความนึกสนุก ลองใช้ vcc 3.3V แทน ก็สั่งงานได้เหมือนกัน แต่รู้สึกเหมือนว่าจะสั่งงานได้ช้ากว่า 5V นิดหน่อย เพราะว่าเสียงของ Relay ที่เปิด/ปิด ฟังได้ชัดเจนว่า เปิด/ปิด ไม่พร้อมกัน ไม่เหมือน 5V เปิด/ปิด พร้อมกันเป๊ะ

และเหลือบไปเห็น port A0-A5 ซึ่งเป็น port Analog to Digital (แปลงสัญญาณจาก Analog เป็น Digital)
ก็คิดว่าเราสามารถนำมาใช้เป็น I/O port ตามปกติได้หรือไม่
ทดลองครั้งแรก ปรากฎว่าใช้งานไม่ได้ :(
ก็เลยไป search หาข้อมูลจากอากู๋ ดู (http://forum.arduino.cc/index.php/topic,158910.0.html) ได้ผลว่าจริงๆแล้วเราต้องสั่งงานที่ขา 18, 19 ไม่ใช่ 27, 28 ซึ่งก็ยังไม่เข้าใจอยู่ดีว่าทำไมถึงเป็น pin 18,19 ท่านใดรู้ช่วยตอบหน่อยนะคร้าบบบ
รูปที่ 3 ต่อ Relay กับขา 18,19
int Relay1 = 18;
int Relay2 = 19;
// the setup routine runs once when you press reset:
void setup()
{
// initialize the digital pin as an output.
pinMode(Relay1, OUTPUT);
pinMode(Relay2, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop()
{
digitalWrite(Relay1, HIGH); // turn the RELAY on(HIGH is the voltage level)
digitalWrite(Relay2, HIGH);
delay(1000); // wait for a second
digitalWrite(Relay1, LOW); // turn the RELAY off by making the voltage LOW
digitalWrite(Relay2, LOW);
delay(1000); // wait for a second
}

วันอังคารที่ 5 สิงหาคม พ.ศ. 2557

เริ่มต้น arduino

สวัสดีครับ ทุกท่าน

หลังจากที่เราได้เรียนรู้ Linux Embedded Board กันไปแล้ว ไม่ว่าจะเป็น Raspberry Pi หรือ Beagle bone black ทีนี้ก็ได้เวลาของบอร์ดเล็กบอร์ดน้อยที่สามารถนำมาใช้งานได้หลากหลาย ตามความต้องการของผู้เล่น นั่นก็คือ ไมโครคอนโทรลเลอร์ Arduino

รูปที่ 01 Logo


รูปที่02 บอร์ด Arduino

สำหรับผู้ที่ยังไม่ค่อยเข้าใจว่าไมโครคอนโทรลเลอร์คืออะไร จะขออธิบายแบบย่อๆให้อ่านกันก่อน
ไมโครคอนโทรลเลอร์ ถ้าเปรียบเทียบกับคน จะมี MCU ที่เปรียบเสมือนสมอง คือทำหน้าที่คิด ประมวลผล มีความจำ แต่ไม่สามารถลงมือทำเองได้ จึงต้องสั่งงานให้ส่วนอื่นๆทำงานแทน, ส่วนวงจรเซนเซอร์ต่างๆที่มาต่อร่วมกัน จะทำงานเป็นหู เป็นตา เป็นมือ เป็นเท้า ให้กับ MCU เรียกรวมๆทั้งหมดนี้ว่า ไมโครคอนโทรลเลอร์
Arduino คือ บอร์ดไมโครคอนโทรลเลอร์ ตระกูล AVR ที่มีการพัฒนาแบบ open source คือ เปิดเผยทั้ง software และ hardware
ต้นกำเนิดของบอร์ด Arduino เริ่มมาจาก ในปี 2005 ชาวอิตาเลียน ที่อยากให้นักศึกษาที่มีเงินไม่มาก ได้เข้าถึง ได้เป็นเจ้าของไมโครคอนโทรลเลอร์ได้ (แนวคิดคล้ายๆผู้คิดค้น Raspberry Pi) ซึ่งเมื่อเปรียบเทียบราคากับไมโครคอนโทรลเลอร์อื่นๆ ก็ถือว่าถูกกว่า
ไม่ใช่เพียงแค่ราคาที่ถูกอย่างเดียวเท่านั้น พวกเขายังได้ตั้งใจทำให้ Arduino สามารถพัฒนาได้ด้วยโปรแกรมที่ แจกฟรีเนื่องจากไมโครคอนโทรลเลอร์อื่นๆ บางครั้งต้องใช้โปรแกรมที่มีราคาแพง นำศึกษาไม่สามารถเป็นเจ้าของเองได้ (ก็เลยต้อง hack!!!)
                บอร์ด Arduino มีหลายรุ่นหลายขนาด ยกตัวอย่าง เช่น UNO, Leonardo, micro, pro mini, BT, Mega2560 เป็นต้น ซึ่งแต่ละรุ่น จะมี spec ที่ไม่เหมือนกัน ได้แก่ ขนาด, ความจุ, ความเร็ว, จำนวนขา I/O ผู้เล่นสามารถเลือกให้เหมาะสมกับงานของตัวเองได้ รุ่นที่เห็นว่าได้รับความนิยมในเมืองไทยมากๆ ก็คงจะเป็นรุ่น UNO
รูปที่03 Arduino UNO

รูปที่04 Arduino รุ่นต่างๆ

                บอร์ด Arduino ถูกออกแบบมาให้ใช้งานง่าย จึงเหมาะกับมือใหม่หัดเขียนโปรแกรมไมโครคอนโทรลเลอร์อย่างยิ่ง (สมัยผู้เขียนเรียน ไม่ง่าย และสะดวกสบายอย่างนี้)

                ความง่ายของการเล่นบอร์ด Arduino มีอยู่หลายประการ ยกตัวอย่างเช่น สามารถต่อวงจร electronic เล็กๆน้อยๆจากภายนอก เข้ากับบอร์ดได้ทันที และบางครั้งเพื่อความสะดวก ยังมีพวกบอร์ดเสริมที่ทำไว้สำเร็จรูปแล้ว ที่เรียกกันว่า Arduino Shield มาต่อเข้ากับบอร์ด Arduino ได้อีกด้วย แล้วสามารถเขียนโปรแกรมพัฒนาต่อได้เลย ทำให้ประหยัดเวลาไปได้มาก

รูปที่05 Arduino Shield

                อีกความสามารถนึงของบอร์ด Arduino ที่ทำให้เป็นที่นิยมในวงกว้างก็คือ สามารถเขียนโปรแกรมบน OS ได้หลากหลาย ไม่ว่าจะเป็น Windows, Mac OS X และ Linux ซึ่งถือว่าเป็นจุดขายที่ดีอีกจุดนึง

                จุดเด่นของบอร์ด Arduino
1.                รูปแบบคำสั่งพื้นฐานง่าย เหมาะกับผู้เริ่มต้น
2.               มี community มากมาย ศึกษาหาข้อมูลได้ง่าย
3.               Open hardware ทำให้ต่อยอดได้ง่าย
4.               พัฒนาโปรแกรมได้จากหลาย OS
5.               ราคาไม่แพง

ก่อนอื่นก็ต้องมาทำความรู้จักบอร์ดกันก่อน
ผู้เขียนได้รับความอนุเคราะห์จากอาจารย์ของมหาวิทยาลัยเทคโนโลยีพระจอมเกล้าพระนครเหนือ มอบบอร์ด Arduino UNO มาให้ทดลองเล่น ขอขอบคุณ ณ ที่นี้ด้วยครับ


รูปที่06 Arduino UNO

เริ่มจากด้านซ้ายก่อน วนไปด้านบน (ตามเข็มนาฬิกา)
1.               USB plug ไว้ใช้สำหรับต่อสาย USB จากเครื่องคอมพิวเตอร์ที่ใช้เขียน code ของเรา เพื่อ upload code ไปที่บอร์ด
2.               Pin header ด้านบน ผู้เขียนขอเรียกรวมๆว่า Digital I/O pin นะครับ
3.               ถัดมาเป็น switch reset เอาไว้ reset บอร์ด
4.               In Circuit Serial Programming (ICSP) เป็น port ที่ใช้โปรแกรม Boot loader
5.               ATmega328 คือ chip ที่ทำการ run program หรือที่เรียกกันว่า MCU
6.               Analog in pin คือ ช่องที่ใช้รับสัญญาณ Analog
7.               External  power supply เอาไว้ต่อแหล่งจ่ายไฟจากภายนอก

มาเริ่มเล่นกันดีกว่า มี step ดังต่อไปนี้
1.               แน่นอนต้องมีบอร์ด Arduino และสาย USB
2.               Download Arduino Environment ได้ที่นี่ http://arduino.cc/en/Main/Software  (ผู้เขียนใช้ windows นะครัช)


รูปที่07 download Arduino IDE

3.               พอเราเสียบสาย USB เข้าเครื่องคอมฯ และ บอร์ด Arduino แล้ว ก็ต้องทำการลง Driver ซึ่ง Driver ก็อยู่ใน Folder ที่เรา download มาจาก step 2
4.               เปิดโปรแกรม arduino.exe
5.               ให้เลือกรุ่นของบอร์ด Arduino ให้ตรง และให้เลือก comport ที่ต่อไว้


รูปที่08 เลือกรุ่น


รูปที่09 เลือก comport

6.               เปิด Example file ที่มีมาให้อยู่ก่อนแล้ว


รูปที่10 เปิด Example file


รูปที่11 blink

7.               กดปุ่ม sketch, verify / compile เพื่อตรวจสอบความถูกต้อง และ compile โปรแกรม
8.               เมื่อ compile เสร็จ จะเห็นคำว่า “done compiling” ที่ด้านล่างของ IDE ถ้าหากไม่มีข้อผิดพลาด


รูปที่12 done compiling

9.               ตอนนี้เราพร้อมจะทำการ upload แล้ว ให้ไปที่ menu file, upload เพื่อส่งโปรแกรมไปยังบอร์ด Arduino เมื่อ upload เสร็จแล้ว เราจะเห็นคำว่า “done uploading” ที่ด้านล่างของ IDE และบอร์ดจะเริ่มทำงานตามที่เราเขียนโปรแกรมไว้ทันที คือจะเห็นไฟ LED สว่าง 1 วินาที สลับกับดับ 1 วินาที


รูปที่13 upload


เพียงเท่านี้เราก็สามารถใช้บอร์ด Arduino UNO เป็นแล้ว ง่ายมากๆเลยใช่มั้ยครับ ขอให้ทุกท่านสนุกกับการพัฒนาอะไรใหม่ๆออกมา เสมอๆนะครับ

ผู้อ่านสามารถพูดคุยกับผู้เขียนได้ที่ https://www.facebook.com/kongimi



ที่มา