🧠 หลักการทำงานของหุ่นยนต์ตีนตะขาบ ESP32 บังคับด้วย แอป BlueDuino (Arduino Joystick)

หน่วยควบคุมหลัก (Main Controller):
ใช้บอร์ด ESP32 เป็นสมองของหุ่นยนต์ ทำหน้าที่รับสัญญาณจากแอป BlueDuino (Arduino Joystick) ผ่าน Bluetooth Classic แล้วประมวลผลคำสั่ง เช่น เดินหน้า ถอยหลัง เลี้ยวซ้าย เลี้ยวขวา หรือหยุด

การสื่อสาร Bluetooth:
แอป BlueDuino บนมือถือจะส่งข้อมูลปุ่มควบคุมในรูปแบบตัวอักษร (เช่น “1”, “2, “3”, “4”) มายัง ESP32
→ ESP32 จะตรวจสอบค่าที่ได้รับ แล้วส่งสัญญาณควบคุมไปยังวงจรขับมอเตอร์

วงจรขับมอเตอร์ (Motor Driver):
ใช้ไอซีเช่น L298N สำหรับควบคุมทิศทางและความเร็วของมอเตอร์ 2 ตัว ที่ขับแทร็ก (สายพานตีนตะขาบ)


อุปกรณ์ที่ใช้


ขั้นตอนการสร้าง

1.ประกอบหุ่นยนต์และเชื่อมต่อวงจร


เริ่มต้นด้วยการ ประกอบ TP101 Robot Tank


การต่อวงจร



เชื่อมต่อวงจร ระหว่าง บอร์ดขยายขา ESP32 กับ โมดูลขับมอเตอร์



2.ติดตั้ง Arduino IDE

ดาวน์โหลด Arduino IDE จากที่นี่

https://www.arduino.cc/en/software

This image has an empty alt attribute; its file name is e1-1024x573.png




กำหนดค่าให้ รองรับบอร์ด ESP32


ไปที่ File > Preferences

This image has an empty alt attribute; its file name is e2-1024x633.png


คัดลอกและวางบรรทัดต่อไปนี้ลงในฟิลด์ Boards Manager URLs

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

This image has an empty alt attribute; its file name is e3-1024x629.png



คลิกไอคอนตัวจัดการบอร์ดที่มุมด้านซ้าย ค้นหา ESP32 และกดปุ่มติดตั้งสำหรับ esp32 โดย Espressif Systems

This image has an empty alt attribute; its file name is e4-1024x633.png


3. Upload Code หุ่นยนต์ตีนตะขาบ ESP32 บังคับ ด้วย แอพบลูทูธ


นี่คือโค้ด หุ่นยนต์ตีนตะขาบ ESP32 บังคับ ด้วย แอพบลูทูธ

#include <BluetoothSerial.h>
BluetoothSerial btSerial;
#define BT_NAME "ESP32BT-CAR"  // Set bluetooth name

boolean btConnected = false;
char key, previousKey;
long previousMillis = 0;
int timeout = 1000;

int MA1 = 27;    // Motor A1
int MA2 = 26;    // Motor A2
int PWM_A = 14;  // Speed Motor A

int MB1 = 17;   // Motor B1
int MB2 = 16;   // Motor B2
int PWM_B = 4;  // Speed Motor B

int SPEED = 220;  // Speed 0 - 255

void setup() {

  Serial.begin(115200);
  btSerial.begin(BT_NAME);

  Serial.println("ESP32 Bluetooth Mobile Robot");
  Serial.println();

  //Setup Channel A
  pinMode(MA1, OUTPUT);    //Motor A1
  pinMode(MA2, OUTPUT);    //Motor A2
  pinMode(PWM_A, OUTPUT);  //Speed PWM Motor A

  //Setup Channel B
  pinMode(MB1, OUTPUT);    //Motor B1
  pinMode(MB2, OUTPUT);    //Motor B2
  pinMode(PWM_B, OUTPUT);  //Speed PWM Motor B
}

void loop() {
  if (btSerial.available()) {
    previousMillis = millis();

    char inChar = (char)btSerial.read();

    if (btConnected == false) {
      btConnected = true;

      Serial.println("Bluetooth connected.");
    }

    if (inChar >= '0' && inChar <= '9') {
      key = inChar;
      if (key != previousKey) {

        switch (key) {
          case '5':
            Serial.println("Robot stop.");
            Stop(1);
            break;

          case '1':
            Serial.println("Robot move forward.");
            Forward(100);
            Stop(1);
            break;

          case '2':
            Serial.println("Robot move backward.");
            Backward(200);
            Stop(1);
            break;

          case '3':
            Serial.println("Robot turn right.");
            turnRight(200);
            Stop(1);
            break;

          case '4':
            Serial.println("Robot turn left.");
            turnLeft(100);
            Stop(1);
            break;
        }

        previousKey = key;
      }
    }
  }

  if (millis() - previousMillis > timeout && btConnected == true) {

    Serial.println("Bluetooth disconnected.");

    btConnected = false;
  }
}

