You are on page 1of 39

HỌC VIỆN HÀNG KHÔNG VIỆT NAM

KHOA ĐIỆN TỬ VIỄN THÔNG HÀNG KHÔNG

ĐỒ ÁN MÔN HỌC 2

ĐỀ TÀI : ĐIỀU KHIỄN ROBOT QUA INTERNET CÓ CHỨC


NĂNG TỰ HÀNH

Giảng viên hướng dẫn : Th.s Nguyễn Hữu Châu Minh

Sinh viên thực hiện : Phan Hồng Doanh

Mssv: 1953020071

Lớp: 19 ĐHĐT- 02

TP Hồ Chí Minh - 2022


LỜI CẢM ƠN

Em xin chân thành cảm ơn thầy Nguyễn Hữu Châu Minh đã giúp đỡ
em rất nhiều trong quá trình thực hiện đồ án này, Giúp e tích lũy được
nhiều kiến thức quý báu để ứng dụng nó vào những công việc trong
tương lai.

Em xin trân trọng cảm ơn!


LỜI CAM ĐOAN

Tôi cam đoan rằng đồ án môn học này là do chính tôi thực hiện, các
sô liệu thu thâp và kết quả phân tích trong báo cáo là trung thực, không
sao chép tư bất cứ đề tài nghiên cứu khoa học nào.

Ngày…….Tháng…….Năm 2022
Sinh viên thực hiện
(ký và ghi họ tên)
LỜI NÓI ĐẦU
Ngày nay, sự phát triển vượt bâc của khoa học đời sông , cuộc sông của con
người đã thay đổi một ngày tôt hơn, với những trang bị hiện đại phục vụ trong
công cuộc công nghiệp hóa hiện đại hóa. Để phục vụ trong công cuộc cải cách đó
thì vi xử lý là thành phần không thể thiếu .
Để ứng dụng các kiến thức đã học về vi xử lý thì trong đồ án môn học lần này
em đã “ thiết kế robot điều khiển qua internet có chức năng tự hành”. Với
nhiều ứng dụng trong thực tế ví dụ như giúp con người những công việc nguy
hiểm , khảo sát những địa hình nhỏ mà con người không thể vào được... . Với ưu
điểm điều khiển không hạn chế khoảng cách chỉ cần được kết nôi internet . Trong
quá trình thực hiện đồ án do thời gian hạn hẹp ,chưa có nhiều kinh nghiệm nên
không tránh khỏi có những sai sót. Em rất mong nhân được sự góp ý của thầy để
hoàn thiện đề tài hơn.

1
MỤC LỤC
CHƯƠNG 1. TỔNG QUAN .............................................................................. 4
1. Giới thiệu đề tài ...............................................................................................4
2. Mục đích đề tài ................................................................................................4
3. Sơ lược về các bước thực hiện ....................................................................... 4
CHƯƠNG 2. GIỚI THIỆU NODEMCU WIFI ESP8266 VÀ CÁC THÀNH
PHẦN MẠCH ..................................................................................................... 6
1. Kit NodeMCU WIFI ESP8266 ...................................................................... 6
1.1. Sơ lược về esp8266 ...................................................................................6
1.2. Thông số kỷ thuật .................................................................................... 6
1.3. Sơ đồ chân ................................................................................................ 7
1.4. Cách lập trình cho esp8266 .................................................................... 8
2. CÁC THÀNH PHẦN MẠCH ......................................................................11
2.1. Module L298N ....................................................................................... 11
2.1.1. Sơ lược về L298N ............................................................................. 11
2.1.2. Thông số kỷ thuật ............................................................................ 11
2.1.3. Cấu tạo của module L298N ............................................................ 11
2.1.4. Bảng trạng thái hoạt động .............................................................. 12
2.2. Cảm biến siêu âm HC SR04 ................................................................. 13
2.2.1. Sơ lược về HC SR04 ........................................................................ 13
2.2.2. Sơ đồ chân .........................................................................................13
2.2.3. Thông số kỷ thuật ............................................................................ 14
2.2.4. Hoạt động của cảm biến ..................................................................14
2.3. Động cơ servo SG90 .............................................................................. 15
2.3.1. Sơ lược về động cơ servo SG90 ...................................................... 15
2.3.2. Thông số kỷ thuật ............................................................................ 16
2.3.3. Sơ đồ chân .........................................................................................16
2.3.4. Lập trình cho động cơ servo ...........................................................16
2.4. Động cơ giảm tốc ................................................................................... 17
2.4.1. Thông số kỷ thuật ............................................................................ 17
2.5. Pin 18650 .................................................................................................17
2.5.1. Sơ lược về pin 18650 ........................................................................17
2.5.2. Thông số kỷ thuật ............................................................................ 18
2.6. Module mạch sạc pin 18650 tích hợp tăng áp .................................... 18
2.6.1. Thông số kỷ thuật ............................................................................ 18
CHƯƠNG 3. BLYNK .......................................................................................19
1. Sơ lược về BLYNK ....................................................................................... 19
2. Cách hoạt động của BLYNK .......................................................................19
3. Cách lập trình để BLYNK và ESP8266 có thể kết nối với nhau .............20
CHƯƠNG 4. LẬP TRÌNH ...............................................................................22
CHƯƠNG 5. LẮP RÁP MẠCH ......................................................................32
1. Mô tả hoạt động ............................................................................................ 32
2. Hình ảnh lắp ráp thực tế .............................................................................32
CHƯƠNG 6. KẾT LUẬN ................................................................................ 35
Tài Liệu Tham Khảo ........................................................................................ 36

