Saturday, December 24, 2011

LabVIEW Interface for Arduino

VISV Getting Started With the LabVIEW Interface for Arduino ช่วงนี้ ก็เป็นช่วงเด็กทำโปรเจคกัน เราก็มีโปรเจคที่ต้องทำเหมือนกัน ก็เพิ่งจะผ่านการพรีเซ้นต์ หัวข้อโปรเจคผ่านไป ก็สบายใจได้หน่อยนึง ที่เหลือก็ทำโปรเจคให้มันสำเร็จก็แล้วกัน

วันนี พอดีเพื่อนมาหาที่บ้าน มาปรึกษากันเรื่องโปรเจคของมัน ประมาณว่า ต้องการทำให้บอร์ด Arduino Freeduino ติดต่อกับ Labview เพื่อที่เราจะได้เอา NI Labview สร้างเป็นหน้ากาก GUI เพราะเห็นว่า เคยเรียนการใช้ NI LABVIEW มาแล้ว ก็ไม่น่าจะยากมาก ลองๆค้นหาข้อมูลในอินเตอร์เนต ก็เจอ ที่น่าสนใจดู ลิ้งค์ อืมน่าสนแหะ ลองติดตั้งดูสักหน่อยสิ บอร์ด Arduino เราก็มีแล้ว

  • อันดับแรก ก็ต้องมี NI LABVIEW เวอร์ชั่น 2009 ขึ้นไป เค้าแนะนำว่า งั้นนะ แต่ที่ผมทดลองใช้อยู่เป็น เวอร์ชั่น NI LABVIEW  2011
  • บอร์ด Arduino สักบอร์หนึ่ง ตระกูลไหนก็ได้ แล้วก็พวกอุปกรณ์อิเล็กทรอนิกส์ สักหน่อย
  • Arduino IDE แน่นอนหล่ะ มีบอร์ดแล้วไม่มีโปรแกรม ก็ชักจะยังงัยๆ อยู่

หวังว่า เพื่อนๆ มีทั้งสามอย่าง และติดตั้งเรียบร้อยแล้วนะ ต่อจากนี้ไป ก็เป็นการทำให้ Labview สามารถมองเห็น Serial Comport แล้วก็ทำให้ทั้งสองอย่าง Interface กันได้ ก็ทำตามขั้นตอนกันเลยครับ

  1. ติดตั้ง NI-VISA Drivers เพื่อทำให้ NI LABVIEW มองเห็น Serial Port กันก่อน
  2. ติดตั้ง VI Package Manager ตัวนี้ จะเป็นตัวสร้าง แชร์ และค้นหา LabVIEW add-ons และ  toolkits จาก LabVIEW Tools Network ในที่นี้ เราจะเอามาไว้สำหรับค้นหา และติดตั้ง
  3. เมื่อติดตั้ง VI Package Manager เสร็จแล้ว ที่หน้าต่างโปรแกรม ให้เราค้นหา Tool kit ที่ชื่อ Labview Interface for Arduino ตามรูป เลยครับVI Package Manager
  4. รีสตาร์ทเครื่องสักครั้ง เพื่อความเป็นสิริมงคล
  5. เปิดไฟล์โปรเจคของ Arduino (ในที่นี้ บอร์ด Arduino ของเราควรจะเชื่อมต่อ กับคอมพิวเตอร์เรียบร้อยแล้ว) ซึ่งจะอยู่ใน Folder C:\Program Files\National Instruments\LabVIEW 2011\vi.lib\LabVIEW Interface for Arduino\Firmware\LVIFA_Base ชือไฟล์ LVIFA_Base.pde
  6. ทำการ Complie ซึ่งน่าจะผ่าน แล้วก็ให้อัพโหลดเข้าไปที่ตัวบอร์ด Arduino ถ้าจำไม่ได้ ให้ดูวิธีการจากโพสเก่าๆ ของผมครับ คลิก
  7. เปิดโปรแกรม Labview แล้วเปิดไฟล์ทดสอบ โหลดจาก ที่นี่ จากนั้นก็รีนโปรแกรม เลยครับ
  8. ลองปรับค่า แล้วดูผล

ถ้าอยากทราบว่า สองอันนี้ มันทำงานได้งัย ลองเข้าไปแกะโค๊ดของ Arduino แล้วก็ลองใช้ โปรแกรม Serial Port Monitor นั้งจับข้อมูลที่วิ่งบน Serial Port ดูครับ

อ่านเพิ่มเติม...

Saturday, November 5, 2011

แยกให้ดูกลไกการทำงาน

assembly       ห่างไปนาน สำหรับบล๊อกนี้ พอดี ติดภาระกิจ ใกล้จะสอบอีกแหละ ทำไร ไม่ได้มาก ต้องตัดเรื่องอื่นๆ ออกไปก่อน เอาเรื่องสอบให้มันจบๆ พ้นๆ ไปจากชีวิตก่อน เรื่องน้ำท่วม ถึงบ้านผมจะไม่ท่วมในตอนนี้ แต่ก็ขอให้คนกรุงเทพ อดทน และฟันฝ่าไปให้ได้นะครับ

       วันนี้ ผมเจอเว็บที่เค้ามาแสดงว่า ชองใช้ที่เราเห็นๆ อยู่ ในชีวิตประจำวัน (ของฝรั่งซะส่วนใหญ่) มันทำงานได้อย่างไร ประกอบไปด้วยชิ้นส่วนกลไก อะไรบ้าง ของบางอย่าง เราใช้มัน แต่เราอาจจะไม่เคยสังเกต หรือ ค้นคว้าว่ามันทำงานได้อย่างไร วันนี้ ผมนำเอง คลิปวีดีโอ ที่มืออาชีพ เค้ามาแยกชิ้นส่วนให้ดู น่าตื่นเต้นมากครับ สำหรับคนที่ใคร่รู้ ใคร่ศึกษา โดยเฉพาะ วิศวกรอย่างเราๆ ท่านๆ นี่แหละครับ

เครดิต และ ดูวีดีโอเพิ่มเติม http://science.discovery.com/videos/deconstructed/

อ่านเพิ่มเติม...

Tuesday, September 27, 2011

พื้นที่นี้ เพื่อแก (เพื่อนฉัน)

