Skip to content

Mukller/Balance_robot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

90 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

English โ€ข ะ ัƒััะบะธะน

๐Ÿค– ESP32 Self-Balancing Robot

ะะฒั‚ะพะฝะพะผะฝั‹ะน ั€ะพะฑะพั‚-ะฑะฐะปะฐะฝัะธั€ ะฝะฐ ะดะฒัƒั… ะบะพะปั‘ัะฐั… ั ะปะธะฝะธะตะน, ะฟั€ะตะฟัั‚ัั‚ะฒะธัะผะธ ะธ ัƒะฟั€ะฐะฒะปะตะฝะธะตะผ ั‡ะตั€ะตะท ะฒะตะฑ-ะธะฝั‚ะตั€ั„ะตะนั.

๐Ÿ“ ะคะฐะนะปั‹ ะฟั€ะพะตะบั‚ะฐ

ะžัะฝะพะฒะฝั‹ะต ัะบะตั‚ั‡ะธ:

  • esp32_robot_main.ino - ะพัะฝะพะฒะฝะฐั ะฟั€ะพะณั€ะฐะผะผะฐ ั€ะพะฑะพั‚ะฐ
  • web_interface.h - ะฒะตะฑ-ะธะฝั‚ะตั€ั„ะตะนั ั ะดะถะพะนัั‚ะธะบะพะผ

ะขะตัั‚ะพะฒั‹ะต ัะบะตั‚ั‡ะธ:

  • test_line_sensor.ino - ั‚ะตัั‚ ะดะฐั‚ั‡ะธะบะฐ ะปะธะฝะธะธ (5 ะดะฐั‚ั‡ะธะบะพะฒ)
  • test_distance_sensor.ino - ั‚ะตัั‚ ะดะฐั‚ั‡ะธะบะฐ ั€ะฐััั‚ะพัะฝะธั (VL53L0X)
  • test_motors.ino - ั‚ะตัั‚ ะผะพั‚ะพั€ะพะฒ (ัะบะพั€ะพัั‚ัŒ ะธ ัะธะฝั…ั€ะพะฝะธะทะฐั†ะธั)
  • test_servo_gripper.ino - ั‚ะตัั‚ ัะตั€ะฒะพะผะพั‚ะพั€ะพะฒ ะทะฐั…ะฒะฐั‚ะฐ (ะดะฒะต ัะตั€ะฒะพ)
  • test_gyro.ino - ั‚ะตัั‚ ะณะธั€ะพัะบะพะฟะฐ/ะฐะบัะตะปะตั€ะพะผะตั‚ั€ะฐ (MPU6050)

ะ‘ะธะฑะปะธะพั‚ะตะบะธ:

  • LineFollower.h/.cpp
  • Control.h/.cpp
  • MPU6050.h/.cpp
  • Motors.h/.cpp
  • defines.h, globals.h/.cpp

โšก ะ‘ั‹ัั‚ั€ั‹ะน ัั‚ะฐั€ั‚

1. ะ ะตะดะฐะบั‚ะธั€ะพะฒะฐั‚ัŒ WiFi

ะ’ esp32_robot_main.ino:

String sta_ssid = "YourWiFiSSID";
String sta_password = "YourWiFiPassword";

2. ะ—ะฐะณั€ัƒะทะธั‚ัŒ ะฒ Arduino IDE

ะ‘ะธะฑะปะธะพั‚ะตะบะธ ะฝัƒะถะฝั‹:

  • AsyncTCP
  • ESPAsyncWebServer
  • VL53L0X

3. ะžั‚ะบั€ั‹ั‚ัŒ ะฒะตะฑ-ะธะฝั‚ะตั€ั„ะตะนั

http://192.168.X.X

๐ŸŽฎ ะฃะฟั€ะฐะฒะปะตะฝะธะต (ะฒะตะฑ-ะธะฝั‚ะตั€ั„ะตะนั)

ะ”ะถะพะนัั‚ะธะบ

  • ะ’ะฒะตั€ั…-ะฒะฝะธะท = Throttle (ัะบะพั€ะพัั‚ัŒ)
  • ะ’ะปะตะฒะพ-ะฒะฟั€ะฐะฒะพ = Steering (ะฟะพะฒะพั€ะพั‚)

