top of page

ฝึกงาน FIBO

16/05/2018

32929757_911989615652120_114553885955194
124.png
123.png

       

       กลุ่ม Treadmill ได้เริ่มการออกแบบโครงสร้างด้วยโปรแกรมออกแบบ 3มิติ (solidworks)นำเสนอความคืบหน้า และในส่วนของ sensors และตัวโครงสร้าง treadmill อาจารย์สยามได้ให้คำแนะนำ เกี่ยวกับการใช้งานและการเลือกใช้อุปกรณ์

                                                                                          

 

 

    กลุ่ม Robot Arm ได้เลือกแบบ Gripper และออกแบบฐาน Support เพื่อรองรับการหยิบจับชิ้นงานที่ง่ายของ Gripper และได้ทำการตรวจสอบในส่วนของ Controller เราได้พบว่า บอร์ด Arduino ได้เสียหาย และได้นำเสนอความคืบหน้า ให้อาจารย์สยามฟัง และได้รับคำแนะนำในการเลือกใช้อุปกรณ์ต่างๆ ครับ

 

ฝึกงาน FIBO

17/05/2018

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

       

 

    กลุ่ม Robot Arm  ได้ทำการตรวจสอบCode ของคนก่อน ที่เคยทำไว้ แต่ Compile ไม่ผ่าน เกิด Error และได้หาวิธีแก้ไขจนสามารถ Compile ผ่าน ช่วงบ่ายเขียนรายการของที่ต้องซื้อ และสรุปยอดส่งพี่ปู และไปช่วยคิดหาขนาดของเหล็กที่จะรองรับน้ำหนักของ Player

         

ฝึกงาน FIBO

18/05/2018

        กลุ่ม Treadmill ได้ศึกษาข้อมูลการทำงานของบลูทูธที่ใช้ทำงานร่วมกับบอร์ด Arduino UNO และได้ทำการทดสอบ ปิด/เปิด LED ผ่านบลูทูธ

 

Code ที่ใช้ทำการทดสอบ 

int ledPin = 13;

String readString;

void setup() {

Serial.begin(9600);

pinMode(ledPin, OUTPUT);

}

void loop() {

while (Serial.available())

{ delay(3);

char c = Serial.read();

readString += c;

}

if (readString.length() >0) { Serial.println(readString);

if (readString == "on") { digitalWrite(ledPin, HIGH);

}

if (readString == "off") { digitalWrite(ledPin, LOW); } readString="";

}

}

 

    กลุ่ม Robot Arm ช่วงเช้าศึกษา Encoder และ force sensor แต่ก็ยังไม่เข้าใจการทำงานของสอง In put นี้ ช่วงบ่ายได้ทำการ Up load Code ลง Controller แต่ก็ยังไม่สามารถทำงานได้

 

 

นาย

32974159_1106173459524535_40057205630823
ard.png
20180515_140446.jpg

 

 

ฝึกงาน FIBO

21/05/2018

38068068_1797041773720865_10995326344610
38072026_1797041767054199_74696632140289
38016528_1797041780387531_12116534386229
38119946_1797041797054196_57278578715892

 

    แต่ก็ยังไม่สามารถควบคุม Servo ด้วย FSR ได้จึงได้หาสาเหตุว่าทำมัย servo ถึงไม่หมุนตามค่าของ FSR แต่ก็ยังหาไม่พบ ถึงจะหาโค้ดใหม่มาลองแต่ก็ยังควบคุมไม่ได้ หลังจากกลับมาที่หอพัก ผมก็ได้พบอีกสาเหตุว่า Servo เสียแต่ก็ยังไม่แน่ใจจนกว่าจะได้ Servo อีกตัวมาลองครับ

นายกฤษดา   ชัยเนตร

 

กลุ่มผม Treadmill

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

นายวุฒิพงษ์  บุระดา

38126017_970734603110954_130627836708703
38011866_970734576444290_665966935737683
37971852_970734589777622_317742896892818

 

 

ฝึกงาน FIBO

22/05/2018

33298733_1107420082733206_56048432092985

 

กลุ่ม Robot Arm

    วันนี้ ได้ค้นหาข้อมูลต่างๆ เกี่ยวกับ Diver stepper motor  และการทำงานของ Encoder  และได้ทำการทดสอบโค้ด ลงบอร์ด Arduino mage 2560 ทดสอบการเคลื่อนไหวของแขนกลโดยการใช้ปุ่ม ขึ้น ลง ขวา ซ้าย ของโน๊ตบุคควบคุมแขนกล
