โปรเจค หุ่นยนต์เดินตามเส้น NodeMCU V2



โปรเจค นี้จะเป็นการนำ  ESP8266 NodeMCU V2 ESP-12E  มาทำเป็น หุ่นยนต์เดินตามเส้น

NodeMCU V2 เป็นบอร์ดที่ใช้ ESP8266 เป็น CPU สำหรับประมวลผลโปรแกรมต่างๆ มีข้อดีกว่า Arduino ตรงที่ตัวมันมีขนาดเล็กกว่า มีพื้นที่เขียนโปรแกรมลงไปมากกว่า และสามารถเชื่อมต่อกับ WiFi ได้


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


1. 2WD Smart Car Robot Chassis Kits

2. NodeMCU V2 CP2102 Lua WIFI ESP8266 ESP-12E

3. Micro USB Cable Wire 1m for NodeMCU

4. Motor Drive Module L298N

5. Jumper (M2M) cable wire 40pcs 2.54mm 20cm Male to Male

6. Jumper (F2F) cable wire 40pcs 2.54mm 20cm Female to Female

7. Jumper (F2M) cable wire 40pcs 2.54mm 20cm Female to Male

8. สกรูหัวกลม+น็อตตัวเมีย ขนาด 3มม ยาว 12 มม.

9. 1 Channel KY-033 Track Sensor 2 ชิ้น



การจะใช้ NodeMCU ได้นั้น จำเป็นต้องติดตั้ง แพลตฟอร์ม ESP8266  เพื่อ ทำการติดต่อ ระหว่าง Arduino IDE กับ NodeMCU

ลิงค์ : ขั้นตอนการติดตั้ง แพลตฟอร์ม ESP8266


https://robotsiam.blogspot.com/2017/06/esp8266-platform-nodemcu.html


ลิงค์ : การใช้งาน NodeMCU V2 ESP8266 ESP-12E


https://robotsiam.blogspot.com/2017/06/nodemcu-lua-wifi-esp8266-esp-12e-module.html




ประกอบหุ่นยนต์


เริ่มต้นด้วยการ ประกอบ 2WD Smart Car Robot Chassis Kits



ภาพรวม การประกอบ รางถ่านแบบ 18650 และ เชื่อมต่อ Motor Drive Module L298N  เข้ากับ NodeMCU V2 ตามรูป




เริ่มด้วย ใช้ สกรูหัวกลม+น็อตตัวเมีย ยาว 12 มม. ยึด รางถ่านแบบ 18650 และ เชื่อมต่อ สายสีแดง ขั้วบวก เข้าที่ เพาเวอร์สวิตซ์สำหรับเปิดปิด (ON / OFF )


ใช้ สกรูหัวกลม+น็อตตัวเมีย ยาว 12 มม. ยึด Motor Drive Module L298N





ใช้ จั้มเปอร์ ผู้-ผู้ สีแดง ต่อจาก สวิทช์ อีกด้าน เข้า ไฟ+ Motor Drive  และ ใช้ จั้มเปอร์ ผู้-ผู้ สีดำ ต่อจากสายสีดำ ของรางถ่าน เข้า GND ของ Motor Drive 




ใช้ 
จั้มเปอร์ ผู้-ผู้ สีเขียว และ สีเหลือง ต่อจาก Motor Driver ไปยัง มอเตอร์ของหุ่นยนต์ ด้านขวา และ ใช้ จั้มเปอร์ ผู้-ผู้ สีน้ำเงิน และ สีม่วง ต่อจาก Motor Driver ไปยัง มอเตอร์ของหุ่นยนต์ ด้านซ้าย





การต่อมอเตอร์ ด้านล่างของหุ่นยนต์



ใช้ จั้มเปอร์ ผู้-เมีย  สีแดง ต่อจาก สวิทช์ เข้า ขา Vin ของ NodeMCU และ ใช้ จั้มเปอร์ ผู้-เมีย  สีดำ ต่อจาก สายสีดำของรางถ่าน เข้า ขา GND ของ NodeMCU



การใช้งาน Digital/Input ซึ่งการใช้งาน Digital I/O ของ ESP8266 นั้น สามารถใช้งานคำสั่ง digitalWrite, digitalRead ได้เช่นเดียวกับการใช้งาน Digital I/O ของ Arduino โดยกำหนดหมายเลขของ Pin เช่นตัวอย่าง Pin ที่  5 หรือจะกำหนดชื่อ Pin โดยอ้างตามชื่อ Pin บนบอร์ด NodeMCU  V2 เป็น D1 ก็ได้เช่นกัน


