29 มีนาคม 2555

29 มีนาคม 2555 (kinect ควบคุมรถบังคับ)

วันนี้พวกผมสามคนได้รวมงานที่ได้ทำแต่ละคนกันได้เป็นรถบังคับที่สามารถสั่งงานผ่านการขยับตัวของร่างกายโดยใช้กล้อง kinect เป็นตัวตรวจจับการเคลื่อนไหว ส่วนในตอนบ่ายก็มีหน้าที่ติดป้ายไวนิลโดยเป็นการประชาสัมพันธ์รับนักศึกษาเข้าศึกษาที่FIBO ติดตามรายละเอียดได้ที่ http://study.fibo.kmutt.ac.th/
โดยผลงานที่ได้อยู่ในวีดีโอ
ใช้ android
ใช้กล้อง

28 มีนาคม 2555

28 มีนาคม 2555 (ทดสอบรถ bluetooth)

วันนี้จะเป็นการทำในส่วนของandroidเพื่อควบคุมรถโดยส่วนนี้กฤชเพื่อนผมเป็นคนทำ แต่ว่าเนื่องจากต้องสื่อสารระหว่างรถกับมือถือให้รู้เรื่องจึงทำให้ผมก็ต้องตกลงกับกฤชให้ดีและศึกษาฝั่งandroidพอสมควร และแล้วมันก็
ในคลิบมันยังไม่มีแหล่งจ่ายไฟภายในจึงต้องต่อสายจ่ายไฟให้รถทำงานได้
การสื่อสารโดยที่ผมกับกฤชได้ตกลงกันไว้นั้นมีลักษณะดังนี้
คำสั่งให้เคลื่อนที่เป็น character หนึ่งตัว ตามด้วย ความเร็วอีกเป็นเลข0-255
โดยสามารถแบ่งการเคลื่อนที่เป็น4ลักษณะ
ไปข้างหน้า ใช้ตัว G ตามด้วย 0-255
ถอยหลัง ใช้ตัว B ตามด้วย 0-255
หมุนซ้าย ใช้ตัว L ตามด้วย 0-255
หมุนขวา ใช้ตัว R ตามด้วย 0-255
และคำสั่งหยุด ใช้อักขระ S ตัวเดียว
ส่วนที่เหลือ default เป็น หยุดทั้งหมด

27 มีนาคม 2555 (รถ bluetooth)

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

ส่วนประกอบประกอบไปด้วย
บอร์ดขับมอเตอร์ 
 โมดุล bluetooth
 บอร์ด arduno
และแหล่งจ่ายไฟต่างๆ

โดยการทำงานของรถเป็นดังรูป




26 มีนาคม 2555

26 มีนาคม 2555 (serialport in arduno)

การเขียนการติดต่อสื่อสาร Serial port บนบอร์ด arduno ทำได้ง่ายมากเพราะมีพังก์ชันสำเร็จรูปพร้อมใช้งาน
โดยจะมีส่วนที่สำคัญในการเรียกใช้คือ
การเปิดใช้งานและกำหนด baud rate ตัวอย่างใช้ 9600
Serial.begin(9600);
และถ้าเกิดอยากให้พิมพ์ข้อความออกทาง serial ใช้คำสั่ง Serial.print
เช่นให้พิมพ์คำว่า start
Serial.print("Start\n");
และสุดท้ายก็เป็นการรอคำสั่งจากอุปกรณ์ภายนอก ใช้ Serial.available เพื่อดูความพร้อมของport
เช่นหาก serial ยังไม่มีข้อความ Serial.available()=0
ตัวอย่างลูปรอข้อความจากserial
while(Serial.available()==0);
ส่วนเมื่อข้อความได้ถูกส่งมาแล้วก็อ่านข้อความได้โดยSerial.read
Serial.read();
คำสั่งSerial.available Serial.read จะทำงานร่วมกันได้อย่างเช่น


if(Serial.available()>0){
    state=Serial.read();       //เป็นการรอว่ามีข้อความหรือไม่หากมีก็อ่านออกมา
}


การอ่านค่า serial จาก arduno ที่ต่อกับคอมพิวเตอร์สามารถดูได้จากเมนู serial monitor ของโปรแกรม arduno

23 มีนาคม 2555(PWM arduno)