ะšะฝะพะฟะบะธ

  • โ–ถ ะŸั€ัะผะพ - ะตั…ะฐั‚ัŒ 2 ัะตะบ, ะฟะพั‚ะพะผ ะปะธะฝะธั
  • ใ€ฐ ะ›ะธะฝะธั - ัะปะตะดะธั‚ัŒ ะทะฐ ะปะธะฝะธะตะน
  • โน ะกั‚ะพะฟ - ะพัั‚ะฐะฝะพะฒะบะฐ

ะ”ะฐั‚ั‡ะธะบะธ ะฒ ั€ะตะฐะปัŒะฝะพะผ ะฒั€ะตะผะตะฝะธ

  • ะ ะฐััั‚ะพัะฝะธะต ะดะพ ะฟั€ะตะฟัั‚ัั‚ะฒะธั (ะผะผ)
  • 5 ะดะฐั‚ั‡ะธะบะพะฒ ะปะธะฝะธะธ (ะณั€ะฐั„ะธะบ)
  • ะฃะณะพะป ะฝะฐะบะปะพะฝะฐ
  • ะกั‚ะฐั‚ัƒั ัƒะบะปะพะฝะฐ

๐Ÿค– ะšะฐะบ ั€ะฐะฑะพั‚ะฐะตั‚ ั€ะพะฑะพั‚

1. IDLE (ะถะดั‘ั‚ ะบะพะผะฐะฝะดัƒ)
   โ”œโ”€ ะšะฝะพะฟะบะฐ "ะŸั€ัะผะพ" โ†’ STRAIGHT
   โ”œโ”€ ะšะฝะพะฟะบะฐ "ะ›ะธะฝะธั" โ†’ LINE_FOLLOW
   โ””โ”€ ะšะฝะพะฟะบะฐ ะ—ะฐั…ะฒะฐั‚ะฐ โ†’ ะžั‚ะบั€ั‹ั‚ัŒ/ะ—ะฐะบั€ั‹ั‚ัŒ (ะฝะตะทะฐะฒะธัะธะผะพ)
   
2. STRAIGHT (2 ัะตะบ ะดะฒะธะถะตะฝะธะต ะฒะฟะตั€ั‘ะด)
   โ””โ”€ ะะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะธะน ะฟะตั€ะตั…ะพะด โ†’ LINE_FOLLOW
   
3. LINE_FOLLOW (ัะปะตะดะธั‚ ะทะฐ ะปะธะฝะธะตะน)
   โ”œโ”€ ะ•ัะปะธ ะฒะธะดะธั‚ ะฟั€ะตะฟัั‚ัั‚ะฒะธะต โ†’ STOPPED
   โ”œโ”€ ะ•ัะปะธ ัƒะบะปะพะฝ โ†’ ะทะฐะผะตะดะปะตะฝะธะต (ร—0.5)
   โ””โ”€ ะ—ะฐั…ะฒะฐั‚ ัƒะฟั€ะฐะฒะปัะตั‚ัั ะพั‚ะดะตะปัŒะฝะพ
   
4. STOPPED (ะฟั€ะตะฟัั‚ัั‚ะฒะธะต ะพะฑะฝะฐั€ัƒะถะตะฝะพ)
   โ”œโ”€ ะœะพั‚ะพั€ั‹ ะพัั‚ะฐะฝะพะฒะปะตะฝั‹
   โ””โ”€ ะšะฝะพะฟะบะฐ "ะกั‚ะพะฟ" โ†’ IDLE

ะ—ะฐั…ะฒะฐั‚ (ะฝะตะทะฐะฒะธัะธะผั‹ะน):
- ะžั‚ะบั€ั‹ั‚ัŒ: 180ยฐ (ะผะพะถะฝะพ ะฒ ะปัŽะฑะพะน ะผะพะผะตะฝั‚)
- ะ—ะฐะบั€ั‹ั‚ัŒ: 90ยฐ (ะผะพะถะฝะพ ะฒ ะปัŽะฑะพะน ะผะพะผะตะฝั‚)

๐Ÿงช ะขะตัั‚ะธั€ะพะฒะฐะฝะธะต

1. ะขะตัั‚ ะดะฐั‚ั‡ะธะบะฐ ะปะธะฝะธะธ

// ะ—ะฐะณั€ัƒะทะธั‚ัŒ: test_line_sensor.ino
// Serial Monitor: 115200 baud
// ะ’ั‹ะฒะพะดะธั‚: Raw values, Calibrated, ASCII ะณั€ะฐั„ะธะบ

2. ะขะตัั‚ ะดะฐั‚ั‡ะธะบะฐ ั€ะฐััั‚ะพัะฝะธั

