Tải bản đầy đủ (.docx) (39 trang)

xe điều khiển kết hợp xử lý ảnh sử dụng esp32 cam

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.79 MB, 39 trang )

Xe điều khiển kết hợp xử lý ảnh

GVHD: TS. Nguyễn Ngọc Minh

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG
KHOA KĨ THUẬT ĐIỆN TỬ I
----- -----

BÁO CÁO ĐỒ ÁN
MÔN HỌC: ĐỒ ÁN THIẾT KẾ HỆ THỐNG NHÚNG
ĐỀ TÀI: XE ĐIỀU KHIỂN KẾT HỢP XỬ LÝ ẢNH
SỬ DỤNG ESP32-CAM

Giảng viên: Nguyễn Ngọc Minh

Hà Nội – 2022

1|Page


Xe điều khiển kết hợp xử lý ảnh

GVHD: TS. Nguyễn Ngọc Minh

LỜI MỞ ĐẦU
Ngày nay, sự phát triển mạnh mẽ của khoa học đời sống, cuộc sống của con người
đã thay đổi ngày một tốt hơn, với những trang thiết bị hiện đại phục vụ trong cơng cuộc
cơng nghiệp hóa, hiện đại hóa. Đặc biệt góp phần khơng nhỏ đó là ngành kĩ thuật điện –
điện tử trong sự nghiệp xây dựng đất nước. Những thiết bị điện, điện tử được phát triển và
ứng dụng rộng rãi trong đời sống hằng ngày. Từ những thời gian đầu phát triển vi xử lý đã
cho thấy sự ưu việt của nó và cho tới ngày nay tính ưu việt đó ngày càng được khẳng định


thêm. Những thành tựu của nó đã có thể biến được những cái tưởng chừng như không thể
thành những cái có thể, góp phần nâng cao đời sống vật chất và tinh thần cho con người.
Để góp phần làm sáng tỏ hiệu quả của những ứng dụng trong thực tế của môn vi xử lý,
sau một thời gian học tập được các thầy cô trong khoa giảng dạy về các kiến thức chuyên
ngành, đồng thời được sự giúp đỡ nhiệt tình của các thầy cơ trong khoa Điện-Điện tử,
cùng với sự nỗ lực của cả nhóm, nhóm em đã “XE ĐIỀU KHIỂN KẾT HỢP XỬ LÝ
ẢNH” nhưng do thời gian, kiến thức và kinh nghiệm của chúng em cịn có hạn nên sẽ
khơng thể tránh khỏi những sai sót. Chúng em rất mong được sự giúp đỡ và tham khảo ý
kiến của thầy cô và các bạn nhằm đóng góp phát triển thêm đề tài.

2|Page


Xe điều khiển kết hợp xử lý ảnh

GVHD: TS. Nguyễn Ngọc Minh

LỜI CẢM ƠN
Lời đầu tiên chúng em xin chân thành cảm ơn đến thầy Nguyễn Ngọc Minh đã giúp
chúng em rất nhiều trong quá trình thực hiện đồ án này. Trong quá trình thực hiện đồ án,
được sự giúp đỡ tận tình của thầy Nguyễn Ngọc Minh nhóm em đã thu được nhiều kiến
thức quý báu giúp nhóm em rất nhiều trong quá trình học và làm việc trong tương lai:
được tiếp xúc với ESP32-CAM, giao tiếp UDP, OPENCV…. Trong q trình thực hiện đồ
án do em chưa có nhiều kinh nghiệm nên khơng tránh khỏi sai sót. Mong nhận được sự
góp ý của thầy để hồn thiện hơn. Một lần nữa em xin chân thành cảm ơn sự giúp đỡ của
thầy giáo trong quá trình thực hiện đồ án để em hoàn thành đồ án này.

3|Page



Xe điều khiển kết hợp xử lý ảnh

GVHD: TS. Nguyễn Ngọc Minh

MỤC LỤC
BÁO CÁO ĐỒ ÁN................................................................................................................................................1
I.

GIỚI THIỆU ĐỀ TÀI.............................................................................................................................6
1.1

Giới thiệu về đề tài..........................................................................................................................6

1.2

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

1.3

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

II.

TỔNG QUAN VỀ ESP32-CAM........................................................................................................7

2.1

Giới thiệu về ESP32-CAM.............................................................................................................7

2.2


Các đặc điểm, tính năng của ESP32-CAM..................................................................................8

2.3

Các thơng số kỹ thuật.....................................................................................................................8

2.4

Sơ đồ chân và cách hoạt động........................................................................................................9

MicroSD card..............................................................................................................................................12
ESP32..........................................................................................................................................................12
OV2640 CAMERA.....................................................................................................................................13
ESP32..........................................................................................................................................................13
Variable name in code.................................................................................................................................13
III.

GIỚI THIỆU VỀ CÁC LINH KIỆN KHÁC.................................................................................13