การต่อวงจร ระหว่าง  NodeMCU กับ Motor Driver

ใช้ จั้มเปอร์ เมีย-เมีย ในการเชื่อมต่อ


หมายเหตุ : ที่ Motor Drive Module L298N ถ้ามี Jumper อยู่ที่ขา ENA และ ENB ของ บอร์ด L298N  ให้ถอดออก


D1 <-> IN1
D3 <-> IN2
D2 <-> IN3
D4 <-> IN4
D5 <-> ENA
D6 <-> ENB




การ Upload โปรแกรม ทดสอบการทำงาน


เชื่อมต่อ สาย USB ระหว่าง คอมพิวเตอร์ กับ  NodeMCU 





1.ให้ตรวจสอบการติดตั้งไดร์เวอร์ ของ NodeMCU V2 



โดย 
คลิกขวา Computet -> Properties







คลิกที่ Device Manager




ที่ Ports (COM & LPT) จะพบ 
ไดร์เวอร์ ของ NodeMCU V2 ในตัวอย่างเป็น "COM12"


(ถ้าไม่พบให้ทำการติดตั้ง
ไดร์เวอร์ก่อน)





2.ทดสอบเบื้องต้น ว่าการหมุนของล้อถูกต้องหรือไม่ 



เปิดโปรแกรม Arduino (IDE) และ Upload โค้ดนี้ ไปยัง บอร์ด NodeMCU V2



// Motor A pins
int enableA = 12; // D6 - ENB
int pinA2 = 4; // D2 - IN3
int pinA1 = 2;  // D4 - IN4


//Motor B pins 
int enableB = 14; // D5 - ENA
int pinB2 = 5; // D1 - IN1
int pinB1 = 0; // D3 - IN2


//This lets you run the loop a single time for testing
boolean run = true;

void setup() {
  pinMode(enableA, OUTPUT);
  pinMode(pinA1, OUTPUT);
  pinMode(pinA2, OUTPUT);

  pinMode(enableB, OUTPUT);
  pinMode(pinB1, OUTPUT);
  pinMode(pinB2, OUTPUT);
}
void loop() {
  if (run) {
    for (int i = 0; i <= 500; i++) {
      delay(10);
    }

    enableMotors();
    //Go forward
    forward(400);
    coast(200);
    //Go backward
    backward(400);
    coast(200);
    //Turn left
    turnLeft(400);
    coast(200);
    //Turn right
    turnRight(400);
    coast(200);
    //This stops the loop
    run = false;
  }
}

//Define high-level H-bridge commands

void enableMotors()
{
  motorAOn();
  motorBOn();
}

void disableMotors()
{
  motorAOff();
  motorBOff();
}

void forward(int time)
{
  motorAForward();
  motorBForward();
  delay(time);
}

void backward(int time)
{
  motorABackward();
  motorBBackward();
  delay(time);
}

void turnLeft(int time)
{
  motorABackward();
  motorBForward();
  delay(time);
}

void turnRight(int time)
{
  motorAForward();
  motorBBackward();
  delay(time);
}

void coast(int time)
{
  motorACoast();
  motorBCoast();
  delay(time);
}

void brake(int time)
{
  motorABrake();
  motorBBrake();
  delay(time);
}
//Define low-level H-bridge commands

//enable motors
void motorAOn()
{
  digitalWrite(enableA, HIGH);
}

void motorBOn()
{
  digitalWrite(enableB, HIGH);
}

//disable motors
void motorAOff()
{
  digitalWrite(enableB, LOW);
}

void motorBOff()
{
  digitalWrite(enableA, LOW);
}

//motor A controls
void motorAForward()
{
  digitalWrite(pinA1, HIGH);
  digitalWrite(pinA2, LOW);
}

void motorABackward()
{
  digitalWrite(pinA1, LOW);
  digitalWrite(pinA2, HIGH);
}

//motor B controls
void motorBForward()
{
  digitalWrite(pinB1, HIGH);
  digitalWrite(pinB2, LOW);
}

void motorBBackward()
{
  digitalWrite(pinB1, LOW);
  digitalWrite(pinB2, HIGH);
}

//coasting and braking
void motorACoast()
{
  digitalWrite(pinA1, LOW);
  digitalWrite(pinA2, LOW);
}

void motorABrake()
{
  digitalWrite(pinA1, HIGH);
  digitalWrite(pinA2, HIGH);
}

