คนคอมพิวเตอร์

Archive for กันยายน 2009

หน้าแรก สารบัญ เกี่ยวกับบล็อกนี้ เกี่ยวกับผู้เขียน

มาสร้างหุ่นแอ๊บแบ๊วกันเถอะ [6]

ทำให้เพื่อนๆ ของคุณทึ่งด้วยการสร้างหุ่นยนต์น่ารักคิกขุที่จะส่งสัญญาณให้คุณทราบทันทีที่แฟนของคุณปรากฏกายใน MSN

บทความโดย : ลาภลอย วานิชอังกูร (laploy.com)

หุ่น แอ๊บแบ๊วคือตุ๊กตาตัวเล็กๆ ที่เรานำมาติดไว้กับเซอร์โว (servo motor) เมื่อบุคคลที่เราต้องการติดตามเฝ้าดูสถานะ (ต่อไปจะเรียกสั้นๆ ว่าแฟน) เปลี่ยนแปลงสภานะในโปรแกรมวินโดวส์ ไลฟว์ แมสเซนเจอร์ (Windows Live Messenger ต่อไปจะเรียกย่อว่า MSN) ด้วยการออนไลน์หรือออฟไลน์ เซอร์โวจะทำงาน หุ่นแอ๊บแบ๊วก็จะเคลื่อนที่ ขณะที่เรานั่งที่โต๊ะคอมพิวเตอร์ หรือเดินผ่าน เพียงชำเลืองมองที่หุ่นแอ๊บแบ๊วเราก็จะทราบทันทีว่าแฟนของเรากำลังออนไลน์ อยู่หรือไม่

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

คอนสทรักเตอร์ของคลาส AvailabotForm
คอนสทรักเตอร์ของคลาส AvailabotForm ทำหน้าที่กำหนดค่าเริ่มต้นให้แก่ออพเจ็กต์ที่จะถูกสร้างจากคลาสนี้

1 public AvailabotForm()
2 {
3     InitializeComponent();
4     timer1.Interval = 1000;
5     textBox1.Text = "Start at " + DateTime.Now.ToString() + "\r\n";
6 }

บรรทัดที่ 3 เรียกเมธอด InitializeComponent ซึ่งเป็นเมธอดที่ถูกสร้างโดยดีไซเนอร์ของ MSVS เพื่อวาดภาพกล่องตัวอักษรและปุ่ม บรรทัดที่ 4 กำหนดค่าให้แก่ตัวจับเวลา timer1 ให้มีช่วงเวลาหน่วง 1,000 มิลลิวินาที หรือหนึ่งวินาที (เราใช้ timer1 เพื่อตรวจสอบสถานะของแฟนทุกๆ วินาที) บรรทัดที่ 5 แสดงข้อความแจ้งการเริ่มทำงานในกล่องตัวอักษร textBox1

เมธอด MoveCW
เมธอด MoveCW ทำหน้าที่หมุนเซอร์โวตามเข็มนาฬิกา (Clock Wise เรียกย่อ CW)คือการหมุนวนขวา (ทักษิณาวรรต)  เมธอด MoveCW มีโค้ดดังนี้

1 private void MoveCW(int r)
2 {
3      timer1.Enabled = false;
4      for (int i = 0; i < r; i++)
5      {
6          myPort.OutPut(255);
7          myPort.OutPut(0);
8          Thread.Sleep(40);
9      }
10     timer1.Enabled = true;
11 }

บรรทัดที่ 1 ทำหน้าที่กำหนดว่าเมธอดนี้ไม่มีค่าส่งกลับและมีพารามิเตอร์หนึ่งตัวคือ r ทำหน้าที่กำหนดจำนวนพัลส์ คำสั่งวนซ้ำในบรรทัดที่ 3 นำค่า r มากำหนดจำนวนรอบของการทำงานซ้ำ การทำงานหนึ่งรอบจะสร้างพัลส์หนึ่งลูกซึ่งจะทำให้เซอร์โวเคลื่อนไปประมาณ 8 องศา (เซอร์โวรุ่นอื่นหรือยี่ห้ออื่นอาจเคลื่อนมากหรือน้อยกว่านี้)

เราต้องหยุดการทำงานของ timer1 ไว้ชั่วคราว (บรรทัดที่ 3)เพื่อไม่ให้รบกวนการทำงานของพัลส์ และให้ทำงานต่อเมื่อเราส่งพัลส์เสร็จแล้ว (บรรทัดที่ 11)

บรรทัดที่ 6 ถึง 9 คือโค้ดไส้ในของการวนซ้ำทำหน้าที่สร้างพัลส์หนึ่งลูก บรรทัดที่ 6 เซตให้ทุกบิตของพอร์ทเครื่องพิมพ์มีค่าเป็นหนึ่ง บรรทัดที่ 7 ทำหน้าที่หน่วงเวลานาน 1 มิลลิวินาที บรรทัดที่ 8 เซตให้ทุกบิตของพอร์ทเครื่องพิมพ์มีค่าเป็นศูนย์ และบรรทัดที่ 9 ทำหน้าที่หน่วงเวลานาน 20 มิลลิวินาที ผลลัพธ์ที่ได้คือพัลส์หนึ่งลูกตาม (โปรดดูแผนภูมิประกอบการทำงานของโปรแกรม)