// ะ—ะฐะณั€ัƒะทะธั‚ัŒ: test_distance_sensor.ino
// Serial Monitor: 115200 baud
// ะ’ั‹ะฒะพะดะธั‚: ะ ะฐััั‚ะพัะฝะธะต ะฒ ะผะผ, ัั‚ะฐั‚ัƒั, ASCII ะณั€ะฐั„ะธะบ
// ะŸั€ะพะฒะตั€ัะตั‚: 0-200mm (ะพั‡ะตะฝัŒ ะฑะปะธะทะบะพ) ะดะพ >1000mm (ะดะฐะปะตะบะพ)

3. ะขะตัั‚ ะผะพั‚ะพั€ะพะฒ

// ะ—ะฐะณั€ัƒะทะธั‚ัŒ: test_motors.ino
// Serial Monitor: 115200 baud
// ะขะตัั‚ั‹:
//   1. ะžะฑะฐ ะผะตะดะปะตะฝะฝะพ ะฒะฟะตั€ั‘ะด
//   2. ะžะฑะฐ ะฑั‹ัั‚ั€ะพ ะฒะฟะตั€ั‘ะด
//   3. ะžะฑะฐ ะฝะฐะทะฐะด
//   4. ะ ะฐะทะฝั‹ะต ัะบะพั€ะพัั‚ะธ (ัะธะฝั…ั€ะพะฝะธะทะฐั†ะธั)
// ะ’ั‹ะฒะพะดะธั‚: ะšะพะปะธั‡ะตัั‚ะฒะพ ัˆะฐะณะพะฒ, ัะพะพั‚ะฝะพัˆะตะฝะธะต ัะบะพั€ะพัั‚ะตะน

4. ะขะตัั‚ ัะตั€ะฒะพะผะพั‚ะพั€ะพะฒ ะทะฐั…ะฒะฐั‚ะฐ

// ะ—ะฐะณั€ัƒะทะธั‚ัŒ: test_servo_gripper.ino
// Serial Monitor: 115200 baud
// ะขะตัั‚ั‹:
//   1. ะ›ะตะฒะฐั ัะตั€ะฒะพ: 0ยฐ โ†’ 180ยฐ โ†’ 0ยฐ
//   2. ะŸั€ะฐะฒะฐั ัะตั€ะฒะพ: 0ยฐ โ†’ 180ยฐ โ†’ 0ยฐ
//   3. ะžะฑะต ะฒะผะตัั‚ะต (ะžั‚ะบั€ั‹ั‚ัŒ 180ยฐ โ†’ ะ—ะฐะบั€ั‹ั‚ัŒ 90ยฐ โ†’ ะกะฑั€ะพั 0ยฐ)
// ะŸะธะฝั‹: GPIO 13 (ะปะตะฒะฐั), GPIO 33 (ะฟั€ะฐะฒะฐั)
// ะ’ั‹ะฒะพะดะธั‚: ASCII ะณั€ะฐั„ะธะบ ัƒะณะปะพะฒ ะฟะพะฒะพั€ะพั‚ะฐ

5. ะขะตัั‚ ะณะธั€ะพัะบะพะฟะฐ (MPU6050)

// ะ—ะฐะณั€ัƒะทะธั‚ัŒ: test_gyro.ino
// Serial Monitor: 115200 baud
// ะŸั€ะพะฒะตั€ัะตั‚: WHO_AM_I (0x68), ะทะฐั‚ะตะผ ั‡ะธั‚ะฐะตั‚ ะดะฐะฝะฝั‹ะต
// ะ’ั‹ะฒะพะดะธั‚:
//   - ะ“ะธั€ะพัะบะพะฟ X/Y/Z (ยฐ/ัะตะบ)
//   - ะะบัะตะปะตั€ะพะผะตั‚ั€ X/Y/Z (g)
//   - ะฃะณะปั‹ Pitch / Roll
//   - ะขะตะผะฟะตั€ะฐั‚ัƒั€ัƒ (ยฐC)
// ะŸะธะฝั‹ I2C: SDA=GPIO 21, SCL=GPIO 22

๐Ÿ”ง ะŸะฐั€ะฐะผะตั‚ั€ั‹ ะฒ ะบะพะดะต

#define DISTANCE_THRESHOLD 300      // ะกั‚ะพะฟ < 300ะผะผ
#define STRAIGHT_TIME 2000          // 2 ัะตะบ ะฟั€ัะผะพ
#define SLOPE_ACCEL_THRESHOLD 2000  // ะŸะพั€ะพะณ ัƒะบะปะพะฝะฐ
#define MAX_THROTTLE 550            // ะœะฐะบั ัะบะพั€ะพัั‚ัŒ
#define MAX_STEERING 140            // ะœะฐะบั ะฟะพะฒะพั€ะพั‚

๐Ÿ“Š GPIO ะฟะพะดะบะปัŽั‡ะตะฝะธะต (ESP32)

I2C (ะดะปั ะดะฐั‚ั‡ะธะบะพะฒ):
  GPIO 21 (SDA) โ† MPU6050, VL53L0X
  GPIO 22 (SCL) โ† MPU6050, VL53L0X

ะœะพั‚ะพั€ั‹ (ะดะฒะธะถะตะฝะธะต):
  GPIO 27 โ† Motor1 DIR (ะฝะฐะฟั€ะฐะฒะปะตะฝะธะต)
  GPIO 14 โ† Motor1 STEP (ัˆะฐะณะธ)
  GPIO 25 โ† Motor2 DIR (ะฝะฐะฟั€ะฐะฒะปะตะฝะธะต)
  GPIO 26 โ† Motor2 STEP (ัˆะฐะณะธ)
  GPIO 12 โ† Enable (ะฒะบะปัŽั‡ะตะฝะธะต)

ะ—ะฐั…ะฒะฐั‚ (ะดะฒะต ัะตั€ะฒะพ):
  GPIO 13 โ† Servo Left (ะปะตะฒะฐั ั€ัƒะบะฐ)
  GPIO 33 โ† Servo Right (ะฟั€ะฐะฒะฐั ั€ัƒะบะฐ)

ะ”ะฐั‚ั‡ะธะบ ะปะธะฝะธะธ:
  GPIO 34 โ† S1 (ะปะตะฒั‹ะน ะบั€ะฐะน)
  GPIO 35 โ† S2 (ะปะตะฒะฐั ั‡ะตั‚ะฒะตั€ั‚ัŒ)
  GPIO 36 โ† S3 (ั†ะตะฝั‚ั€)
  GPIO 39 โ† S4 (ะฟั€ะฐะฒะฐั ั‡ะตั‚ะฒะตั€ั‚ัŒ)
  GPIO 32 โ† S5 (ะฟั€ะฐะฒั‹ะน ะบั€ะฐะน)

๐Ÿ› ะŸะพะผะพั‰ัŒ

ะ ะพะฑะพั‚ ะฝะต ะฟะพะดะบะปัŽั‡ะฐะตั‚ัั:

  • ะŸั€ะพะฒะตั€ะธั‚ัŒ SSID/ะฟะฐั€ะพะปัŒ WiFi
  • ะกะผะพั‚ั€ะตั‚ัŒ Serial Monitor (115200)

ะะต ะฑะฐะปะฐะฝัะธั€ัƒะตั‚:

  • ะŸั€ะพะฒะตั€ะธั‚ัŒ I2C (MPU6050)
  • ะŸั€ะพะฒะตั€ะธั‚ัŒ ะผะพั‚ะพั€ั‹ (test_motors.ino)

ะะต ัะปะตะดะธั‚ ะทะฐ ะปะธะฝะธะตะน:

  • ะšะฐะปะธะฑั€ะพะฒะฐั‚ัŒ ะดะฐั‚ั‡ะธะบ (test_line_sensor.ino)
  • ะŸั€ะพะฒะตั€ะธั‚ัŒ ะบะพะฝั‚ั€ะฐัั‚ะฝะพัั‚ัŒ ะปะธะฝะธะธ

ะะต ะฒะธะดะธั‚ ะฟั€ะตะฟัั‚ัั‚ะฒะธะต:

  • ะขะตัั‚ ะดะฐั‚ั‡ะธะบะฐ (test_distance_sensor.ino)
  • ะžั‚ั€ะตะณัƒะปะธั€ะพะฒะฐั‚ัŒ DISTANCE_THRESHOLD