http://panmaneecnc.blogspot.co.id/2018/02/stepping-motor.html
http://jume-maker.blogspot.com/2017/12/nema-17-stepper-motor-control-using.html 
https://howtomechatronics.com/tutorials/arduino/rotary-encoder-works-use-arduino/
33137396_1107413799400501_72308963484326
33091389_1107413749400506_42023404636314
FRJ7W76HZDYE1YD.MEDIUM.jpg

 

ตัวอย่าง code step motor 
#include <Stepper.h>

const int stepsPerRevolution = 200;  // change this to fit the number of steps per revolution
// for your motor

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

int stepCount = 0;         // number of steps the motor has taken
int dirStep = 1;
void setup() {
  // initialize the serial port:
  Serial.begin(9600);
}

void loop() {
  // step one step:
  myStepper.step(dirStep);
  Serial.print("steps:");
  Serial.println(stepCount);
  stepCount++;

  if( stepCount > 500){
      stepCount = 0;
      if( dirStep == 1) dirStep = -1;
      else dirStep = 1;
  }

 
  delayMicroseconds(50);
}
นาย บัญชา   ทองแดง

 

 

ฝึกงาน FIBO

22/05/2018

32984732_1107432232731991_89483312733408

 

กลุ่ม Treadmill  

    หาข้อมูลเกี่ยวกับการใช้งาน Module  bluetooth และทำการทดสอบ Upload code ศึกษาหลักการทำงาน bluetooth

33189362_1424858114285108_19143293726516
33163126_1107431456065402_22848690389348
32984732_1107432232731991_89483312733408

 

ตัวอย่าง code 
#include
<SoftwareSerial.h>
SoftwareSerial
BTSerial(10, 11); // RX | TX
void setup() {
pinMode(9, OUTPUT); // this pin will pull the HC-05 pin 34 (key pin) HIGH to switch module to AT mode
digitalWrite(9, HIGH);
Serial.begin(9600);
Serial.println("Enter AT commands:");
BTSerial.begin(9600); // HC-05 default speed in AT command more } void loop() { // Keep reading from
HC-05 and send to Arduino
Serial Monitor
if (BTSerial.available())
Serial.write(BTSerial.read()); // Keep reading from Arduino Serial Monitor and send to
HC-05 if (Serial.available())
BTSerial.write
(Serial.read()); }
นายนพรัตน์ ขันธวิชัย

 

 

ฝึกงาน FIBO

23/05/2018

ไม่มีชื่อ.png

 

กลุ่ม Robot Arm 
    ต่อจากวันที่แล้วครับผมหลังจากได้ทำการศึกษาการทำงานของ Stepper Motor  ผมก็ได้เขียนโปรแกรมควบคุมหุ่นยนต์ โดยให้หมุนตามคำสั่งที่รับมาจาก Serial monitor 
หลังจากนั้นเป็นการทดสอบการใช้งานแขนกล โดยพบว่า
มอเตอร์ 1 ต่อกับ pin 9 8 7 6 (เลื่อนซ้ายขวา)
มอเตอร์ 3 ต่อกับ pin 30 32 34 36 (เลื่อนขึ้นลง)
 
Code ที่ใช้ในการทำงานของมอเตอร์

#include <Stepper.h>

//definitions for each command to be recieved via serial port
#define COMMAND_LEFT '4'//ซ้าย
#define COMMAND_RIGHT '6'//ขวา
#define COMMAND_FORWARD '8'//ขึ้น
#define COMMAND_BACK '2'//ลง
#define COMMAND_STOP '5'//หยุด
int stepsInRev = 200;
int num_of_steps = 1;
Stepper myStepper1(stepsInRev, 6, 7, 8, 9);
Stepper myStepper2(stepsInRev, 30, 32, 34, 36);
char lastCall = ' ';
void forwardStep(int steps){
  Serial.println("forward");
  // step one step each forward
  myStepper2.step(-800);
  delay(10);
}
void backwardStep(int steps){
  Serial.println("backward");
  myStepper2.step(800);
  delay(10);
}
 
void leftStep(int steps){
  Serial.println("left");
 // step one step each left
  myStepper1.step(-500);
  delay(10);
}