วันนี้ไม่ค่อยได้ทำอะไรเป็นชิ้นเป็นอันเลยจะเอาเรื่องบอร์ดควบคุมมอเตอร์ที่ผมจะใช้ควบคุมรถในโครงงาน
โดยต้องทำความเข้าใจกันก่อน มอเตอร์ ที่ว่านี้เป็นมอเตอร์ใช้ไฟฟ้ากระแสตรงที่เราใช้งานกันทั่วไป(มอเตอร์ขนาดเล็กใช้กับรถบังคับ)
หลักการที่ผมใช้ในการควบคุมคือ มอเตอร์จะทำงานอย่างไรขึ้นกับกระแสไฟฟ้าที่ไหลเข้ามอเตอร์ ซึ่งถูกควบคุมด้วยบอร์ดขับมอเตอร์ ในโครงงานนี้ผมใช้บอร์ดของ inex รุ่น zx-motor3a
มีdatasheet http://www.inexglobal.com/downloads/zx-motor3a_e.pdf
หลังจากอ่านdataseetแล้วเราก็ได้คุณสมบัติของบอร์ดดังนี้
ขับมอเตอร์ได้2ตัว
กระแสสูงสุดที่รับได้ 3 A
ควบคุมมอเตอร์ด้วยสายสัญญาน3สาย
supply 9-24v
ขาที่ควบคุม
A,Bเป็นทิศทาง
Gเป็น gnd หรือ pwm ได้

เมื่อรู้ขาที่ต้องใช้ควบคุมแล้วเราจะออกแบบให้ บอร์ด arduno ควบคุม 3 ขาได้แก่ทิศทาง2และpwmอีก1
โดยทิศทางทั้งสองเราจะต้องมี port digital 2 port มาควบคุมโดยเราดูทิศทางได้จากdatasheet
ผมจังกำหนดขาของ digital port คือ(ไม่ทำอย่างนี้ก็ได้แต่จะสับสนเวลาใช้งาน)
ในตัวอย่างใช้ port 22,23
int m1D1=22;      int m1D2=23;

หลังจากนั้นในส่วน void setup()ก็กำหนดโหมดของ PIN pinMode
port 22,23  โหมด output
pinMode(m1D1,OUTPUT);
pinMode(m1D2,OUTPUT);
เมื่อเรียกใช้งาน digital port ก็ใช้คำสั่ง digitalWrite
ตัวอย่างport 22ให้ logic 0

digitalWrite(m1D1,LOW);

ส่วน pwm คือการควบคุมความเร็วของมอเตอร์ด้วยความถี่ และ dutycycle
โดย arduno ใช้คำสั่ง analogwrite เป็นตัวควบคุมความเร็วในอีกขานังของ บอร์ด
ตัวอย่างการใช้งาน
ส่วนประกาศว่าเลือกใช้ digital port 8
pwm2=8;
ส่วนที่ให้ค่าoutputควบคุมความเร็วมอเตอร์โดยค่า255นี้เป็นค่าต่ำสุด
analogWrite(pwm2, 255); 

23 มีนาคม 2555

22 มีนาคม 2555 (อุปกรณ์นำทางช่วยคนตาบอด)

ขอติดวิธีการลง arm-linux-gcc ไว้วันหลังละกันนะครับกำลังรวบรวมข้อมูลอยู่ครับ
วันนี้ก็มีนักศึกษาจากมหาวิทยาลัยราชภัฏสุราษฎร์ธานี มาดูงานแต่เช้าเลย ผมมีหน้าที่อธิบายผลงานของรุ่นพี่ที่เป็นรุ่นพี่ที่จบเมคคาทรอนิกส์มอ.ด้วยแถมเป็นคนที่ผมเคยได้ติววิชาอะไรสักอย่างจำไม่ได้นั่นคือพี่กอล์ฟ
พูดกันเรื่องผลงานดีกว่า เป็นเครื่องมือช่วยเหลือนำทางคนตาบอดไม่ให้ชนสิ่งกีดขวาง



















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


(อธิบายอย่างจ๊อปส์ดูมือดิ)

ที่มาของภาพfibo fanpage : https://www.facebook.com/#!/fibokmutt

21 มีนาคม 2555 (cross compile)

วันที่ 21 ผมก็ยุ่งอยู่กับการทดลอง friendlyarm โดยผมเริ่มศึกษาการcross compileซึ่งการ cross compileคือการที่เราcompile ที่เครื่องสถาปัตยกรรมหนึ่ง แล้วไปรันโปรแกรมที่มีการ compile แล้วบนสถาปัตยกรรมอื่น โดยส่วนที่แตกต่างกันจะเป็นระดับhardwareโดยแต่ละสถาปัตยกรรมคอมพิวเตอร์จะแตกต่างกันโดยผมมีหนังสือแนะนำคือ computer architecture and organization william stallings ที่ผมเคยอ่านและเรียน computer architecture จนได้ดิบได้"ดี"มาหนังสือนี้จะอธิบายขยายในส่วนสถาปัตย์กรรมและจะได้เข้าใจว่าทำไมcode ภาษา c ที่compile platform หนึ่งถึงใช้กับอีก platform ไม่ได้แต่ผมจะอธิบายสั้นๆว่าที่ต้องทำเพราะในสถาปัตยกรรมx64ที่เป็นCISCของPCที่ผมใช้ compile มีภาษาassembleที่ใช้ในการสื่อสารกับCPUต่างจากarmที่เป็นRISCแม้ว่าจะเป็น linux platformเหมือนกันแต่ระดับที่สื่อสารระหว่างcodeกับhardwareมีความแตกต่างกัน