โœ… ะŸั€ะพะฒะตั€ะบะฐ ะฟะตั€ะตะด ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะตะผ

  • ESP32 ะฟะพะดะบะปัŽั‡ะตะฝะฐ
  • ะ’ัะต ะดะฐั‚ั‡ะธะบะธ ะฟะพะดะบะปัŽั‡ะตะฝั‹
  • WiFi SSID/ะฟะฐั€ะพะปัŒ ะฒะฒะตะดะตะฝั‹
  • test_motors.ino ะฟั€ะพั…ะพะดะธั‚
  • test_line_sensor.ino ั€ะฐะฑะพั‚ะฐะตั‚
  • test_distance_sensor.ino ั€ะฐะฑะพั‚ะฐะตั‚
  • ะ’ะตะฑ-ะธะฝั‚ะตั€ั„ะตะนั ะพั‚ะบั€ั‹ะฒะฐะตั‚ัั

ะ’ะตั€ัะธั: 3.0 (ั ะฒะตะฑ-ะธะฝั‚ะตั€ั„ะตะนัะพะผ)
ะกั‚ะฐั‚ัƒั: โœ… Production Ready


๐Ÿ”Œ ะŸะžะ›ะะะฏ ะกะฅะ•ะœะ ะŸะžะ”ะšะ›ะฎะงะ•ะะ˜ะฏ

ESP32 Pinout (30 pin version)

         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
         โ”‚      ESP32-30       โ”‚
    GND  โ”‚  โฌค โฌค โฌค โฌค โฌค โฌค โฌค โฌค  โ”‚  3.3V
    GND  โ”‚  โฌค                 โฌค โ”‚  VUSB
    3.3V โ”‚  โฌค                 โฌค โ”‚  GND
    RST  โ”‚  โฌค                 โฌค โ”‚  EN
    12   โ”‚  โฌค ENABLE MOTORS   โฌค โ”‚  27 (MOTOR1_DIR)
    13   โ”‚  โฌค SERVO           โฌค โ”‚  25 (MOTOR2_DIR)
    14   โ”‚  โฌค MOTOR1_STEP     โฌค โ”‚  32 (LINE_S5)
    26   โ”‚  โฌ€                 โฌ€ โ”‚  33 (BUZZER)
    35   โ”‚  โฌ€ LINE_S2         โฌ€ โ”‚  34 (LINE_S1)
    39   โ”‚  โฌ€ LINE_S4         โฌ€ โ”‚  36 (LINE_S3)
    GND  โ”‚  โฌ€                 โฌ€ โ”‚  GND
    GND  โ”‚  โฌ€                 โฌ€ โ”‚  15
    23   โ”‚  โฌ€ VSPI_MOSI       โฌ€ โ”‚  2 (WIFI_LED)
    22   โ”‚  โฌ€ SCL (I2C)       โฌ€ โ”‚  4
    21   โ”‚  โฌ€ SDA (I2C)       โฌ€ โ”‚  5
    19   โ”‚  โฌ€ VSPI_MISO       โฌ€ โ”‚  18 (VSPI_CLK)
    GND  โ”‚  โฌ€                 โฌ€ โ”‚  GND
    GND  โ”‚  โฌ€                 โฌ€ โ”‚  17
    16   โ”‚  โฌ€ RX2             โฌ€ โ”‚  GND
         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ“‹ ะ”ะ•ะขะะ›ะฌะะžะ• ะŸะžะ”ะšะ›ะฎะงะ•ะะ˜ะ• ะšะžะœะŸะžะะ•ะะขะžะ’

1. ะœะžะขะžะ ะซ (Stepper NEMA17 ั ะดั€ะฐะนะฒะตั€ะพะผ)

Motor 1:
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  NEMA17 Motor   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ DIR โ”€โ”€โ”€โ”€โ”€โ†’ GPIO 27
โ”‚ STEP โ”€โ”€โ”€โ”€โ†’ GPIO 14
โ”‚ GND โ”€โ”€โ”€โ”€โ”€โ†’ GND
โ”‚ +12V โ”€โ”€โ”€โ”€โ†’ 12V (ั‡ะตั€ะตะท ะดั€ะฐะนะฒะตั€)
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Motor 2:
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  NEMA17 Motor   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ DIR โ”€โ”€โ”€โ”€โ”€โ†’ GPIO 25
โ”‚ STEP โ”€โ”€โ”€โ”€โ†’ GPIO 26
โ”‚ GND โ”€โ”€โ”€โ”€โ”€โ†’ GND
โ”‚ +12V โ”€โ”€โ”€โ”€โ†’ 12V (ั‡ะตั€ะตะท ะดั€ะฐะนะฒะตั€)
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Motor Enable:
GPIO 12 โ†’ Motor Driver Enable
GND โ”€โ”€โ”€โ”€โ†’ GND

2. MPU6050 (ะ“ะธั€ะพัะบะพะฟ + ะะบัะตะปะตั€ะพะผะตั‚ั€)

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚     MPU6050      โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ SDA โ”€โ”€โ”€โ”€โ”€โ†’ GPIO 21 (I2C)
โ”‚ SCL โ”€โ”€โ”€โ”€โ”€โ†’ GPIO 22 (I2C)
โ”‚ GND โ”€โ”€โ”€โ”€โ”€โ†’ GND
โ”‚ VCC โ”€โ”€โ”€โ”€โ”€โ†’ 3.3V
โ”‚ INT โ”€โ”€โ”€โ”€โ”€โ†’ ะฝะต ะฟะพะดะบะปัŽั‡ะฐั‚ัŒ (ะพะฟั†ะธะพะฝะฐะปัŒะฝะพ)
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

I2C ะฐะดั€ะตั: 0x68

3. VL53L0X (ะ”ะฐั‚ั‡ะธะบ ั€ะฐััั‚ะพัะฝะธั)

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚    VL53L0X       โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ SDA โ”€โ”€โ”€โ”€โ”€โ†’ GPIO 21 (I2C)
โ”‚ SCL โ”€โ”€โ”€โ”€โ”€โ†’ GPIO 22 (I2C)
โ”‚ GND โ”€โ”€โ”€โ”€โ”€โ†’ GND
โ”‚ VCC โ”€โ”€โ”€โ”€โ”€โ†’ 3.3V
โ”‚ XSHUT โ”€โ”€โ”€โ†’ ะฝะต ะฟะพะดะบะปัŽั‡ะฐั‚ัŒ (ะพะฟั†ะธะพะฝะฐะปัŒะฝะพ)
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

I2C ะฐะดั€ะตั: 0x29

4. ะ”ะะขะงะ˜ะš ะ›ะ˜ะะ˜ะ˜ (Ldabrye 5-sensor)

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Ldabrye Line Sensor Array  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ S1 (ะ›ะตะฒั‹ะน)   โ”€โ†’ GPIO 34 (ADC)
โ”‚ S2          โ”€โ†’ GPIO 35 (ADC)
โ”‚ S3 (ะฆะตะฝั‚ั€)  โ”€โ†’ GPIO 36 (ADC)
โ”‚ S4          โ”€โ†’ GPIO 39 (ADC)
โ”‚ S5 (ะŸั€ะฐะฒั‹ะน) โ”€โ†’ GPIO 32 (ADC)
โ”‚ GND         โ”€โ†’ GND
โ”‚ VCC         โ”€โ†’ 5V
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

5. ะ—ะะฅะ’ะะข (ะดะฒะต ัะตั€ะฒะพ)

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Servo Left (MG996R)     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Signal โ”€โ”€โ”€โ”€โ†’ GPIO 13 (PWM)
โ”‚ GND โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’ GND
โ”‚ VCC โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’ 5V
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Servo Right (MG996R)    โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Signal โ”€โ”€โ”€โ”€โ†’ GPIO 33 (PWM)
โ”‚ GND โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’ GND
โ”‚ VCC โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’ 5V
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ะฃะณะปั‹:
- OPEN (180ยฐ) - ะทะฐั…ะฒะฐั‚ ะพั‚ะบั€ั‹ั‚
- CLOSE (90ยฐ) - ะทะฐั…ะฒะฐั‚ ะทะฐะบั€ั‹ั‚

6. ะกะ’ะ•ะขะžะ”ะ˜ะžะ”ะซ (ะพะฟั†ะธะพะฝะฐะปัŒะฝะพ)

WiFi LED:
GPIO 2 โ†’ LED+ โ†’ โŽ• โ†’ 220ฮฉ โ†’ GND