เดิมที ผมตั้งใจจะเขียนเรื่องงาน Image Processing ที่ทำส่ง อจ. กำลังเริ่มลงมือเขียนแล้วหล่ะ แต่ พอดีทางบ้านโทรมาบอกว่า ไอ้อิ๋ง หมาที่ป่วยไข้หัดอยู่ที่บ้าน ตายเสียแล้ว ก็เลยเอาเป็นว่า พื้นที่นี้ยกให้แก (เพื่อนฉัน) แล้วกัน

      ไม่ว่า เราหรือเค้าก็ต้องจากกันสักวัน อยู่ที่ใครจะไปก่อนกัน เท่านั้นเอง ผมได้สนุขตัวนี้ มาจากผู้ชายคนหนึ่ง เค้าเห็นว่า ที่บ้านยังไม่มีสุนัขเฝ้าบ้าน ก็เลยเอาลูกสุนัขสีดำ มาให้ เมื่อ 9 ปีที่แล้ว นับเป็นเวลาที่ผมเริ่มเข้าทำงานที่บริษัทนี้ด้วย วันแรกที่ได้มา ผมซื้อนมกล่องมาป้อนมัน แล้วก็หาข้าวหาน้ำให้มันกิน คงเป็นเพราะอย่างนี้ นี่เอง ทำให้สุนัขตัวนี้ คุ้นเคยกับผมมากที่สุดกว่าทุกคนในบ้าน

      แน่นอนว่า ทุกอย่างๆ ย่อมเป็นสิ่งสมมติ แม้กระทั่งชื่อ ด้วยความที่เราจำเป็นต้องมีชื่อเรียกให้มัน เพื่อให้ง่ายต่อการอ้างถึง และใช้เพื่อเป็นสัญญาความจำ เมื่อยามที่เราเรียกขาน สุนัขตัวนี้ เราตกลงตั้งชื่อให้มันล้อเลียนเสียงให้เหมือนกับชื่อของผู้ชายที่เอาสุนัขมาให้ เราตั้งชื่อมันว่า “อิ๋ง อิ๋ง” ชื่อเหมือนสุนัขตัวเมีย แต่แท้จริงแล้วมันเป็นตัวผู้

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

ลาก่อนเพื่อนรัก เกิดมาชาติหน้าขอให้ได้เป็นมนุษย์ เจอกัน ก็ทักทายกันบ้างนะ

 

Good_dog2

Good_dog

อ่านเพิ่มเติม...

Sunday, May 1, 2011

ไปอบรม VHDL มาได้ไรมาเยอะเลย

พอดี วันลาพักร้อนเยอะเกิ๊น ก็เลยต้อง plan ลาพักร้อนสักสองวัน เพื่อเป็นไปตามนโยบายเบื้องบน ไม่ได้คิดจะไปเที่ยวไหนหรอก อยากอยู่บ้านเล่นไมโครคอนโทรลเลอร์มากกว่า พอดีไปเห็นเค้าประกาศไว้ในเว็บ ว่า มีคอร์สอบรม VHDL สำหรับผู้สอน 28-29 มีค., 28-29 เมย.และ 23-24 พค พอดีเลย สองวัน ว่าแต่ มันเป็นคอร์สสำหรับผู้สอนนี่หว่า เราจะไปได้ไหม อย่ารอช้าเมล์ไปถามเค้าดีกว่า

หลายวันต่อมาได้รับเมล์ว่า สามารถไปได้พอดี มีที่ว่างพอดี โดยปกติแล้วเค้าจะไม่ให้บุคคลทั่วไปเข้าอบรม รอบนี้ มีเฉพาะคนที่เป็นครู อาจารย์เท่านั้น แต่เราก็โชคดี ที่ได้เข้าอบรมด้วย ว่าแต่ไอ้ VHDL มันคือภาษาไรเหรอ แล้วทำไรได้บ้าง อย่ารอช้า หนังสือที่ซื้อมาดองไว้นานแล้ว เอามาเปิดดูสักหน่อยสิ พอดีกับมีบอร์ด XC9572 อยู่แล้ว หลังจากจดๆ จ้องๆ อยู่นาน ไม่รู้จะเริ่มต้นยังงัย U_U

BookVHDL2009

CX1A Design Kit

จริงๆ ในหนังสือ “ออกแบบไอซีดิจิตอลด้วย FPGA และ CPLD ภาคปฏิบัติ โดยใช้ภาษา VHDL ” ผู้แต่งทั้งสองท่าน คือ ท่าน ณรงค์ ทองฉิม และ ท่านเจริญ วงษ์ชุ่มเย็น ท่านแต่งไว้ดีมากๆ อธิบายได้ค่อนข้างละเอียดแล้ว แต่ถ้าไม่ได้ฟัง หรือเข้าอบรมก่อน ก็อาจจะเป็นการลำบากในการเริ่มศึกษาด้วยตนเองเป็นอย่างมาก

บรรยากาศการอบรมครั้งนี้ ไม่เหมือนที่อื่น ไม่มีพิธีรีตองใดๆ จัดโต๊ะเสร็จ ก็นั่งอบรมกันเลย ทุกคนหันหน้าเข้าหากัน แต่ระหว่างที่ท่านอาจารย์ ณรงค์ ท่านบรรยายทุกคนต้องหันหน้าไปที่กำแพง เพื่อดูสไลด์ ที่ท่านอาจารย์กำลังแสดงให้ดู (ท่านอาจารย์เป็นคนค่อนข้างจริงจังมาก) ในระหว่างนั้น ต้องตั้งใจฟัง ห้ามทำการใดๆ โดยที่ท่านอาจารย์ยังไม่ได้สั่งให้ทำ ทุกคนต้องทำตามอย่างเคร่งครัด เพราะท่านอาจารย์ท่านมีความมุ่งมั่นที่จะถ่ายทอดความรู้ และท่านก็หวังให้เราทุกคนตั้งใจรับฟังกันด้วย

มีกาแฟเสิร์ฟตลอด ไม่ต้องห่วงว่าจะง่วงนอน (ความจริง ผมก็ทานมาแล้วหล่ะ) สรุปว่าวันนั้น ล่อไปสามแก้ว ไม่ต้องนอนกันหล่ะ ช่วงเช้าก็ปูพื้นฐานภาษา VHDL แล้วก็ทำความรู้จักกับ FPGA/CPLD กันก่อน พอหลังจากทานมื้อกลางวัน (ไก่ย่าง ที่ท่านอาจารย์บอกว่า อร่อยกว่า ไก่ห้าดาว) เราก็เริ่มทำการลง Lab โดยท่านอาจารย์พาทำตาม Lab ในหนังสือ แล้วใช้โปรแกรม Xilinx ISE 8.1i ในการเขียนภาษา VHDL โดยท่านอาจารย์ได้ยกตัวอย่างให้เห็นในหลายๆ รูปแบบ แต่ให้ผลลัพธ์เหมือนๆกัน เพื่อให้เกิดความรู้ ความเข้าใจ เวลาที่เราไปอ่านโค๊ดของคนอื่น เราจะได้เข้าใจ ว่ามันมีสไตล์การเขียนหลายแบบ แล้วแต่ใครถนัด

น่าเสียดายที่ความจริงเราน่าจะได้เทรนกันสองวัน แต่เนื่องด้วยในวันพรุ่งนี้ ท่านอาจารย์ต้องเดินทางไปสงขลาเพื่อกลับบ้านไปร่วมงานศพน้า เราก็เลยอัดเนื้อหาที่จำเป็นทั้งหมดภายในวันนั้นวันเดียว กว่าจะเลิกก็ปาไปสามสี่ทุ่ม ผมกลับถึงที่พักประมาณ 5 ทุ่ม เหนื่อยเหมือนกัน แต่คิดว่า เมื่อเทียบกับความรู้ที่ได้รับมา มันคุ้มค่าเกินกว่าความเหน็ดเหนื่อยมากมาย ซึ่งเมื่อเทียบกับความตั้งใจของท่านอาจารย์ ณรงค์ เทียบไม่ได้เลย สังเกตเห็นว่า ท่านอาจารย์ก็เหนื่อยเหมือนกัน แต่ท่านก็ยังพยายามที่จะถ่ายทอดความรู้ให้อย่างเต็มที่