void rightStep(int steps){
  Serial.println("right");
  // step one step each right
  myStepper1.step(500);
  delay(10); 
}
void allStop(){
  Serial.println("stop");
  // steppers stop
  PORTD = B00000000; //sets all of the pins 0 to 7 as LOW to power off stepper1
  PORTB = B00000000; //sets all of the pins 8 to 13 as LOW to power off stepper2
}
void setup() {
  Serial.begin(9600);//start the bluetooth serial port - send and recieve at 9600 baud
  myStepper1.setSpeed(60);
  myStepper2.setSpeed(60);
}

void loop() {
if(Serial.available()) {
char data = (char)Serial.read();
switch(data) {
  case COMMAND_FORWARD:
    forwardStep(num_of_steps);
    break; 
  case COMMAND_BACK:
    backwardStep(num_of_steps);
    break;
  case COMMAND_LEFT:
    leftStep(num_of_steps);
    break;
  case COMMAND_RIGHT:
    rightStep(num_of_steps);
    break;
  case COMMAND_STOP:
    allStop();
    break;
}
lastCall = data;
}
else{
char data = lastCall;
switch(data) {
  case COMMAND_FORWARD:
    forwardStep(num_of_steps);
    break; 
  case COMMAND_BACK:
    backwardStep(num_of_steps);
    break;
  case COMMAND_LEFT:
    leftStep(num_of_steps);
    break;
  case COMMAND_RIGHT:
    rightStep(num_of_steps);
    break;
  case COMMAND_STOP:
    allStop();
    break;
}
lastCall = data;
}
}

ทั้งนี้ Code ยังมีข้อจำกัดคือยังต้องใช้คำสั่งจาก Serial monitor เพื่อทำงานครับ

    ช่วงบ่าย ก็ใด้รับฟังการอธิบายเกี่ยวกับงานที่ตัวกระผมรับผิดชอบและพูดเกี่ยวกับความเป็นมาของ สถาบันวิทยาการหุ่นยนต์ภาคสนาม FIBO และอธิบายเกี่ยวกับหุ่นยนต์ประเภทต่างๆครับ  และศึกษา  Roller Switch  ที่อยู่บนตัวหุ่นที่ใช้เป็นตัวกันไม่ให้หุ่นเกิดหมุนแข็นมากเกินไปจนเครื่องพัง แต่ก็ยังเชื่อมต่อกับ Stepper motor ไม่ได้ครับ

wiring-limit-sw.jpg
Example1_bb.png
Stepper_Limit_Schematic.png

 

นายเจษฎา ทองภาพ

 

กลุ่ม Treadmill

    วันนี้ได้ ศึกษาการรับส่งข้อมูลผ่าน  module bluetooth ที่ต่อกับ Arduino และการ set mode การทำงานของ module bluetooth ว่าจะให้เป็น mode  Master หรือ mode  Slave  โดยการ set AT command   

ความแตกต่างของ 2 โหมดนี้ อธิบายได้ตามรูปด้านล่างนี้ครับ

 

Master สามารถ ส่งคำสั่งสั่งงานทางขา TX ออกไป และรับ ผลตอบรับทางขา RX ครับ 
Slave สามารถ รอรับคำสั่งมาจากขา TX เข้ามาและตอบกลับทางขา RX

   ส่วน คำสั่ง ใน AT command มีดังนี้

   AT                           =   Check if the command terminal work normally 

   AT+DEFAULT       =   Restore factory default  

   AT+BAUD              =  Get/Set baud rate                   
   AT+RESET             =  Software reboot                   
   AT+ROLE               =  Get/Set current role.                       
   AT+DISC                =  Disconnect connection                       
   AT+ADVEN           =  Broadcast switch                     
   AT+ADVI               =  Broadcast interval                   
   AT+NINTERVAL  =  Connection interval                         
   AT+POWE              = Get/Set RF transmit power            
   AT+NAME             =  Get/Set local device name                   
   AT+LADDR            =  Get local bluetooth address           
   AT+VERSION       =  Get firmware, bluetooth, HCI and LMP version 

   AT+TYPE               =  Binding and pairing settings           
   AT+PIN                  =  Get/Set pin code for pairing                
   AT+UUID               =  Get/Set system SERVER_UUID .                   
   AT+CHAR              =  Get/Set system CHAR_UUID .                   
   AT+INQ                  =  Search from device                   
   AT+RSLV                =  Read the scan list MAC address           
   AT+CONN              =  Connected scan list device           
   AT+CONA              =  Connection specified MAC                   
   AT+BAND              =  Binding from device                   
   AT+CLRBAND       =  Cancel binding                       
   AT+GETDCN         =  Number of scanned list devices           
   AT+SLEEP              =  Sleep mode                            
   AT+HELP                =  List all the commands               
 ส่วนในการ set master หรือ slave คือ พิมพ์ AT+ROLE1 = master  AT+ROLE0 = slave