2
MỤC LỤC HÌNH ẢNH

Hình 1.1 - NodeMCU wifi esp8266············································ 6


Hình 1.2 - Sơ đồ chân NodeMCU wifi esp8266····························· 7
Hình 1.3 ············································································ 9
Hình 1.4············································································· 9
Hình 1.5··········································································· 10
Hình 1.6··········································································· 10
Hình 1.7 - Module L298N······················································11
Hình 1.8 - Sơ đồ mạch L298N················································ 12
Hình 1.9 - Cảm biến siêu âm HC SR04····································· 13
Hình 2.0 - Động cơ servo SG90··············································· 15
Hình 2.1 - Động cơ giảm tốc ··················································17
Hình 2.2 - Pin 18650···························································· 17
Hình 2.3 - Mạch sạc tích hợp tăng áp······································· 18
Hình 2.4 - Giao diện BLYNK················································· 19
Hình 2.5 - Cấu hình Blynk···················································· 21
Hình 2.6 - Mặt trên····························································· 32
Hình 2.7 - Mặt trái······························································ 33
Hình 2.8 - Mặt phải ···························································· 33
Hình 2.9 - Mặt dưới·····························································34

3
CHƯƠNG 1. TỔNG QUAN

1. Giới thiệu đề tài

Trong đồ án 2 kỳ này tìm hiểu về vi xử lý cụ thể là arduino và cách lâp


trình cho nó qua phần mềm ARDUINO IDLE để ứng dụng cho một sô
nhu cầu của con người . Để đáp ứng yêu cầu đó em đã chọn đề tài “điều
khiển xe qua internet có chức năng tự hành”. Với đề tài này em sẽ sử
dụng esp8266 MCU WIFI và lâp trình trên phần mềm ARDUINO IDLE ,
với ưu điểm nhỏ gọn, hỗ trợ 2 UART , ADC lên tới 10bit... . cấu hình
BLYNK ngay trên app điện thoại và viết code để BLYNK có thể giao
tiếp đc với esp8266, tư đó có thể điều khiển động cơ chạy theo ý mình
trên app BLYNK và Dùng module điều khiển động cơ L298 để lấy tín
hiệu xuất ra tư vi xử lý để điều khiển động cơ , dùng pin 18650 để cấp
nguồn cho toàn mạch qua module boost áp tư 3,7v lên 12v.

2. Mục đích đề tài

Áp dụng những gì đã học về vi xử lý , mạch điện tử ... .Để thiết kế một


mô hình ứng dụng thực tế, tư đó có những kinh nghiệm làm việc với vi
xử lý ví dụ như những lỗi sai khi cấu hình cho vi xử lý , lâp trình ... .Và
những robot này rất phù hợp để sinh viên học tâp và nghiên cứu thêm về
ngành tự động hóa một cách cụ thể.

3. Sơ lược về các bước thực hiện

- Tìm hiều về NodeMCU WIFI esp8266 và cách lâp trình cho nó .

- Tìm hiểu về BLYNK , cách lâp trình để esp8266 có thể giao tiếp với nó.

- Tìm hiểu về động cơ servo sg90 và cảm biến siêu âm HC SR04.

- Tìm hiểu về mạch điều khiển động cơ L298N.

- Tìm hiểu về động cơ giảm tôc.


4
- Tìm hiểu về pin 18650 và mạch boost.