3.1

Module điều khiển động cơ L298N.............................................................................................13

3.2

Động cơ servo MG90S..................................................................................................................14

3.3


Mạch chuyển USB UART TTL FT232RL.................................................................................16

IV.

V.

PHẦN MỀM......................................................................................................................................17

4.1

Arduino IDE..................................................................................................................................17

4.2

Arduino Websocket Client...........................................................................................................18

4.2.1

Giới thiệu...............................................................................................................................18

4.2.2

Ưu điểm và nhược điểm.......................................................................................................18

4.2.3

Xây dựng Websocket Client cho ESP32 với Arduino Core.............................................19

GIỚI THIỆU OPENCV VÀ CÁC THUẬT TỐN...........................................................................22
5.1


Thư viện OPENCV.......................................................................................................................22

5.2

Thuật tốn OBJECT DETECTION...........................................................................................23

5.3

Thuật tốn OBJECT TRAKING................................................................................................24

Single Obkect Tracking (SOT)....................................................................................................................24
5.4

Thuật toán PID..............................................................................................................................25

5.4.1

Sơ lược cấu trúc điều khiển.................................................................................................25

5.4.2

Thực hiện thuật toán điều khiển trên ESP32....................................................................26
4|Page


Xe điều khiển kết hợp xử lý ảnh
5.4.3
VI.


GVHD: TS. Nguyễn Ngọc Minh

Nguyên lý hoạt động.............................................................................................................27

HỆ ĐIỀU HÀNH VÀ LƯU ĐỒ THUẬT TỐN...........................................................................29

6.1

Hệ điều hành FreeRTOS..............................................................................................................29

6.2

Chương trình thử với động cơ l298n..........................................................................................30

VII.

THIẾT KẾ MƠ HÌNH VÀ SẢN PHẨM........................................................................................33

7.1

Sơ đồ khối.......................................................................................................................................33

7.2

Sản phẩm........................................................................................................................................34

VIII.

KẾT LUẬN VÀ TÀI LIỆU THAM KHẢO...............................................................................35


8.1

Kết quả của dự án.........................................................................................................................35

8.2

Hướng phát triển của dự án........................................................................................................36

8.3

Các kinh nghiệm và bài học rút ra.............................................................................................36

5|Page


Xe điều khiển kết hợp xử lý ảnh

GVHD: TS. Nguyễn Ngọc Minh

I. GIỚI THIỆU ĐỀ TÀI
I.1 Giới thiệu về đề tài
Ngày nay, robotic đã đạt được những thành tựu to lớn trong sản xuất công nghiệp
cũndg như trong đời sống. Sản xuất robot là nghành công nghiệp trị giá hang tỉ USD
và ngày càng phát triển mạnh, trong các họ robot chúng ta không thể không nhắc tới
mobile robot với những đặc thù riêng mà các loại robot khác không có. Mobile robot
có thể di chuyển một cách rất linh hoạt, do đó tạo nên khơng gian hoạt động lớn và
cho đến nay nó đã dần khẳng định vai trị quan trọng không thể thiếu trong nhiều lĩnh
vực, thu hút được rất nhiều sự đầu tư và nghiên cứu. Mobile robot cũng được chia ra
làm nhiều loại: robot học đường đi, robot dò đường line, robot tránh vật cản, robot tìm
đường cho mê cung,…trong số đó robot điều khiển kết hợp nhận diện ảnh sẽ dễ dàng

ứng dụng nhiều trong cuộc sống. Việc phát triển loại xe này sẽ phục vụ rất đắc lực cho
con người.
I.2 Mục đích đề tài
Xe điều khiển, nhận diện, dị line vừa có nhiều ứng dụng trong thực tế vừa dễ dàng
để sinh viên vận dụng những kiến thức tiếp thu được trên giảng đường vào nó. Với
những kết cấu cơ khí đơn giản nhưng lại có thể kết hợp được với khá nhiều thành phần
điện tử nên những xe này rất phù hợp để sinh viên học tập và nghiên cứu thêm về
ngành Điện tử một cách cụ thể.
I.3 Sơ lược về các bước thực hiện
Bước 1: Thảo luận và chọn đề tài, lên kế hoạch thực hiện.
Bước 2: Tìm hiểu về các linh kiện, đọc các tài liệu liên quan.
Bước 3: Kiểm thử và chạy mô phỏng
Bước 4: Sử dụng các phần mềm Arduino để code và nạp vào mạch mô phỏng để kiểm
tra khả năng hoạt động và sửa lỗi.
Bước 5: Thống kê các linh kiện, giá tiền, và chọn sản phẩm phù hợp với nhủ cầu và
tiến hành đi mua các linh kiện cần thiết.
Bước 6: Tiến hành lắp các linh kiện cần thiết và kiểm tra thử sản phẩm.
Bước 7: Làm báo cáo và thuyết trình về sản phẩm, phát triển thêm sản phẩm