ผมคงไม่ขออธิบายอะไรมาก เกี่ยวกับภาษา VHDL เพราะในหนังสือได้กล่าวไว้อย่างดีแล้ว ขอให้เพื่อนๆที่สนใจลองหาซื้อมาอ่านกัน ได้ข่าวว่าจะมีเล่มสองด้วย ท่านอาจารย์กำลังเรียบเรียงอยู่ รอติดตามกันได้เลยครับ สุดท้าย ผมอยากจะกล่าวว่า ขอบพระคุณท่านอาจารย์ ณรงค์ ทองฉิม อย่างสูง ที่ท่านมีความเมตตา อนุเคราะห์ให้ผมและเพื่อนได้เข้ารับการอบรมในครั้งนี้ ถึงแม้ผมทั้งสองคนจะไม่ได้เป็นผู้สอน ก็ตาม จึงอยากจะกราบขอบพระคุณท่านอาจารย์เป็นอย่างสูง ณ ที่นี้ด้วย

ถ้าผมมีเวลาผมก็อยากจะนำความรู้ที่ได้รับมาไปถ่ายทอดต่อไป อาจจะเป็นในรูปแบบการนำ CPLD ไปใช้งานมากกว่า  (อาจจะเป็นที่เว็บ 123Microcontroller)

เช่นเคย เมื่อเราได้เรียนรู้มาแล้วว่า VHDL เขียนอย่างไร เราก็ต้องมาทดลองกับบอร์ด CPLD ที่เรามีอยู่ เพื่อพิสูจน์ว่าเราสามารถที่จะเขียนโปรแกรมสั่งงานมันได้จริง

อ่านเพิ่มเติม...

Sunday, March 27, 2011

Labview : wire tutorial สายข้อมูล

    ในโหมดของ text base programming เราสามารถส่งข้อมูลเข้าไปประมวลผลในฟังก์ชัน ผ่านตัวแปร แต่ใน Labview Graphical programming แล้ว wire หรือสัญลักษณ์สายไฟ ทำหน้าที่ในการนำข้อมูลจาก block diagram หนึ่งไปอีก block diagram หนึ่ง

     จากรูปข้างล่าง สายไฟทำหน้าที่เชื่อมต่อระหว่าง control (ตัวควบคุม) และ indicator (ตัวแสดงผล) นอกจากนี้เรายังสามารถแยกข้อมูลที่ไหลผ่านสายไฟ ไปประมวลผลคู่ขนานกันก็ได้ เหมือนๆกับที่เราทำการ tab สายไฟออกไป เพื่อแบ่งกระแสไฟฟ้าไปใช้งาน คล้ายๆกันในแบบนั้น

    ในขณะที่ชนิดข้อมูลของโปรแกรมมีหลายประเภท (integer , charector , float, double , boolean ,….) การเรียกใช้และการประกาศตัวแปร เป็นสิ่งที่แยกแยะความแตกต่างของข้อมูลในการเขียนโปรแกรมแบบ text base แต่ใน Labview เราใช้ สี และ ขนาดของสายไฟ เป็นตัวบ่งบอกถึงความแตกต่างของข้อมูลนั้นๆ  

Labview : wire tutorial

     Labview จะมีการแจ้งให้ทราบว่าข้อมูลไม่ได้ถูกเชื่อมโยงกัน โดยจะแสดงลักษณะที่เรียกว่า broken wire เพื่อให้ผู้เขียนโปรแกรมทราบว่า ยังมีจุดที่สายไฟ ไม่ได้เชื่อมโยงกัน และจะไม่ยอมให้เราทำการ excute หรือ run โปรแกรม

Labview wire broken      การเกิด broken wire มีได้หลายสาเหตุ ตัวอย่างเช่น ระหว่าง object ที่มีความแตกต่างกันทางชนิดของข้อมูล ตัวอย่างเช่น เราไม่สามารถที่จะเอา out put ที่เป็น array จากบล๊อกไดอะแกรมหนึ่ง ไปต่อเข้ากับ input ที่เป็น numerical ของบล๊อกไดอะแกรมหนึ่ง ซึ่งแบบนี้จะทำให้เกิด broken wire ได้ ความแตกต่างของข้อมูลสามามารถแสดงได้ทั้งสี และขนาดของ wire ดังรูปต่อไปนี้

Labview data type

    สายไฟทุกๆเส้น มีความแตกต่างกัน ขึ้นอยู่กับประเภทของข้อมูลที่ทำการส่งไปในสายไฟ เราสามารถที่จะเชือมต่อข้อมูลจากแหล่งข้อมูลจากที่หนึ่งไปอีกที่หนึ่งได้อย่างถูกต้องได้ โดยดูจากสีของ object หรือไม่ก็ตรงที่ขั้วต่อสายไฟ ในกรณที่ object หรือ block นั้นๆ มีมากกว่า 1 อินพุท หรือ 1 เอาท์พุท โดยดูที่สีของขั้วต่อสายไฟ สังเกตจากรูป

good connect wire

แต่ถ้าหากชนิดข้อมูลไม่ตรงชนิดกัน เราก็จะพบปัญหา broken wire ดังเช่นที่ได้กล่าวไว้แล้ว

Broken wire in subVI

Tip: คุณสามารถลบสายไฟ broken wire ออกจาก block diagram ได้อย่างรวดเร็วด้วยการกดปุ่ม Ctrrl + B

เราสามารถตั้งค่าให้ทำการ wiring สายไฟเวลาที่เราเคลื่อนเม้าส์เข้าไปใกล้ object จะทำให้เม้าส์เราเปลี่ยนจากลูกศร กลายเป็น ม้วนสายไฟ เพื่อพร้อมที่จะทำการเดินสายไฟ ได้ตลอดเวลา โดยให้เราไปที่เมนู Tools –> Options ---> Block Diagram (ทางซ้ายมือ) แล้วติ๊กที่ช่อง Enable auto wiring

image

image

ในกรณที่เราทำการลากสายไฟไปแล้ว ไม่ต้องกลัวที่จะไม่สวยงามครับ ให้เราลากเชื่อมโยงไปก่อน แล้วทำการคลิกขวาบริเวณสายไฟ แล้วเลือก Clean Up Wire โปรแกรมจะทำการจัดสายไฟ ให้อย่างสวยงาม

image

เรียนรู้การใช้สายไฟ เพิ่มเติมได้จากตัวอย่างต่อไปนี้ เป็นการสร้าง control และ indicator ที่มีความแตกต่างกันทางชนิดของข้อมูล จะเห็นได้ว่า สีของ object และสีของสายไฟ เปลี่ยนแปลงตามชนิดของข้อมูล

wire block diagram

Labview example wire data

วีดีโอสาธิตการทำการ wire ข้อมูลของ Labview

ที่มา http://zone.ni.com/devzone/cda/tut/p/id/7567

อ่านเพิ่มเติม...

Saturday, March 19, 2011

มาเล่น Arduino กันเถอะ

Freeduino_Arduino

