กลุ่มผม Treadmill
วันนี้ได้ทำการเขียนแบบชิ้นส่วนโครงสร้างเพิ่มเติมด้วยโปรแกรมเขียนแบบ solidwork และศึกษาวิดิโอเกี่ยวกับ treadmill ในปัจจุบันว่ามีการสร้างและการทำงาน อย่างไร แล้วนำความรู้ที่ได้มาเพื่อพัฒนาและประยุกต์ใช้การทำ treadmill ต่อไป
นายวุฒิพงษ์ บุระดา
กลุ่มผม Treadmill
วันนี้ได้ทำการเขียนแบบชิ้นส่วนโครงสร้างเพิ่มเติมด้วยโปรแกรมเขียนแบบ solidwork และศึกษาวิดิโอเกี่ยวกับ treadmill ในปัจจุบันว่ามีการสร้างและการทำงาน อย่างไร แล้วนำความรู้ที่ได้มาเพื่อพัฒนาและประยุกต์ใช้การทำ treadmill ต่อไป
นายวุฒิพงษ์ บุระดา
กลุ่มผม Treadmill
วันนี้ได้ทำการเขียนแบบชิ้นส่วนโครงสร้างเพิ่มเติมด้วยโปรแกรมเขียนแบบ solidwork และศึกษาวิดิโอเกี่ยวกับ treadmill ในปัจจุบันว่ามีการสร้างและการทำงาน อย่างไร แล้วนำความรู้ที่ได้มาเพื่อพัฒนาและประยุกต์ใช้การทำ treadmill ต่อไป
นายวุฒิพงษ์ บุระดา
ฝึกงาน FIBO
16/05/2018
กลุ่ม 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 แต่ก็ยังไม่สามารถทำงานได้
นาย
ฝึกงาน FIBO
21/05/2018
กลุ่ม Robot Arm
แต่ก็ยังไม่สามารถควบคุม Servo ด้วย FSR ได้จึงได้หาสาเหตุว่าทำมัย servo ถึงไม่หมุนตามค่าของ FSR แต่ก็ยังหาไม่พบ ถึงจะหาโค้ดใหม่มาลองแต่ก็ยังควบคุมไม่ได้ หลังจากกลับมาที่หอพัก ผมก็ได้พบอีกสาเหตุว่า Servo เสียแต่ก็ยังไม่แน่ใจจนกว่าจะได้ Servo อีกตัวมาลองครับ
นายกฤษดา ชัยเนตร
กลุ่มผม Treadmill
วันนี้ได้ทำการเขียนแบบชิ้นส่วนโครงสร้างเพิ่มเติมด้วยโปรแกรมเขียนแบบ solidwork และศึกษาวิดิโอเกี่ยวกับ treadmill ในปัจจุบันว่ามีการสร้างและการทำงาน อย่างไร แล้วนำความรู้ที่ได้มาเพื่อพัฒนาและประยุกต์ใช้การทำ treadmill ต่อไป
นายวุฒิพงษ์ บุระดา
ฝึกงาน FIBO
22/05/2018
กลุ่ม 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/
ตัวอย่าง 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
กลุ่ม Treadmill
หาข้อมูลเกี่ยวกับการใช้งาน Module bluetooth และทำการทดสอบ Upload code ศึกษาหลักการทำงาน bluetooth
ตัวอย่าง 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
กลุ่ม 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 ไม่ได้ครับ
นายเจษฎา ทองภาพ
กลุ่ม 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
กลุ่ม 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
หลังจากลงมาจากชั้น 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 ก้อยู่ด้านบนนะครับ
ตัวอย่างการต่อวงจร
ช่วงบ่ายพี่เชาว์ได้พาไปหาอุกรณ์ที่จะมาทำโปรเจคที่ชั้น 8 หลังจากหาอุกปกรณ์เสร็จ กลับมาผมได้เริ่มศึกษาเกี่ยวกับโปรแกรม Unity จาก Youtube (www.youtube.com/watch?v=mXe5MY31BQ0) และ (www.youtube.com/watch?v=c_Q1aylZTus) เพราะเมื่อวานพี่เชาว์ได้แนะนำเกี่ยวกับการใช้แท็กเกอร์คู่กับ Treadmill โดยใช้กับโปรแกรม Unity ที่เป็นโปรแกรมสร้างเกมส์ และผมได้เริ่มจากการสร้างเกมส์ง่ายๆก่อนเริ่มจากเกมส์ลูกบอลที่กลิ้งไปเก็บของได้ แต่ผมสร้างได้แค่พื้นกับลูกบอลแล้วทำให้กลิ้งไปกลิ้งมาบนพื้นได้ แต่ยังทำให้บอลเก็บของไม่ได้เพราะทำไม่เสร็จครับ
ตัวอย่างเกมส์ที่สร้างด้วย Unity
นายกฤษดา ชัยเนตร
ฝึกงาน 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
ตัวอย่าง 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);
}
}
}
https://th.aliexpress.com/item/R38s6-g5-26c1000bm-2m/1827701522.html
https://www.youtube.com/watch?v=e5p7wGEC0Xc
https://www.youtube.com/watch?v=_gESprWbzeU
https://www.brainy-bits.com/tutorials/page/4/
https://www.brainy-bits.com/stepper-motor-rotary-encoder-p1/
นายเจษฎา ทองภาพ
กลุ่ม 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);
}
}
นาย นพรัตน์ ขันธวิชัย
ฝึกงาน FIBO
28/05/2018
วันนี้ได้รับมอบหมายให้ทั้งหมด 5 คนช่วยกันคิดวิธี จะรู้ได้อย่างไรว่ามีการเดินหรือการวิ่งของผู้เล่น จะใช้ sensor ชนิดใด และจะวางตำแหน่งใด วางรูปแบบใด จะสร้างเงื่อนไขการเดินอย่างไร
จากนั้นก็ได้ช่วยกัน วิเคราะห์การเดินของผู้เล่นร่วมกับอาจารย์ สยาม เพื่อจะได้นำไปสร้างเงื่อนไขการเดิน ว่าจะรู้ได้อย่างไรว่า ผู้เล่น กำลังเดิน กำลังวิ่ง หรือ ยืนอยู่กับที่
จากที่ได้คิดหาวิธีการอยู่นานจึงได้ ข้อสรุปดังนี้
1. sensor ที่จะใช้ คือ proximity infrared
2. ตำแหน่งที่ติดตั้ง จะอยู่ต้องกลางแผ่นเพลท ติ้ดแบบ เมทริกซ์ 3x3
3. เงื่อนไขที่จะทราบว่ามี การเดิน การวิ่ง หรือการยืนอยู่กับที่
3.1 การเดิน จะรู้ว่าเดินก็ต่อเมื่อ sensor มีการอ่านค่าได้ จากนอกเข้าใน
ตัวอย่างเช่น จาก 1 ไป 2 ไป 3 ตามลำดับ
รูปแบบการวางตำแหน่งของ 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
นายนพรัตน์ ขันธวิชัย