6|Page


Xe điều khiển kết hợp xử lý ảnh

GVHD: TS. Nguyễn Ngọc Minh

II. TỔNG QUAN VỀ ESP32-CAM
II.1Giới thiệu về ESP32-CAM
- ESP32-CAM là một camera module tiêu thụ năng lượng thấp, kích thước nhỏ dựa
trên nền ESP32. Đi kèm với một camera OV2640 và tích hợp khe cắm thẻ TF trên

board mạch.

Hình 2.1: Module ESP32-CAM
-

ESP32-CAM là mô-đun phát video trực tuyến tiêu thụ điện năng thấp và độ trễ
thấp. Nó có một module camera cỡ nhỏ có thể hoạt động như một hệ thống độc lập
với kích thước chỉ 27×40.5×4.5mm và dịng tiêu thụ ở chế độ deep sleep chỉ có 6
mA.

-

ESP32-CAM có kiểu chân DIP-16 hai hàng, có thể dễ dàng lắp đặt trên bread
board hay là tích hợp lên bo mạch sản phẩm một cách chắc chắn và có tính tuỳ
biến cao trong mọi ứng dụng IoT.

-

Các ứng dụng của bo mạch trong IoTs như: Camera IP, nhận dạng khuôn mặt, nhận
dạng màu sắc, nhận dạng hình dạng sản phẩm, nhận diện đồ vật.

7|Page


Xe điều khiển kết hợp xử lý ảnh

GVHD: TS. Nguyễn Ngọc Minh

II.2Các đặc điểm, tính năng của ESP32-CAM
- Tích hợp module ESP32-S trên board mạch, hỗ trợ WiFi + Bluetooth.

- Camera OV2640 có đèn flash.
- Khe cắm thẻ TF trên board mạch, hỗ trợ thẻ nhớ TF lên đến 4G để lưu trữ dữ liệu.
- Hỗ trợ WiFi video monitoring and WiFi image upload.
- Hỗ trợ multi sleep modes, dòng sleep sâu thấp tới 6mA.
- Giao diện điều khiển có thể truy cập thơng qua pinheader, dễ dàng tích hợp và
nhúng vào các sản phẩm của người dùng.
II.3Các thông số kỹ thuật
- Module WIFI: ESP-32S.
- Bộ xử lý: ESP32-D0WD.
- Flash tích hợp: 32Mbit.
- RAM: 512KB bên trong + PSRAM 4M bên ngoài.
- Antenna: Antenna PCB trên board.
- Giao thức WiFi: IEEE 802.11 b / g / n / e / i.
-

Bluetooth: Bluetooth 4.2 BR / EDR và BLE.

-

Chế độ WIFI: Station / SoftAP / SoftAP+Station.

-

Bảo mật: WPA / WPA2 / WPA2-Enterprise / WPS.
Định dạng hình ảnh đầu ra: JPEG (chỉ hỗ trợ OV2640), BMP, GRAYSCALE.
Thẻ TF được hỗ trợ: tối đa 4G.
Giao diện ngoại vi: UART / SPI / I2C / PWM.
Cổng IO: 9
Tốc độ truyền của UART: mặc định 115200bps.
Nguồn điện: 5V.

Transmitting power:
o 802.11b: 17 ± 2dBm (@ 11Mbps)

-

o 802.11g: 14 ± 2dBm (@ 54Mbps)
o 802.11n: 13 ± 2dBm (@ HT20, MCS7)
Nhận được sự nhạy cảm:
o CCK, 1Mb / giây: -90 dBm
o CCK, 11Mb / giây: -85 dBm
o 6Mb / giây (1/2 BPSK): -88 dBm
o 54Mbps (3/4 64-QAM): -70 dBm

8|Page


Xe điều khiển kết hợp xử lý ảnh

GVHD: TS. Nguyễn Ngọc Minh

-

Power consumption:
o Flash off: 180mA @ 5V
o Flash on and brightness max: 310mA @ 5V
o Deep-Sleep: thấp tới 6mA @ 5V
o Modern-Sleep: thấp tới 20mA @ 5V
o Light-Sleep: thấp tới 6,7mA@5V
- Nhiệt độ hoạt động: -20oC ~ 85oC
- Môi trường bảo quản: -40oC ~ 90oC, <90% rh

- Kích thước: 40,5mm x 27mm x 4,5mm
II.4Sơ đồ chân và cách hoạt động
Sơ đồ chân của ESP32-CAM được thể hiện qua hình dưới đây:

Hình 2.4: Sơ đồ chân ESP32-CAM
Chân nguồn (power in)
 ESP32-CAM có 3 chân GND (màu đen trong sơ đồ chân), 1 chân 3.3V và 1 chân 5V