ก่อนหน้านี้ ผมเคยไปเทรน ARM7 ที่ขอนแก่น ตั้งหลายชั่วโมง เป็นเวลาหลายสัปดาห์ในช่วงปิดเทอมฤดูร้อน ประมาณเดือนเมษา พอกลับมาทำงาน ไม่ค่อยได้ใช้ ARM7 เพราะที่ทำงานมีแต่ PIC16F877 , PIC18F458 ไปๆมาๆ ก็ชักจะลืมๆ แล้ว ว่า ARM7 มันเซ็ทค่า Register ยังงัย

แต่เมื่อไม่นานมานี้ เกิดการปฏิวัติไมโครคอนโทรลเลอร์กับตระกูล AVR โดยชาวอิตาลี สองท่าน ด้วยความที่ต้องการให้นักเรียน นักศึกษา มีบอร์ดไมโครคอนโทรลเลอร์ใช้ และทำได้ง่าย ราคาถูก และศึกษาได้อย่างไม่ยากเย็นนัก จึงได้สร้างบอร์ดไมโครคอนโทรลเลอร์ที่ชื่อว่า Arduino ขึ้นมา

โดยที่บอร์ด Arduino ใช้ไมโครคอนโทรลเลอร์หลักเป็น AVR ตระกูล 8 บิต โดยถูกออกแบบให้มีการต่อใช้งานเป็นขา Digital I/O จำนวน 13 ขา และเป็นขารับสัญญาณ Analog จำนวน 6 ขา ซึ่งการกำหนดจำนวนขาแบบนี้ ได้กลายเป็นมาตรฐานของบอร์ด Arduino ไปแล้ว ถึงว่า Arduino เองจะถูกผลิตออกมาหลายแบบ แต่ที่เหมือนกัน ก็ยังคงเป็นขาที่เอาไว้ใช้งาน แต่แตกต่างกันตรงที่แต่ละรุ่น ที่ทำออกมามี memory ที่ไม่เท่ากันนั่นเอง (แต่ปัจจุบัน บอร์ด Arduino มีจำนวนขาให้ใช้  มากกว่าที่ได้กล่าวไว้แล้ว แตกต่างกันออกไปในแต่ละรุ่น)

Arduino table model

นอกจากลายวงจรที่เค้าแจกฟรีเป็น Open source ให้เราสามารถนำไปสร้างเองได้แล้ว ตัวโปรแกรมที่เป็น IDE ที่เอาไว้เขียนโค๊ดภาษา C/C++ ก็ยังสามารถให้เราสามารถโหลดเอาไปใช้งานฟรีได้อีกด้วย (โหลด IDE Arduino)  ซึ่งในตัว IDE ที่เราติดตั้งไปนี้ ประกอบไปด้วย Example มากมายที่ทำให้เรา เรียนรู้ไมโครคอนโทรลเลอร์ได้อย่างไม่น่าเบื่อหน่าย

ในการใช้งาน ถ้าหากเป็นการเรียนรู้แล้ว เราสามารถที่จะต่อสาย USB จากคอมพิวเตอร์ขของเราเข้ากับบอร์ก Arduino แล้วก็สามารถที่จะใช้งานได้เลย เพราะเค้าออกแบบให้เราใช้ไฟจากสาย USB เป็นไฟเลี้ยงของบอร์ดได้เลย สะดวกมากๆ (ในกรณีที่โหลดไม่กินกระแสมากนัก) นับว่าเป็นการออกแบบที่เหมาะให้นักเรียนนักศึกษา ได้ใช้และเล่นไมโครคอนโทรลเลอร์ อย่างที่ตั้งใจเอาไว้เลยทีเดียว

ที่อยากแนะนำให้เพื่อนๆ ให้มาลองเล่น Arduino นี้ก็เพราะว่า นอกจากความง่ายในการเขียนโปรแกรมแล้ว (เป็นภาษาซี ที่เราเรียกผ่าน Library ของมัน) ยังมีตัวอย่างให้ศึกษาเยอะแยะมากมาย นับไม่ถ้วนกันเลยทีเดียว ทำให้เราสามารถเล่น และทดลองแล้วประสบความสำเร็จได้อย่างง่ายดาย เพื่อให้เกิดกำลังใจในการศึกษาไมโครคอนโทรลเลอร์เบอร์อื่นๆ ต่อไป

ขั้นตอน ง่ายๆ ในการทดลอง Arduino

  • หาบอร์ด Arduino สักบอร์ด ในที่นี้ ผมแนะนำของป๋าช้าง Ayarafun.com ราคาถูกมากๆ (ถูกกว่าค่าเหล้า เบียร์ซะอีก)
  • โหลด IDE สำหรับเขียนโค๊ด ดาวน์โหลด
  • ต่อสาย USB เข้าบอร์ด Arduino
  • เปิดโปรแกรม Arduino เลือกบอร์ด และพอร์ตให้ตรงกับบอร์ดของเรา
  • เปืด Example Blink ทดลองทำไฟกระพริบกันก่อน (ถือเป็นโปรแกรมไหว้บอร์ด)
  • สังเกตไฟ LED ที่พอร์ด Digital 13 ต้องติด ดับ สลับกัน

ศึกษาเพิ่มเติม

อ่านเพิ่มเติม...

Thursday, February 17, 2011

Labview : Front Panel หน้ากาก VI

    ในตอนนี้ เราจะมาทำความรู้จักกับ Front Panel ว่ามันมีความสัมพันธ์กับ Block Diagram อย่างไร Front Panel Object แต่ละตัวแตกต่างกันอย่างไร แล้วเราจะหาอุปกรณ์ หรือว่า Front Panel Object ได้อย่างไร เราจะได้เรียนรู้กันในตอนนี้

    Front Panel เป็นส่วนของหน้าต่างที่ทำหน้าที่เป็นส่วนติดต่อกับ user หรือเป็นส่วนของ VI (Virtual Instrument ) นั่นเอง Front Panel ประกอบไปด้วย Control ทำหน้าที่เป็น input และ Indicator ทำหน้าที่เป็น output ซึ่งทำหน้าที่โต้ตอบก้บผู้ใช้งาน ในขณะที่เราวาง Indicator และ Control ลงบน Front Panel โปรแกรม Labview จะทำการสร้าง Control และ Indicator ลงบน Block Diagram อัตโนมัติ ซึ่งเราจะได้มาศึกษา Block Diagram กันต่อไป

หน้าต่าง Front Panel

Front Panel Labview

     หลังจากเราเปิดโปรแกรม Labview ขึ้นมาแล้ว เราสามารถที่จะสร้าง new VI ขึ้นมาได้ หน้าต่าง Front Panel จะปรากฏขึ้นมา โดยเราสามารถที่จะทำการสร้างหน้าต่าง User Interface หรือหน้าต่างโปรแกรมของเรา เพื่อให้ผู้ใช้ สามารถใช้งานได้ตามที่เราได้ออกแบบไว้แล้ว (ตรงนี้ ต้องใช้ประสบการณ์ และความคิดสร้างสรรค์ในการออกแบบสักหน่อย)

   ที่หน้าต่าง Front Panel ประกอบไปด้วยส่วนของ Toolbar ที่อยู่ด้านบน และส่วนของ Control Pallete ซึ่งเราสามารถที่จะเปิดตรงไหนก็ได้ที่หน้าต่าง Front Panel     โดยทำการคลิกขวาที่หน้าต่าง Front Panel หลังจากเราเปิดหน้าต่าง Control Pallete แล้วเราก็จะพบกับ Control และ Indicator แล้วสามารถที่จะลากพวกมันลงบนหน้าต่าง Front Panel ได้เลย