21 มีนาคม 2555

20 มีนาคม 2555 (การลง linux บน friendlyarm)

วันนี้จะเขียนเรื่องการลง linux บน friendly arm
โดยคอมพิวเตอร์ที่นำมาใช้ต้องมี 1 usb port 1serial port
แล้วยังต้องเตรียมซอฟแวร์อีกสองสามตัวได้แก่
-dnw
-hyperterminal
-driver for win x86 จนถึงตอนนี้ผมก็แก้ปัญหา driverของ64bitไม่ได้
hyperterminal วิธิการลงและโหลดได้ที่http://www.amphur.in.th/hyperterminal-in-windows7-and-vista/
ส่วนdnw และไฟล์ที่ใช้ในการลง linux รวมทั้งไฟล์ image เองก็โหลดได้ที่http://www.friendlyarm.net/downloads
เมื่อเตรียมอุปกรณ์เรียบร้อยแล้วก็เริ่มลงมือเลย
-เริ่มแรกก็เปิดสวิตซ์ on แล้วปรับสวิตซ์อีกตัวไปที่ nor แล้วกด reset
-หลังจากนั้นเปิด hyperterminalขึ้นมาโดยเซตค่าดังนี่
    bond rates 115200
    Flowcontrol none
   ที่เหลือเป็นค่า defaults
-หลังจากนั้นจะขึ้นเมนูมาให้เลือก x แล้วกด enter [x] format NAND FLASH for Linux เพื่อเป็นการเตรียมพื้นที่สำหรับลงsoftwareต่างๆ
-หลังจากformatเสร็จแล้วก็ลง   supervivi  เลือก v แล้วกด enter   [v] Download ViVi 
หลังจากนั้นมันจะรอข้อมูลจาก usb เราก็เปิด dnw เพื่อส่งข้อมูล
    ดูข้อมูลด้านบนว่า usb okหรือไม่
    แล้วเลือก usb port เลือก transmit แล้วเลือกไฟล์ supervivi
      supervivi-64M สำหรับ nand64M และ supervivi-128M  สำหรับ nand ที่มากกว่า64M

-หลังจากนั้นก็ลง  kernel   เลือก k แล้วกด enter   [k] Download linux kernel
หลังจากนั้นมันจะรอข้อมูลจาก usb เราก็เปิด dnw เพื่อส่งข้อมูล
    แล้วเลือก usb port เลือก transmit แล้วเลือกไฟล์ kenel  zImage_XXXขึ้นกับหน้าจอ
      เช่น zImage_T35สำหรับ 3.5"

-หลังจากลง kernel แล้วลงไฟล์ image โดยสั่ง y  [y] Download root_yaffs image 

หลังจากนั้นมันจะรอข้อมูลจาก usb เราก็เปิด dnw เพื่อส่งข้อมูล
    แล้วเลือก usb port เลือก transmit แล้วเลือกไฟล์ image
      เช่น root_qtopia-128M
-สับสวัตซ์ ไปที่ nand แล้วกดบปุ่มreset

ที่มา http://www.thaieasyelec.com/Free-Service-from-ThaiEasyElec/ARM9-mini2440--micro2440-FriendlyARM-Tutorial.html
http://www.friendlyarm.net/downloads
http://www.electoday.com/bbs/archiver/?tid-2307.html

19 มีนาคม 2555

19 มีนาคม 2555

ก็ได้ศึกษาfriendlyarm ต่อโดยมีการลง linux เป็๋น os(เดี๋ยวถ้าว่างจะมาสรุปให้นะครับ)
โดยแหล่งข้อมูลได้จาก
 http://www.thaieasyelec.com/Free-Service-from-ThaiEasyElec/ARM9-mini2440--micro2440-FriendlyARM-Tutorial.html

17 มีนาคม 2555

16 มีนาคม 2555

ช่วงเช้าก็ยุ่งกับ friedlyarm เจ้าเก่าและรู้สึกว่ามันไม่ friendly ตามชื่่อเลยส่วนตอนบ่ายก็มีนักศึกษามาดูงานเลยไม่ได้ทำอะไรมากก็มีแต่ช่วงเย็นที่ช่วยจัดพื้นที่แข่งขันหุ่นhumanoidเตะบอลในวันเสาร์ 


15 มีนาคม 2555

ช่วงนี้ก็พยายามทำความเข้าใจบอร์ด friendlyarm แต่ค่อนค่างยากเพราะที่ผมถนัดมันเป็นไมโครคอนโทรลเลอร์ พวก arm7 atmega มากกว่า ส่วน friendlyarm น่าจะถือว่าเป็นคอมเครื่องเล็กเพราะสามารถลงระบบปฏิบัติการที่ใช้ทรัพยากรสูงๆได้(ผมก็ไม่มั่นใจนักว่าเรียกว่าอะไรเพราะไม่ค่ายคุ้น) สามารถลง linux ได้ ส่วนงานก็จะเป็นช่วงค่ำที่ปรับปรุงโต๊ะ multitouch อีกจนเสร็จ(เอาแค่ระดับพอใจเพราะพรุ่งนี้มีนักศึกษาดูงาน)

14 มีนาคม 2555

14 มีนาคม 2555

ตอนเช้าผมก็เริ่มศึกษาบอร์ด arduno ต่อ บวกกับดู friendlyarm ด้วยเพราะน่าสนดี ส่วนที่ผมดู arduno เพื่้อที่จะทำโปรเจคซึ่งนำ arduno มาควบคุมพาหนะสักอย่างหนึ่งต้องทำพวกควบคุมมอเตอร์ซึ่งผมทำไม่เสร็จในตอนเรียนวิชา Integrate circuit โดยจะทำแบบพวก PWM (ซึ่งรายละเอียดเดี๋ยวจะเขียนแยกอีกบทความ)
ในส่วนช่วงบ่ายพี่ไซก็มาแนะนำเกี่ยวกับ bluetooth ซึ่งผมไม่เคยทดลอง(ทั้งที่อยู่ห้องWSN) และก็ได้รู้ว่ามันใช้งานไม่ได้ยากมากนัก หลังจากนั้นพี่สองก็มาที่FIBOพอดีพร้อมด้วยรถบังคับขนาดใหญ่ ทำให้ผมรู้ละว่ายานพาหนะที่จะได้ใช้ arduno ควบคุมคืออะไรและพี่สองยังนำ friendlyarm มาด้วยซึ่งหลังจากนั้น อ.สยามก็ให้ผมนำไปศึกษา

13 มีนาคม 2555

เริ่มจากตอนเช้าพวกผมสามคนปรับโต๊ะ touch screen ต่อโดยโต๊ะนี้อาศัยหลักการสะท้อนของภาพจากภายในโต๊ะจึงทำให้ยากมากในการปรับองศาให้เหมาะสม และยังมีตัวตรวจจับการเคลื่อนไหวภายในที่อาศัยกล้องจับภาพซึ่งต้องวางตำแหน่งให้เหมาะสม(ถ้าผมว่างจะเอารูปมาลงให้ดู) ส่วนในช่วงบ่ายผมก็ได้ บอร์ด arduno จากพี่สองมาศึกษา เป็นบอร์ด ATGEGA1280 คล้ายๆกับบอร์ดในแล็ปละครับ แต่I/Oมีเยอะกว่าหน่อย

12 มีนาคม 2555

12 มีนาคม 2555

วันนี้เป็นวันแรกที่ผมจะได้ทำงานกับFIBO เมื่อไปถึงก็ได้รับงานจากอาจารย์ สยาม(รศ. ดร. สยาม เจริญเสียง)เป็นการตรวจสอบอุปกรณ์คอมพิวเตอร์ในห้องพักนักศึกษา หลังจากนั้นก็รายงานตัวกับอาจารย์
หลังจากที่ได้รายงานตัวกับอ. สยาม แล้วผมก็ได้คุยเรื่องProjectที่จะทำ โดยผมได้ทำในส่วนของControllerควบคุมมอเตอร์ในแขนกลในProjectของพี่สอง(เป็นพี่เรียนป.เอกที่นั่น) ส่วนคนอื่น กอล์ฟได้ทำเกี่ยวกับ vision กฤช ทำเกี่ยวกับandroid
หลังจากนั้นผมก็ไปบ้านหม้อกับอ.สยาม อ.ต้นและพี่สอง ไปดูอุปกรณ์เพื่อที่จะทำProject บ้านหม้อสมชื่อจริงๆมีของน่าสนใจหลายอย่างน่าจะเอามาเล่นได้
ในช่วงค่ำพวกผมสามคนก็ได้ช่วยพี่เล้งทำโต๊ะ touch screen โดยใช้หลักการโพรเจคเตอร์กับอิฟาเรดและกล้องใช้ในการจับการเคลื่อนไหว

#1

Blogนี้ผมต้องการเขียนขึ้นมาเพื่อบันทึกเรื่องราวในการฝึกงานของผมที่สถาบันวิทยาการหุ่นยนต์ภาคสนาม
(FIBO)ในการศึกษาภาคฤดูร้อน/2554 ว่าผมได้ทำอะไรไปบ้าง อาจมีทั้งน่าสนใจและไม่น่าสนใจแต่ผมจะพยายามนำสิ่งที่น่าสนใจมาเสนอ