(màu đỏ trong sơ đồ chân).
 ESP32-CAM có thể hoạt động ở cả 3.3V và 5V, tuy nhiên với nguồn 3.3V, ESP32CAM có thể sẽ hoạt động không ổn định, chúng ta nên dùng nguồn 5V để đảm bảo
ESP32-CAM hoạt động ổn định.
 Trên sơ đồ chân bạn có thể thấy 1 chân màu vàng 3.3/5V, trên ESP32-CAM chân này
được kí hiệu là VCC. Chúng ta không nên sử dụng chân này để cấp nguồn cho ESP329|Page


Xe điều khiển kết hợp xử lý ảnh

GVHD: TS. Nguyễn Ngọc Minh

CAM. Đây là chân nguồn output, không sử dụng để cấp nguồn. Điện áp ở chân này có
thể là 3.3V hoặc 5V.
 Để ý trên board ESP32-CAM, bạn sẽ thấy bên cạnh chân VCC có kí hiệu 2 mức điện
áp của chân VCC. Ứng với mỗi mức có 2 pad hàn điện trở 0Ω (đóng vai trị như
jumper). Jumper nối ở mức điện áp nào thì điện áp ngõ ra của chân VCC bằng mức
đó.

Chân Serial
 GPIO 1 và GPIO 3 là 2 chân serial của ESP32-CAM (GPIO 1 đóng vai trị là TX,
GPIO 3 là RX). ESP32-CAM khơng được tích hợp sẵn mạch giao tiếp serial với máy
tính, cần dùng 2 chân serial giao tiếp với một mạch giao tiếp serial trung gian mới có
thể nạp chương trình từ máy tính.

 Bạn vẫn có thể sử dụng GPIO 1 và GPIO 3 để kết nối với các module ngoại vi sau khi
nạp chương trình xong. Trong trường hợp đó, bạn sẽ khơng thể mở Serial Monitor để
xem các thơng tin mà chương trình in ra hoặc debug qua serial monitor.

10 | P a g e


Xe điều khiển kết hợp xử lý ảnh

GVHD: TS. Nguyễn Ngọc Minh

GPIO 0
 GPIO 0 được nối với một điện trở kéo lên, có chức năng chọn chế độ hoạt động cho
ESP32-CAM.
 Khi điện áp GPIO 0 ở mức 0, ESP32-CAM sẽ hoạt động ở chế độ flash, chúng ta nạp
chương trình cho ESP32-CAM ở chế độ này. Khi điện áp chân này ở mức 1, ESP32CAM sẽ thoát khỏi chế độ flash.
 Khi cần nạp chương trình cho ESP32, ta kết nối GPIO 0 với chân GND, và ngắt kết
nối giữa GPIO 0 với GND khi cần ESP32-CAM hoạt động bình thường. Mỗi lần kết
nối hoặc ngắt kết nối giữa GPIO 0 và GND cần nhấn nút RST trên board để ESP32CAM cập nhật lại chế độ hoạt động.
GPIO 16
 GPIO 16 mặc định là chân có chức năng UART. Tuy nhiên bạn cũng có thể sử dụng
GPIO 16 với chức năng là digital input, GPIO 16 được kết nối với điện trở nội kéo lên
nên trạng thái mặc định của chân này là mức 1
GPIO 16 không được tích hợp bộ chuyển đổi ADC, nên khơng thể sử dụng cho chức
năng analog input, chân này cũng không phải chan RTC, nên không thể sử dụng cho chức
năng timer waker up.
GPIO 33

11 | P a g e



Xe điều khiển kết hợp xử lý ảnh

GVHD: TS. Nguyễn Ngọc Minh

 Ở gần nút RST, có 1 đèn LED đỏ được tích hợp sẵn trên board. LED này được kết nối
với GPIO 33. Đèn LED này hoạt động theo logic đảo, khi điều khiển GPIO 33 ở mức
LOW, đèn LED này sẽ sáng và ngược lại.
Flashlight (GPIO 4)
 ESP32-CAM có 1 đèn LED kết nối với GPIO 4, có thể hoạt động như đèn flash khi
chụp hình. Tuy nhiên GPIO 4 cũng là chân kết nối với thẻ nhớ nên đèn LED có thể sẽ
sáng trong lúc chúng ta sử dụng thẻ nhớ.
Kết nối thẻ nhớ MicroSD
ESP32-S kết nối với thẻ nhớ microSD qua khe cắm thẻ nhớ theo bảng kết nối dưới đây:

MicroSD card

ESP32

CLK

GPIO 14

CMD

GPIO 15

DATA0

GPIO 2


DATA1 / flashlight

GPIO 4

DATA2

GPIO 12

DATA3

GPIO 13

 Nếu không sử dụng thẻ nhớ, bạn có thể sử các GPIO 2, 4, 12, 13, 14, 15 với chức năng
input/output, các chân này đều được tích hợp bộ chuyển đổi ADC và là chân RTC.

