คอนโทรลมอเตอร์ผ่านแอพ 

บทความนี้จะสอนใช้งาน L298N Motor Drive Module ให้คอนโทรลมอเตอร์ DC 12V ให้มอเตอร์หมุนแบบตามเข็มนาฬิกา(CW) และแบบทวนเข็มนาฬิกา(CCW) โดยจะใช้บอร์ด ESP8266 ในการคอนโทรลเลอร์ และสั่งงานผ่านแอพ จะมีวิธีการทำอย่างไรกันนั้น ไปดูกันเลยครับ

 

L298N Motor Drive Module 

โมดูล L298N ขับมอเตอร์ได้ 2 ตัวแบบแยกอิสระ สามารถควบคุมความเร็วมอเตอร์ได้ ใช้ไฟ 5 โวลต์ เลี้ยงบอร์ดได้สามารถรับไฟเข้า 7-35 โวลต์ขับมอเตอร์ได้ มีวงจรเรกูเลตในตัว ขับกระแสสูงสุดได้ 2A

  • Double H bridge drive
  • แรงดันไฟฟ้า ในการสั่ง : 5V
  • ช่วงแรงดันไฟฟ้าของไดรฟ์ : 5V-35V
  • กระแสสัญญาณ : 0mA-36mA
  • กระแสในการขับเคลื่อนสูงสุด : 2A
  • ช่วงอุณหภูมิการทำงาน: – 20 ℃ ถึง + 135 ℃
  • กำลังไฟสูงสุด: 25W (จากช่วง PEAK ชั่วขณะของมอเตอร์)
  • สามารถขับ Stepping Motorได้
  • น้ำหนัก: 30g
  • ขนาด: 43×43×27 มม.

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

  1. บอร์ด ESP8266   สั่งซื้อ  →  คลิก
  2. Motor Drive Module L298N  สั่งซื้อ  →  คลิก

  3. มอเตอร์  DC Motor 895 12-24V  สั่งซื้อ  →  คลิก
  4. Switching Power Supply 12V 5A  สั่งซื้อ  →  คลิก

  5. สายจัมเปอร์ 40 Ways Female to Female และ Male-Female  สั่งซื้อ  →  คลิก

การต่อวงจร

L298N  ⇒  ESP8266

ENA   →   D1

IN1    →   D2

IN2   →    D3

IN3   →    D5

IN4   →    D6

ENB  →   D7

GND  →  GND

Motor DC ⇒  L298N

Motor A  →  OUT1(ขา+) & OUT2(ขา-)

Motor B  →  OUT3(ขา+) & OUT4(ขา-)

ไฟเลี้ยง 12V  ⇒  L298N

ขา+  →  +12V

ขา-   →  GND

ขั้นตอนการสร้างแอพคอนโทรลในแอพ

ในส่วนนี้ผมจะไม่อธิบายละเอียดมากนะครับ จะบอกแค่ในส่วนของ Widget ว่าใช้อะไรบ้าง และใช้ PIN ไหนในการสั่งงาน

Widget ทั้งหมดที่ใช้จะมีตามรูปนี้นะครับ

1. เมื่อ Login เข้าแอพเรียบร้อยแล้ว กด +New Project → เลือกบอร์ดเป็น ESP8266 → เลือกการเชื่อมต่อเป็น Wi-Fi

2. เลือก Widget LED มา 2 อัน ตั้งชื่อและใช้ PIN ดังรูป

3. เลือก Widget Button มา 4 อัน ตั้งชื่อและใช้ PIN ดังรูป

4. กดปุ่ม Play สามเหลี่ยมมุมบนขวามือไว้รอได้เลยครับ

ขั้นตอนใน Arduino IDE

โหลดและติดตั้ง Library ก่อนนะ

Blynk  →  ดาวน์โหลด 📥

*หมายเหตุ ใครติดตั้ง Library ไม่เป็นดูจากลิงค์นี้นะครับ  →   คลิก

ตัวอย่างโค้ด

#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

char auth[] = “MHChvPEZnMr6fSU7DRBHTOBvgo8tfNfm”;
char ssid[] = “AICS-AIS_2.4G”;
char pass[] = “Donita@99”;

int Motor_IN1 = D2;
int Motor_IN2 = D3;
int Motor_EN_A = D1;

int Motor_IN3 = D5;
int Motor_IN4 = D6;
int Motor_EN_B = D7;

WidgetLED led1(V2);
WidgetLED led2(V3);

void setup() {
Serial.begin(9600);

pinMode(Motor_IN1, OUTPUT);
pinMode(Motor_IN2, OUTPUT);
pinMode(Motor_EN_A, OUTPUT);

pinMode(Motor_IN3, OUTPUT);
pinMode(Motor_IN4, OUTPUT);
pinMode(Motor_EN_B, OUTPUT);
Blynk.begin(auth, ssid, pass);

}
void loop() {
Blynk.run();
}
BLYNK_WRITE(V0){
if (param.asInt() == 1) {
led1.on();
Serial.println(“Motor A”);
digitalWrite(Motor_IN1, 1);
digitalWrite(Motor_IN2, 0);
analogWrite(Motor_EN_A, 255);
}
else{
led1.off();
digitalWrite(Motor_IN1, 1);
digitalWrite(Motor_IN2, 0);
analogWrite(Motor_EN_A, 0);
}
}
BLYNK_WRITE(V1)
{
if (param.asInt() == 1) {
led2.on();
digitalWrite(Motor_IN3, 1);
digitalWrite(Motor_IN4, 0);
analogWrite(Motor_EN_B, 255);
}
else{
led2.off();
digitalWrite(Motor_IN3, 1);
digitalWrite(Motor_IN4, 0);
analogWrite(Motor_EN_B, 0);
}
}
BLYNK_WRITE(V4)
{
if (param.asInt() == 1) {
led1.on();
Serial.println(“Motor A”);
digitalWrite(Motor_IN1, 0);
digitalWrite(Motor_IN2, 1);
analogWrite(Motor_EN_A, 255);
}
else{
led1.off();
digitalWrite(Motor_IN1, 0);
digitalWrite(Motor_IN2, 1);
analogWrite(Motor_EN_A, 0);
}
}
BLYNK_WRITE(V5)
{
if (param.asInt() == 1) {
led2.on();
digitalWrite(Motor_IN3, 0);
digitalWrite(Motor_IN4, 1);
analogWrite(Motor_EN_B, 255);
}
else{
led2.off();
digitalWrite(Motor_IN3, 0);
digitalWrite(Motor_IN4, 1);
analogWrite(Motor_EN_B, 0);
}
}

เมื่ออัพโหลดโค้ดลงบอร์ดเรียบร้อยแล้วเมื่อทำการทดสอบจะได้ผลดังรูป

เพื่อนๆ น้องๆ สามารถนำไปประยุกต์ใช้กับงานโปเจคของเพื่อนๆ ได้นะครับ เช่น รถบังคับ, รถตัดหญ้าบังคับ, ฯลฯ ยังไงก็รอติดตามข้อมูลข่าวสาร ความรู้จากพวกเรา The Invention ด้วยนะครับ

Banner Content

0 Comments

Leave a Comment