Control Pallete Control and Indicator

    Contrrol ได้แก่ Knobs , Push button , dial , และอุปกรณ์ที่ทำหน้าที่เป็น input อื่นๆ ทำหน้าที่เป็นตัวโต้ตอบ ทำหน้าที่เป็นตัวรับ ในขณะที่ Indicator ซึ่งได้แก่ graphic , LED ,หรืออุปกรณ์ที่ทำหน้าที่เป็นตัวแสดงผล ทำหน้าที่เป็นผลลัพธ์ ของหน้าต่าง VI

VI User Interface

จากรูปด้านบน เรามีตัว Control 2 ตัว ได้แก่ Number of Measurements และ Delay (sec) และ 1 ตัวสำหรับ indicator ในที่นี้คือตัว waveform graph ที่เราตั้งชี่อว่า Temperature Graph 

    ทุกๆ Control และ indicator จะมีชนิดของข้อมูลเป็นความสัมพันธ์ของตัวมัน ตัวอย่างเช่น Delay (sec) ทีเป็นตัวปุ่ม slide ในแนวนอน เป็นค่าตัวเลข เมื่อเรา Double Click ที่ตัว Control ในหน้า Front Panel โปรแกรมจะทำการเปิด Block Diagram ขึ้นมาให้ แล้วจะแสดงสัญลักษณ์ หรือไอคอน ของตัว Delay (sec) ที่หน้า Block Diagram โดยที่ตัวมันเองจะมีสีส้ม ซึ่งบ่งบอกว่า มันมีข้อมูลเป็นชนิดตัวเลขที่เป็น Double (DBL)

Slide Control

Numeric Control and Indicators

เราจะลองมาสร้าง Numeric control แล้วทดลองเปลี่ยนค่าของมัน

1. ทำการคลิกขวาที่  Front Panel แล้วทำการเปิด Control pallete จาก Pallete ย่อยให้เราไปที่ Numeric แล้วลาก Numeric control ลงบนที่ว่าง Front Panel

Numeric Pallete

2. เปลี่ยน ป้ายกำกับ Label ด้วยการดับเบิลคลิก ที่ป้าย label แล้วทำการพิมพ์คำว่า “input”

Numeric Input control

3. เราสามารถเปลี่ยนแปลงค่าของ control ได้ด้วยการกดปุ่ม เพิ่มหรือลดค่า หรือ ทำการดับเบิลคลิกไปที่บริเวณที่แสดงค่า แล้วทำการพิมพ์ค่าใหม่ ลงไปโดยตรง แล้วทำการกดปุ่ม ENTER ที่คีย์บอร์ด เพื่อทำการเปลี่ยนแปลงค่าใหม่ได้โดยครง

Numeric Input control

Boolean Controls and Indicators 

Control และ Indicator ที่เป็นชนิด Boolean จะรับและส่งข้อมูลได้เพียงสองสถานะเท่านั้น คือ TRUE และ FALSE เท่านั้น จากรูปข้างล่างจะเห็นว่า สวิทช์ในแนวตั้ง และ หลอด LED เป็น Control และ Indicator แบบ Boolean

toggle control Boolean Pallete

String Controls and Indicators

ข้อมูลชนิด ตัวอักษร เป็นข้อมูลแบบเรียงลำดับของ รหัส ASCII เรามักใช้ String Control และ String Indicator ทำหน้าที่รับข้อความจากผู้ใช้ ตัวอย่างเช่น password และ username ในขณะที่ String indicator จะทำหน้าที่แสดงผลที่เป็นข้อความ เราสามารถหา String Control และ String Indicator ได้จาก String and Path ใน pallete ย่อย

String Control and String Indicator

Front Panel Window Toolbar

เรามาดูสัญลักษณ์และการทำใช้งาน Toolbar กัน

Toolbar Labview

RUN

ทำหน้าที่สั่งให้ VI ที่เราเขียนทำงาน ; Labview จะทำหน้าที่ complie โค๊ดที่เราเขียนอัตโนมัติ

ERROR

เป็นตัวบอกว่า ณ ขณะนี้ เกิดความผิดพลาดขึ้น เนื่องไม่สามารถที่จะ conplie โปรแกรมได้ หากเราไม่แก้ไข เสียก่อน เราสามารถดูตำแหน่งที่ error ได้ ด้วยการคลิกที่ลูกศร นี้ แล้วจะเกิดหน้าต่างแสดงข้อความที่ error ให้เราคลิกที่ข้อความนั้น โปรแกรมก็จะพาเราไปยังตำแหน่งที่ error นั้น อย่างรวดเร็ว

RUN Continuously

เป็นการรันโปรแกรมแบบต่อเนื่อง วนลูปไม่รู้จบ จนกว่าเราจะกดปุ่ม abort หรือ ปุ่มหยุดโปรแกรม

Abort Execution ขณะหน้าต่าง VI กำลัง run อยู่ ปุ่มนี้ จะโชว์ขึ้นมา ถ้าเราคลิกที่ปุ่มนี้ โปรแกรม VI ของเราก็จะหยุดทำงานอย่างทันที

คำเตือน : โดยปกติแล้ว เรามักที่จะไม่นิยม หยุดโปรแกรมของเราด้วยปุ่มนี้ เพราะอาจจะทำให้เกิดอาการค้างของข้อมูล เรามักจะทำปุ่ม stop ขึ้นมาเอง

Pause

กดปุ่มหยุดชั่วคราว หากเราต้องการหยุดโปรแกรม VI ของเราชั่วคราว แล้วกดปุ่มนี้อีกครั้ง หากต้องการให้โปรแกรมของเราทำงานต่อ

Text Setting

คลิกเลือกที่ปุ่มนี้ หากต้องการปรับแต่งข้อความบนหน้าต่าง Front panel

Alignment - Resize - Order object

เป็นการจัดเรียง control และ indicator ให้เรียงตรงกัน ทั้งในแนวตั้ง และแนวนอน นอกจากนี้ ยังมีปุ่มสำหรับเรียงลำดับการซ้อนทับของหน้าต่าง และปุ่มปรับขนาดให้เท่าๆกันด้วย

Help Labview

ปุ่มขอความช่วยเหลือ หากต้องการคำอธิบาย ของ control หรือ indicator

 

Enter Text

ในการแก้ไขข้อความ หรือพิมพ์ตัวหนังสือ บนหน้า Front Panel เมื่อเราต้องการจบการทำงานของการพิมพ์หรือแก้ไข ข้อความ เราไม่สามารถที่จะใช้ปุ่ม ENTER บนคีย์บอร์ดได้ เพราะการเคาะ ENTER จะเป็นการขึ้นบรรทัดใหม่ หากเราต้องการจบการพิมพ์ ให้ทำการกดปุ่ม ลูกศรเครื่องหมายถูกแทน