- Lắp ráp và lâp trình cho esp8266.

5
CHƯƠNG 2. GIỚI THIỆU NODEMCU WIFI ESP8266 VÀ CÁC
THÀNH PHẦN MẠCH

1. Kit NodeMCU WIFI ESP8266

Hình 1. 1- NodeMCU wifi esp8266

1.1. Sơ lược về esp8266

ESP8266 là một hệ thông trên chip (SoC), do công ty Espressif của Trung
Quôc sản xuất. Nó bao gồm bộ vi điều khiển Tensilica L106 32-bit (MCU)
và bộ thu phát Wi-Fi. Nó có 11 chân GPIO (Chân đầu vào / đầu ra đa
dụng) và một đầu vào analog, có nghĩa là bạn có thể lâp trình nó giông
như với Arduino hoặc vi điều khiển khác. Bản thân chip ESP8266 có 17
chân GPIO, nhưng 6 trong sô các chân này (6-11) được sử dụng để giao
tiếp với chip nhớ flash trên bo mạch. Ngoài ra nó có kết nôi Wi-Fi, vì vây
bạn có thể sử dụng nó để kết nôi với mạng Wi-Fi, kết nôi Internet, lưu trữ
máy chủ web với các trang web thực, để điện thoại thông minh của bạn
kết nôi với nó, ... Khả năng là vô tân! Không có gì lạ khi con chip này đã
trở thành thiết bị IoT phổ biến nhất.

1.2.Thông số kỷ thuật

 IC chính: ESP8266

 Phiên bản firmware: NodeMCU v1.0.

 Chip nạp và giao tiếp UART: CH340.

 GPIO tương thích hoàn toàn với firmware Node MCU.

6
 Cấp nguồn: 5VDC MicroUSB hoặc Vin.

 GIPO giao tiếp mức 3.3VDC

 Tích hợp Led báo trạng thái, nút Reset, Flash.

 Tương thích hoàn toàn với trình biên dịch Arduino.

 Kích thước: 25 x 50 mm.

 IO capability : UART, I2C, PWM, GPIO, 1 ADC.

 WiFi: 2.4 GHz hỗ trợ chuẩn hỗ trợ chuẩn 802.11 b/g/n

 Bộ nhớ Flash: 4MB

1.3. Sơ đồ chân

Hình 1. 2 - sơ đồ chân NodeMCU wifi esp8266

Chân GPIO Input Output Note

D0 GPIO16 Không gián đoạn Không hỗ trợ PWM Mức cao khi khởi
hoặc I2C động, sử dụng để
đánh thức khi ngủ sâu

D1 GPIO5 OK OK Thường được sử


dụng như SDA(I2C)

7
D2 GPIO4 OK OK Thường được sử
dụng như SDA(I2C)

D3 GPIO0 Kéo lên OK Kết nôi với nút


FLASH, khởi động
không thành công
kéo lên mức thấp

D4 GPIO2 Kéo lên OK Mức cao khởi động

Kết nôi với đèn LED


trên bo mạch , khởi
động không thành
công nếu kéo mức
thấp

D5 GPIO14 OK OK SPI(SCLK)

D6 GPIO12 OK OK SPI(MISO)

D7 GPIO13 OK OK SPI(MOSI)

D8 GPIO15 Kéo đến GND OK SPI(CS)

Khởi động không


thành công nếu kéo
mức thấp

RX GPIO3 OK Chân RX Mức cao khởi động

TX GPIO1 Chân TX OK Mức cao khởi động

A0 ADC0 Đầu vào analog X

1.4. Cách lập trình cho esp8266

Cũng tương tự như bên Arduino R3,Arduino Nano , esp8266 cũng sử


dụng chương trình ARDUINO IDE để lâp trình , tuy nhiên muôn lâp
trình cho esp8266 cần một sô thao tác sau:

8
B1. Mở cửa sô Preferences tư Arduino IDE . vào File --> Preferences.

Hình 1. 3

B2.Nhâp http://arduino.esp8266.com/stable/package_esp8266com_in
dex.json vào“Additional Board Manager URLs” như được hiển thị
trong hình bên dưới. Sau đó, nhấp vào nút “OK”:

Hình 1. 4
9
B3. Tiếp theo vào Tools > Board > Boards Manager…

Hình 1. 5

Sau khi chương trình tìm kiếm xong, bạn kéo xuông dưới và nhấp
vào ESP8266 by ESP8266 Community, click vào Install. Chờ phần
mềm tự động download và cài đặt trong vài giây.

