สร้างหุ่นยนต์ใหม่จากซากไดร์ฟเก่า

ไปหน้าแรก | สารบัญ | Laploy.comระเบียนบทความ | บทความจากลาภลอย


วันนี้ค้นซีดีเก่าๆ เจอบทความที่เขียนไว้หลายปีแล้ว เอามา post ไว้ที่นี่เพื่อรำลึกอดีต

1)แคสเตอร์ 2)แผ่นวงจรควบคุม 3)สเต็ปมอร์เตอร์ 4)สายต่อไปพีซี 5)สายไฟเลี้ยง

 

สร้างหุ่นยนต์ใหม่จากซากไดร์ฟเก่า

ดิสก์ไดร์ฟเก่าที่เสียแล้วอย่าโยนลงถังขยะ เพราะดัดแปลงเป็นหุ่นยนต์ เพื่อการศึกษาวิธีสร้างหุ่นยนต์ ด้วยงบเพียง 233 บาท

ผมอ่านบทความเรื่อง “เปลี่ยน Floppy Drive ให้เป็นรถประป๋อง” ในควิกพีซีฉบับที่ 124 แล้วชอบใจมาก เพราะผมมีดิสก์ไดร์ฟที่ใช้ไม่ได้แล้วอยู่หลายตัว แกะออกมาจากเครื่องนานแล้วยังไม่ได้โยนทิ้ง กะว่าว่างๆ จะเอามาทำอะไรเล่น พออ่านบทความจบจึงค้นออกมาตรวจสอบ ผมพบว่านอกจาก DC มอเตอร์แล้ว ในดิสก์ไดร์ฟยังมีอุปกรณ์ที่มีประโยชน์อีกหลายอย่าง อาธิ ไมโครสวิชท์ โฟโต้เซนเซอร์ LED สเต็ปปิ้งมอเตอร์ และวงจรขับสเต็ปปิ้ง

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

การสร้างหุ่นหนูน้อยด้วยดิสก์ไดร์ฟเก่า คุณควรจะรู้ข้อมูลในหัวข้อต่างๆ ดังนี้

  • เรื่องของหุ่นหนู
  • ฟล็อปปิดิสก์ไดร์ฟ
  • สเต็ปปิ้งมอเตอร์
  • พอร์ทขนาน
  • การประกอบตัวหุ่น
  • แคสเตอร์ – วิธีทำ
  • การประกอบวงจร
  • ซอฟท์แวร์

 

เรื่องของหุ่นหนู

หุ่นหนู (Micro mouse robot) เป็นหุ่นที่มีการจัดแข่งขันกันทั่วโลกมาหลายสิบปีแล้ว กติกาคือปล่อยหุ่นเข้าไปในเขาวงกต ให้หุ่นหาทางออกมาให้ได้เองโดยเจ้าของไม่ต้องยุ่งเกี่ยว หุ่นตัวไหนใช้เวลาน้อยที่สุดก็ชนะไป ดังนั้นหุ่นจะต้องมีฮาร์ดแวร์และซอฟท์แวร์ที่สมบุรณ์ในตัว มีแบตตารีและมีตัวตรวจจับประเภทต่างๆ จึงจะมีปัญญาสำรวจทำแผนที่และคิดหาทางออกมาเองได้

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

หุ่นหนูของจริง

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

 

ดิสก์ไดร์ฟ

ซากดิสก์ไดร์ฟที่ผมมีเป็นไดร์ฟสามนิ้วครึ่ง 1.4M ยี่ห้อ TEAC รุ่น FD-235HF ถ้าคุณมียี่ห้ออื่นรุ่นอื่นก็ใช้ได้ เพราะดิสก์ไดร์ฟของพีซีเป็นมาตรฐานเดียวกันหมดอยู่แล้ว แต่ถ้าคุณไม่มีดิสก์ไดร์ฟที่เสียแล้วสักตัว ไม่ต้องเอาของใหม่มาแกะครับ ลองไปเดินตามศูนย์ไอทีเดี๋ยวก็ได้ติดไม้ติดมือมา ไดร์ฟที่เสียแล้วร้านค้าจะกองใส่ลังวางไว้หน้าร้าน ราคาตัวหนึ่งไม่ควรจะเกินสามสิบบาท

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