7. ะŸะ˜ะขะะะ˜ะ• (ะžั‡ะตะฝัŒ ะฒะฐะถะฝะพ!)

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   Power Distribution         โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Battery/PSU                  โ”‚
โ”‚ โ”œโ”€โ†’ 5V โ”€โ”€โ”€โ”€โ†’ 5V ัˆะธะฝะฐ         โ”‚
โ”‚ โ”‚  โ”œโ”€โ†’ Line Sensor VCC       โ”‚
โ”‚ โ”‚  โ”œโ”€โ†’ VL53L0X VCC           โ”‚
โ”‚ โ”‚  โ””โ”€โ†’ Servo Left + Right    โ”‚
โ”‚ โ”‚
โ”‚ โ”œโ”€โ†’ 12V โ”€โ”€โ”€โ†’ Motor Driver    โ”‚
โ”‚ โ”‚  โ””โ”€โ†’ Stepper Motors        โ”‚
โ”‚ โ”‚
โ”‚ โ”œโ”€โ†’ 3.3V โ”€โ”€โ†’ ESP32 (Zener)   โ”‚
โ”‚ โ”‚  โ””โ”€โ†’ MPU6050 VCC           โ”‚
โ”‚ โ”‚
โ”‚ โ””โ”€โ†’ GND โ”€โ”€โ”€โ†’ GND ัˆะธะฝะฐ (ะžะ‘ะฉะะฏ)โ”‚
โ”‚    โ”œโ”€โ†’ ESP32 GND            โ”‚
โ”‚    โ”œโ”€โ†’ ะ”ั€ะฐะนะฒะตั€ GND          โ”‚
โ”‚    โ”œโ”€โ†’ ะ”ะฐั‚ั‡ะธะบะธ GND          โ”‚
โ”‚    โ””โ”€โ†’ ะกะตั€ะฒะพ GND            โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โš ๏ธ ะšะ ะ˜ะขะ˜ะงะะž: 
- ะ’ัะต GND ะดะพะปะถะฝั‹ ะฑั‹ั‚ัŒ ัะพะตะดะธะฝะตะฝั‹ ะฒะผะตัั‚ะต!
- ะกะตั€ะฒะพ ั‚ั€ะตะฑัƒัŽั‚ ะพั‚ะดะตะปัŒะฝั‹ะน ะธัั‚ะพั‡ะฝะธะบ ะฟะธั‚ะฐะฝะธั (5V ะผะพั‰ะฝั‹ะน!)
- ะ—ะฐั‰ะธั‰ะฐั‚ัŒ ัะธะณะฝะฐะปั‹ ัะตั€ะฒะพ ะพั‚ ะฟะพะผะตั… ะผะพั‚ะพั€ะพะฒ

๐ŸŽฏ ะŸะ›ะะขะ ะŸะžะ”ะšะ›ะฎะงะ•ะะ˜ะฏ (breadboard ั€ะฐัะบะปะฐะดะบะฐ)

I2C (GPIO 21, 22):
โ”Œโ”€ 3.3V โ”€ Pull-up 4.7K โ”€ GPIO 22 (SCL) โ”€ MPU6050 SCL
โ”œโ”€ 3.3V โ”€ Pull-up 4.7K โ”€ GPIO 21 (SDA) โ”€ MPU6050 SDA
โ”‚                                      โ””โ”€ VL53L0X SDA/SCL
โ””โ”€ GND โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ะžะฑะฐ ะดะฐั‚ั‡ะธะบะฐ GND

ะะ”ะฆ (Line Sensors):
GPIO 34 โ† Sensor1 (ADC1_CH6)
GPIO 35 โ† Sensor2 (ADC1_CH7)
GPIO 36 โ† Sensor3 (ADC1_CH0)
GPIO 39 โ† Sensor4 (ADC1_CH3)
GPIO 32 โ† Sensor5 (ADC1_CH4)

Motor Control:
GPIO 27 โ†’ ะ”ั€ะฐะนะฒะตั€ DIR1 โ†’ Motor1 DIR
GPIO 14 โ†’ ะ”ั€ะฐะนะฒะตั€ STEP1 โ†’ Motor1 STEP
GPIO 25 โ†’ ะ”ั€ะฐะนะฒะตั€ DIR2 โ†’ Motor2 DIR
GPIO 26 โ†’ ะ”ั€ะฐะนะฒะตั€ STEP2 โ†’ Motor2 STEP
GPIO 12 โ†’ ะ”ั€ะฐะนะฒะตั€ ENABLE

ะัƒะดะธะพ/ะ’ะธะทัƒะฐะปัŒะฝะพ:
GPIO 33 โ†’ Buzzer
GPIO 2 โ†’ WiFi LED

๐Ÿ“ ะŸะ ะ˜ะะฆะ˜ะŸะ˜ะะ›ะฌะะะฏ ะกะฅะ•ะœะ

                     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                     โ”‚       ESP32      โ”‚
                     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                              โ”‚
         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
         โ”‚                    โ”‚                     โ”‚
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚ Motors โ”‚         โ”‚ Sensors   โ”‚        โ”‚ WiFi/Web โ”‚
    โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚         โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚        โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚
    โ”‚ M1/M2  โ”‚         โ”‚ MPU6050   โ”‚        โ”‚ Interfaceโ”‚
    โ”‚ Driver โ”‚         โ”‚ VL53L0X   โ”‚        โ”‚ Browser  โ”‚
    โ”‚ 12V    โ”‚         โ”‚ LineSensorโ”‚        โ”‚ Joystick โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
         โ”‚                    โ”‚                     โ”‚
         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                              โ”‚
                         [Battery]