Kết nối Camera
ESP32-S kết nối với camera theo bảng kết nối dưới đây:

12 | P a g e


Xe điều khiển kết hợp xử lý ảnh

GVHD: TS. Nguyễn Ngọc Minh

OV2640 CAMERA

ESP32


Variable name in code

D0

GPIO 5

Y2_GPIO_NUM

D1

GPIO 18

Y3_GPIO_NUM

D2

GPIO 19

Y4_GPIO_NUM

D3

GPIO 21

Y5_GPIO_NUM

D4

GPIO 36


Y6_GPIO_NUM

D5

GPIO 39

Y7_GPIO_NUM

D6

GPIO 34

Y8_GPIO_NUM

D7

GPIO 35

Y9_GPIO_NUM

XCLK

GPIO 0

XCLK_GPIO_NUM

PCLK

GPIO 22


PCLK_GPIO_NUM

VSYNC

GPIO 25

VSYNC_GPIO_NUM

HREF

GPIO 23

HREF_GPIO_NUM

SDA

GPIO 26

SIOD_GPIO_NUM

SCL

GPIO 27

SIOC_GPIO_NUM

POWER PIN

GPIO 32


PWDN_GPIO_NUM

III. GIỚI THIỆU VỀ CÁC LINH KIỆN KHÁC
III.1
Module điều khiển động cơ L298N
Thơng số kỹ thuật:
 Driver: L298N tích hợp hai mạch cầu H.
 Điện áp điều khiển: +5 V ~ +12 V
 Dòng tối đa cho mỗi cầu H là: 2A (=>2A cho mỗi motor)
 Điện áp của tín hiệu điều khiển: +5 V ~ +7 V
 Dịng của tín hiệu điều khiển: 0 ~ 36mA (Arduino có thể chơi đến 40mA nên khỏe
re nhé các bạn)
13 | P a g e


Xe điều khiển kết hợp xử lý ảnh

GVHD: TS. Nguyễn Ngọc Minh

 Cơng suất hao phí: 20W (khi nhiệt độ T = 75 ℃)
 Nhiệt độ bảo quản: -25 ℃ ~ +130 ℃

L289N gồm các chân:
 12V power, 5V power. Đây là 2 chân cấp nguồn trực tiếp đến động cơ.
 Bạn có thể cấp nguồn 9-12V ở 12V
 Bên cạnh đó có jumper 5V, nếu bạn để như hình ở trên thì sẽ có
nguồn 5V ra ở cổng 5V power, ngược lại thì khơng. Nếu để như hình
thì ta chỉ cần cấp nguồn 12V vô ở 12V power là có 5V ở 5V power,
từ đó cấp cho Arduino .
 Power GND chân này là GND của nguồn cấp cho Động cơ.

 2 Jump A enable và B enable.
14 | P a g e


Xe điều khiển kết hợp xử lý ảnh

GVHD: TS. Nguyễn Ngọc Minh

 Gồm có 4 chân Input. IN1, IN2, IN3, IN4
 Output A,B: nối với động cơ. Board này gồm 2 phần điều khiển động cơ. Và
có thể điều khiển cho 1 động cơ bước 6 dây hoặc 4 dây.

III.2

Động cơ servo MG90S

 Động cơ RC Servo MG90S là phiên bản nâng cấp của động cơ RC Servo 9G với các