code ที่ใช้

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  Serial.println("AT command!");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(9600);
//  mySerial.println("AT command ?");
}

void loop() { // run over and over
  
  if (mySerial.available()) {
    Serial.write(mySerial.read());
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());
  }
  
}

แหล่งที่มา http://www.instructables.com/id/How-to-Configure-HC-05-Bluetooth-Module-As-Master-/

  หลังจากที่ได้ศึกษาเกี่ยวกับ set module bluetooth แล้ว จากนั้นได้ฟังบรรยายเกี่ยวกับหุ่นยนต์ จากอาจารย์ สยาม โดยเนื้อหาที่ได้มาคือ องค์ประกอบสำคัญของหุ่นยนต์

จะแบ่งออกเป็น 3 ส่วนดังนี้

   1 คอมพิวเตอร์ AI คือ ส่วนการประมวลผล

   2 การรับรู้และระบบไฟฟ้า การรู้มาจากsensor ส่วน ระบบไฟฟ้าก่อนส่วนประสานระหว่าง คอมพิวเตอร์ กับ sencer และ กลไกลการทำงานของหุ่น

 

 

   3 กลไกลการทำงานและโครงสร้าง

จากนั้นก็ได้หาข้อมูลเกี่ยวกับ wii balance board ว่าจะสามารถนำมาประยุกต์ในการทำ VR Treadmill อย่างไร

http://www.instructables.com/id/How-to-Configure-HC-05-Bluetooth-Module-As-Master-/

https://www.arduinoall.com/webboard/viewtopic/52

http://wiki.seeedstudio.com/Bluetooth_Bee_v2.0/

https://en.wikipedia.org/wiki/Wii_Balance_Board

https://www.youtube.com/watch?v=KrPurYPBvkc

นายวุฒิพงษ์ บุระดา

 

 

ฝึกงาน FIBO

24/05/2018

Nema17_Rotary_Encoder_Schematic-1024x708

 

กลุ่ม Robot  Arm
    วันนี้ได้หาข้อมูลการใช้ Encoder  ควบคุมการทำของ Stepper  motor
และได้ทำการทดลองกับแขนกล แต่ก็ยังไม่สำเร็จจึงได้ทำการแก้ไข code หลายครั้ง 
http://www.eevblog.com/forum/microcontrollers/arduino-encoder-to-stepper-motor/
 
ตัวอย่างโค้ด
//Arduino code for controlling stepper motor from encoder
//video at http://www.youtube.com/watch?v=2dh6TIkN6jE
//reconstructed code from 5+ years ago
//untested in current form

#define encoder_a 2    //encoder a = arduino pin 2 
#define encoder_b 3    //encoder b = arduino pin 3 
#define motor_step 4    //motor step = arduino pin 4 
#define motor_direction 5    //motor direction = arduino pin 5

volatile long motor_position, encoder; 

void setup () 

    //set up the various outputs 
    pinMode(motor_step, OUTPUT); 
    pinMode(motor_direction, OUTPUT); 
    // then the encoder inputs 
    pinMode(encoder_a, INPUT); 
    pinMode(encoder_b, INPUT); 
    digitalWrite(encoder_a, HIGH); 
    digitalWrite(encoder_b, HIGH);
    // encoder pin on interrupt 0 (pin 2) 
    attachInterrupt(0, encoderPinChangeA, CHANGE); 
    // encoder pin on interrupt 1 (pin 3) 
    attachInterrupt(1, encoderPinChangeB, CHANGE); 
    encoder = 0; 
}