Hình 1.6

Và để lâp trình được thì phải khai báo thư viện “#include
<ESP8266WiFi.h>” .

10
2. CÁC THÀNH PHẦN MẠCH

2.1. Module L298N

Hình 1.7 - Module L298N

2.1.1. Sơ lược về L298N

Module L298N là một mạch điều khiển động cơ một chiều DC cùng lúc.
L298 là IC điều khiển cầu kép toàn kỳ có dải điện áp hoạt động rộng, xử
lý dòng tải tôi đa 3A. bao gồm điện áp bão hòa thấp và có bảo vệ quá
nhiệt. Có cấu tạo tư hai mạch cầu transistor.

2.1.2. Thông số kỷ thuật

 Điện áp ở đầu vào : dao động tư 5-30V

 Điện áp tín hiệu điều khiển : 5- 7V

 Điện áp logic: low 0-3V dao động đến 1.5V; high: 2.3 đến VSS.

 Dòng điện tôi đa cho tưng động cơ 2A.

 Dòng yêu cầu của tín hiệu điều khiển tư 0- 36mA.

 Công suất: 1 cầu tương đương 25W.

 Kích thước 43x43x27mm.

2.1.3. Cấu tạo của module L298N

11
Hình 1.8 - sơ đồ mạch L298N

- Hai chân cấp nguồn trực tiếp đến động cơ là 12V power và 5V powe

- Power GND là GND của nguồn cấp cho động cơ.

- 2 chân Enable A và Enable B.

- Chân input gồm có : IN1, IN2, IN3, IN4.

- Chân output bao gồm : out1, out2, out3, out4.

2.1.4. Bảng trạng thái hoạt động

ENA ENB IN1 IN2 IN3 IN4 Trạng thái Trạng thái
motor1 motor2

1 1 0 1 0 1 Chạy cùng Chạy cùng


chiều kim đồng chiều kim đồng
hồ hồ

1 1 1 0 1 0 Chạy ngược Chạy ngược


chiều kim đồng chiều kim đồng
hồ hồ

12
1 1 0 0 0 0 Dưng Dưng

0 0 - - - - Dưng Dưng

2.2. Cảm biến siêu âm HC SR04

Hình 1.9 - Cảm biến siêu âm HC SR04

2.2.1. Sơ lược về HC SR04

HC-SR04 là cảm biến siêu âm chủ yếu được sử dụng để xác định khoảng
cách của đôi tượng mục tiêu. Nó đo khoảng cách chính xác bằng công
nghệ không tiếp xúc, tức là không có tiếp xúc vât lý giữa cảm biến và vât
thể. Bộ phát và bộ thu là hai bộ phân chính của cảm biến, bộ phát chuyển
đổi tín hiệu điện thành sóng siêu âm, còn bộ thu chuyển đổi tín hiệu siêu
âm đó trở lại thành tín hiệu điện. Các sóng siêu âm này là các tín hiệu âm
thanh có thể được đo và hiển thị ở đầu nhân. Nó cung cấp các chi tiết đo
lường chính xác và đi kèm với độ phân giải khoảng 3mm, có thể có sự
khác biệt nhỏ về khoảng cách tính toán tư đôi tượng và khoảng cách thực
tế.

2.2.2. Sơ đồ chân

Sô chân Tên chân Mô tả

1 VCC Chân Vcc cấp nguồn +5V cho cảm biến

13
2 TRIGGER Chân trigger là chân đầu vào. Chân này phải
được giữ ở mức cao trong 10us để khởi tạo phép
đo bằng cách gửi sóng siêu âm.

3 ECHO Chân Echo là chân đầu ra. Chân này tăng cao
trong một khoảng thời gian bằng với thời gian để
sóng siêu âm quay trở lại cảm biến.

4 GND Chân nôi đất

2.2.3. Thông số kỷ thuật

 Độ chính xác : 3mm

 Dòng điện hoạt động :<15mA

 Điện áp hoạt động : 5V

 Tần sô hoạt động 40hz

2.2.4. Hoạt động của cảm biến