Front Panel เป็นสิ่งแรกที่โปรแกรมเมอร์จะต้องทำการออกแบบ ในบางครั้งเราใช้เวลาในการออกแบบหน้าต่าง VI ของเราไปเกินกว่าครึ่งหนึ่งของโปรเจคของเรา ซึ่งหน้าต่าง VI ที่ดี ย่อมทำให้ผู้ใช้งานเกิดความรู้สึกอยากใช้งานโปรแกรมของเรา ไม่เกิดความสับสน บางครั้งโปรแกรมเมอร์อาจจะเรียนรู้เรื่องการออกแบบบ้าง

อ่านเพิ่มเติม...

Wednesday, January 26, 2011

Simple Program Labview

เริ่มต้นเขียนโปรแกรม Labview

simple Labview by Mr.P

โปรแกรมที่ถูกเขียนขึ้นด้วย Labview เราเรียกว่า Virtual Instrument (VI) เป็นเหมือนการเอาไอคอนที่เป็นหน้าตา ของอุปกรณ์เครื่องมือวัด ไม่ว่าจะเป็น สโคป หน้าปัดวัดแบบเข็ม แบบสเกล หรือแบบตัวเลข ปุ่มปรับค่าแบบ Knob หรือปุ่มกด Push Button ต่างๆ ที่ใช้เป็นหน้าต่าง GUI โต้ตอบกับผู้ใช้ โดยไอคอนเหล่านี้ เราจะทำการสร้างที่ส่วนของ Front Control แล้วทำการปรับแต่งสีสัน และข้อความที่ปรากฏตามความต้องการ หลังจากนั้น ก็ทำการ wire สายของ Data Flow ในส่วนของ Block Diagram ตาม Alogorthm ที่เราคิดไว้ ก็สามารถทำให้โปรแกม VI ที่เราสร้างขึ้นสามารถทำงานได้อย่างง่ายดาย

แล้ว Labview มันดีกว่ายังงัย
หลายคนอาจจะบอกว่า ถ้าเขียนหน้าต่างการใช้งานแบบนี้ โปรแกรม Visual C++ ก็สามารถทำได้เหมือนกัน แน่นอนหล่ะ ผมว่ามันก็ทำได็เหมือนกัน แต่ถ้าเป็นคนที่ไม่ได้เรียนเน้นทางโปรแกรมมา การจะสร้างโปรแกรมลักษณะเช่นนี้ เป็นการยากมาก เราอาจจะต้องเสียเวลาไปกับการ Develope software เพื่อทำงานติดต่อกับเครื่องมือวัด และทำหน้าต่างโปรแกรม GUI ไปอย่างมาก โดยที่เนื้องานจริงๆ เราอาจจะไม่ใช่แค่ตัวโปรแกรม แต่เป็นการเก็บต่า และวิเคราะห์ผล ซึ่งการเลือกใช้ Labview ในการพัฒนาเป็นการย่นระยะเวลาของปัญหาที่ไม่เกี่ยวข้องออกไป ทำให้เราบรรลุวัตถุประสงค์ได้เร็วกว่าอย่างแน่นอน 

ข้อดีที่เห็นได้ชัดของ Labview ก็คือ ตัวโปรแกรม Labview เมื่อทำงานร่วมกับ Hardware ที่ใช้เก็บสัญญาณข้อมูล เช่น DAQ card ที่รองรับสามารถทำให้เครื่องคอมพิวเตอร์ของเรากลายเป็นเครื่องมือวัดราคาแพงๆ ได้ และเราเองยังสามารถที่จะเปลี่ยนแปลงเครื่องมือวัดของเราผ่านการออกแบบโปรแกรม Labview ได้โดยตรง ไม่ว่าจะเป็น Oscilloscope , Multimeter หรือ Functiona Generator ก็ได้ พูดง่ายๆก็คือ Labview สามารถสร้างอุปกรณ์เสมือน (Virtual Instrument : VI) ให้เราได้นั่นเอง

ตกลงกันก่อน
ในที่นี้ ผมใช้
คอมพิวเตอร์โนตบุค Lenovo T61
ระบบปฏิบัติการ Windows XP SP3
Labview เวอร์ชั่น 8.5

เริ่มต้นโปรแกรม VI ง่ายๆกันก่อน
ในที่นี้ เราจะลองสร้าง VI ง่ายๆกันก่อน เพื่อให้ผู้ใช้ ได้ทำความคุ้นเคยกับส่วนของ Front Control และ Block Diagram กันก่อน เพื่อแยกให้ออกว่าทั้งสองส่วนนี้ทำงานอย่างไร มีหน้าที่อย่างไรบ้าง แต่จะยังไม่ลงรายละเอียดอื่น แต่ผมจะไปอธิบายเพิ่มในตัวอย่างอื่นๆต่อไป (เดี๋ยวจะเบื่อกันซะก่อน)

 

อ่านเพิ่มเติม...

Sunday, January 23, 2011

Labview 8.5 – มันกลับมาอีกแล้ว!!!

        เดิมทีผมเลิกความตั้งใจที่จะเขียนเรื่องของ Labview ไปแล้ว ด้วยเหตุที่ได้กล่าวไปแล้วขั้นต้น แต่เหมือนตอนนี้ ผมคงต้องกลับมาศึกษาเป็นจริงเป็นจังอีกแล้วครับ เพราะว่าในเทอมนี้ ผมได้ลงทะเบียนวิชา Labview ด้วย (เอาว่ะ) ยังงัยๆ ก็หนีไม่พ้นแล้ว ลองเล่นให้มันรู้ดำรู้แดงกันไปเลยสิ ว่าไอ้เจ้า Labview นี้ มันจะแน่ซักแค่ไหน

       พอดีเพื่อนที่ทำงาน เค้าบอกว่า ใครเซียน Labview ค่าจ้างแพงนะ ไอ้เราก็ตาลุกวาวขึ้นมาทันที เอาเป็นว่า เรามาเริ่มศึกษาด้วยกันนะครับ ว่า Labview เค้ามีการใช้งานกันอย่างไร และถ้ามีเวลา ผมก็อยากจะค้นคว้าหาโปรเจค Labview มาเจาะให้เพื่อนๆ ได้ศึกษาไปพร้อมๆกันนะครับ ผมไม่ได้เก่งขนาดนั้นหรอกครับ เพียงแต่ผมคิดว่า ถ้าเราสนใจเรื่องใดๆ อยู่ เราก็ควรเอาตัวเองไปผูกไว้กับเรื่องนั้นซักระยะหนึ่ง ต่อไปๆ เราก็จะเข้าใจมัน และทำมันได้อย่างคล่องแคล่วแน่นอน เหมือนๆประโยคๆ หนึ่ง ที่ผมค่อนข้างชอบ แล้วคิดว่ามันจริงเสมอสำหรับผมก็คือ

The first step is always the hardest
  การเริ่มต้นทำสิ่งใดสิ่งที่ยากที่สุดก็คือตอนเริ่มต้นทำ

โม้มากไปหน่อยอีกแหละ เรามาเริ่มกันเลยดีกว่าครับ

Labview คืออะไร

Labview National Instrument