void encoderPinChangeA() 
{
    if (digitalRead(encoder_a) == digitalRead(encoder_b)) 
    {
        encoder--;
    } 
    else
    {
        encoder++;
    } 


void encoderPinChangeB() 
{
    if (digitalRead(encoder_a) != digitalRead(encoder_b)) 
    { 
        encoder--; 
    } 
    else 
    { 
        encoder++; 
    } 
}


void loop() 

//do stuff dependent on encoder position here 
//such as move a stepper motor to match encoder position 
//if you want to make it 1:1 ensure the encoder res matches the motor res by dividing/multiplying 
    if (encoder > 0) 
    { 
        digitalWrite(motor_direction, HIGH); 
        digitalWrite(motor_step, HIGH); 
        digitalWrite(motor_step, LOW); 
        _delay_us(200); 
        motor_position++; 
        encoder = 0; 
    }
    else if (encoder < 0) 
    {
        digitalWrite(motor_direction, LOW); 
        digitalWrite(motor_step, HIGH); 
        digitalWrite(motor_step, LOW); 
        _delay_us(200); 
        motor_position--; 
        encoder = 0; 
    }
}
และตอนบ่าย พี่เชาว์กับพี่ปู ได้พาขึ้นไปหาอุปกรณ์ ที่ชั้น 8 
33326062_1738907946155973_59951470695373
33463149_1108462535962294_38276249681500

 

   หลังจากลงมาจากชั้น 8 ก็ได้ทำการทดลอง force sensor กับ servo motor เพื่อตรวจจับการหยิบของ Gripper เพื่อหยุดมอเตอร์เมื่อ Gripper จับชิ้นงานได้ โดยจะติดตั้ง FSR ไว้ที่ปลายใช้หยิบจับ เมื่อ Gripper จับชิ้นงานแล้ว FSR ก็จะอ่านค่าความแรงของการบีบของ Gripper เพื่อไม่ให้ชิ้นงานไม่เสียหาย
ตัวอย่าง

#include <Servo.h>

Servo servo;

int reading;

void setup(void) {

Serial.begin(9600);

servo.attach(9); //servo at digital pin 9

servo.write(0); //initial point for servo

}

void loop(void) {

reading = analogRead(A0); //attached to analog 0

Serial.print("Sensor value = ");

Serial.println(reading);

int value = map(reading, 0, 1023, 0, 255);

servo.write(value);

delay(100);

}

นายบัญชา ทองแดง

 

กลุ่ม Treadmill
    วันนี้ช่วงเช้าผมได้ช่วยกลุ่ม Robot ทำการทดลองควบคุม Servo 180 ํ ด้วย Force sensor จนสำเร็จ และได้ศึกษาเกี่ยว Servo 360 ํ แต่ผมก็ยังไม่สามารถใช้ Force sensor ควบคุม Servo ได้ code ที่ใช้ Run ก้อยู่ด้านบนนะครับ
ตัวอย่างการต่อวงจร
Capture.PNG

 

    ช่วงบ่ายพี่เชาว์ได้พาไปหาอุกรณ์ที่จะมาทำโปรเจคที่ชั้น 8 หลังจากหาอุกปกรณ์เสร็จ กลับมาผมได้เริ่มศึกษาเกี่ยวกับโปรแกรม Unity จาก Youtube (www.youtube.com/watch?v=mXe5MY31BQ0) และ (www.youtube.com/watch?v=c_Q1aylZTus)  เพราะเมื่อวานพี่เชาว์ได้แนะนำเกี่ยวกับการใช้แท็กเกอร์คู่กับ Treadmill โดยใช้กับโปรแกรม Unity ที่เป็นโปรแกรมสร้างเกมส์ และผมได้เริ่มจากการสร้างเกมส์ง่ายๆก่อนเริ่มจากเกมส์ลูกบอลที่กลิ้งไปเก็บของได้ แต่ผมสร้างได้แค่พื้นกับลูกบอลแล้วทำให้กลิ้งไปกลิ้งมาบนพื้นได้ แต่ยังทำให้บอลเก็บของไม่ได้เพราะทำไม่เสร็จครับ

ตัวอย่างเกมส์ที่สร้างด้วย Unity

33401208_1700061830085527_33818567034095

 

นายกฤษดา  ชัยเนตร

 

 

ฝึกงาน FIBO

25/05/2018

 