void motorBCoast()
{
  digitalWrite(pinB1, LOW);
  digitalWrite(pinB2, LOW);
}

void motorBBrake()
{
  digitalWrite(pinB1, HIGH);
  digitalWrite(pinB2, HIGH);
}



เลือก Port ในตัวอย่างเป็น "COM12"




เลือก Board : NodeMCU 1.0 (ESP-12E Module)



Upload





ถ้ามีปัญหา Upload ไม่เข้า ขึ้น Error แสดงข้อความว่า ตามรูปภาพ 

warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed





ให้กดปุ่ม RST 1 ครั้ง และ กดปุ่ม  FLASH บนบอร์ด ของ NodeMCU  ค้างไว้ ในขณะที่ทำการอัพโหลดโปรแกรม





รอจนกระทั่ง Done uploading. 100%




ใส่ แบตเตอรี่ลิเธียม 18650 จำนวน 2 ก้อน ไปที่ รางถ่าน และ ตรวจสอบขั้วของแบตเตอรี่ ใส่ถุกต้องหรือไม่

ถ้าทุกอย่างถูกต้อง ทดลอง ยกลงวางที่พื้นแล้ว ทดสอบ  ปิดเปิด สวิทช์ไฟ Power  ถ้าทุกอย่างถูกต้อง ปรกติ รถจะเคลื่อนที่ไปข้างหน้า-ถอยหลัง แล้ว เลี้ยวซ้าย แล้ว เลี้ยวขวา


ถ้าหุ่นยนต์ เคลื่อนที่ปรกติ แสดงว่า หุ่นยนต์ของเราพร้อมทำงานแล้ว



(ถ้าต้องการทดสอบใหม่ ให้  ปิดเปิด สวิทช์ไฟใหม่)


ภาพรวมการต่อหุ่นยนต์ ทดสอบการทำงาน




การทำงานของ หุ่นยนต์เดินตามเส้น ESP8266


เซ็นเซอร์ตรวจสอบการสะท้อนแสงกลับมา ได้หรือไม่ แล้วส่งสัญญาณไปยัง ESP8266 แล้ว ESP8266 จึงไปสั่งให้มอเตอร์ทำงาน โดย Motor Drive Module L298N ให้เป็นไปตามการส่งค่ามาของเซ็นเซอร์





เซ็นเซอร์แบบนี้จะมีช่วงในการทำงาน หรือ ระยะในการตรวจจับจะได้ใกล้กว่าแบบ Opposed mode ซึ่งในสภาวะการทำงานปกติ พื้นเเป็นสีขาว ตัวรับ Receiver จะสามารถรับสัญญาณแสงจากตัวส่ง  Emitter ได้ตลอดเวลา เนื่องจากลำแสง สะท้อนกลับมาได้ จะแสดงค่า เป็น 0




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




โปรเจค หุ่นยนต์เดินตามเส้น ESP8266 NodeMCU V2 นี้ เราจะใช้ 2 เซ็นเซอร์อินฟราเรด คือด้านซ้ายและด้านขวา  โดย เมื่อเซ็นเซอร์ ทั้งด้านซ้ายและด้านขวา ตรวจสอบแล้วเป็นพื้นสีขาว ลำแสง สามารถสะท้อนกลับมาได้ทั้งคู่  ( 0 , 0 ) ให้หุ่นยนต์เคลื่อนที่ไปข้างหน้า






หากเซ็นเซอร์ซ้ายมาพบพื้นสีดำ  และ เซ็นเซอร์ขวาพบพื้นสีขาว ( 1 , 0 ) ให้หุ่นยนต์เลี้ยวไปทางด้านซ้าย




หากเซ็นเซอร์ขวามาพบพื้นสีดำ  และ เซ็นเซอร์ซ้ายพบพื้นสีขาว ( 0 , 1 ) ให้หุ่นยนต์เลี้ยวไปทางด้านขวา


หากเซ็นเซอร์ทั้งสองมาอยู่บนเส้นสีดำทั้งคู่ ( 1 , 1 ) ให้หุ่นยนต์หยุด





3.ประกอบ เซ็นเซอร์ ทั้ง 2 ตัว เข้ากับหุ่นยนต์




ทดสอบการทำงานของ เซ็นเซอร์ ทั้ง 2 ตัว โดย Upload โค้ดนี้ ไปยัง บอร์ด NodeMCU V2






ปรับค่าซ็นเซอร์ ทั้ง 2 ตัว


โดย... ถ้าอยู่ในพื้นที่สีขาว ให้ผลลัพธ์ที่ได้ L=0 ,  R=0