Cấp nguồn cho cảm biến bằng cách sử dụng nguồn + 5V được điều chỉnh
thông qua các chân nôi đất và Vcc của cảm biến. Dòng điện được tiêu thụ
bởi cảm biến nhỏ hơn 15mA và do đó có thể được cấp nguồn trực tiếp
bằng các chân 5V trên bo mạch (nếu có). Các chân Trigger và Echo đều
là các chân I / O và do đó có thể được kết nôi với các chân I / O của vi
điều khiển. Để bắt đầu đo, chân trigger phải được đặt ở mức cao 10uS và
sau đó tắt. Hoạt động này sẽ kích hoạt một sóng siêu âm ở tần sô 40Hz tư
bộ phát và bộ thu sẽ đợi sóng quay trở lại. Khi sóng được trả lại sau khi
nó bị phản xạ bởi bất kỳ đôi tượng nào, chân Echo sẽ tăng cao trong một
khoảng thời gian cụ thể bằng với thời gian cần thiết để sóng quay trở lại
cảm biến.
14
Khoảng thời gian mà chân Echo vẫn ở mức cao được đo bởi vi xử lý hoặc
vi điều khiển vì nó cung cấp thông tin về thời gian cần thiết để sóng quay
trở lại cảm biến. Sử dụng thông tin này để tính khoảng cách được đo.

Công thức tính khoảng cách: khoảng cách = thời gian * tốc độ

Code đo khoảng cách trong Arduino IDE :

digitalWrite(trig, LOW);

delayMicroseconds(2);

digitalWrite(trig, HIGH);

delayMicroseconds(10);

digitalWrite(trig, LOW);

// Đo độ rộng xung HIGH ở chân echo.

thoigian = pulseIn(echo, HIGH);

khoangcach = thoigian / 2 / 29.412;

2.3. Động cơ servo SG90

Hình 2.0 - Động cơ servo SG90

2.3.1. Sơ lược về động cơ servo SG90

15
Động Cơ Servo SG90 là loại động cơ được dùng phổ biến trong các mô
hình điều khiển nhỏ và đơn giản như cánh tay robot. Động cơ có tôc độ
phản ứng nhanh, được tích hợp sẵn Driver điều khiển động cơ, dễ dàng
điều khiển góc quay bằng phương pháp điều độ rộng xung PWM.

2.3.2. Thông số kỷ thuật

 Điện áp hoạt động: 4.8-5Vdc

 Tôc độ 0:.12 sec/60deg(4.8VDC)

 Lực kéo: 1.6Kg.cm

 Kích thước: 21x12x22mm

 Trọng lượng 9g

 Độ rộng xung 0.5ms- 2.5ms tương ứng 0-180 độ

 Tần sô 50hz, chu kỳ 20ms.

2.3.3. Sơ đồ chân

 Dây đỏ : chân dương nguồn 5vdc.

 Dây nâu: chân âm nguồn.

 Dây cam: dây tín hiệu.

2.3.4. Lập trình cho động cơ servo

Khi lâp trình cho động cơ cần phải khai báo thư viện cho động cơ

#include<servo.h>

Servo myservo; // create servo object to control a servo

#define servosg90 D0 // khai báo chân nhận tín hiệu điều khiển

16
Myservo.write(90); // góc quay servo

2.4. Động cơ giảm tốc

Hình 2.1 - Động cơ giảm tôc

2.4.1. Thông số kỷ thuật

 Điện áp hoạt động: 3-9vdc.

 Dòng điện tiêu thụ: 110-140mA.

 Tỉ sô truyền: 1:120.

 50 vòng/1 phút tại 3vdc.

 83 vòng/1 phút tại 5vdc.

 Moment: 1.0kg.cm

 Đường kính: 65mm

2.5. Pin 18650

Hình 2.2 - Pin 18650


2.5.1. Sơ lược về pin 18650

17
Pin 18650 về bản chất là loại pin Lithium-ion, chúng ta có thể bắt gặp pin
li-ion trong nhiều hình dạng kích thước khác nhau, chúng là bước đột phá
cho các sản phẩm cầm tay như máy cắt, máy khoan, pin điện thoại....
Với ưu điểm nhỏ gọn, thời gian sử dụng lâu dài, có thể ghép thành điện
áp cao, và quan trọng nhất là an toàn với người dùng nên pin 18650 được
sử dụng vô cùng rộng rãi và phổ biến.
2.5.2. Thông số kỷ thuật

 Điện áp khi đầy: 3.7- 4.2v


 Điện áp khi yếu : 3v trở xuông
 Dung lượng pin 1500mAh
2.6. Module mạch sạc pin 18650 tích hợp tăng áp

Hình 2.3 - Mạch sạc tích hợp tăng áp


