🧠 หลักการทำงานของหุ่นยนต์ตีนตะขาบ 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

กำหนดค่าให้ รองรับบอร์ด ESP32
ไปที่ File > Preferences

คัดลอกและวางบรรทัดต่อไปนี้ลงในฟิลด์ Boards Manager URLs
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

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

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

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

คลิกที่ Upload

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

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 บังคับ ด้วย แอพบลูทูธ