ดิสก์ไดร์ฟขนาดสามนิ้วครึ่ง

1)ช่องด้านหน้า 2)หัวอ่านเขียน 3)ขาเสียบแหล่งจ่ายไฟ 4)สเต็ปมอร์เตอร์ 5)ขาคอนเน็ตเตอร์

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

 

สเต็ปปิ้งมอเตอร์

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

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

 

สเต็ปมอร์เตอร์ขนาดใหญ่

สเต็ปมอร์เตอร์ที่ได้จากซากไดร์ฟ

 

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

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

 

ฮาร์ทแวร์ของพอร์ทขนาน

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

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

หัวต่อ DB25 ที่อยู่ด้านหลังเครื่องเป็นคอนเนคเตอร์ตัวเมีย ชนิด D-Sub ส่วนหัวต่อ DB25 ที่มาจากเครื่องพิมพ์เป็นตัวผู้ที่เราจะต้องใช้หนึ่งตัว ผมเองหาแกะเอาจากสายเครื่องพิมพ์เก่าที่ไม่ได้ใช้แล้ว

การเรียงขาของคอนเนคเตอร์พอร์ทขนาน

คอนเนคเตอร์พอร์ทขนาน

สัญญาญที่ออกมาจากพอร์ทขนานเป็นสัญญาณที่อยู่ในระดับ TTL คืออยู่ในช่วง 0 ถึง 2.4 โวลท์ จายกระแสร์ ได้ประมาณ 2 มิลลิแอมป์ เราจึงนำมาเชื่อมต่อกับวงจรขับสเต็ปปิ้งมอเตอร์ของฟล็อปปิดิสก์ได้โดยตรง แต่น่าเสียดายที่พอร์ทขนานไม่มีขาจ่ายไฟ 5 โวลท์ที่เราต้องใช้ป้อนให้วงจร ดังนั้นจึงไม่มีทางเลือกนอกจากต้องใช้ไฟ 5 โวลท์จากหัวจ่ายไฟให้ดิสก์ไดร์ฟของเพาเวอร์ซัพพลายในเครื่องพีซี

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

ไปหาคอนเนคเตอร์ DB-25 มาบัดกรีสายซะ

 

ซอฟท์แวร์ของพอร์ทขนาน

ก่อนที่จะพูดถึงการเขียนโค้ดผมอยากจะอธิบายสภาพของพอร์ทขนานโดยย่อพอเข้าใจ ในทางซอฟท์แวร์พอร์ทขนานจะมีสามส่วน คือ

ส่วนข้อมูล : มีแปดเส้น จึงรับ-ส่งข้อมูลได้พร้อมๆ กันทีละแปดบิท ในงานควบคุมง่ายๆ เราใช้เฉพาะส่วนข้อมูลก็เหลือเพือแล้ว

ส่วนควบคุม : มีสี่เส้น ใช้ส่งสัญญาณออกไปสู่โลกภายนอก (เช่นสัญญาณบอกเครื่องพิมพ์ให้เลื่อนกระดาษ)

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

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

ตัวเลขนี้คือค่ามาตรฐานของพอร์ทขนาน LPT1 ในเครื่องทั่วๆ ไป เครื่องของคุณอาจจะถูกตั้งค่าไว้ต่างไปจากนี้ก็เป็นได้ วิธีเข้าไปตรวจสอบดูว่าพอร์ทขนานของเครื่องคุณมีแอดเดสรเท่าไหร่แน่ให้ตรวดูโดยกด Start/programs/accessories/system tools/system information ดูในหัวข้อ I/O ในรายการบรรทัดที่เขียนว่า LTP

 

ดิสก์ไดร์ฟเพาเวอร์คอนเนคเตอร์

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

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

หัวต่อไฟเลี้ยงของฟล็อปปิดิสก์ไดร์ฟ

แสดงวิธีต่อสายเพื่อนำไฟ 5 โวลท์จากคอมพิวเตอร์มาใช้

 

การประกอบตัวหุ่น

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

ถ้าคุณมีดิสก์ไดร์ฟแบบไม่มีฝาอลูมิเนียมก็คงต้องหาวัสดุอย่างอื่นมาทดแทน ลองหาดูรอบๆ บ้าน เช่นอาจจะใช้แผ่นฟิวเจอร์บอร์ด หรือใช้ไม้อัดสำหรับเด็กทำการฝีมือก็เก๋ดีเหมือนกัน

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

