Project Drone Arduino ตอนที่ 1

Project Drone Arduino ตอนที่ 1
แรงบันดานใจในการสร้าง Project นี้
เริ่มจากที่ว่า ผมอยากเห็นการพัฒนาของเด็กไทยที่สามารถเอาแนวคิดไอเดียทำออกมาให้เห็นเป็นรูปธรรม ผมต้องการที่จะเห็นคนไทยสามารถพัฒนาหุ่นยนต์แข่งกับต่างชาติได้ ผมจึงมีแนวคิดที่จะสร้างหุ่นยนต์ต้นทุนต่ำที่ประชาชนสามารถประกอบใช้งานได้จริง UAV, UUV, USV 3ข้อนี้เป็นต้นกำเนิดให้ผมต้องเลือก UAV (อากาศยานไร้คนขับ), UUV (ยานใต้น้ำไร้คนขับ) หรือ USV (ยานผิวน้ำไร้คนขับ) และผมเลือก UAV (อากาศยานไร้คนขับ) สาเหตุเพราะผมไม่ชอบลงน้ำ หาแหล่งน้ำทดสอบยาก โดรนจึงกลายเป็นเป้าหมายสำหรับงานนี้

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

ความต้องการ โดรนสำหรับผม มันสามารถบังคับมือได้ มีระบบ Autopirot ไปยังพิกัดต่างๆตาม Mission ได้ ขึ้น-ลง เองได้ กลับบ้านเองได้ ถ่ายวีดีโอส่งภาพมายังต้นทางได้ ใช้พลังงานต่ำ

เป้าหมาย
ภายใน สิ้นเดือน พ.ค.60 อุปกรณ์ระบบไฟฟ้าครบ
ภายใน สิ้นเดือน มิ.ค.60 เขียนโปรแกรมทดสอบเสร็จ
ภายใน สิ้นเดือน ก.ค.60 ประกอบเฟรมพร้อมบิน
ภายใน สิ้นเดือน ส.ค.60 ทดสอบบินเป็นผลสำเร็จ

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

ระบบไฟฟ้า
1. รีโมท ในโปรเจ็กนี้ผมเลือกใช้รีโมท STORM i6S (2.4GHz) 2200-2400 พร้อมรีซีฟเวอร์
2. รีซีฟเวอร์
3. บอร์ด Controller ตอนนี้ผมมีบอร์ดให้เลือใช้ 3 บอร์ด UNO, MEGA2560, Pro Mini 3.3V
4. Senser Untrlsonic
5. Gyro GY-86 10DOG 680-800, GY-521 110-120
6. Gps Ublox Neo-6M GPS 800-1000
7. Speed Controller 30A 4 ตัว Dragon 30A 390*4
8. Moter Brushless 4 ตัว motor sunny 2212 1400kv 350*4
9. Battery lipo 2200 mah 3s  30c 400-500
10. Battery Charger i6AC มีซัพพลาย 80w 800-900





ทดสอบ Code เชื่อมต่อ arduino อ่านค่า receiver ด้วยฟังชั่น pulseIn();

pulseIn(pin, value ,timeout);
 -  pin คือขาดิจิตอลอินพุตที่ต้องการอ่านค่า
 -  value คือ ลอจิกที่จะอ่านค่าความกว้างพัลส์ออกมา
 -  timeout คือช่วงเวลาที่เรากำหนดว่าถ้าไม่เกิดพัลส์ขึ้นมาในช่วงเวลากี่ไมโครวินาที ให้ไปทำงานคำสั่งถัดไป
ค่าที่อ่านได้อยู่ที่ประมาณ 1000 – 2000 โดยมีค่ากลางที่ 1500

#define THROTTLEPIN   3   //กำหนดค่าคงที่ให้ pin3 pwm มีค่าเป็นค่าของ THROTTLE
#define ROLLPIN   5   //กำหนดค่าคงที่ให้ pin5 pwm มีค่าเป็นค่าของ ROLL
#define PITCHPIN   6   //กำหนดค่าคงที่ให้ pin5 pwm มีค่าเป็นค่าของ PITCH
#define YAWPIN   9   //กำหนดค่าคงที่ให้ pin5 pwm มีค่าเป็นค่าของ YAW
#define AUX1PIN   10   //กำหนดค่าคงที่ให้ pin5 pwm มีค่าเป็นค่าของ AUX1
#define AUX2PIN   11   //กำหนดค่าคงที่ให้ pin5 pwm มีค่าเป็นค่าของ AUX2

int throttle = 0;   //กำหนดตตัวแปร throttle เก็บข้อมูลเป็นจำนวนเต็ม
int roll = 0;   //กำหนดตตัวแปร roll เก็บข้อมูลเป็นจำนวนเต็ม
int pitch = 0;   //กำหนดตตัวแปร pitch เก็บข้อมูลเป็นจำนวนเต็ม
int yaw = 0;   //กำหนดตตัวแปร yaw เก็บข้อมูลเป็นจำนวนเต็ม
int aux1 = 0;   //กำหนดตตัวแปร aux1 เก็บข้อมูลเป็นจำนวนเต็ม
int aux2 = 0;   //กำหนดตตัวแปร aux2 เก็บข้อมูลเป็นจำนวนเต็ม

void setup()
{
Serial.begin(9600);   //กำหนดค่าการรับ-ส่งข้อมูล
        pinMode(THROTTLEPIN, INPUT);
        pinMode(ROLLPIN, INPUT);   //รับข้อมูลแกน Roll
        pinMode(PITCHPIN, INPUT);   //รับข้อมูลแกน Pitch
        pinMode(YAWPIN, INPUT);   //รับข้อมูลแกน Yaw
        pinMode(AUX1PIN, INPUT);   //รับข้อมูล Aux1 O / I
        pinMode(AUX2PIN, INPUT);   //รับข้อมูล Aux2 O / I
}

void loop()
{      //InPut//
throttle = pulseIn(THROTTLEPIN, HIGH, PULSETTIMEOUT);
        roll = pulseIn(ROLLPIN, HIGH, PULSETTIMEOUT);
        pitch = pulseIn(PITCHPIN, HIGH, PULSETTIMEOUT);
        yaw = pulseIn(YAWPIN, HIGH, PULSETTIMEOUT); 
        aux1 = pulseIn(AUX1PIN, HIGH, PULSETTIMEOUT); 
        aux2 = pulseIn(AUX2PIN, HIGH, PULSETTIMEOUT); 

        //OutPut//
       Serial.print("throttle : ");
       Serial.print("throttle , DEC");
       Serial.print("");

       Serial.print("roll : ");
       Serial.print("roll , DEC");
       Serial.print("");

       Serial.print("pitch : ");
       Serial.print("pitch , DEC");
       Serial.print("");

       Serial.print("yaw : ");
       Serial.print("yaw , DEC");
       Serial.print("");

       Serial.print("aux1 : ");
       Serial.print("aux1 , DEC");
       Serial.print("");

       Serial.print("aux2 : ");
       Serial.print("aux2 , DEC");
       Serial.print("");

        Serial.println("") ;
       delay(100);
     
        Serial.print("=============================");
        Serial.println("") ;
}

ความคิดเห็น

บทความที่ได้รับความนิยม