กลุ่ม Robot Arm

    สำหรับวันนี้ครับ ผมได้ศึกษาเกี่ยวกับการใช้ Encoder ควบคุมตำแหน่ที่ต้องการให้  Stepper motor หมุนแล้วไปหยุดที่ตำแหน่ต้องการ (https://www.brainy-bits.com/stepper-motor-rotary-encoder-p1) ต่อจากนั้นผมก็ได้ทำการ เขียนโปรแกรม และ Upload ลงคอนโทรลเลอร์ และได้ฟังอาจารย์สยามแนะนำกลุ่ม Treadmill และ การใช้ EZCAST และติดตั้งโปรแกรมสำหรับใช้งาน EZCAST และตอนเย็นได้เดินทางไปกับพี่เชาว์และอาจารย์สยามเพื่อซื้ออุปกรณ์ของกลุ่ม Treadmill ที่โฮมโปร พระราม 2

20180525_152421.jpg

 

ตัวอย่าง Code ที่ใช้ทดสอบ Encoder

#include "Stepper.h"
#define STEPS  32   // Number of steps for one revolution of Internal shaft
                    // 2048 steps for one revolution of External shaft

volatile boolean TurnDetected;  // need volatile for Interrupts
volatile boolean rotationdirection;  // CW or CCW rotation

const int PinCLK=2;   // Generating interrupts using CLK signal
const int PinDT=3;    // Reading DT signal
const int PinSW=4;    // Reading Push Button switch

int RotaryPosition=0;    // To store Stepper Motor Position

int PrevPosition;     // Previous Rotary position Value to check accuracy
int StepsToTake;      // How much to move Stepper

// Setup of proper sequencing for Motor Driver Pins
// In1, In2, In3, In4 in the sequence 1-3-2-4
Stepper small_stepper(STEPS, 8, 11, 9, 11);

// Interrupt routine runs if CLK goes from HIGH to LOW
void isr ()  {
  delay(4);  // delay for Debouncing
  if (digitalRead(PinCLK))
    rotationdirection= digitalRead(PinDT);
  else
    rotationdirection= !digitalRead(PinDT);
  TurnDetected = true;
}

void setup ()  {
  
pinMode(PinCLK,INPUT);
pinMode(PinDT,INPUT);  
pinMode(PinSW,INPUT);
digitalWrite(PinSW, HIGH); // Pull-Up resistor for switch
attachInterrupt (0,isr,FALLING); // interrupt 0 always connected to pin 2 on Arduino UNO
}

void loop ()  {
  small_stepper.setSpeed(600); //Max seems to be 700
  if (!(digitalRead(PinSW))) {   // check if button is pressed
    if (RotaryPosition == 0) {  // check if button was already pressed
    } else {
        small_stepper.step(-(RotaryPosition*50));
        RotaryPosition=0; // Reset position to ZERO
      }
    }

  // Runs if rotation was detected
  if (TurnDetected)  {
    PrevPosition = RotaryPosition; // Save previous position in variable
    if (rotationdirection) {
      RotaryPosition=RotaryPosition-1;} // decrase Position by 1
    else {
      RotaryPosition=RotaryPosition+1;} // increase Position by 1

    TurnDetected = false;  // do NOT repeat IF loop until new rotation detected

    // Which direction to move Stepper motor
    if ((PrevPosition + 1) == RotaryPosition) { // Move motor CW
      StepsToTake=50; 
      small_stepper.step(StepsToTake);
    }

    if ((RotaryPosition + 1) == PrevPosition) { // Move motor CCW
      StepsToTake=-50;
      small_stepper.step(StepsToTake);
    }
  }
}

Screenshot_20180524-184855.png
20180525_152647.jpg
20180525_161542.jpg

 

กลุ่ม Treadmill
    สำหรับวันนี้กลุ่มผมได้ศึกษาเกี่ยวกับการ Mouse and Keyboard libraries และได้ฟังอาจารย์สยาม แนะนำการใช้ EZCAST ติดตั้งโปรแกรมสำหรับใช้งาน EZCAST และตอนเย็นได้เดินทางไปกับพี่เชาว์และอาจารย์สยามเพื่อซื้ออุปกรณ์ของกลุ่ม Treadmill ที่โฮมโปร พระราม 2

 

Mouse and Keyboard libraries    code ที่ลองเขียนวันนี้
#include <Keyboard.h> void setup() {
// make pin 2 an input and turn on the // pullup resistor so it goes high unless // connected to ground: pinMode(2,
INPUT_PULLUP); pinMode(2,
INPUT_PULLUP); pinMode(3,
INPUT_PULLUP); pinMode(4,
INPUT_PULLUP); pinMode(5, INPUT_PULLUP);
// initialize control over the keyboard:
Keyboard.begin();
}
void loop()
{ if(digitalRead(2) == LOW)
{
Keyboard.press('w'); delay(20);
}
else
{
Keyboard.releaseAll(); // wait for new window to open: delay(10);
}
}
33401232_1427739477330305_60801279324061
33579914_1427739350663651_63594035938034

 

