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 ต้องติด ดับ สลับกัน

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

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

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

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

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

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

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