void Backward(int time) {
  digitalWrite(MA1, LOW);
  digitalWrite(MA2, HIGH);
  analogWrite(PWM_A, SPEED);

  digitalWrite(MB1, HIGH);
  digitalWrite(MB2, LOW);
  analogWrite(PWM_B, SPEED);

  delay(time);
}

void Forward(int time) {
  digitalWrite(MA1, HIGH);
  digitalWrite(MA2, LOW);
  analogWrite(PWM_A, SPEED);

  digitalWrite(MB1, LOW);
  digitalWrite(MB2, HIGH);
  analogWrite(PWM_B, SPEED);

  delay(time);
}

void turnLeft(int time) {
  digitalWrite(MA1, HIGH);
  digitalWrite(MA2, LOW);
  analogWrite(PWM_A, SPEED);

  digitalWrite(MB1, LOW);
  digitalWrite(MB2, LOW);
  analogWrite(PWM_B, 0);

  delay(time);
}

void turnRight(int time) {
  digitalWrite(MA1, LOW);
  digitalWrite(MA2, LOW);
  analogWrite(PWM_A, 0);

  digitalWrite(MB1, LOW);
  digitalWrite(MB2, HIGH);
  analogWrite(PWM_B, SPEED);

  delay(time);
}

void Stop(int time) {
  digitalWrite(MA1, LOW);
  digitalWrite(MA2, LOW);
  analogWrite(PWM_A, 0);

  digitalWrite(MB1, LOW);
  digitalWrite(MB2, LOW);
  analogWrite(PWM_B, 0);

  delay(time);
}


ลิงค์โค้ด https://lungmaker.com/code/robot-tank-v1.ino

เชื่อมต่อสาย Micro USB ระหว่าง คอมพิวเตอร์ กับ ESP32 และ ควรเปิดสวิตช์เพื่อจ่ายไฟจากรางถ่านให้กับหุ่นยนต์ด้วย


เลือกบอร์ด ESP32 ตามรุ่นที่ใช้ เป็น ESP32 Dev Module

This image has an empty alt attribute; its file name is 4-1024x583.png



เลือก Port โดยไปที่ Tools -> Port -> COM5
(โดย COM5 แต่ละเครื่องจะไม่เหมือนกัน ให้เลือกตามที่ปรากฎ)

This image has an empty alt attribute; its file name is 5-1024x691.png



คลิกที่ Upload


This image has an empty alt attribute; its file name is image-1-1024x576.png



แสดงการ Upload สำเร็จ



This image has an empty alt attribute; its file name is image-1024x576.png



4. ติดตั้ง แอปพลิเคชั่น BlueDuino (Arduino Joystick)


ใช้สมาร์ทโฟนดาวน์ ระบบปฏิบัติการแอนดรอยด์ (Android) ดาวน์โหลดและติดตั้งแอพชื่อ BlueDuino (Arduino Joystick) จาก Google Play Store





เปิดการเชื่อมต่อ Bluetooth




เลือกเชื่อมต่อกับ ESP32BT-CAR (ตามที่เราเขียนโค้ดไว้ สามารถเปลี่ยนแปลงได้ตามความต้องการ)


เลือกจับคู่



แสดงการจับคู่สำเร็จ


เลือกที่ Connection to Device


เลือกเชื่อมต่อกับ ESP32BT-CAR


เลือกที่ Joystick


เลือกไปที่ ขวามือ ด้านบน รูป คล้ายๆ เครื่องหมาย +



แก้ไข ตามรูป ที่เป็น ตัวเลข 1 – 5
Up = 1, Down = 2 , Right = 3 , Left = 4, และ X = 5 (X = หยุด)



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


5. ทดสอบควบคุม หุ่นยนต์ตีนตะขาบ ESP32 บังคับ ด้วย แอพบลูทูธ

วิดีโอผลลัพธ์การทำงาน หุ่นยนต์ตีนตะขาบ ESP32 บังคับ ด้วย แอพบลูทูธ

Leave a Reply

Your email address will not be published. Required fields are marked *