Labview คือโปรแกรมที่ถูกสร้างขึ้นมาเพื่อทำงานด้านเครื่องมือวัด สำหรับงานวิศวกรรม (Laboratory Virtual Instrumentation Engineering Workbench) โดยโปรแกรมที่ถูกพัฒนาขึ้นภายใต้โปรแกรม Labview จะถูกพัฒนาภายใต้สภาวะ Visual Programming จากบริษัท National Instrument ซึ่งจุดประสงค์หลักของโปรแกรม ที่เค้าสร้างขึ้นมาก็เพื่อที่จะให้การทำงานกับเครื่องมือวัดภายในห้องแลปให้มีประสิทธิภาพมากที่สุดและเป็นไปอย่างอัตโนมัติ คือเราสามารถใช้โปรแกรม Labview สามารถทำการคำนวณค่าที่ได้จากเครื่องมือวัดใดๆ ที่ driver ของ Labview สามารถติดต่อได้ มาทำการประมวลผลต่อได้

ลักษณะการเขียนโปรแกรมของ Labview อาจจะต้องมีการปรับจูนสมองกันนิดหน่อยสำหรับโปรแกรมเมอร์รุ่นเก่า ที่คุ้นเคยกับการเขียนโปรแกรมประเภท Text base หรือพวกทีชอบ Coding ทีเป็นพันๆ บรรทัด เพราะเจ้าตัว Labview เองเกือบจะร้อยเปอร์เซนต์ของการพัฒนาโปรแกรม ใช้การเขียนโปรแกรมแบบที่เรียกว่า Graphic-base Programming ซึ่งถ้าเป็นการเขียนโปรแกรมแบบ Text-base เราจะต้องเขียนโปรแกรมแบบจากบนลงล่าง แล้วเรียกฟังก์ชันไปมา แต่ถ้าเป็นการเขียนโปรแกรมบน Labview ลักษณะแนวคิดของโปรแกรมจะเป็นแบบ Data Flow โดยข้อมูลของโปรแกรมจะไหลตาม wire หรือเส้นทางข้อมูลที่เราทำการเชื่อมต่อกันแต่ละบล๊อก (วันแรก ก็เล่นเอามึนเหมือนกัน ) O_o

แล้วเริ่มต้น เขียนโปรแกรมบน Labview ยังงัยหล่ะ ???

เนื่องจากโปรแกรม Labview เป็นการเขียนโปรแกรมสไตล์ Graphic-base Programming เพราะฉะนั้นการเขียนโปรแกรมส่วนใหญ่เป็นการจัดการด้านกราฟฟิค การโยงข้อมูล การทำหน้าต่าง GUI (Graphic User Interface )  ซะมากว่า โดยเค้าแบ่งการพัฒนาโปรแกรมออกเป็น 2 อย่างก็คือ

  1. Front Control ทำหน้าที่เป็นหน้ากากของโปรแกรมเพื่อติดต่อกับผู้ใช้
  2. Block Diagram เป็นส่วนของการจัดการไหลของข้อมูล (ยากสุดตรงนี้แหละ)

Front Control and Block Diagram of Labview 

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

อ่านเพิ่มเติม...

Monday, January 17, 2011

Beginning with PIC เริมต้นที่ไหนดี

พอดี วันนี้ เพื่อนเมล์มาถามว่าถ้าจะเล่น PIC microcontroller จะเริ่มตรงไหนดี ใช้ภาษาอะไรในการคอมไพล์ แล้วใช้บอร์ดรุ่นไหนในการเริ่มต้นดี คุณเชื่อหรือไม่ คำถามแบบนี้ มันสุดจะคลาสสิคจริงๆ คือเป็นคำถามที่ถามกันมาทุกรุ่นทุกสมัยเลยก็ว่าได้ แต่ก็ไม่ได้มีคำตอบที่ชี้ชัดลงไปได้หรอกว่า แบบไหนดีที่สุด เหมาะที่สุด เพราะถ้ามันมีคำตอบที่ดีที่สุดอยู่แล้ว มันจะมีคนมาถามแบบนี้ทำไม ทำไมเราไม่บรรจุลงในหลักสูตรมัธยมให้มันรู้แล้ว รู้รอดไปเลยหล่ะ จะมาให้งงกันอยู่ทำไม จริงไหม

มาเข้าประเด็นกันดีกว่า กับคำถามที่ถามไปข้างต้น ผมว่าเรื่องนี้ ถ้าในมานั่งพูดกันมันก็ยาวไม่ใช่น้อย มันเป็นเรื่องอยู่เหมือนกัน ถึงแม้คำถามจะค่อนข้างสโคปให้แคบแล้วก็ตาม โดยเราจะมุ่งไปที่ PIC ของบริษัท Microchip เท่านั้นก็ตาม แต่คำตอบของปัญหาก็ยังมีมากมายอยู่เหมือนเดิม เอาเป็นว่า เรามาว่ากันทีละขั้นก็แล้วกัน

ต้องทำความเข้าใจก่อนว่า งานที่เราต้องการใช้ไมโครคอลโทรลเลอร์นั้น เป็นงานประเภทไหน เพราะต้องเข้าใจนิดนึงว่า ทางไมโครซิฟเอง เค้าก็ผลิตไมโครคอลโทรลเลอร์ออกมาให้หลากหลายกับงานแต่ละประเภทอยู่แล้ว

ลองคลิกเข้าไปดูที่รูป PIC แต่ละตระกูล มันก็ยังประกอบไปด้วยแต่ละเบอร์ คิดแล้วน่าปวดหัวไหมหล่ะ ถ้าจะถามว่าจะต้องใช้เบอร์ไหนหล่ะ มันก็ต้องถามกลับไปว่า แล้วงานของคุณมันต้องการอะไรมั่งหล่ะ ช่องการแปลงสัญญาณ A/D , จำนวนพอร์ตดิจิตอล , memory หรือว่า ฟังก์ชั่นที่เกี่ยวข้องกับ   DSP อะไรจำพวกนี้ ล้วนเป็นสิ่งที่ต้องเอามาพิจารณาทั้งนั้น

PIC Microcontroller 

แล้วถ้าเราไม่รู้หล่ะ ถ้าเป็นพวกมือใหม่ อยากเอาไปศึกษาหล่ะ ถ้าเป็นมือใหม่จริงๆ ขอแนะนำ PIC ตระกูล 18F ก็แล้วกัน เพราะเบอร์นี้ มันกำลังคาบเกี่ยวกันระหว่าง 8 บิต และ 16 บิต อยู่ สามารถทำอะไรได้หลายอย่าง น่าจะเพียงพอสำหรับการเรียนรู้ได้นานพอสมควร ลองดูจาก Application Note ของทางไมโครซิฟ ว่าเค้าทำไรได้มั่ง

PIC18 Architecture

PIC18 Block Diagram

  • 83 (16-bit wide) powerful C-optimized instruction
  • Up to 2 MB addressable program memory
  • 4K Bytes RAM (max)
  • 32 level hardware stack
  • 1 (8-bit) File Select Register
  • Integrated 8x8 hardware multiply
  • Highest performance 8-bit architecture

ซึ่งในตระกูลของ PIC 18F เองก็ยังมีตั้งมากมายหลายเบอร์ คลิก

แต่ถ้าถามว่าจะเอาเบอร์ไหนมาเล่นก่อน ก็อยากจะบอกว่า เอาเบอร์ที่มีขายในบ้านเราเหอะ อย่าไปเพิ่งไปแอดวานซ์มากนัก เดี๋ยวให้เก่งกว่านี้ก่อน