2.6.1. Thông số kỷ thuật

 Mạch sạc dùng cho pin li-ion 3.7-4.2v.


 Đầu sạc cổng micro USB.
 Dòng sạc tôi đa: 1A.
 Dòng xả tôi đa: 2A.
 Điện áp đầu vào:5-8vdc.
 Điện áp đầu ra tôi đa 25v.
 Trạng thái led đỏ đang sạc; led xanh : đầy pin.
 Dòng tĩnh khoảng 0.5mA.

18
CHƯƠNG 3. BLYNK

Hình 2.4 - Giao diện BLYNK


1. Sơ lược về BLYNK

BLYNK là một nên tảng với các ứng dụng IOS và android để điều khiển
Arduino, raspberry Pi và các ứng dụng tương tự qua internet. Nó là một
bảng điều khiển kỷ thuât sô nhờ đó có thể xây dựng giao diện đồ họa cho
dự án của mình bằng cách kéo và thả các Widget. BLYNK không bị ràng
buột với một sô bo hoặc shield cụ thể. Thay vào đó, nó hỗ trợ phần cứng
mà bạn lựa chọn. Cho dù Arduino của bạn được liên kết với internet qia
wifi, enthernet hoặc qua chip ESP8266, blynk giúp bạn online và sẵn
sàng cho IoT.
2. Cách hoạt động của BLYNK

Blynk được thiết kế cho IoT. Nó có thể điều khiển phần cứng tư xa, nó có
thể hiển thị dữ liệu cảm biến, nó có thể lưu trữ dữ liệu, trực quan hóa và
làm nhiều thứ hay ho khác.

Có ba thành phần chính trong nền tảng:

19
Ứng dụng Blynk - cho phép bạn tạo giao diện cho các dự án của mình
bằng cách sử dụng các widget khác nhau.

Blynk Server - chịu trách nhiệm về tất cả các giao tiếp giữa điện thoại
thông minh và phần cứng. Bạn có thể sử dụng Blynk Cloud hoặc chạy
cục bộ máy chủ Blynk riêng của mình. Nó là mã nguồn mở, có thể dễ
dàng xử lý hàng nghìn thiết bị và thâm chí có thể được khởi chạy trên
Raspberry Pi.

Thư viện Blynk - dành cho tất cả các nền tảng phần cứng phổ biến - cho
phép giao tiếp với máy chủ và xử lý tất cả các lệnh đến và lệnh đi. Mỗi
khi bạn nhấn một nút trong ứng dụng Blynk, thông điệp sẽ truyền đến
không gian của đám mây Blynk, và tìm đường đến phần cứng của bạn.

Những thứ cần cho kết nối:

- Phần cứng : Blynk hoạt động qua Internet. Điều này có nghĩa là phần
cứng bạn chọn phải có thể kết nôi với internet. Một sô bo, như Arduino
Uno sẽ cần Ethernet hoặc Wi-Fi Shield để giao tiếp, những bo khác đã
được hỗ trợ Internet: như ESP8266, Raspberri Pi với WiFi dongle,
Particle Photon hoặc SparkFun Blynk Board. Ngay cả khi bạn không có
shield, bạn có thể kết nôi nó qua USB với máy tính xách tay hoặc máy
tính để bàn. Điều thú vị là danh sách phần cứng hoạt động với Blynk rất
lớn và sẽ tiếp tục tăng lên.

- Phần mềm : app BLYNK trên điện thoại Android và IOS.

3. Cách lập trình để BLYNK và ESP8266 có thể kết nối với nhau

#define BLYNK_PRINT Serial

#define BLYNK_TEMPLATE_ID "TMPLa0XA3eT0"

20
#define BLYNK_DEVICE_NAME "dieukhienxebangblynk"

#define BLYNK_AUTH_TOKEN "MM0hNXvbii7VCQsZz13cU-


reTrlo8DQ4"

Đây là những data mà BLYNK sẽ cung cấp khi bạn tạo một project.

#include <BlynkSimpleEsp8266.h> // khai báo thư viện cho BLYNK

Blynk.run(); khởi chạy blynk trong hàm loop()

* trên đây là các câu lệnh phải có để blynk có thể kết nôi với ESP8266 để
điều khiển được.

Dưới đây là cấu hình Blynk hoàn chỉnh cho đề tài này

Hình 2.5 - Cấu hình Blynk

21
CHƯƠNG 4. LẬP TRÌNH

#define BLYNK_PRINT Serial

#define BLYNK_TEMPLATE_ID "TMPLBQTjKeYq"

#define BLYNK_DEVICE_NAME "drivecar"

#define BLYNK_AUTH_TOKEN "HciTK80j7ot4Ar-


SlZ5SjzVXaZcuj7Q0"

#include <ESP8266WiFi.h>

#include <BlynkSimpleEsp8266.h>

#include <Servo.h>

#define ENA D1

#define ENB D6

#define IN1 D2

#define IN2 D3

#define IN3 D4

#define IN4 D5

#define trig D7

#define echo D8

#define servosg90 D0

Servo myservo;

char auth[] = "HciTK80j7ot4Ar-SlZ5SjzVXaZcuj7Q0";

char ssid[] = "Doanh";

char pass[] = "11111111";

int x,y,v2,v4,v5,v3;

22
int tocdoxe = 100;

int gioihan = 20;//khoảng cách nhận biết vật

unsigned long thoigian;

int khoangcach=0;

int khoangcachtrai, khoangcachphai;

int button;

BlynkTimer timer;

void tien()

analogWrite(ENA, tocdoxe);

analogWrite(ENB, tocdoxe);

digitalWrite(IN1, LOW);

digitalWrite(IN2, HIGH);

digitalWrite(IN3, LOW);

digitalWrite(IN4, HIGH);

void lui()

analogWrite(ENA, tocdoxe);

analogWrite(ENB, tocdoxe);

digitalWrite(IN1, HIGH);

digitalWrite(IN2, LOW);

digitalWrite(IN3, HIGH);

23
digitalWrite(IN4, LOW);

void dung()

analogWrite(ENA, tocdoxe);

analogWrite(ENB, tocdoxe);

digitalWrite(IN1, LOW);

digitalWrite(IN2, LOW);

digitalWrite(IN3, LOW);

digitalWrite(IN4, LOW);

void rephai()

analogWrite(ENA, tocdoxe);

analogWrite(ENB, tocdoxe);

digitalWrite(IN1, LOW);

digitalWrite(IN2, LOW);

digitalWrite(IN3, LOW);

digitalWrite(IN4, HIGH);

void retrai()

analogWrite(ENA, tocdoxe);

24
analogWrite(ENB, tocdoxe);

digitalWrite(IN1, LOW);

digitalWrite(IN2, HIGH);

digitalWrite(IN3, LOW);

digitalWrite(IN4, LOW);