และ ถ้าอยู่ในพื้นที่เทปสีดำ ผลลัพธ์ที่ได้ ผลลัพธ์ที่ได้ L=1 ,  R=1


แสดงว่า เซ็นเซอร์ ทั้ง 2 ตัว นั้นพร้อมทำงานแล้ว



..



วีดีโอผลลัพธ์การทำงานของ โปรเจค หุ่นยนต์เดินตามเส้น ESP8266 NodeMCU V2


....


โปรเจค หุ่นยนต์ ESP8266 NodeMCU V2 ควบคุมด้วย แอพ Blynk



โปรเจค นี้จะเป็นการนำ  ESP8266 NodeMCU V2 ESP-12E  มาทำเป็น หุ่นยนต์ Robot car  และ ควบคุมด้วยแอพ Blynk ผ่าน WiFi

NodeMCU V2 เป็นบอร์ดที่ใช้ ESP8266 เป็น CPU สำหรับประมวลผลโปรแกรมต่างๆ มีข้อดีกว่า Arduino ตรงที่ตัวมันมีขนาดเล็กกว่า มีพื้นที่เขียนโปรแกรมลงไปมากกว่า และสามารถเชื่อมต่อกับ WiFi ได้


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


1. 2WD Smart Car Robot Chassis Kits

2. NodeMCU V2 CP2102 Lua WIFI ESP8266 ESP-12E

3. Micro USB Cable Wire 1m for NodeMCU

4. Motor Drive Module L298N

5. Jumper (M2M) cable wire 40pcs 2.54mm 20cm Male to Male

6. Jumper (F2F) cable wire 40pcs 2.54mm 20cm Female to Female

7. Jumper (F2M) cable wire 40pcs 10 cm 2.54mm Female to Male

8. สกรูหัวกลม+น็อตตัวเมีย ขนาด 3มม ยาว 12 มม.


การจะใช้ NodeMCU ได้นั้น จำเป็นต้องติดตั้ง แพลตฟอร์ม ESP8266  เพื่อ ทำการติดต่อ ระหว่าง Arduino IDE กับ NodeMCU

ลิงค์ : ขั้นตอนการติดตั้ง แพลตฟอร์ม ESP8266


https://robotsiam.blogspot.com/2017/06/esp8266-platform-nodemcu.html


ลิงค์ : การใช้งาน NodeMCU V2 ESP8266 ESP-12E


https://robotsiam.blogspot.com/2017/06/nodemcu-lua-wifi-esp8266-esp-12e-module.html




เริ่มต้นด้วยการ ประกอบ 2WD Smart Car Robot Chassis Kits



ภาพรวม การประกอบ รางถ่านแบบ 18650 และ เชื่อมต่อ Motor Drive Module L298N  เข้ากับ NodeMCU V2 ตามรูป




เริ่มด้วย ใช้ สกรูหัวกลม+น็อตตัวเมีย ยาว 12 มม. ยึด รางถ่านแบบ 18650 และ เชื่อมต่อ สายสีแดง ขั้วบวก เข้าที่ เพาเวอร์สวิตซ์สำหรับเปิดปิด (ON / OFF )


ใช้ สกรูหัวกลม+น็อตตัวเมีย ยาว 12 มม. ยึด Motor Drive Module L298N





ใช้ จั้มเปอร์ ผู้-ผู้ สีแดง ต่อจาก สวิทช์ อีกด้าน เข้า ไฟ+ Motor Drive  และ ใช้ จั้มเปอร์ ผู้-ผู้ สีดำ ต่อจากสายสีดำ ของรางถ่าน เข้า GND ของ Motor Drive 




ใช้ 
จั้มเปอร์ ผู้-ผู้ สีเขียว และ สีเหลือง ต่อจาก Motor Driver ไปยัง มอเตอร์ของหุ่นยนต์ ด้านขวา

ใช้ 
จั้มเปอร์ ผู้-ผู้ สีน้ำเงิน และ สีม่วง ต่อจาก Motor Driver ไปยัง มอเตอร์ของหุ่นยนต์ ด้านซ้าย





การต่อมอเตอร์ ด้านล่างของหุ่นยนต์






ใช้ จั้มเปอร์ ผู้-เมีย ยาว 10 ซม. สีแดง ต่อจาก สวิทช์ เข้า ขา Vin ของ NodeMCU



ใช้ จั้มเปอร์ ผู้-เมีย ยาว 10 ซม. สีดำ ต่อจาก สายสีดำของรางถ่าน เข้า ขา GND ของ NodeMCU





การใช้งาน Digital/Input ซึ่งการใช้งาน Digital I/O ของ ESP8266 นั้น สามารถใช้งานคำสั่ง digitalWrite, digitalRead ได้เช่นเดียวกับการใช้งาน Digital I/O ของ Arduino โดยกำหนดหมายเลขของ Pin เช่นตัวอย่าง Pin ที่  5 หรือจะกำหนดชื่อ Pin โดยอ้างตามชื่อ Pin บนบอร์ด NodeMCU  V2 เป็น D1 ก็ได้เช่นกัน


การต่อวงจร ระหว่าง  NodeMCU กับ Motor Driver
ใช้ จั้มเปอร์ เมีย-เมีย ในการเชื่อมต่อ



D1 <-> IN1

D3 <-> IN2

D2 <-> IN3

D4 <-> IN4






การสร้างแอพ Blynk สำหรับหุ่นยนต์ NodeMCU V2


Blynk Application เป็นโปรแกรมบนมือถือที่ทำให้เราสร้างหน้าต่างควบคุมหรือแสดงผลเชื่อมต่อกับพวกไมโครคอนโทรเลอร์(Ardunio, ESP8266, Raspberry Pi) ได้ง่ายๆ
 โดยไปที่ Play Store ค้นหา Blynk

ติดตั้ง เหมือน App ทั่วๆไป



เปิด Blynk Application ขึ้นมา

-> Create New Account







กรอก อีเมล และ พาสเวิด -> Sign Up




-> New Project





ตั้งชื่อ Project ในตัวอย่างชื่อ robot_car -> Create



โปรกรม จะส่ง Auth Toke ไปที่ อีเมล ที่เรากรอกไว้ -> OK


โดยทุกๆครั้งที่เริ่มสร้างโปรเจคใหม่ AUTH TOKEN จะถูกเปลี่ยนใหม่เสมอ ซึ่ง KEY นี้เองที่เป็นเสมือนกุญแจสำหรับเชื่อมต่อ


คลิก เครื่องหมาย +



คลิก เพิ่ม Button




จะมี ปุ่ม BUTTON เพิ่มเข้ามาที่หน้าจอ แล้วจึง คลิกที่ BUTTON เพื่อตั้งค่า



คลิก ที่ PIN


เลือก Virtual -> V0 -> CONTINUE


เปลี่ยนชื่อ Button เป็น FORWARD



ลาก Button ไว้กลางหน้าจอ


เพิ่ม Button อีก 3 ปุ่ม ตั้งค่า จัดวางตำแหน่ง ตามรูป

ปุ่ม BACK เลือก Virtual -> V1 -> CONTINUE
ปุ่ม RIGHT เลือก Virtual -> V2 -> CONTINUE
ปุ่ม LEFT เลือก Virtual -> V3 -> CONTINUE




การติดตั้ง ไลบรารี่ Blynk



ไปที่

http://www.blynk.cc/getting-started/

ดาวน์โหลด ไลบรารี่ Blynk




เปิด โปรแกรม 
Arduino IDE จากนั้นให้ทำการเพิ่ม ไลบรารี่ Blynk  ให้กับ Arduino (IDE) ของเรา
การเพิ่ม ไลบรารี่ Blynk ให้กับ Arduino (IDE) ของเรา ตามรูป





เลือกไฟล์ ไลบรารี่ blynk-library-0.4.8.ZIP ที่เรา ดาวน์โหลดมาอยู่ในคอมพิวเตอร์ของเรา จากนั้นคลิก Open โปรแกรม จะเพิ่ม ไลบรารี่ Blynk เข้าสู่ Arduino (IDE) ของเรา



เมื่อเพิ่มเสร็จแล้วตรวจสอบ จะพบ File -> Eamples -> Blynk 




แสดงว่า ไลบรารี่ Blynk ได้เพิ่มเข้าไป ที่ โปรแกรม Arduino IDE แล้ว



การ Upload โปรแกรม


เชื่อมต่อ สาย USB ระหว่าง คอมพิวเตอร์ กับ  NodeMCU 




ให้ตรวจสอบการติดตั้งไดร์เวอร์ ของ NodeMCU V2 



โดย 
คลิกขวา Computet -> Properties







คลิกที่ Device Manager




ที่ Ports (COM & LPT) จะพบ 
ไดร์เวอร์ ของ NodeMCU V2 ในตัวอย่างเป็น "COM12"


(ถ้าไม่พบให้ทำการติดตั้ง
ไดร์เวอร์ก่อน)





ก่อน Upload โปรแกรม 
มีค่าเฉพาะที่ต้องแก้ไข อยู่ 3 ค่าด้วยกันคือ




1.  char auth[] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";



เป็นค่าที่เราได้รับจาก  ที่ Blynk ส่ง อีเมล ให้เรา






ในตัวอย่างนี้แก้เป็น


char auth[] = "264b50a5284642c09eff8a0815cff21e";



2. 
char ssid[] = "MyWifi";

แก้เป็น ชื่อ WiFi ที่ต้องการเชื่อมต่อ


3. char pass[] = "MyWifiPassword";

แก้เป็น รหัสผ่าน ของWiFiที่ต้องการเชื่อมต่อ



แล้วจีง Upload โค้ดที่แก้ไขแล้ว ไปยัง บอร์ด 
NodeMCU V2



/**************************************************************
 * This example runs directly on NodeMCU chip
 * using the Blynk platform and mobile application.
 * Change WiFi ssid, password, and Blynk auth token to run :)
 **************************************************************/

#define BLYNK_PRINT Serial // Comment this out to disable prints and save space
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

#define RightMotorSpeed 5 // D1 <-> IN1
#define RightMotorDir 0  // D3 <-> IN2
#define LeftMotorSpeed 4  // D2 <-> IN3
#define LeftMotorDir 2  // D4 <-> IN4

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
char ssid[] = "MyWifi";
char pass[] = "MyWifiPassword";

void setup()
{
 Serial.begin(9600);
 Blynk.begin(auth, ssid, pass);

 pinMode(RightMotorSpeed, OUTPUT);
 pinMode(RightMotorDir, OUTPUT);
 pinMode(LeftMotorSpeed, OUTPUT);
 pinMode(LeftMotorDir, OUTPUT);
}

void loop()
{
 Blynk.run();
}

void halt()
{
 digitalWrite(RightMotorSpeed, LOW);
 digitalWrite(LeftMotorSpeed, LOW);
}

void forward()
{
 digitalWrite(RightMotorDir, HIGH);
 digitalWrite(LeftMotorDir, HIGH);
 digitalWrite(RightMotorSpeed, LOW);
 digitalWrite(LeftMotorSpeed, LOW);
}

void reverse()
{
 digitalWrite(RightMotorDir, LOW);
 digitalWrite(LeftMotorDir, LOW);
 digitalWrite(RightMotorSpeed, HIGH);
 digitalWrite(LeftMotorSpeed, HIGH);
}

void right()
{
 digitalWrite(RightMotorDir, LOW);
 digitalWrite(LeftMotorDir, HIGH);
 digitalWrite(RightMotorSpeed, HIGH);
 digitalWrite(LeftMotorSpeed, HIGH);
}

void left()
{
 digitalWrite(RightMotorDir, HIGH);
 digitalWrite(LeftMotorDir, LOW);
 digitalWrite(RightMotorSpeed, HIGH);
 digitalWrite(LeftMotorSpeed, HIGH);
}

BLYNK_WRITE(V0)
{
 if (param[0])
 forward();
 else
 halt();
}

BLYNK_WRITE(V1)
{
 if (param[0])
 reverse();
 else
 halt();
}

BLYNK_WRITE(V2)
{
 if (param[0])
 right();
 else
 halt();
}

BLYNK_WRITE(V3)
{
 if (param[0])
 left();
 else
 halt();
}



เลือก Port ในตัวอย่างเป็น "COM12"





เลือก Board : NodeMCU 1.0 (ESP-12E Module)





Upload





ถ้ามีปัญหา Upload ไม่เข้า ขึ้น Error แสดงข้อความว่า ตามรูปภาพ 

warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed




ให้กดปุ่ม RST 1 ครั้ง และ กดปุ่ม  FLASH บนบอร์ด ของ NodeMCU  ค้างไว้ ในขณะที่ทำการอัพโหลดโปรแกรม





รอจนกระทั่ง Done uploading. 100%





ภาพรวมการต่อหุ่นยนต์







กลับไปที่ Blynk Application คลิกที่ เครื่องหมาย สามเหลี่ยม เพื่อทดสอบการทำงาน



หน้าต่างควบคุม แอพ robot_car





วีดีโอผลลัพธ์การทำงานของ โปรเจค หุ่นยนต์  ESP8266 NodeMCU V2 ควบคุมด้วย แอพ Blynk