ที่นี้ ก็มาถึงปัญหาย่อยของปัญหาหลักเรื่องเบอร์ไมโครคอลโทรลเลอร์ ว่าเราจะซื้อแบบบอร์ดทดลองแบบไหนดี  เท่าที่เห็นในบ้านเรา ก็มีให้เลือก สองแบบหลักๆ ก็คือ บอร์ดที่มีแต่ไมโครคอลโทรลเลอร์แล้วก็ช่อง I/O ของไมโครคอลโทรลเลอร์ กับแบบ บอร์ดที่มีทั้ง I/O และวงจรทดลองสำเร็จรูป ที่ต่อไว้ให้อยู่แล้ว เหลือแค่เพียงต่อสายไฟเชื่อมเข้าหากันเท่านั้น

แบบแรก ข้อดี คือว่า ราคาถูกกว่าแบบที่สอง ข้อเสีย คือต้องหาอุปกรณ์ต่อทดลองเอาเอง

บอร์ดไมโครคอลโทรลเลอร์ PIC18F

แบบที่สอง คือ อุปกรณ์ต่อทดลองครบครัน ไม่ต้องไปหาเพิ่ม มีอุปกรณ์ให้ทดลองเท่าที่จำเป็น ถึงจะไม่ครบทุกอย่างก็ตาม เหมาะสำหรับมือใหม่ แต่ข้อเสียก็คือ มันแพง

บอร์ดทดลองไมโครคอลโทรลเลอร์สำเร็จรูป แต่ทั้งคู่ก็มีข้อเสียเหมือนกันอยู่อย่างหนึ่งก็คือ มันไม่สามารถที่จะเปลี่ยนเบอร์ไมโครคอลโทรลเลอร์ได้มากนัก อาจจะได้อยู่เบอร์หรือสองเบอร์ หรืออาจจะเปลี่ยนไม่ได้เลยก็ได้

ถ้าเป็นอย่างงี้ เราจะทำอย่างไร จากประสบการณ์ ผมขอแนะนำ อุปกรณ์ที่เรียกว่าเครื่องโปรแกรมไมโครคอนโทรลเลอร์ตระกูล PIC ของ บริษัท MICROCHIP ซึ่งก็ยังมีหลายตัวอีกนั่นแหละ เอาเป็นว่า ตัวที่ใช้ได้กับ PIC 18F แล้วกัน ของไทยทำก็มีหลายเจ้า จะเป็นแบบทำเอง หรือว่าแบบซื้อเอาก็ได้

ET-PGM PIC USB V2

ซึ่งเจ้าตัว ET-PGM PIC USB V2 ผมก็ซื้อมาเหมือนกัน เพราะขี้เกียจทำเอง หลังจากได้ตัวโปรแกรมไมโครคอลโทรลเลอร์มาแล้ว เราก็สามารถที่จะไปโปรแกรมลงบนคอนโทรลเลอร์เบอร์อะไรก็ได้ ตามที่มันสามารถรองรับได้ โดยต่อไปที่ขาของไมโครคอลโทรลเลอร์ ตามที่ระบุในดาต้าชีท

 

ตัวอย่างการโปรแกรมที่ขาของไมโครคอลโทรลเลอร์ 

ตัวอย่างการโปรแกรมที่ขาของไมโครคอลโทรลเลอร์

ส่วนโปรแกรมที่ใช้เบิร์นไมโครคอลโทรลเลอร์ก็ใช้ PICkit 2 V2.55.01 Install  หรือ
PICkit 2 V2.55.01 Install with .NET Framework
ก็ได้

Pickit 2 Program

ทีนี้ ก็มาว่ากันถึงโปรแกรมที่จะใช้ในการเขียนโค๊ดเพื่อคอมไพล์ให้ได้ hex file เพื่ออัดลงไมโครคอลโทรลเลอร์กันเหอะ ในที่นี้ ขอแนะนำอยู่ สามตัวก็พอ เพราะตัวอื่น ยังไม่เคยลอง

ถ้าเรามีพอจะเข้าใจภาษาซี อยู่แล้ว ขอแนะนำ MPLAB C18 , CCS C Complier แล้วก็ Hi-tech C ถ้าถามว่าตัวไหน ดีกว่ากัน จากที่ฟังผู้รู้มา

เค้าว่ากันว่า CCS C Complier นั้น โค๊ดที่เขียนออกมาแล้วคอมไพล์ จะเล็กที่สุด และมีไลบรารี่ ค่อนข้างเยอะ ทำให้การพัฒนางานได้เร็ว ผู้ใช้ไม่ต้องศึกษามาก ก็สามารถที่จะทำงานออกมาได้แล้ว แต่นั่นก็เป็นข้อเสียให้มือใหม่หลายคนมาแล้ว เพราะจะทำให้ยิ่งไม่เข้าใจ ไปกันใหญ่

สำหรับ MPLAB กับ Hi-Tech C ผมแนะนำ MPLAB C18 ดีกว่า เพราะ ค่ายเดียวกันกับเบอร์ PIC Microcontroller เพราะต่างก็มาจาก MIcrochip เหมือนกัน ย่อมได้เปรียบมากกว่า ไม่ว่าจะเป็น โค๊ดตัวอย่าง หรือการนำไปใช้งาน ตลอดจนเอกสารต่างๆ ของ MPLAB ทำได้ค่อนข้างดีกว่า เยอะกว่า เวลามีปัญหา จะได้ไม่เหงา มีคนคอยปรึกษาได้

จริงๆ เรื่องของไมโครคอลโทรลเลอร์ มันยังมีรายละเอียดปลีกย่อยอีกมากมาย นี่เรายังมาไม่ถึงครึ่งทางของมันเลยนะ ต้องหาความรู้อยู่กันตลอด เพราะเจ้าตัวไมโครคอลโทรลเลอร์เอง ก็ผลิตออกมาเบอร์ใหม่ๆมาเรื่อย

แหล่งความรู้ที่สำคัญที่ดังๆ ของไทยก็มีเยอะ ไม่ว่าจะเป็น Electoday , PANTIP หรือว่า เว็บพี่สันติ ก็มีให้เข้าไปฝากคำถาม หรือข้อสงสัยกันได้ แต่อย่างหนึ่งที่อยากย้ำก็คือ การที่เราต้องมีพื้นฐานมาบ้างสมควร ไม่ใช่ว่าจะให้คนอื่นแสดงให้ดูตั้งแต่ต้นเลย แบบนี้ก็ไม่ไหว เพราะเราเองก็ไม่ได้จ้างเค้ามาเป็นที่ปรึกษา ทุกคนก็มีภาระหน้าที่ด้วยกันทั้งนั้น อย่าเกริยน พี่เค้าขอร้อง

ส่วนบล๊อกที่ผมกำลังพยายามรวบรวมความรู้ ก็คือ 123 Microcontroller ก็พยายามเขียนอยู่ ก็หวังว่าจะมีประโยชน์บ้าง ไม่มากก็น้อย ฝากเนื้อฝากตัวด้วยแล้วกันครับ

อ่านเพิ่มเติม...
 

แจกฟรี พื้นที่ฝากไฟล์ 15 GB

ติดตามข่าวสารผ่าน Twitter

Blog อื่นๆของฉัน

ผู้ติดตาม Blog นี้

เว็บเพื่อนบ้าน