bánh răng được làm bằng kim loại cho lực khéo khỏe và độ bền cao, động cơ có kích
thước nhỏ gọn, cách điều khiển giống như các động cơ RC Servo phổ biến trên thị
trường hiện nay: MG996, MG995, 9G,...Phù hợp cho nhiều ứng dụng khác nhau:
Robot cánh tay máy, robot nhện, cơ cấu chuyển hướng, cơ cấu quay góc,...
Thơng số kỹ thuật:
 Model: MG90S servo
 Điện áp hoạt động: 4.8 ~ 6VDC
 Stall Torque: 1.8kg/cm(4.8V ),2.2kg/cm(6V)
 Operating Speed: 0.1sec/60degree(4.8v), 0.08sec/60degree(6v
 Bánh răng: Kim loại.
 Độ dài dây nối: 175mm
 Trọng lượng: 13.4g
 Kích thước: 22.8 x 12.2 x 28.5mm

15 | P a g e


Xe điều khiển kết hợp xử lý ảnh

III.3

GVHD: TS. Nguyễn Ngọc Minh

Mạch chuyển USB UART TTL FT232RL

Thông số kĩ thuật:

IC chính: FT232RL chính hãng FTDI

Nguồn cấp: 5VDC từ cổng USB (cổng mini USB)

Có ngõ ra nguồn có thể điều chỉnh 3V3 hoặc 5VDC

Chuyển giao tiếp từ USB sang UART TTL

Drive hỗ trợ Windows Mac, Linux

Có cầu chì tự phục hồi: 500mA

Tốc độ Baudrate: tùy chỉnh

Kích thước PCB: 36 x 18.5mm

Trọng lượng: 3g

Sơ đồ chân chân ra của Mạch chuyển USB UART TTL FT232RL






DTR: Data terminal ready control output / Handshake signal. (có thể reset arduino
khi nạp chương trình)
RXD: Receive asynchronous data Input – nhận tín hiệu
TXD: Transmit asynchronous data output – truyền tín hiệu
VCC: Chân nguồn cấp, có thể chọn 5V hoặc 3.3VDC thông qua Jumper
CTS: Clear to send control input / handshake signal (không sử dụng)

Mạch chuyển USB UART TTL FT232RL
16 | P a g e


Xe điều khiển kết hợp xử lý ảnh

GVHD: TS. Nguyễn Ngọc Minh

17 | P a g e


Xe điều khiển kết hợp xử lý ảnh

IV.

GVHD: TS. Nguyễn Ngọc Minh


PHẦN MỀM

IV.1

Arduino IDE

Cài đặt phần mềm Arduino IDE
H

ình 4.1 Arduino IDE 1.8.3

-

Sau khi cài đặt xong, ta cần cài thư viện

-

ESP32-CAM khơng được tích hợp sẵn mạch giao tiếp serial với máy tính nên cần
một mạch giao tiếp serial trung gian để kết nối với máy tính. Ở đây, em dùng đế
nạp để nạp code.

18 | P a g e


Xe điều khiển kết hợp xử lý ảnh

GVHD: TS. Nguyễn Ngọc Minh

IV.2

Arduino Websocket Client
IV.2.1 Giới thiệu
-

Ngày nay Websocket được ứng dụng rất nhiều trong các dự án cần giao tiếp với
máy chủ, đặc biệt trong lĩnh vực IoT thì nó càng quan trọng ngang với các chuẩn
giao tiếp khác như MQTT, LWM2M, CoAP,…

-

WebSoket là công nghệ hỗ trợ giao tiếp hai chiều giữa client và server bằng cách
sử dụng một TCP socket để tạo một kết nối hiệu quả và ít tốn kém. Mặc dù được
thiết kế để chuyên sử dụng cho các ứng dụng web, lập trình viên vẫn có thể đưa
chúng vào bất kì loại ứng dụng nào.

IV.2.2 Ưu điểm và nhược điểm
Ưu điểm:
-

WebSockets cung cấp khả năng giao tiếp hai chiều mạnh mẽ, có độ trễ thấp và dễ
xử lý lỗi. Khơng cần phải có nhiều kết nối như phương pháp Comet long-polling
và cũng khơng có những nhược điểm như Comet streaming.

-

API cũng rất dễ sử dụng trực tiếp mà không cần bất kỳ các tầng bổ sung nào, so
với Comet, thường đòi hỏi một thư viện tốt để xử lý kết nối lại, thời gian chờ
timeout, các Ajax request (yêu cầu Ajax), các tin báo nhận và các dạng truyền tải
tùy chọn khác nhau (Ajax long-polling và jsonp polling).


Nhược điểm:
-

Khơng có phạm vi u cầu nào. Do WebSocket là một TCP socket chứ không phải
là HTTP request, nên khơng dễ sử dụng các dịch vụ có phạm vi yêu cầu, như
SessionInViewFilter của Hibernate

-

Hibernate là một framework kinh điển cung cấp một bộ lọc xung quanh một HTTP
request. Khi bắt đầu một request, nó sẽ thiết lập một contest (chứa các transaction
và liên kết JDBC) được ràng buộc với luồng request. Khi request đó kết thúc, bộ
lọc hủy bỏ contest này.

-

WebSocket hỗ trợ bốn sự kiện được xác định theo W3C: • open • message • error •
close.

IV.2.3 Xây dựng Websocket Client cho ESP32 với Arduino Core
Websocket được xây dựng dựa trên nền TCP IP và duy trì kết nối liên tục cho tới khi
Cliet hoặc Server ngắt kết nối.
Cài đặt thư viện Websocket cho ESP32

19 | P a g e


Xe điều khiển kết hợp xử lý ảnh

GVHD: TS. Nguyễn Ngọc Minh


Để cài đặt thư viện bạn sử dụng trình quản lý thư viện của Arduino: Sketch->Include
Library->Manager Libraries… tìm với từ khóa “Websockets” kéo và tải xuống như
hình(Chú ý chọn phiên bản V2.x.x trở lên vì chúng ta đang sử dụng cho ESP32)

Xây dựng chương trình Websocket Client cho ESP32
-

Bắt đầu mã của chúng tôi bằng cách nhập một số thư viện. Đầu tiên, chúng ta sẽ
cần thư viện WiFi.h , cho phép chúng ta kết nối với mạng WiFi. Ngồi ra, chúng
tơi sẽ cần bao gồm thư viện WebSocketsClient.h , vì vậy chúng tơi có thể truy cập
tất cả các chức năng cần thiết để kết nối với máy chủ.

#include <WiFi.h>
#include <WebSocketsClient.h>
o Tiếp theo, chúng tôi sẽ đặt thông tin đăng nhập cần thiết để kết nối với
mạng WiFi mà chúng tơi muốn sử dụng theo hai biến tồn cục. Chúng tôi sẽ
cần cả tên mạng (ssid) và mật khẩu.
const char* ssid

= "one pice";//"your-ssid";

const char* password = "lehailong";//"your-password";
o Chúng ta cũng sẽ cần một thể hiện của đối tượng của lớp WebSocketClient ,
sẽ hiển thị các chức năng cần thiết để tương tác với máy chủ.
WebSocketsClient webSocket;
Chức năng thiết lập setup()
20 | P a g e



Xe điều khiển kết hợp xử lý ảnh

-

GVHD: TS. Nguyễn Ngọc Minh

Bây giờ chúng ta sẽ xử lý các khởi tạo trên chức năng thiết lập Arduino. Như
thường lệ, chúng tôi sẽ bắt đầu bằng cách mở một kết nối nối tiếp, để xuất kết quả
của chương trình của chúng tôi. Tiếp theo, chúng tôi sẽ kết nối ESP32 với mạng
WiFi.

//WIFI INIT
Serial.printf("Connecting to %s\n", ssid);
if (String(WiFi.SSID()) != String(ssid)) {
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
}
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected! IP address: ");
String ipAddress = WiFi.localIP().toString();;
Serial.println(ipAddress);
-

Sau khi kết nối với mạng WiFi, chúng tôi sẽ thiết lập kết nối Websocket đến máy
chủ bằng cách gọi phương thức begin của webSocket– là thể hiện của đối
tượng WebSocketsClient đã khai báo. Hàm có nhiều đối số đầu vào khác nhau. Ở

đây chỉ sử dụng đơn giản với địa chỉ máy chủ, cổng kết nối và đường dẫn

webSocket.begin();
webSocket.onEvent(webSocketEvent);
-

-

Để xử lý các sự kiện được gửi đến Websocket Client, chúng ta sử dụng onEvent.
Phương thức này nhận đối số đầu vào là một con trỏ hàm với đầu vào là các giá trị
nhận được
// event handler
void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t
length)
{
switch(type) {
case WStype_DISCONNECTED:
Serial.printf("[%u] Disconnected!\n", num);
camNo = num;
clientConnected = false;
21 | P a g e


Xe điều khiển kết hợp xử lý ảnh

GVHD: TS. Nguyễn Ngọc Minh

break;
case WStype_CONNECTED:
Serial.printf("[%u] Connected!\n", num);

clientConnected = true;
break;
case WStype_TEXT:
case WStype_BIN:
case WStype_ERROR:
case WStype_FRAGMENT_TEXT_START:
case WStype_FRAGMENT_BIN_START:
case WStype_FRAGMENT:
case WStype_FRAGMENT_FIN:
Serial.println(type);
break;
}
}
Hàm chương trình socketEvent
-

Để gửi dữ liệu đến Websocket server bạn sử dụng các phương thức sendTXT khi
cần gửi dữ liệu ở dạng chuỗi và sendBIN khi dữ liệu cần gửi ở dạng byte dữ liệu.
Chú ý chỉ được gửi dữ liệu sau khi sự kiện thông báo đã kết nối thành cơng
webSocket.sendTXT("message here");
webSocket.sendBIN(payload, length);
-

Ngồi ra có thể sử dụng sendPing để gửi dữ liệu Ping đến Websocket server tránh
server tự động đóng kết nối trong thời gian dài nếu không phát sinh trao đổi dữ liệu
- Để chủ động đóng kết nối từ phí ESP32 bạn có thể gọi phương
thức disconnect() trên đối tượng WebSocketClient
webSocket.disconnect();
Chức năng vịng lặp chính loop()
-


Trong vịng lặp chính chúng ta chỉ cần gọi phương thức loop() trên thể hiện của
đối tượng WebSocketClient là webSocket. Phương thức này cần được gọi thường
xuyên để đảm bảo chương trình hoạt động

webSocket.loop();
 Kiểm tra chương trình
-

Tải chương trình lên ESP32, sau đó mở Moniter Serial ở tốc độ Baud 115200, nhấn
reset lại ESP32 bạn sẽ thấy chương trình hoạt động. Ban đầu kết nối với mạng wifi
đưuọc thiết lập, sau khoảng vài giây bạn sẽ nhận được thông báo là kết nối với
Websocket Server tại địa chỉ echo.websocket.org với port 80 và nhận được kết quả
Echo từ server khi bạn gửi thông tin lên Server.
22 | P a g e


Xe điều khiển kết hợp xử lý ảnh

GVHD: TS. Nguyễn Ngọc Minh

V. GIỚI THIỆU OPENCV VÀ CÁC THUẬT TOÁN
V.1 Thư viện OPENCV
- Project OpenCV được bắt đầu từ Intel năm 1999 bởi Gary Bradsky. OpenCV viết
tắt cho Open Source Computer Vision Library.
-

OpenCV là thư viện nguồn mở hàng đầu cho Computer Vision và Machine
Learning, và hiện có thêm tính năng tăng tốc GPU cho các hoạt động theo realtime.


Ứng dụng của OpenCV là gì?
OpenCV được sử dụng cho đa dạng nhiều mục đích và ứng dụng khác nhau bao
gồm:
- Hình ảnh street view
-

Kiểm tra và giám sát tự động

-

Robot và xe hơi tự lái

-

Phân tích hình ảnh y học

-

Tìm kiếm và phục hồi hình ảnh/video

-

Phim – cấu trúc 3D từ chuyển động

-

Nghệ thuật sắp đặt tương tác

Tính năng và các module phổ biến của OpenCV
Theo tính năng và ứng dụng của OpenCV, có thể chia thư viện này thánh các nhóm

tính năng và module tương ứng như sau:
-

Xử lý và hiển thị Hình ảnh/ Video/ I/O (core, imgproc, highgui)

-

Phát hiện các vật thể (objdetect, features2d, nonfree)

-

Geometry-based monocular hoặc stereo computer vision (calib3d, stitching,
videostab)

-

Computational photography (photo, video, superres)

-

Machine learning & clustering (ml, flann)

-

CUDA acceleration (gpu)

V.2 Thuật toán OBJECT DETECTION

23 | P a g e



Xe điều khiển kết hợp xử lý ảnh

GVHD: TS. Nguyễn Ngọc Minh

-

Đề cập đến khả năng của hệ thống máy tính và phần mềm để định vị các đối tượng
trong một hình ảnh và xác định từng đối tượng. Object Detection đã được sử dụng
rộng rãi để phát hiện khuôn mặt, phát hiện xe, đếm số người đi bộ, hệ thống bảo
mật và xe khơng người lái. Có nhiều cách để nhận diện đối tượng có thể được sử
dụng cũng như trong nhiều lĩnh vực thực hành. Giống như mọi công nghệ khác,
một loạt các ứng dụng sáng tạo và tuyệt vời của Object Detection sẽ đến từ các lập
trình viên và các nhà phát triển phần mềm.
- Bắt đầu sử dụng các phương pháp nhận diện đối tượng hiện đại trong các ứng dụng
và hệ thống, cũng như xây dựng các ứng dụng mới dựa trên các phương pháp
này.Việc triển nhận diện đối tượng sớm liên quan đến việc sử dụng các thuật toán
cổ điển, giống như các thuật toán được hỗ trợ trong OpenCV, thư viện computer
vision phổ biến. Tuy nhiên, các thuật tốn cổ điển này khơng thể đạt được hiệu suất
đủ để làm việc trong các điều kiện khác nhau.
V.3 Thuật toán OBJECT TRAKING

24 | P a g e


Xe điều khiển kết hợp xử lý ảnh

-

-


GVHD: TS. Nguyễn Ngọc Minh

Ta có thể thấy rằng object detection và object tracking có một mối quan hệ rất chặt
chẽ. Object detection là việc mơ hình xác định một hoặc nhiều đối tượng trong một
khung hình nhất định cịn object traking là theo dõi đối tượng trong toàn bộ video.
Để theo dõi được một đối tượng trước hết mơ hình cần phải phát hiện được đối
tượng đó trong từng frame sau đó sẽ cho qua một thuật toán về tracking nên việc
theo dõi đối tượng có chính xác hay khơng thì cần phải xem việc phát hiện đối
tượng tốt đến đâu. Như trong ảnh ta thấy rằng mơ hình đang theo dõi chuyển động
của những chiếc hộp và chiếc hộp sẽ có một khung hình vng mang một màu sắc
nhất định biểu thị rằng đối tượng đó được xuất hiện qua các khung hình.

Single Obkect Tracking (SOT): Chỉ một đối tượng được theo dõi ngay cả khi mơi trường
có nhiều đối tượng ngay cả khi mơi trường có nhiều đối tượng trong đó. Đối tượng được
theo dõi xác định bằng cách khởi tạo trong frame đầu tiên của video.

V.4 Thuật toán PID
V.4.1 Sơ lược cấu trúc điều khiển
- Nguyên tắc điều khiển robot theo quỹ đạo: Camera sẽ quay hình ảnh và truyền đến
điện thoại, điện thoại xử lí kiểm tra xe đi theo hay lệch khỏi quỹ đạo và gửi tín hiệu

25 | P a g e


×