แผนภูมิเวลาของพัลส์ที่ถูกสร้างด้วยเมธอด MoveCW

เมธอด MoveCC
เมธอด MoveCW ทำหน้าที่หมุนเซอร์โวทวนเข็มนาฬิกา (Counter Clock Wise เรียกย่อ CC)คือการหมุนวนซ้าย (อุตราวรรต)  โค้ดของเมธอด MoveCW เหมือนโค้ดของเมธอด MoveCW ทุกประการ ยกเว้นช่วงหน่วงขณะโลจิกสูงมีระยะเวลาสองมิลลิวินาที

1  private void MoveCC(int r)
2  {
3      timer1.Enabled = false;
4      for (int i = 0; i < r; i++)
5      {
6          myPort.OutPut(255);
7          Thread.Sleep(2);
8          myPort.OutPut(0);
9          Thread.Sleep(40);
10      }
11      timer1.Enabled = true;
12  }

เมธอด RepeatMove
เมธอดนี้จะทำงานหากเรากำหนดให้หุ่นแอ๊บแบ๊วทำงานในโหมดหันต่อเนื่อง หน้าที่ของมันคือทำให้หุ่นแอ๊บแบ๊วหันไปทางซ้าย แล้วหันไปทางขวาสลับไปเช่นนี้ตลอดเวลาที่แฟนออนไลน์

1  private void RepeatMove(int x)
2  {
3      if (x == 1)
4      {
5          textBox1.Text = " Love On-line!!!";
6          if (moveToLeft)
7              MoveCW(18);
8          else
9              MoveCC(17);
10         moveToLeft = !moveToLeft;
11     }
12 }

เมธอด OneTimeMove
เมธอดนี้จะทำงานหากเรากำหนดให้หุ่นแอ๊บแบ๊วทำงานในโหมดหันครั้งเดียว หน้าที่ของมันคือทำให้หุ่นแอ๊บแบ๊วหันหน้ามาหาเราเมื่อแฟนออนไลน์ และหันหลังให้เราหากแฟนออฟไลน์

1   private void OneTimeMove(int x)
2   {
3       if (x == 1)
4       {
5           if (!userStat)
6           {
7               textBox1.Text = " Love On-line!!!";
8               userStat = true;
9               MoveCW(18);
10          }
11      }
12      else
13      {
14          if (userStat)
15          {
16              textBox1.Text = " *** Love Off-line **** ";
17              userStat = false;
18              MoveCC(17);
19          }
20      }
21  }

เมธอด timer1_Tick
เมธอด timer1_Tick จะทำงานเองโดยอัตโนมัติทุกๆ หนึ่งวินาที เพราะเรากำหนดค่า timer1.interval ไว้ในเมธอดคอนสทรักเตอร์ ให้มีค่าเป็นหนึ่งวินาที

1   private void timer1_Tick(object sender, EventArgs e)
2   {
3       myTR = new StreamReader(@"c:\msn-test\log.txt");
4       int x = Convert.ToInt32(myTR.ReadLine());
5       myTR.Close();
6       if (repeat)
7           RepeatMove(x);
8       else
9           OneTimeMove(x);
10  }

บรรทัดที่ 3 อ่านข้อมูลจากแฟ้มข้อมูลตัวอักษรชื่อ log.txt ซึ่งอยู่ในโฟลเดอร์ c:\msn-test ค่าที่อ่านได้จะมีเพียงเลข 0 หรือเลข 1 อย่างใดอย่างหนึ่งเท่านั้น แต่เราอ่านมาเป็นข้อความ จึงต้องแปลงเป็นข้อมูลแบบเลขจำนวนเต็มเสียก่อน (บรรทัดที่ 4) เมื่ออ่านเสร็จแล้วปิดไฟล์ (บรรทัดที่ 5 หากไม่ปิดไฟล์ GetAlert จะเปิดไฟล์นี้ไม่ได้และจะเกิดเออเรอร์)

นำค่าที่อ่านได้มาตรวจสอบว่าเป็น 1 หรือไม่  (บรรทัดที่ 6) ถ้าใช่ แสดงว่าแฟนออนไลน์แล้ว เราจะหมุนเซอร์โว  (บรรทัดที่ 12) และแสดงข้อความในกล่องตัวอักษร textBox1  (บรรทัดที่ 10)

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

วิธีตรวจสอบทำได้หลายแบบ อย่างง่ายสุดคือใช้ตัวแสดงสถานะ (status หรือ flag) ในโปรแกรมนี้เราใช้ฟิลด์ userStat เพื่อไม่ให้โปรแกรมหมุนเซอร์โวทุกครั้งที่ timer1 ทำงาน โปรดไล่ดูคำสั่งในโปรแกรมเพื่อวิเคราะห์ว่าฟิลด์ userStat ถูกนำมาใช้แก้ปัญหานี้ได้อย่างไร 