นาย นพรัตน์ ขันธวิชัย

 

 

ฝึกงาน FIBO

28/05/2018

    วันนี้ได้รับมอบหมายให้ทั้งหมด 5 คนช่วยกันคิดวิธี จะรู้ได้อย่างไรว่ามีการเดินหรือการวิ่งของผู้เล่น จะใช้ sensor ชนิดใด และจะวางตำแหน่งใด วางรูปแบบใด จะสร้างเงื่อนไขการเดินอย่างไร  

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

              จากที่ได้คิดหาวิธีการอยู่นานจึงได้ ข้อสรุปดังนี้ 

        1. sensor ที่จะใช้ คือ proximity infrared 

        2. ตำแหน่งที่ติดตั้ง จะอยู่ต้องกลางแผ่นเพลท ติ้ดแบบ เมทริกซ์ 3x3

        3. เงื่อนไขที่จะทราบว่ามี การเดิน การวิ่ง หรือการยืนอยู่กับที่

             3.1 การเดิน จะรู้ว่าเดินก็ต่อเมื่อ sensor มีการอ่านค่าได้ จากนอกเข้าใน 

       ตัวอย่างเช่น จาก 1 ไป 2 ไป 3 ตามลำดับ

112.png

รูปแบบการวางตำแหน่งของ sensor 

    นอกจากนี้ ในบางกรณี sensor อาจจะอ่านค่าไม่ได้ จึงได้สร้างเงื่อนไขเพิ่มเติม ดังนี้

ถ้าsensorอ่านค่าได้ จาก 1 ไป 2 หรือ 2 ไป 3 หรือ 1 ไป 3 โดยต้องมีเวลามาเทียบว่าสมเหตุสมผล

ให้เป็นการเดินหรือไม 

           3.2  การวิ่ง จะใช้วิธีเดียวกันกับการเดินแต่จะจับเวลา จากจุดหนึ่งไปยังจุดหนึ่ง หรือ จากจุดเริ่มต้นไปยังจุดสุดท้าย เพื่อตรวจสอบว่าใช้เวลาน้อยกว่าการเดินหรือไม

          3.3 การยืนอยู่กับที่ เมื่อsensorอ่านค่าได้ แต่ ค่าไม่เป็นตามเงื่อนไขการเดิน ตัวอย่างเช่น sensor อ่านค่าได้ตรงตำแหน่งที่ 1 แต่ไม่มีการเคลื่อนที่ จาก 1 ไป 2 ไป 3 หรือ 1 ไป 2 หรือ 1 ไป 3 ในเวลาที่กำหนด เป็นต้น

นายวุฒิพงษ์ บุระดา

 

 

ฝึกงาน FIBO

30/05/2018

 

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

 

กลุ่ม Robot arm 
    ได้ทำการศึกษา การใช้งาน Gripper  ของ Makeblock Gripper ตัวนี้ถูกออกแบบมาให้ใช้ร่วมกับ Dual DC Motor Driver ที่ต่อกับ Me Baseboard(Arduino Uno) ที่ออกแบบมาโดยเฉพาะผ่านทางสาย RJ45 ดังนั้น เพื่อที่จะนำ Gripper มาใช้กับ Mega2560 จะต้องต่อสายดังนี้

   

     V-M      เชื่อมกับ 5V

     GND     เชื่อมกับ GND

     PWM1 เชื่อมกับ D5

     DIR1    เชื่อมกับ D4

และโค้ดที่ใช้ทดสอบ Gripper เป็นดังนี้

#include "MeAuriga.h"

#include <SoftwareSerial.h>

#include <Wire.h>

 

MeDCMotor motor(SLOT1);

uint8_t   motorSpeed = 200;

void setup() {

 

}

 

void loop() {

  motor.run(motorSpeed);

}

        

           

                                                                                                                เจษฎา  ทองภาพ

 

 

ฝึกงาน FIBO

31/05/2018

34778994_1437886099648976_73901052842423

นายนพรัตน์  ขันธวิชัย

bottom of page