BLYNK_WRITE(V0) {

x = param.asInt();

BLYNK_WRITE(V1){

y = param.asInt();

BLYNK_WRITE(V2){

v2 = param.asInt();

BLYNK_WRITE(V4){

v4 = param.asInt();

BLYNK_WRITE(V5){

v5 = param.asInt();

BLYNK_WRITE(V3){

v3 = param.asInt();

25
}

void DKCAR()

if (v2==1) // tới

tien(); Serial.println("Đang tới");

else if (v5==1)// rẽ phải

rephai(); Serial.println("Đang rẽ phải");

else if (v4==1)// rẽ trái

retrai(); Serial.println("Đang rẽ trái");

else if (v3==1)// Lui

lui(); Serial.println("Đang lùi");

else{

dung();

26
Serial.println("Dừng");

void dokhoangcach()

digitalWrite(trig, LOW);

delayMicroseconds(2);

digitalWrite(trig, HIGH);

delayMicroseconds(10);

digitalWrite(trig, LOW);

// Đo độ rộng xung HIGH ở chân echo.

thoigian = pulseIn(echo, HIGH);

khoangcach = thoigian / 2 / 29.412;

Blynk.virtualWrite(V6, khoangcach);

void quaycbsangtrai()

myservo.write(0);

delay(1000);

dokhoangcach();

myservo.write(90);

delay(1000);

27
}

void quaycbsangphai()

myservo.write(180);

delay(1000);

dokhoangcach();

myservo.write(90);

delay(1000);

void AUTO(){

dokhoangcach();

Serial.println(khoangcach);

if (khoangcach > gioihan || khoangcach == 0)

tien();

Serial.println("Di toi");

else

dung();delay(300);

quaycbsangtrai();

dokhoangcach();

Serial.println(khoangcach);

28
khoangcachtrai = khoangcach;

quaycbsangphai();

dokhoangcach();

Serial.println(khoangcach);

khoangcachphai = khoangcach;

if (khoangcachphai < 15 && khoangcachtrai < 15) {

lui();delay(300);dung();delay(300);

Serial.println("Di lui");

else

if (khoangcachphai > khoangcachtrai)

{ lui();delay(300);dung();delay(300);

rephai();

Serial.println("Di sang phai");

delay(300);dung();delay(300);

if (khoangcachphai < khoangcachtrai)

{ lui();delay(300);dung();delay(300);

retrai();

Serial.println("Di sang trai");

delay(300);dung();delay(300);

29
}

void setup() {

Serial.begin(115200);

pinMode(ENA, OUTPUT);

pinMode(ENB, OUTPUT);

pinMode(IN1, OUTPUT);

pinMode(IN2, OUTPUT);

pinMode(IN3, OUTPUT);

pinMode(IN4, OUTPUT);

myservo.attach(servosg90);

pinMode(trig, OUTPUT);

pinMode(echo, INPUT);

Serial.begin(115200);

digitalWrite(ENA, LOW);

digitalWrite(ENB, LOW);

digitalWrite(IN1, LOW);

digitalWrite(IN2, LOW);

30
digitalWrite(IN3, LOW);

digitalWrite(IN4, LOW);

myservo.write(90);

delay(500);

Serial.begin(115200);

Blynk.begin(auth, ssid, pass);

void loop() {

// put your main code here, to run repeatedly:

if (x==1&&y==0){

DKCAR();

if (y==1&&x==0){

AUTO();

Blynk.run();

timer.run();

31
CHƯƠNG 5. LẮP RÁP MẠCH

1. Mô tả hoạt động của xe

- Khi nhấn nút CONTROL trên BLYNK lệnh điều khiển bằng tay sẵn
sàng hoạt động , khi nhấn các lệnh điều khiển tiến lùi trái phải thì
BLYNK sẽ gửi 1 tín hiệu tương ứng với lệnh đó về ESP8266 để xuất tín
hiệu ra cho mạch L298N điều khiển động cơ chạy.

- Khi nhấn nút AUTO trên BLYNK lệnh xe tự hành sẵn sàng cảm biến
siêu âm bắt đầu hoạt động để đo khoảng cách nếu khoảng cách lớn hơn
giới hạn cho trước thì xe tiến về trước , nếu khoảng cách nhỏ hơn giới
hạn thì xe dưng lại và servo bắt đầu quay sang trái đo khoảng cách và
quay sang phải đo khoảng cách nếu khoảng cách bên nào lớn hơn thì điều
khiển đi xe về hướng ấy , nếu cả 2 bên khoảng cách đều nhỏ hơn giới hạn
thì xe đi lùi và dưng lại để đo khoảng cách và lặp lại như vây.

2. Hình ảnh lắp ráp thực tế

Hình 2.6 - Mặt trên

32
Hình 2.7 - Mặt trái

Hình 2.8 - Mặt phải

33
Hình 2.9 - mặt dưới

34
CHƯƠNG 6. KẾT LUẬN

Ở phần điều khiển bằng tay thì xe chạy chính xác và gần như là di chuyển
tức thời khi điều khiển ,và một phần do tín hiệu wifi bị yếu có thể làm
lệnh điều khiển và hoạt động của xe bị delay.

Ở phần tự động di chuyển thì xe vẫn có thể tránh vât cản được tuy nhiên
hướng di chuyển của xe có phần chưa được mong muôn.

Qua đề tài đồ án kỳ này giúp em có thêm những hiểu biết thực tế về cách
lâp trình cho vi xử lý , cách điều khiển động cơ và hơn thế nữa là những
kiến thức sơ khai về ngành tự động hóa để giúp em có những kinh
nghiệm cho những công việc sau này.

Lời cuôi cùng em xin một lần nữa được cảm ơn thầy Nguyễn Hữu Châu
Minh đã hướng dẫn để em có hoàn thành tôt đề tài đồ án lần này.

35
Tài Liệu Tham Khảo

https://arduino.esp8266.vn/

https://arduinokit.vn/cai-dat-esp8266-voi-blynk/

http://arduino.vn/bai-viet/893-cach-dung-module-dieu-khien-dong-co-
l298n-cau-h-de-dieu-khien-dong-co-dc

http://arduino.vn/bai-viet/233-su-dung-cam-bien-khoang-cach-hc-sr04

https://dientutuonglai.com/dong-co-servo-sg90-goc-quay-180.html

https://nshopvn.com/blog/hieu-ro-ve-pin-18650/

https://www.youtube.com/watch?v=Vz4ZW9FrJ9E&list=PLe-
j2rpPeZ3_R-lkyo5MRZO08-dEZeNUe&index=1

36

You might also like