เมธอด buttonStart_Click
เมธอด buttonStart_Click ทำงานเมื่อผู้ใช้กดปุ่ม Start ขั้นแรกเราต้องตรวจสอบว่า timer1 กำลังทำงานอยู่หรือไม่ (บรรทัดที่ 3) หากใช่ เราต้องหยุด timer1  (บรรทัดที่ 5) เปลี่ยนข้อความบนปุ่มเป็น Start (บรรทัดที่ 6) และแสดข้อความใน textBox1 ให้ผู้ใช้งานรู้ว่า timer1 หยุดทำงานแล้ว  (บรรทัดที่ 7)

หาก timer1 หยุดทำงานอยู่ เราต้องให้มันเริ่มทำงาน (บรรทัดที่ 11)เปลี่ยนข้อความบนปุ่มเป็น Stop (บรรทัดที่ 12)และแสดข้อความใน textBox1 ให้ผู้ใช้งานรู้ว่าบัดนี้ timer1 เริ่มทำงานแล้ว  (บรรทัดที่ 13)

1   private void buttonStart_Click(object sender, EventArgs e)
2   {
3       if (timer1.Enabled)
4       {
5           timer1.Enabled = false;
6           buttonStart.Text = "Start";
7           textBox1.Text += "Timer Stop\r\n";
8       }
9        else
10      {
11          timer1.Enabled = true;
12          buttonStart.Text = "Stop";
13          textBox1.Text += "Timer Start\r\n";
14      }
15  }

 

โปรดติดตามตอนต่อไป

Advertisements

หน้าแรก สารบัญ เกี่ยวกับบล็อกนี้ เกี่ยวกับผู้เขียน

มาสร้างหุ่นแอ๊บแบ๊วกันเถอะ [5]

ทำให้เพื่อนๆ ของคุณทึ่งด้วยการสร้างหุ่นยนต์น่ารักคิกขุที่จะส่งสัญญาณให้คุณทราบทันทีที่แฟนของคุณปรากฏกายใน MSN

บทความโดย : ลาภลอย วานิชอังกูร (laploy.com)

หุ่น แอ๊บแบ๊วคือตุ๊กตาตัวเล็กๆ ที่เรานำมาติดไว้กับเซอร์โว (servo motor) เมื่อบุคคลที่เราต้องการติดตามเฝ้าดูสถานะ (ต่อไปจะเรียกสั้นๆ ว่าแฟน) เปลี่ยนแปลงสภานะในโปรแกรมวินโดวส์ ไลฟว์ แมสเซนเจอร์ (Windows Live Messenger ต่อไปจะเรียกย่อว่า MSN) ด้วยการออนไลน์หรือออฟไลน์ เซอร์โวจะทำงาน หุ่นแอ๊บแบ๊วก็จะเคลื่อนที่ ขณะที่เรานั่งที่โต๊ะคอมพิวเตอร์ หรือเดินผ่าน เพียงชำเลืองมองที่หุ่นแอ๊บแบ๊วเราก็จะทราบทันทีว่าแฟนของเรากำลังออนไลน์ อยู่หรือไม่

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

AvailabotSolution
AvailabotSolution คือโซลูชันของ MSVS  ภายในโซลูชันนี้มีโปรเจคสองโปรเจคคือ AvailabotProject (ต่อไปจะเรียกย่อว่า AP) และ GetAlert โดยโปรเจค AP เป็นโปรแกรมประยุกต์ในวินโดวส์ (โปรแกรมแบบเดกส์ท็อป) เพื่อให้เราควบคุมการทำงานของหุ่นแอ๊บแบ๊วได้ ส่วนโปรเจค GetAlert เป็นตัวเสริมการทำงานของ MSN ทำหน้าที่คอยติดตามสถานะแฟนว่าออนไลน์หรือไม่

 
Project Explorer ของโปรแกรม Microsoft Visual Studio .NET 2005 แสดงไฟล์ต่างๆ ใน AvailabotSolution

AvailabotProject
โครงงานนี้มีคลาสหลักสองคลาสคือ PortAccess ทำหน้าที่ใช้สร้างออพเจ็กต์ติดต่อกับพอร์ทเครื่องพิมพ์ และคลาส AvailabotForm ทำหน้าที่ใช้สร้างออพเจ็กต์หน้า WinForm

 

 
แผนภูมิของคลาสต่างๆ ใน AvailabotProject ให้สนใจเฉพาะคลาส AvailabotForm และ PortAccess เท่านั้น ส่วนคลาส Program, Resources และ Settings เป็นคลาสบริการที่ถูกสร้างขึ้นโดยวิสชวลสตูดิโอ

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

 
หน้า WinForm ของคลาส AvailabotForm มีส่วนประกอบต่างๆ ดังนี้
1.    TextBox1 ทำหน้าที่แสดงข้อความรายงานสถานะต่างๆ
2.    buttonStart กดเพื่อให้ timer1 ทำงานหรือหยุดทำงาน
3.    buttonRight หมุนเซอร์โวทางขวา 90 องศา
4.    buttonStepRight ขยับเซอร์โวไปทางขวาหนึ่งครั้ง
5.    buttonStepLeft ขยับเซอร์โวไปทางซ้ายหนึ่งครั้ง
6.    buttonLeft หมุนเซอร์โวทางซ้าย 90 องศา

