Professional Documents
Culture Documents
điều khiển xe qua BLYNK
điều khiển xe qua BLYNK
ĐỒ ÁN MÔN HỌC 2
Mssv: 1953020071
Lớp: 19 ĐHĐT- 02
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.
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
3
CHƯƠNG 1. TỔNG QUAN
- Tìm hiểu về BLYNK , cách lâp trình để esp8266 có thể giao tiếp với nó.
5
CHƯƠNG 2. GIỚI THIỆU NODEMCU WIFI ESP8266 VÀ CÁC
THÀNH PHẦN MẠCH
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
6
Cấp nguồn: 5VDC MicroUSB hoặc Vin.
1.3. Sơ đồ chân
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
7
D2 GPIO4 OK OK Thường được sử
dụng như SDA(I2C)
D5 GPIO14 OK OK SPI(SCLK)
D6 GPIO12 OK OK SPI(MISO)
D7 GPIO13 OK OK SPI(MOSI)
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
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.
Điện áp logic: low 0-3V dao động đến 1.5V; high: 2.3 đến VSS.
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
ENA ENB IN1 IN2 IN3 IN4 Trạng thái Trạng thái
motor1 motor2
12
1 1 0 0 0 0 Dưng Dưng
0 0 - - - - Dưng Dưng
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
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.
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 độ
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
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.
Trọng lượng 9g
2.3.3. Sơ đồ chân
Khi lâp trình cho động cơ cần phải khai báo thư viện cho động cơ
#include<servo.h>
#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
Tỉ sô truyền: 1:120.
Moment: 1.0kg.cm
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
18
CHƯƠNG 3. 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.
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.
- 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.
3. Cách lập trình để BLYNK và ESP8266 có thể kết nối với nhau
20
#define BLYNK_DEVICE_NAME "dieukhienxebangblynk"
Đây là những data mà BLYNK sẽ cung cấp khi bạn tạo một project.
* 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
21
CHƯƠNG 4. LẬP TRÌNH
#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;
int x,y,v2,v4,v5,v3;
22
int tocdoxe = 100;
int khoangcach=0;
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
else{
dung();
26
Serial.println("Dừng");
void dokhoangcach()
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
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);
tien();
Serial.println("Di toi");
else
dung();delay(300);
quaycbsangtrai();
dokhoangcach();
Serial.println(khoangcach);
28
khoangcachtrai = khoangcach;
quaycbsangphai();
dokhoangcach();
Serial.println(khoangcach);
khoangcachphai = khoangcach;
lui();delay(300);dung();delay(300);
Serial.println("Di lui");
else
{ lui();delay(300);dung();delay(300);
rephai();
delay(300);dung();delay(300);
{ lui();delay(300);dung();delay(300);
retrai();
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);
void loop() {
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
- 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.
32
Hình 2.7 - Mặt trá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