โœ… ะŸะ ะžะ’ะ•ะ ะšะ ะŸะžะ”ะšะ›ะฎะงะ•ะะ˜ะฏ

ะะฐ ัั‚ะพะปะต:
1. GPIO 21/22 (I2C) โ†’ ะดะฐั‚ั‡ะธะบะธ
   - SDA โ†’ GPIO 21 (MPU6050, VL53L0X)
   - SCL โ†’ GPIO 22 (MPU6050, VL53L0X)
   - 3.3V, GND

2. GPIO 34/35/36/39/32 (ADC) โ†’ ะดะฐั‚ั‡ะธะบ ะปะธะฝะธะธ
   - S1-S5 โ†’ GPIO 34/35/36/39/32
   - 5V, GND

3. GPIO 27/14/25/26/12 (Motor) โ†’ ะดั€ะฐะนะฒะตั€
   - DIR/STEP โ†’ GPIO 27/14/25/26
   - Enable โ†’ GPIO 12
   - GND, 12V

4. GPIO 13/33 (PWM) โ†’ ัะตั€ะฒะพะผะพั‚ะพั€ั‹ ะทะฐั…ะฒะฐั‚ะฐ
   - Servo Left  โ†’ GPIO 13
   - Servo Right โ†’ GPIO 33
   - GND, 5V (ะพั‚ะดะตะปัŒะฝั‹ะน ะธัั‚ะพั‡ะฝะธะบ!)

5. ะŸั€ะพะฒะตั€ะธั‚ัŒ:
   [ ] ะ’ัะต 3.3V ัะพะตะดะธะฝะตะฝั‹
   [ ] ะ’ัะต GND ัะพะตะดะธะฝะตะฝั‹ (ะžะ‘ะฉะะฏ ะทะตะผะปั!)
   [ ] MPU6050 + VL53L0X ะฝะฐ I2C (GPIO 21/22)
   [ ] I2C Pull-up ั€ะตะทะธัั‚ะพั€ั‹ (4.7K)
   [ ] ะ”ะฐั‚ั‡ะธะบ ะปะธะฝะธะธ ะฝะฐ GPIO 34/35/36/39/32
   [ ] ะœะพั‚ะพั€ั‹ ะฝะฐ GPIO 27/14/25/26/12
   [ ] ะกะตั€ะฒะพะผะพั‚ะพั€ั‹ ะฝะฐ GPIO 13 ะธ GPIO 33
   [ ] ะŸะธั‚ะฐะฝะธะต ัะตั€ะฒ ะพั‚ะดะตะปัŒะฝะพะต ะธ ะผะพั‰ะฝะพะต!
   [ ] ะŸะธั‚ะฐะฝะธะต ะผะพั‚ะพั€ะพะฒ 12V ะพั‚ะดะตะปัŒะฝะพะต

๐Ÿ” I2C PULL-UP ะ ะ•ะ—ะ˜ะกะขะžะ ะซ (ะ’ะะ–ะะž!)

ะ•ัะปะธ ะดะฐั‚ั‡ะธะบะธ ะฝะต ะพั‚ะฒะตั‡ะฐัŽั‚, ะดะพะฑะฐะฒะธั‚ัŒ:

GPIO 22 (SCL):
3.3V โ”€โ”€[4.7K]โ”€โ”€โ”ฌโ”€โ”€ GPIO 22
               โ”‚
            MPU6050 SCL
            VL53L0X SCL

GPIO 21 (SDA):
3.3V โ”€โ”€[4.7K]โ”€โ”€โ”ฌโ”€โ”€ GPIO 21
               โ”‚
            MPU6050 SDA
            VL53L0X SDA

ะ’ะตั€ัะธั ัั…ะตะผั‹: 1.0
ะŸะพัะปะตะดะฝะตะต ะพะฑะฝะพะฒะปะตะฝะธะต: 2026-06-07

About

Self-balancing robot on ESP32 with line tracking, obstacle avoidance, and web joystick control. Real-time PID control, WiFi enabled, fully documented with web interface.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors