การต่อมอเตอร์ ด้านล่างของหุ่นยนต์
ยึด TTgo ESP32.
ใช้ จั้มเปอร์ ผู้-ผู้ สีส้ม ต่อจาก ไฟ+ ของ Motor Driver เข้า ขา 5V ของ ESP32
และ ใช้ จั้มเปอร์ ผู้-ผู้ สีดำ ต่อจาก GND ของ Motor Driver เข้า ขา GND ของ ESP32
ด้าน TTgo ESP32
ใช้ จั้มเปอร์ ผู้-เมีย ในการเชื่อมต่อ ระหว่าง Motor Driver กับ ESP32
Driver <-> ESP32
IN1 <-> 16
IN2 <-> 17
IN3 <-> 12
IN4 <-> 13
ด้าน Motor Driver
ด้าน ESP32
.
3. สร้างแอพ Blynk สำหรับควบคุมหุ่นยนต์ ESP32
ลิงค์การสร้างแอพ Blynk สำหรับควบคุมหุ่นยนต์ ESP32 ผ่าน WiFi
https://robotsiam.blogspot.com/2017/10/blynk-ttgo-esp32.html
4. การติดตั้ง ไลบรารี่ Blynk
ดาวน์โหลด ไลบรารี่ Blynk
คลิกที่ Clone or download
คลิกที่ Download ZIP
ไปที่ Skecth -> Include Library -> Add .ZIP Library...
ไปที่ ไลบรารี blynk-library-master.zip ที่เรา ดาวน์โหลด มา -> Open
ตรวจสอบที่ Skecth -> Include Library จะพบ ไลบรารี Blynk เพิ่มเข้ามาใน Arduino IDE ของเรา
5. การอัพโหลดโปรแกรม
ใช้สาย MicroUSB เชื่อมต่อระหว่าง คอมพิวเตอร์ กับ ESP32
เปิดโปรแกรม Arduino (IDE)
ก่อน Upload โปรแกรม มีค่าเฉพาะที่ต้องแก้ไข อยู่ 3 ค่าด้วยกันคือ
4.1. char auth[] = "blynk_key";
เป็นค่าที่เราได้รับจาก ที่ Blynk ส่ง อีเมล ให้เรา ในขั้นตอน สร้างแอพ Blynk สำหรับควบคุมหุ่นยนต์ ESP32
ในตัวอย่างนี้แก้เป็น
char auth[] = "bf9431e24b89442ead921bb8ca5de49c";
4.2. char ssid[] = "wifi_SSID";
แก้เป็น ชื่อ WiFi ที่ต้องการเชื่อมต่อ
4.3. char pass[] = "wifi_password";
แก้เป็น รหัสผ่าน ของWiFiที่ต้องการเชื่อมต่อ
แล้วจึง Upload โค้ดที่แก้ไขแล้ว ไปยัง บอร์ด TTgo ESP32
...
/*
*
* Blynk app controlled Robot with TTgo ESP32.
* For more details visit:
* https://robotsiam.blogspot.com/2017/10/ttgo-esp32-blynk.html
*
*/
#define BLYNK_PRINT Serial // Comment this out to disable prints and save space
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
//pins to drive motors
int MotorLeft[2] = {13,12};
int MotorRight[2] = {16,17};
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "blynk_key";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "wifi_SSID";
char pass[] = "wifi_password";
void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
MotorInit();
//Serial.print("*Explore Robo Mode Computer: Controlled*\n\r");
//Serial.println("Commands:\n W->Forward \n S->Backwards \n A->Left \n D->Right");
}
void loop()
{
Blynk.run();
}
//Intialize the motor
void MotorInit()
{
int i;
for (i = 0 ; i < 2; i++)
{
pinMode(MotorLeft[i], OUTPUT);
pinMode(MotorRight[i], OUTPUT);
}
}
//Robot Driving Functions
void Robot_Forward()
{
digitalWrite(MotorLeft[0], 0);
digitalWrite(MotorLeft[1], 1);
digitalWrite(MotorRight[0], 1);
digitalWrite(MotorRight[1], 0);
}
void Robot_Backward()
{
digitalWrite(MotorLeft[0], 1);
digitalWrite(MotorLeft[1], 0);
digitalWrite(MotorRight[0], 0);
digitalWrite(MotorRight[1], 1);
}
void Robot_Left()
{
digitalWrite(MotorLeft[0], 1);
digitalWrite(MotorLeft[1], 0);
digitalWrite(MotorRight[0], 1);
digitalWrite(MotorRight[1], 0);
}
void Robot_Right()
{
digitalWrite(MotorLeft[0], 0);
digitalWrite(MotorLeft[1], 1);
digitalWrite(MotorRight[0], 0);
digitalWrite(MotorRight[1], 1);
}
void Robot_Stop()
{
digitalWrite(MotorLeft[0], 0);
digitalWrite(MotorLeft[1], 0);
digitalWrite(MotorRight[0], 0);
digitalWrite(MotorRight[1], 0);
}
BLYNK_WRITE(V1)
{
int value = param.asInt(); // Get value as integer
// Serial.println("Going Forward");
if (value)
{
Robot_Forward();
}
}
BLYNK_WRITE(V2)
{
int value = param.asInt(); // Get value as integer
//Serial.println("Moving Left");
if (value)
{
Robot_Left();
delay(200);
Robot_Stop();
}
}
BLYNK_WRITE(V3)
{
int value = param.asInt(); // Get value as integer
// Serial.println("Going back");
if (value)
{
Robot_Backward();
}
}
BLYNK_WRITE(V4)
{
int value = param.asInt(); // Get value as integer
//Serial.println("Moving Right");
if (value)
{
Robot_Right();
delay(200);
Robot_Stop();
}
}
BLYNK_WRITE(V5)
{
int value = param.asInt(); // Get value as integer
// Serial.println("Braking!!");
if (value)
{
Robot_Stop();
}
}
โปรแกรมที่แก้ไขแล้ว
ไปที่ Tool > Port แล้วเลือกพอร์ตที่ปรากฏ (กรณีใช้เครื่องคอมพิวเตอร์ที่มี COM Port ให้เลือกตัวอื่นที่ไม่ใช่ COM1) ในตัวอย่างเลือกเป็น "COM8"
ไปที่ Tools > Board เลือก "ESP32 Dev Module"
กดปุ่ม
เพื่ออัพโหลด
หากสามารถอัพโหลดโปรแกรมลงบอร์ดได้สำเร็จ จะแสดงคำว่า Done uploading. ที่แถบด้านล่าง
ถ้ามีปัญหา Upload ไม่เข้า
ให้กดปุ่ม BOOT บนบอร์ด ของ ESP32 ค้างไว้สักครู่ ในขณะที่ทำการอัพโหลดโปรแกรม แล้วปล่อยเมื่อโปรแกรมเริ่มอัพโหลด
6. ทดสอบการทำงาน
ใส่ถ่าน แบบ 18650 จำนวน 2 ก้อน เข้าที่รางถ่าน
เปิดแอพ ควบคุมหุ่นยนต์ Blynk -> ESP32_Robot (ที่สร้างไว้ ในขั้นตอนที่3)
เลือกเครื่องหมายสามเหลี่ยม ขวามือ
ทดสอบควบคุม หุ่นยนต์ TTgo ESP32
วีดีโอผลลัพธ์การทำงานของ โปรเจค หุ่นยนต์ TTgo ESP32 ควบคุมด้วย แอพ Blynk