โครงสร้างคลาส AvailabotForm
โครงสร้างของคลาส AvailabotForm เผยให้เห็นส่วน using และสมาชิกต่างๆ ดังนี้

 

บรรทัดที่ 3 และ 4 โค้ดส่วน using จับรวมเนมสเปสพิเศษที่เราต้องการใช้งานสองเนมสเปสคือ IO ช่วยให้อ้างถึงไทป์ TextReader เพื่ออ่านแฟ้มข้อมูลตัวอักษร และ Threading ช่วยให้ใช้คำสั่ง sleep เพื่อหน่วงเวลาได้

คลาส AvailabotForm มีสมาชิกเพียงสองแบบคือสมาชิกแบบดาต้าฟิลด์ (บรรทัดที่ 8 ถึง 12) และสมาชิกแบบเมธอด (บรรทัดที่ 15 ถึง 133) สมาชิกแบบเมธอดแบงออกเป็นสี่ประเภทคือ คอนสทรักเตอร์ (บรรทัดที่ 15) เมธอดทำหน้าที่หมุนเซอร์โว (บรรทัดที่ 22 ถึง 57) เมธอดบริการตัวจับเวลา (บรรทัดที่ 79) และเมธอดบริการปุ่ม (บรรทัดที่ 89 ถึง 116)

สมาชิกแบบฟิลด์ของคลาส AvailabotForm
สมาชิกแบบฟิลด์ของคลาส AvailabotForm มีห้าตัวดังนี้
    private TextReader myTR;
    PortAccess myPort = new PortAccess();
    private bool userStat = false;
    private bool repeat = false;
    private bool moveToLeft = false;
myTR ทำหน้าที่เก็บค่าอ้างอิงออพเจ็กต์แบบ TextReader เพื่อให้เราสามารถอ่านไฟล์ตัวอักษรได้ myPort ทำหน้าที่เก็บค่าอ้างอิงออพเจ็กต์แบบ PortAccess ที่สร้างจากคลาสที่เรานิยามไว้เพื่อติดต่อกับพอร์ทเครื่องพิมพ์  userStat เป็นตัวแปรแบบบูลลีน ทำหน้าที่เก็บภาวะของแฟน (ว่าออนไลน์หรือไม่)repeat ทำหน้าที่เก็บสถานะว่าเป็นการทำงานแบบหมุนต่อเนื่องหรือหมุนเพียงครั้งเดียว (โหมดการทำงานของหุ่นแอ๊บแบ๊ว) และสุดท้ายคือ เก็บสถานะว่าเป็นการหมุนซ้ายไปขวาหรือขวาไปซ้าย (เพื่อให้หุ่นแอ๊บแบ๊วหันกลับไปกลับมาในโหมดทำงานต่อเนื่อง)

 

โปรดติดตามตอนต่อไป

หน้าแรก สารบัญ เกี่ยวกับบล็อกนี้ เกี่ยวกับผู้เขียน

มาสร้างหุ่นแอ๊บแบ๊วกันเถอะ [4]

ทำให้เพื่อนๆ ของคุณทึ่งด้วยการสร้างหุ่นยนต์น่ารักคิกขุที่จะส่งสัญญาณให้คุณทราบทันทีที่แฟนของคุณปรากฏกายใน MSN

บทความโดย : ลาภลอย วานิชอังกูร (laploy.com)

หุ่น แอ๊บแบ๊วคือตุ๊กตาตัวเล็กๆ ที่เรานำมาติดไว้กับเซอร์โว (servo motor) เมื่อบุคคลที่เราต้องการติดตามเฝ้าดูสถานะ (ต่อไปจะเรียกสั้นๆ ว่าแฟน) เปลี่ยนแปลงสภานะในโปรแกรมวินโดวส์ ไลฟว์ แมสเซนเจอร์ (Windows Live Messenger ต่อไปจะเรียกย่อว่า MSN) ด้วยการออนไลน์หรือออฟไลน์ เซอร์โวจะทำงาน หุ่นแอ๊บแบ๊วก็จะเคลื่อนที่ ขณะที่เรานั่งที่โต๊ะคอมพิวเตอร์ หรือเดินผ่าน เพียงชำเลืองมองที่หุ่นแอ๊บแบ๊วเราก็จะทราบทันทีว่าแฟนของเรากำลังออนไลน์ อยู่หรือไม่

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

 

วิธีควบคุมเซอร์โว
เซอร์โวไม่ใช่แค่มอเตอร์ทดเฟือง ภายในตัวมันมีวงจรอีเลกทรอนิกส์ซับซ้อน มอเตอร์ทดเฟืองเมื่อป้อนไฟเลี้ยงจะหมุนทันที แต่เซอร์โวเมื่อป้อนไฟเลี้ยงจะไม่หมุน เราต้องส่งสัญญาณไปควบคุมการทำงานของมัน สัญญาณดังกล่าวนี้เป็นพัลส์ที่มีข้อกำหนดเฉพาะเจาะจง (ตามที่เห็นในแผนภูมิ) ในโครงงานนี้เราจะเขียนโปรแกรมภาษา C# เพื่อสร้างพัลส์เหล่านี้

เซอร์โวมีสายสามเส้น ซ้ายสุดสีส้มคือสายสัญญาณ สายกลางสีแดงคือไฟเลี้ยง และขวาสุดสีน้ำตาลคือกราวนด์

 

 

 

 

 

เซอร์โวที่ผู้เขียนแกะจากหุ่นยนต์เก่าเป็นเซอร์โวยี่ห้อ GWS รุ่น S03T STD หากท่านมีเซอร์โวยี่ห้ออื่นรุ่นอื่นก็ใช้ได้ทั้งนั้น แต่อาจต้องปรับเปลี่ยนค่าการหน่วงเวลาในโปรแกรมเล็กน้อย เพราะเซอร์โวแต่ละยี่ห้อแต่ละรุ่นอาจมีจำนวนองศาในการหมุนแตกต่างกัน

 

 

 

 

 

 
เมื่อต้องการให้เซอร์โวหมุนไปทางซ้าย เราต้องสร้างพัลส์โดยปล่อยไฟ 5 โวลต์ (ทำให้ตรรกะที่ขา D0 ของพอร์ทเครื่องพิมพ์เป็น 1) นาน 1 มิลลิวินาที และทำให้เป็นกราวนด์ (ทำให้ตรรกะที่ขา D0 ของพอร์ทเครื่องพิมพ์เป็น 0) นาน 20 มิลลิวินาที  เมื่อต้องการให้เซอร์โวหมุนไปทางขวา เราต้องปล่อยไฟ 5 โวลต์นาน 2 มิลลิวินาที และทำให้เป็นกราวนด์นาน 20 มิลลิวินาที เซอร์โวยี่ห้อที่ผู้เขียนใช้เคลื่อนที่ประมาณ 8 องศาเมื่อได้รับพัลส์หนึ่งลูก

 

ซอฟต์แวร์ของหุ่นแอ๊บแบ๊ว
การสร้างซอฟท์แวร์ในโครงงานนี้จะใช้ภาษาอะไรก็ได้ แต่เนื่องจากเราจะสร้าง add-in ของ MSN ผู้เขียนจึงเลือกใช้ภาษา C# เพราะทำได้ง่าย ผู้เขียนจะสร้างโซลูชันด้วยโปรแกรม วิสชวลสตูดิโอ (Microsoft Visual Studio .NET 2005 ต่อไปจะเรียกว่า MSVS)ขั้นตอนการทำงานของซอฟต์แวร์ในโครงงานนี้เป็นดังนี้ (โปรดดูแผนภูมิประกอบคำอธิบาย)

 

 
แผนภูมิแสดงการทำงานของซอฟต์แวร์หุ่นแอ๊บแบ๊ว

  1. โปรแกรม GetAlert คือโปรแกรมที่เราเขียนขึ้นเพื่อทำงานเป็น add-in ของ MSN มันทำหน้าที่เฝ้าดูสถานะของแฟนตลอดเวลาที่เราเปิดโปรแกรม MSN
  2. เมื่อแฟนออนไลน์ GetAlert จะบันทึกตัวอักษร 1 ไว้ในไฟล์ log.txt เมื่อแฟนออฟไลน์ GetAlert จะบันทึกตัวอักษร 0 ไว้
  3. โปรแกรม AvailabotForm เป็นโปรแกรมแบบเดกส์ท็อปที่เราสร้างขึ้นเพื่อทำหน้าที่ควบคุมเซอร์โว
  4. โปรแกรม AvailabotForm จะตรวจดูข้อมูลในไฟล์ log.txt ทุกๆ หนึ่งวินาที
  5. เมื่อโปรแกรม AvailabotForm พบว่าข้อมูลใน log.txt เปลี่ยนแปลง มันจะส่งพัลส์ไปยังเซอร์โว
  6. เซอร์โวหมุนทำให้หุ่นแอ๊บแบ๊วเคลื่อนที่ในลักษณะที่ทำให้เรารู้ว่าแฟนออนไลน์หรือออฟไลน์
    หากสงสัยว่าแทนที่เราจะให้ GetAlert เขียนแฟ้มข้อมูล เราเปลี่ยนให้มันส่งพัลส์ไปยังเซอร์โวโดยตรงได้หรือไม่ (ตัดโปรแกรม AvailabotForm ออกไป) คำตอบคือได้ แต่ผู้เขียนไม่ใช้วิธีนั้นเพราะดีบักยาก

 

โปรดติดตามตอนต่อไป

หน้าแรก สารบัญ เกี่ยวกับบล็อกนี้ เกี่ยวกับผู้เขียน

มาสร้างหุ่นแอ๊บแบ๊วกันเถอะ [2]

ทำให้เพื่อนๆ ของคุณทึ่งด้วยการสร้างหุ่นยนต์น่ารักคิกขุที่จะส่งสัญญาณให้คุณทราบทันทีที่แฟนของคุณปรากฏกายใน MSN

บทความโดย : ลาภลอย วานิชอังกูร (laploy.com)

หุ่น แอ๊บแบ๊วคือตุ๊กตาตัวเล็กๆ ที่เรานำมาติดไว้กับเซอร์โว (servo motor) เมื่อบุคคลที่เราต้องการติดตามเฝ้าดูสถานะ (ต่อไปจะเรียกสั้นๆ ว่าแฟน) เปลี่ยนแปลงสภานะในโปรแกรมวินโดวส์ ไลฟว์ แมสเซนเจอร์ (Windows Live Messenger ต่อไปจะเรียกย่อว่า MSN) ด้วยการออนไลน์หรือออฟไลน์ เซอร์โวจะทำงาน หุ่นแอ๊บแบ๊วก็จะเคลื่อนที่ ขณะที่เรานั่งที่โต๊ะคอมพิวเตอร์ หรือเดินผ่าน เพียงชำเลืองมองที่หุ่นแอ๊บแบ๊วเราก็จะทราบทันทีว่าแฟนของเรากำลังออนไลน์ อยู่หรือไม่

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

 

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

นำสายแพมาฉีกออกให้เหลือสามเส้น

นำหัวต่อไฟเลี้ยงในเครื่องคอมพิวเตอร์ (T1) มาถอดขาออกแล้วบัดกรีกับสายแพ

ขาที่ต้องบัดกรีคือขาที่ต่อกับไฟ 5 โวลต์และ GND

เมื่อบัดกรีเสร็จแล้วใส่ขากลับเข้าที่จะเป็นแบบนี้

สายไฟที่เหลืออีกหนึ่งเส้นให้บัดกรีกับขาสองของคอนเนคเตอร์ DB25

ปลายอีกด้านของสายแพนำไปบัดกรีกับขาของคอนเนคเตอร์สามขา

บัดกรีเสร็จแล้วใส่ขาเข้ากับพลาสติกหัวคอนเนคเตอร์

นำแผ่นวงจรพิมพ์อเนกประสงค์มาตัดด้วยเลื่อยหรือเครื่องมือตัดแผ่น PVC ให้มีขนาดประมาณ 1×1 นิ้ว

ขัดด้วยกระดาษทรายให้ขอบเรียบ และขัดด้านที่มีทองแดงหากมีคราบสนิม

นำขั้วต่อคอนเนคเตอร์มาหักออกให้เหลือสามขา

สร้าง T2 โดยบัดกรีขั้วต่อคอนเนคเตอร์เข้ากับแผ่นวงจรพิมพ์

ทดลองเสียบคอนเนคเตอร์เข้ากับขัวที่บัดกรีแล้ว

สร้าง T3 โดยบัดกรีขั้วต่อคอนเนคเตอร์เข้ากับแผ่นวงจรพิมพ์อีกด้านหนึ่ง

เราจะใช้ขั้วต่อคอนเนคเตอร์นี้ต่อกับเซอร์โว

 

นำตัวต้านทานและ LED มาบัดกรีบนแผ่นวงจรพิมพ์

บัดกรีจุดเชื่อมต่อให้ครบแล้วนำคอนเนคเตอร์มาเสียบ

นำเซอร์โวมายึดกับกล่องพลาสติกด้วยนอต

นำแผ่นวงจรมาติดกับเซอร์โวโดยใช้เทปกาวสองหน้าแบบหนา

นำแผ่นซีดีมาพ่นสีขาวติดกับกล่องพลาสติกแล้วใส่ลวดลายรูปหัวใจเพื่อความสวยงาม

แผ่นซีดีและกล่องเมื่อตกแต่งเสร็จแล้ว (แผ่นซีดีนี้จะไม่หมุน นำมาติดไว้เป็นฐานเพื่อความสวยงาม)

นำแผ่นพลาสติกกลมมาใส่นอต

ขันนอตเข้ากับที่นั่งทับของตุ๊กตา

 

ฮาร์ดแวร์ของหุ่นแอ๊บแบ๊วเป็นอันเสร็จสมบูรณ์

โปรดติดตามตอนต่อไป

หน้าแรก สารบัญ เกี่ยวกับบล็อกนี้ เกี่ยวกับผู้เขียน

มาสร้างหุ่นแอ๊บแบ๊วกันเถอะ [1]

ทำให้เพื่อนๆ ของคุณทึ่งด้วยการสร้างหุ่นยนต์น่ารักคิกขุที่จะส่งสัญญาณให้คุณทราบทันทีที่แฟนของคุณปรากฏกายใน MSN

บทความโดย : ลาภลอย วานิชอังกูร (laploy.com)

 

 

หุ่นแอ๊บแบ๊วคือตุ๊กตาตัวเล็กๆ ที่เรานำมาติดไว้กับเซอร์โว (servo motor) เมื่อบุคคลที่เราต้องการติดตามเฝ้าดูสถานะ (ต่อไปจะเรียกสั้นๆ ว่าแฟน) เปลี่ยนแปลงสภานะในโปรแกรมวินโดวส์ ไลฟว์ แมสเซนเจอร์ (Windows Live Messenger ต่อไปจะเรียกย่อว่า MSN) ด้วยการออนไลน์หรือออฟไลน์ เซอร์โวจะทำงาน หุ่นแอ๊บแบ๊วก็จะเคลื่อนที่ ขณะที่เรานั่งที่โต๊ะคอมพิวเตอร์ หรือเดินผ่าน เพียงชำเลืองมองที่หุ่นแอ๊บแบ๊วเราก็จะทราบทันทีว่าแฟนของเรากำลังออนไลน์อยู่หรือไม่

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

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

  • อุปกรณ์ที่ต้องใช้
  • วงจรหุ่นแอ๊บแบ๊ว
  • วิธีประกอบหุ่นแอ๊บแบ๊ว
  • วิธีควบคุมเซอร์โว
  • ซอฟต์แวร์หุ่นแอ๊บแบ๊ว
  • การใช้งานไลบรารี MessengerClient.dll
  • ระบบรักษาความปลอดภัยของ MSN
  • การใช้ strong name
  • การลงทะเบียน GAC
  • วิธีทำให้ MSN รับ Add-in ได้
  • วิธีติดตั้ง Add-in ใน MSN

 

อุปกรณ์ที่ต้องใช้
ฮาร์ดแวร์ของหุ่นแอ๊บแบ๊วมีอุปกรณ์น้อยชิ้น ผู้เขียนหาทุกอย่างได้จากลิ้นชักเก็บเศษวัสดุเก่า หากท่านไม่มีอุปกรณ์ชิ้นใดให้หาซื้อจากศูนย์รวมร้านขายอะไหล่อิเลกทรอนิกส์เช่นบ้านหม้อ การสร้างฮาร์ดแวร์ของหุ่นแอ๊บแบ๊วต้องการอุปกรณ์ต่างๆ ดังนี้

หัวต่อเพาเวอร์ซัพพลายตัวผู้

คอนเนคเตอร์ DB25 ตัวผู้ สำหรับเสียบกับพอร์ทเครื่องพิมพ์

สายแพแบบติดกันอย่างน้อยสามเส้น (จะใช้สายโทรศัพท์ที่ภายในมีสี่เส้นก็ได้) ยาวสี่เมตร

เซอร์โว ผู้เขียนแกะออกมาจากหุ่นยนต์เก่าๆ ที่ไม่ได้ใช้แล้ว

แผ่นวงจรพิมพ์อเนกประสงค์ (ถ้าไม่อยากใช้แผ่นพรินท์ จะต่อโยงกันแบบรังนกก็ได้)

ขาสำหรับทำคอนเนคเตอร์ตัวผู้ (ถ้ามีชนิดที่มีตัวบังคับป้องกันการการเสียบสลับด้านจะยิ่งดี)

 

คอนเนคเตอร์แบบสามขาตัวเมีย (ไม่จำเป็นต้องเหมือนในรูป ให้ใช้แบบเท่าที่หาได้)

เครื่องมือตัดแผ่นวงจรพิมพ์

หรือจะใช้เลื่อยแบบนี้ตัดก็ได้

หัวแร้งแช่วัตต์ต่ำ (20W) ตะกั่วบัดกรีเส้นเล็กแบบมียางสนอยู่ภายใน

 

วงจรหุ่นแอ๊บแบ๊ว

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

เซอร์โวต้องการไฟเลี้ยง 6 โวลต์ เพื่อแก้ปัญหาเรื่องการสร้างแหล่งจ่ายไฟ ผู้เขียนตัดสินใจใช้ไฟเลี้ยงจากเพาเวอร์ซัพพลายของคอมพิวเตอร์ แม้จะได้แรงดันเพียง 5 โวลต์ แต่ก็เพียงพอจะให้เซอร์โวทำงานได้ ดังนั้นการติดตั้งหุ่นแอ๊บแบ๊วจึงต้องเปิดฝาเครื่องพีซีเพื่อเสียบหัวเสียบเพาเวอร์ซัพพลาย หากท่านคิดว่าการทำเช่นนั้นไม่สะดวก อาจดัดแปลงไปใช้ไฟเลี้ยงจากหัวเสียบ USB ก็ได้เหมือนกันกัน แต่ผู้เขียนไม่ใช้วิธีนั้น เพราะค่อนข้างอันตราย หากเกิดความผิดพลาดอาจทำให้เมนบอร์ดชำรุดได้

ผู้เขียนออกแบบให้วงจรของหุ่นแอ๊บแบ๊วมีอุปกรณ์น้อยชิ้นที่สุด T1 คือหัวต่อไฟเลี้ยงในเครื่องคอมพิวเตอร์ T2 คือหัวต่อเครื่องพิมพ์ (เป็นคอนเนคเตอร์แบบ DB25) LED1 ทำหน้าที่บอกให้รู้ว่าวงจรมีไฟเลี้ยงหรือไม่ LED2 บอกให้รู้ว่าวงจรได้รับสัญญาณจาก D0 หรือไม่ R1 ทำหน้าที่เป็นตัวต้านทาน pull-down เพื่อรับประกันว่าขา Sig (ขารับพัลส์) ของเซอร์โวจะมีตรรกะเป็นศูนย์อยู่เสมอ (ยกเว้นตอนรับพัลส์จากคอมพิวเตอร์)

 

โปรดติดตามตอนต่อไป


เกี่ยวกับบล็อกนี้

เว็บบล็อก “คนคอมพิวเตอร์” หรือ Laploy’s articles เป็นบล็อกรวบรวมบทความจาก ลาภลอย วานิชอังกูร มีบทความหลายประเภทคละกัน เช่นบทความเกี่ยวกับการพัฒนาซอฟต์แวร์ บทความเกี่ยวกับการสร้างและดัดแปลงฮาร์ดแวร์ บทความเกี่ยวกับเทคโนโลยีคอมพิวเตอร์ทั่วไป บทความทั่วไป และนิยายนักสืบ

เกี่ยวกับผู้เขียน

ลาภลอย วานิชอังกูร เป็นผู้เชี่ยวชาญการพัฒนาแอพลิเกชันฐานข้อมูลและ Business Intelligence โดยเริ่มจากการพัฒนาโปรแกรมด้วย dBaseII, Clipper, FoxPro ปัจจุบันเป็นผู้เชี่ยวชาญในการบูรณาการระบบฐานข้อมูลด้วยเทคโนโลยีของไมโคร ซอฟต์เช่น ASP.NET, ADO.NET, Microsoft SQL Server 2008 และ LINQ ชำนาญการเขียนคิวรีเพื่อแก้ปัญหาทางธุรกิจที่ซับซ้อน Data mining, Data Warehouse, OLAP (SSRS), OLTP เคยออกแบบฐานข้อมูลสัมพันธ์ในองค์กรระหว่างประเทศ เคยพัฒนาแอพลิเกชันฐานข้อมูลในโครงการขนาดใหญ่หลายโครงการ และเคยให้คำปรึกษาด้าน BI ในศูนย์คอมพิวเตอร์ (T-Center) ในองค์กรของประเทศฝรั่งเศส
นอกจากงานฐานข้อมูลแล้ว ลาภลอย วานิชอังกูร ยังเชี่ยวชาญการพัฒนาซอฟต์แวร์ระบบฝังตัว (Microprocessor / Microcontroller Based Embedded System) งานพัฒนาแอพลิเกชันในอินเตอร์เน็ตแบบ RIA (Rich Internet Application) งานพัฒนาโครงสร้างพื้นฐานของซอฟต์แวร์ด้วยหลักการ OOP (Framework Development in Object Oriented Programming) ด้วยภาษา C# และ .NET Framework และงานบูรณาการระบบในองค์กรหรือ SOA (Service Oriented Architecture for Enterprise Orchestration) เคยร่วมงานกับทีมพัฒนาซอฟต์แวร์ในหลายๆ ประเทศ เช่น ไทย อินเดีย สวิส เยอรมัน และประเทศสหรัฐอเมริกา
ปัจจุบัน ลาภลอย วานิชอังกูร ทำหน้าที่ให้คำปรึกษาการวางระบบ IT (เช่น SQL, OLAP,.NET, SCADA, BI, SOA และอื่นๆ) ให้แก่หน่วยงานขนาดใหญ่หลายแห่ง และมีบทความทางวิชาการตีพิมพ์ในวารสารหลายเล่มอย่างสม่ำเสมอ และเป็นผู้เขียนหนังสือ "เรียนรู้ด้วยตนเอง DataBase - Query - T-SQL - Stored Procedure" และ “เรียนรู้ด้วยตนเอง OOP C# ASP.NET” (ISBN 13:978-974-212-598-1)
ท่านสามารถติดต่อผู้เขียนได้ที่อีเมล laploy@gmail.com

เรียนรู้ด้วยตนเอง OOP C# ASP.NET

ชื่อหนังสือ : เรียนรู้ด้วยตนเอง OOP C# ASP.NET โดย : ลาภลอย วานิชอังกูร จัดพิมพ์จัดจำหน่ายโดย : บริษัท ซีเอ็ดยูเคชั่น จำกัด (มหาชน) ISBN : 13:978-974-212-598-1 ราคา : 349 บาท จำนวนหน้า : 648 ขนาด : 19x29 ซ.ม.

เรียนรู้ด้วยตนเอง DataBase – Query – T-SQL – Stored Procedure

ชื่อหนังสือ: เรียนรู้ด้วยตนเอง DataBase - Query - T-SQL - Stored Procedure โดย: ลาภลอย วานิชอังกูร จัดพิมพ์จัดจำหน่าย: บริษัท ซีเอ็ดยูเคชั่น จำกัด (มหาชน) ISBN: 978-616-08-0009-4 ราคา: 559 บาท จำนวนหน้า: 1,100 ขนาด: 19x29 ซ.ม. วางตลาด: ตุลา 2552

กรุณาป้อนอีเมลของท่าน

Join 17 other followers

Advertisements