แผ่นอะลูมีเนียมที่แกะออกมาจากไดร์ฟ

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

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

 

แคสเตอร์

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

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

แคสเตอร์ที่ประกอบขึ้นเองจากวัสดุรอบตัว

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

 

วิธีทำแคสเตอร์

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

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

1)น็อตตัวเมีย 2)แหวนเล็ก 3)แหวนใหญ่ 4)ด้ามปากกา 5)แหวนกลาง 6)สปริงที่แกะมาจากปากกาลูกลื่น 7)น็อตยาวยึดกับล้อยางของเครื่องเล่นเทป

ซอฟท์แวร์

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

ผมมีข่าวดีกับข่าวร้ายจะบอก เอาข่าวร้ายก่อนก็แล้วกัน ข่าวร้ายคือยอดชายนายบิลเกสต์ แกไม่ยักใส่คำสั่งควบคุมพอร์ทขนานไว้ในภาษา VB ดังนั้นงานนี้จึงต้องซิกแซกกันหน่อย ส่วนข่าวดีคือมีคนสร้างโปรแกรมย่อย (ซับรูทีน) สำหรับ VB ใช้ควบคุมพอร์ทขนานมาให้เราใช้ฟรีๆ เยอะแยะ ในบทความนี้ผมจะใช้ไลบรารีของบริษัท SoftCircuits Programming (www.softcircuits.com) ผู้แสนจะใจกว้าง ก่อนจะลงมือเขียนโปรแกรมก็จัดการไปดาวน์โหลดมาเสียก่อน (หน้าสำหรับดาวน์โหลดอยู่ที่ http://www.softcircutis.com/sw_tools.htm)

ถ้าคุณใช้ VB เวอร์ชัน 1,2,3,4 แบบ 16 บิท ให้ดาวน์โหลดไฟล์ชื่อ vbasm.zip เมื่อนำมาคลายออกจะได้ไฟล์ชื่อ vbasm.dll ให้นำไปใส่ใน windows/system

ส่วนผู้ที่ใช้ VB 4 หรือเวอร์ชันใหม่กว่านั้นในแบบ 32 บิท ให้ดาวน์โหลดไฟล์ชื่อ win95io.zip เมื่อนำมาคลายออกจะได้ไฟล์ชื่อ vb95io.dll แล้วนำไปใส่ใน windows/system เช่นเดียวกัน

ส่วนผู้ที่ใช้ NT ต้องขอแสดงความเสียใจด้วย เพราะ DLL นี้ไม่สามารถทำงานใน Windows NT ได้ ส่วนจะใช้ใน Windows Xp ได้หรือไม่นั้นยังไม่ได้ทดสอบ

เมื่อติดตั้งไฟล์ .dll กันเรียบร้อยแล้ว ก่อนจะใช้งานได้ ในส่วนหัวของโปรแกรม VB (ในโมดูลพับลิก) จะต้องประกาศการใช้งานไลบรารีพวกนี้เสียก่อนโดยพิมพ์คำสั่งดังต่อไปนี้เข้าไป

 

การประกาศฟังค์ชัน API

สำหรับ VB 16 บิท

Declare Function vbInp Lib "VBASM.DLL" (ByVal nPort As Integer) As Integer
Declare Sub vbOut Lib "VBASM.DLL" (ByVal nPort As Integer, ByVal nData As Integer)

สำหรับ VB 32 บิท

Declare Sub vbOut Lib "WIN95IO.DLL" (ByVal nPort As Integer, ByVal nData As Integer)

Declare Sub vbOutw Lib "WIN95IO.DLL" (ByVal nPort As Integer, ByVal nData As Integer)

Declare Function vbInp Lib "WIN95IO.DLL" (ByVal nPort As Integer) As Integer

Declare Function vbInpw Lib "WIN95IO.DLL" (ByVal nPort As Integer) As Integer

แล้วเราจะส่งค่าไปที่พอร์ทได้อย่างไร? ง่ายมาก เพราะตอนนี้ VB ของเรามีคำสั่งพิเศษเพิ่มขึ้นมาสองคำสั่งคือ vbInp และ vbOut เรียบร้อยแล้ว (เพราะไลบรารี่ที่เราติดตั้งลงไป) คำสั่ง vbInp ทำหน้าที่รับข้อมูลจากพอร์ทขนาน และ vbOut ทำหน้าที่ส่งข้อมูลออกไปยังพอร์ทขนาน ทั้งสองคำสั่งมีรูปแบบการใช้งานดังนี้

vbOut [หมายเลขพอร์ท], [ค่าที่ต้องการส่งไป]

ดังนั้นถ้าคุณต้องการให้พอร์ทขนาน (ส่วนข้อมูล) เป็น 0 หมดทุกเส้น (ไม่มีไฟ หรือเท่ากับกราวน์) คุณก็บอกว่า

vbOut 8880, 0

ดังนั้นถ้าคุณต้องการให้พอร์ทขนาน (ส่วนข้อมูล) เป็น 1 หมดทุกเส้น (มีไฟ) คุณก็บอกว่า

vbOut 8880, 255

ถ้าต้องการให้พอร์ทขนาน (ส่วนข้อมูล) เป็นมีไฟและไม่มีไฟสลับกันในแต่ละเส้น คุณก็บอกว่า

vbOut 8880, 170 ‘ 170 เท่ากับ 10101010 ในฐาน 2

ถ้าคุณไม่สันทัดเรื่องการแปลงเลขฐานสิบไปเป็นฐานสอง (เหมือนผม) ก็ใช้วิธีเปิดเครื่องคิดเลขใน Windows แล้วเลือก View/Scientific คุณจะสามารถแปลเลขฐานต่างๆ กลับไปกลับมาได้อย่างคล่องแคล่วจนน่าทึ่ง

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

 

โปรแกรมทดสอบพอร์ทขนาน

‘ ใส่โค้ดบรรทัดนี้ไว้ในส่วนประกาศของโปรเจค (ในโมดูลพับลิค)

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

‘ สร้างปุ่ม command button ขึ้นมาหนึ่งปุ่ม ตั้งชื่อว่า cmdFlash แล้วใส่โค้ดดังนี้ไว้

Private Sub cmdFlash_Click()

    vbOut 8880, 0

    Call Sleep(1000)

    vbOut 8880, 255

    Call Sleep(1000)

End sub

เมื่อวิ่งโปรแกรมนี้คุณจะเห็น LED ดับหนึ่งวินาทีและติดหนึ่งวินาทีสลับกันไป ถ้าเราให้โปรแกรมทำงานโดยไม่หน่วงเวลาเลย โปรแกรมจะทำงานเร็วมากจะไม่เห็นการกระพริบ แต่เนื่องจาก VB ไม่มีคำสั่งหน่วงเวลา เราจึงต้องเรียกฟังค์ชัน sleep ซึ่งเป็นฟังชัน API มาใช้ 1000 จะเท่ากับ 1 วินาที 500 จะเท่ากับครึ่งวินาที

ลองวิ่งโปรแกรมแล้วตรวจสอบดูว่ามีหลอดไหนไม่ติดหรือไม่ ถ้ามีแสดงว่าต่อสายผิด หรือสายขาด (หรือ LED เสีย)

วงจรง่ายๆ เพื่อใช้ทดสอบโปรแกรม

โปรแกรมไฟวิ่ง

ต่อไปลองโปรแกรมนี้

Private Sub cmdFlash_Click()

    vbOut 8880, 170

    Call Sleep(1000)

    vbOut 8880, 85

    Call Sleep(1000)

End sub

โปรแกรมนี้จะทำให้ LED ติดและดับสลับดวงกัน ถ้าลดค่าหน่วงเวลาลงเหลือ 500 ความเร็วในการสลับจะหลอกตา ทำให้ดูเหมือนเป็นไฟวิ่ง

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

  1. ไปข้างหน้า : มอเตอร์หมุนไปข้างหน้าพร้อมๆ กันทั้งสองล้อ
  2. ถอยหลังตรง : มอเตอร์หมุนกลับหลังพร้อมๆ กันทั้งสองล้อ
  3. เลี้ยวซ้ายไปข้างหน้า : ล้อขวาไม่หมุน ล้อซ้ายหมุนไปข้างหน้า
  4. เลี้ยวขวา : ล้อซ้ายไม่หมุน ล้อขวาหมุนไปข้างหน้า
  5. ถอยไปทางซ้าย : ล้อซ้ายไม่หมุน ล้อขวาหมุนกลับหลัง
  6. ถอยไปทางขวา : ล้อขวาไม่หมุน ล้อซ้ายหมุนกลับหลัง
  7. หันหลังกลับ : ล้อซ้ายและล้อขวาหมุนไปในทิศทางตรงกันข้ามกัน

 

True table ของหุ่นหนู

เขียนเป็น True table ได้หน้าตาแบบนี้

D0 ถึง D3 คือสายข้อมูลจากพอร์ทขนาน ML Step คือสัญญาณให้สเต็ปของมอเตอร์ซ้าย ML Dir คือสัญญาณกำหนดทิศทางการหมุนของมอเตอร์ซ้าย MR Step คือสัญญาณให้สเต็ปของมอเตอร์ขวา MR Dir คือสัญญาณกำหนดทิศทางการหมุนของมอเตอร์ขวา

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

 

STEP01

ขั้นแรกก็เปิดโปรเจคใหม่ชื่อ step01 สร้างฟอร์มขึ้นมาหนึ่งฟอร์มชื่อ main บนฟอร์มใส่ปุ่มหนึ่งปุ่มชื่อ cmdStep1 แล้วใส่โค้ดดังนี้

1. Private Sub cmdStep1_Click()

2. vbOut 8880, 255 ‘ ค่าส่งไปคือ 1111 1111

3. Call Sleep(100)

4. vbOut 8880, 15 ‘ ค่าส่งไปคือ 0000 0000

5. Call Sleep(100)

6. vbOut 8880, 255 ‘ ค่าส่งไปคือ 1111 1111

7. End sub

ไม่ต้องใส่เลขบรรทัด เพราะ VB ไม่มีเลขบรรทัด ผมใส่เลขบรรทัดไว้เพื่อประโยชน์ในการอธิบาย บรรทัดที่ 2. เราส่ง 1 ออกไปทุกเส้น มอเตอร์จะไม่ทำงาน วงจรเข้าสู่สภาวะไม่แอคตีฟ (สัญญาณทุกเส้นของฟล็อปปิดิสก์จะแอคตีฟด้วยโลจิกต่ำ) บรรทัดที่ 4 และ 5 เราส่งโลจิกต่ำออกไปยังขา Step และ Direction ของวงจรขับมอเตอร์ทั้งสองตัว แล้วรอนาน 100 มิลลิวินาที จึงส่งโลจิคสูงออกไปอีกครั้ง (บรรทัดที่ 6) การทำอย่างนี้เท่ากับเราส่งพลัสเป็นสแควร์เวฟที่มีดิวตีไซเคิลขนาด 100 มิลลิวินาที ซึ่งจะทำให้วงจรขับสเต็ปปิ้งมอเตอร์พอใจ

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

 

STEP02

โปรเจคใหม่ชื่อ step02 สร้างฟอร์มขึ้นมาหนึ่งฟอร์มชื่อ main บนฟอร์มใส่ปุ่มหนึ่งปุ่มชื่อ cmdStep1 และใส่ text box ชื่อ text1 แล้วใส่โค้ดดังนี้

1. Private Sub cmdStep1_Click()

2. dim step_counter as integer

3. step_counter = val(text1.text)

4. for i = 1 to step_counter

5. vbOut 8880, 255 ‘ ค่าส่งไปคือ 1111 1111

6. Call Sleep(100)

7. vbOut 8880, 15 ‘ ค่าส่งไปคือ 0000 0000

8. Call Sleep(100)

9. next i

10. vbOut 8880, 255 ‘ ค่าส่งไปคือ 1111 1111

11. End sub

เขียนเสร็จแล้วทดสอบโดยวิ่งโปรแกรมแล้วพิมพ์ 20 ลงใน text box แล้วกดปุ่ม cmdStep1 โปรแกรมจะทำการหมุนมอเตอร์ไปยี่สิบสเต็ป

 

STEPBACK1

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

1. Private Sub cmdStepBack1_Click()

2. vbOut 8880, 255 ‘ ค่าส่งไปคือ 1111 1111

3. Call Sleep(100)

4. vbOut 8880, 10 ‘ ค่าส่งไปคือ 0000 1010

5. Call Sleep(100)

6. vbOut 8880, 255 ‘ ค่าส่งไปคือ 1111 1111

7. End sub

สังเกตุบรรทัดที่ 4 เราส่งค่า 0000 1010 ออกไป ทำให้สัญญาณ Direction กลับกันกับโปรแกรมที่เดินหน้า ทำให้มอเตอร์หมุนไปทิศทางตรงกันข้ามกับโปรแกรมเดินหน้า

 

STEPTEST

เมื่อเดินหน้าถอยหลังได้แล้ว ขั้นต่อไปเป็นการเขียนโปรแกรมให้เดินหน้าไป 100 สเต็ป เลี้ยวซ้าย 20 สเต็ป และเดินตรงไปอีก 100 สเต็ป

Private Sub cmdStep1_Click()

‘ เดินหน้า 100 สเต็ป

for i = 1 to step_counter

vbOut 8880, 255 ‘ ค่าส่งไปคือ 1111 1111

Call Sleep(100)

vbOut 8880, 15 ‘ ค่าส่งไปคือ 0000 0000

Call Sleep(100)

next i

‘ เลี้ยวซ้าย 20 สเต็ป

for i = 1 to step_counter

vbOut 8880, 255 ‘ ค่าส่งไปคือ 1111 1111

Call Sleep(100)

vbOut 8880, 15 ‘ ค่าส่งไปคือ 0000 0000

Call Sleep(100)

next i

vbOut 8880, 255 ‘ ค่าส่งไปคือ 1111 1111

End sub

 

รายการซื้อของ

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

1. ดิสก์ไดร์ฟที่เสียแล้วสองตัว 60 บาท

2. ล้อสองอัน 80 บาท

3. คอนเนคเตอร์ DB25 1 ตัว 30 บาท

4. ด้ามปากกาลูกลื่น 5 บาท

5. ลูกยางเทปแคสเซท 5 บาท

6. น็อต+แหวน 2 บาท

7. สายแพแบบ 10 เส้น 5 เมตร 25 บาท

8. LED สีแดงธรรมดา 8 ตัว 24 บาท

9. ตัวต้านทาน 1K ¼w 8 ตัว 2 บาท

รวมเงิน 233 บาท

 

การประกอบวงจร

เห็นวงจรแล้วคงยิ้มได้ เพราะวงจรคราวนี้ไม่ต้องซื้อหาอะไรมาบัดกรีให้วุ่นวาย ทุกอย่างแกะออกมาจากดิสก์ไดร์ฟหมด ยกเว้นคอนเนคเตอร์ DB-25 ที่ต้องจัดหามาต่างหาก

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

ให้ต่อสายไฟตามวงจรในรูปนี้

1)ไฟเลี้ยง 2) 3) 4) 5)สายไฟไปพีซี 6)มอร์เตอร์ 7)ล้อ 8)ชิพควบคุมสเต็ปมอร์เตอร์

1)ไฟเลี้ยง 2)ไมโครสวิชท์ 3)สายไฟไปพีซี 4) 5)ตัวรับส่งอินฟราเรด 6)หลอด LED

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

Post a comment or leave a trackback: Trackback URL.

ความเห็น

  • Wachirapong  On มิถุนายน 12, 2008 at 1:06 am

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

  • Unknown  On สิงหาคม 18, 2008 at 5:30 pm

    Welcome to enter (wow gold) and (wow power leveling) trading site, (Rolex) are cheap, (World of Warcraft gold) credibility Very good! Quickly into the next single! Key words !

  • bandit  On ธันวาคม 25, 2008 at 11:07 am

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

  • bandit  On มกราคม 6, 2009 at 4:21 pm

    คัยมีเบอร์ติดต่อบ้างครับ ผมอยากจะถามข้อมูลหน่อยครับ ส่งมาที่เมล์ก็ได้ครับ bandit-k@hotmail.com

  • อ้ายบ๊อง  On ธันวาคม 24, 2009 at 10:32 am

    ตอนนี้กำลังปวดหัวมากกับการต่อวงจรแต่ก็จะทำให้เต็มที่…ตอนนี้เหลือต่อวงจรและลงโปรแกรมจ้า…ขอบคุณมากนะค่ะที่มีการสร้างหุ่นยนต์ดีๆอย่างนี้…

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s

%d bloggers like this: