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

Đồ án nhúng xử lý ảnh dùng arduino due

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 (13.35 MB, 75 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

ĐỒ ÁN TỐT NGHIỆP
Thiết kế hệ thống thu thập và
xử lý ảnh
NGUYỄN VĂN TÙNG
Ngành Kỹ thuật Điều khiển và Tự động hóa
Chuyên ngành Kỹ thuật đo và tin học công nghiệp

Giảng viên hướng dẫn:
Bộ môn:
Viện:

Chữ ký của GVHD

Tin học và đo lường công nghiệp
Điện

HÀ NỘI, 1/2020


Lời cảm ơn
Chúng em xin bày tỏ lòng biết ơn chân thành và sâu sắc tới TS.Nguyễn
Hoàng Nam, người đã tận tình dìu dắt chỉ bảo chúng em trong suốt quá trình học
tập và thực hiện đề tài này.
Chúng em xin cảm ơn chân thành thầy cô viện Điện, ban lãnh đạo Trường
đại học Bách Khoa Hà Nội đã tạo điều kiện cho chúng em thực hiện đề tài này.
Chúng em xin chân thành cảm ơn bạn bè với gia đình đã ln động viên
khích lệ và tạo điều kiện giúp đỡ chúng em trong suốt quá trình thực hiện đề tài
này.
Em xin chân thành cảm ơn!



Tóm tắt nội dung đồ án
Ngành công nghệ ngày càng phát triển, không ngừng thay đổi để đáp ứng
mọi nhu cầu giám sát của người tiêu dùng, camera giám sát hiện mang lại nhiều
lợi ích nhất định với đời sống hiện nay, hầu như đi đâu thì ta cũng sẽ thấy camera
quan sát, đó là giải pháp tối ưu nhất hiện nay để đảm bảo an ninh cho nơi lắp
camera, bảo vệ tài sản và tránh được những tệ nạn xã hội diễn ra ở nơi có camera
quan sát. Camera và lĩnh vực xử lý ảnh cũng có ột tiềm năng vơ cùng to lớn nếu
áp dụng trong nông nghiệp thông minh như phát hiện sâu bệnh hay robot thu
hoạch nông sản tự động nhằm giảm sức lao động của con người.
Chính vì vậy nhóm đã chọn đề tài “Thiết kế hệ thống thu thập và xử lý
ảnh” làm nội dung nghiên cứu.
Trong đề tài báo cáo này, em xin trình bày những nội dung sau:
Chương 1: Tổng quan về hệ thống
Chương 2: Thiết kế phần cứng và lập trình hệ thống
Chương 3: Kết quả và thử nghiệm truyền nhận ảnh
Chương 4: Tổng quan về convolutional neural network và ứng dụng vào bài toán
nhận dạng ảnh
Chương 5: Thực nghiệm xử lý ảnh
Chương 6: Kết luận
Trong quá trình thực hiện đề tài, do thời gian không cho phép cùng với một
số hạn chế khác về kiến thức kinh nghiệm nên đề tài của nhóm cịn nhiều những
thiếu xót. Chúng em rất mong được các thầy cơ và các bạn đóng góp ý kiến để
hồn thiện đề tài.

Sinh viên thực hiện
Ký và ghi rõ họ tên


MỤC LỤC


CHƯƠNG 1. TỔNG QUAN VỀ HỆ THỐNG...................................................1
1.1

Lựa chọn phần cứng..................................................................................1

1.2

Tổng quan về hệ thống camera..................................................................1

1.3

Giới thiệu phần cứng sử dụng...................................................................2
1.3.1

ATSAM3X8EAU.......................................................................2

1.3.2

ArduCam OV5642.....................................................................2

CHƯƠNG 2. THIẾT KẾ PHẦN CỨNG VÀ LẬP TRÌNH HỆ THỐNG......12
2.1

Thiết kế Board Dev.................................................................................12
2.1.1

Khối nguồn...............................................................................12

2.1.2


Khối ESP8266..........................................................................12

2.1.3

Khối ATSAM3X8EAU.............................................................14

2.2

Thiết kế module SIM5320E....................................................................17

2.3

Lập trình thiết bị......................................................................................20
2.3.1

Lập trình đọc ghi dữ liệu I2C...................................................20

2.3.2

Lập trình đọc ghi dữ liệu SPI....................................................21

2.3.3

Cấu hình hoạt động của ArduCam OV5642.............................22

2.3.4
Lập trình truyền nhận dữ liệu ảnh trong hệ thống gồm
ATSAM3X8EA, SIM5320E và ArduCam OV5642....................................23
2.3.5

Lập trình truyền nhận dữ liệu ảnh trong hệ thống gồm ESP8266
và ArduCam OV5642..................................................................................25
2.3.6

Thiết kế Webserver...................................................................25

2.3.7

Truyền dữ liệu ảnh qua internet................................................29

CHƯƠNG 3. KẾT QUẢ VÀ THỬ NGHIỆM TRUYỀN NHẬN ẢNH.........33
3.1

Kết quả thiết kế mạch..............................................................................33

3.2

Arduino Due đọc hình ảnh từ camera gửi về máy tính............................36

3.3

ESP8266 làm webserver..........................................................................37

3.4

Giao diện website hiển thị ảnh thiết bị gửi lên Server.............................38

3.5

So sánh 3G và WiFi.................................................................................39


CHƯƠNG 4. TỔNG QUAN VỀ CONVOLUTION NEURAL NETWORK
VÀ ỨNG DỤNG VÀO BÀI TOÁN NHẬN DẠNG ẢNH...............................40
4.1

Khái niệm Neural network......................................................................40
4.1.1

Hoạt động của các nơ-ron.........................................................40


4.1.2
4.2

4.3

4.4

Mơ hình neural network...........................................................41

Thuật tốn học.........................................................................................41
4.2.1

Gradient Descent......................................................................41

4.2.2

Truyền thẳng.............................................................................43

4.2.3


Lan truyền ngược......................................................................44

Giới hiệu về xử lý ảnh.............................................................................44
4.3.1

Biểu diễn ảnh............................................................................44

4.3.2

Phép tính convolution...............................................................46

Sơ lược về convolutional neural network................................................48
4.4.1

Convolutional layer..................................................................48

4.4.2

Pooling layer............................................................................51

4.4.3

Fully connected layer...............................................................51

4.4.4

Mơ hình convolutional neural network.....................................52

4.5


Sơ lược về Keras.....................................................................................52

4.6

Ứng dụng vào bài toán nhận dạng ảnh trong nơng nghiệp......................53
4.6.1

Xây dựng bài tốn....................................................................53

4.6.2

Chuẩn bị dữ liệu.......................................................................53

4.6.3

Xây dựng model.......................................................................55

4.6.4

Loss function............................................................................56

4.6.5

Đánh giá mơ hình.....................................................................58

CHƯƠNG 5. THỰC NGHIỆM XỬ LÝ ẢNH.................................................59
5.1

5.2


Thực nghiệm tìm tham số mơ hình:.........................................................59
5.1.1

Chọn mơ hình...........................................................................59

5.1.2

Chọn thuật tốn tối ưu..............................................................59

5.1.3

Thực nghiệm tìm số lần lặp lại.................................................60

Thực nghiệm nhận dạng..........................................................................62

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

Kết luận...................................................................................................64

6.2

Hướng phát triển của đồ án trong tương lai.............................................64

PHỤ LỤC CODE VÀ MẠCH..........................................................................65
TÀI LIỆU THAM KHẢO................................................................................66


DANH MỤC HÌNH VẼ

Hình 1.1: Sơ đồ khối hệ thống thu thập ảnh..........................................................1
Hình 1.2: ArduCam OV5642................................................................................2
Hình 1.3: Sơ đồ khối ArduCam OV5642..............................................................4
Hình 1.4: Chân kích hoạt phần cứng.....................................................................5
Hình 1.5: Giản đồ thời gian quá trình ghi I2C.......................................................6
Hình 1.6: Giản đồ thời gian quá trình đọc I2C......................................................7
Hình 1.7: Giản đồ thời gian quá trình đọc SPI......................................................7
Hình 1.8: Giản đồ thời gian quá trình đọc đơn SPI...............................................8
Hình 1.9: Giản đồ thời gian q trình đọc gói SPI................................................8
Hình 1.10: Module ESP8266-07.........................................................................11
Hình 2.1: Sơ đồ khối nguồn Board Dev..............................................................12
Hình 2.2: Sơ đồ khối truyền UART cho ESP8266..............................................13
Hình 2.3: Sơ đồ khối module ESP8266...............................................................13
Hình 2.4: Khối nút nhấn ESP8266......................................................................14
Hình 2.5: Khối ATSAM3X8EU..........................................................................15
Hình 2.6: Sơ đồ khối UART cho ATSAM3X8EAU............................................16
Hình 2.7: Sơ đồ khối thạch anh cho chip ATSAM3X8EAU................................16
Hình 2.8: Sơ đồ khối kết nối USB cho ATSAM3X8EAU...................................16
Hình 2.9: Sơ đồ khối kết nối module camera của ATSAM3X8EAU...................17
Hình 2.10: Sơ đồ khối truyền UART từ ATSAM3X8EAU đến SIM5320E.........17
Hình 2.11: Sơ đồ khối SIM5320E.......................................................................18
Hình 2.12: Sơ đồ khối chuyển mức logic cho SIM5320E...................................18
Hình 2.13: Sơ đồ khối led báo trạng thái SIM5320E...........................................19
Hình 2.14: Lưu đồ ghi dữ liệu I2C......................................................................20
Hình 2.15: Lưu đồ đọc dữ liệu I2C.....................................................................21
Hình 2.16: Lưu đồ ghi dữ liệu SPI......................................................................21
Hình 2.17: Lưu đồ đọc dữ liệu SPI......................................................................21
Hình 2.18: Lưu đồ thuật tốn hệ thống gồm ATSAM3X8EA, SIM5320E và
ArduCam OV5642..............................................................................................24
Hình 2.19: Lưu đồ thuật tốn hệ thống gồm ESP8266 và ArduCam OV5642.....25

Hình 2.20: NodeJS..............................................................................................26
Hình 2.21: Các đơn vị dùng NodeJS để xây dựng hệ thống................................26
Hình 2.22: SocketIO............................................................................................27
Hình 2.23: Lưu đồ thuật tốn server NodeJS.......................................................28
Hình 2.24: Giao diện người dùng........................................................................29
Hình 2.25: Modem GPON H646EW Viettel.......................................................30


Hình 2.26: Giao diện cài đặt Modem (1).............................................................30
Hình 2.27: Hình 26: Giao diện cài đặt Modem (2).............................................31
Hình 2.28: Giao diện cài đặt Modem (3).............................................................31
Hình 2.29: Giao diện web />Hình 3.1: Top 3D của Board Dev........................................................................33
Hình 3.2: Bottom 3D của Board Dev..................................................................33
Hình 3.3: Top 3D của module SIM5320E...........................................................34
Hình 3.4: Bottom 3D của module SIM5320E.....................................................34
Hình 3.5:Ảnh chụp mạch hồn thiện...................................................................35
Hình 3.6: Sản phẩm sau khi đóng hộp.................................................................35
Hình 3.7: Ứng dụng C# truyền nhận ảnh về máy tính qua cổng USB.................36
Hình 3.8: Chế độ capture khi ESP8266 làm webserver.......................................37
Hình 3.9: Chế độ stream khi ESP8266 làm webserver........................................37
Hình 3.10: Chế độ capture khi ESP8266 làm webserver dùng NAT port............38
Hình 3.11: Giao diện Webserver.........................................................................38
Hình 3.12: Chế độ xem nhiều ảnh.......................................................................39
Hình 4.1: Tế bào thần kinh..................................................................................40
Hình 4.2: Mơ hình neural nhân tạo......................................................................40
Hình 4.3: Mơ hình neural network......................................................................41
Hình 4.4: Đồ thị hàm số y=f(x)...........................................................................42
Hình 4.5: Gradient Descent với Momemtum......................................................43
Hình 4.6: Kí hiệu dùng trong neural network......................................................43
Hình 4.7: Hệ màu RGB.......................................................................................44

Hình 4.8: Ví dụ về ảnh màu................................................................................45
Hình 4.9: Ảnh màu biểu diễn dưới dạng tensor...................................................46
Hình 4.10: Phép tính convolution........................................................................47
Hình 4.11: Ma trận X khi thêm viền 0 bên ngồi................................................47
Hình 4.12: Padding = 1, Stride = 2......................................................................48
Hình 4.13: Mơ hình neural network....................................................................48
Hình 4.14: Phép tính convolution trên ảnh màu với k = 3...................................49
Hình 4.15: Tensor X, W đực viết dưới dạng 3 ma trận........................................50
Hình 4.16: Convolution layer tổng quát..............................................................50
Hình 4.17: Max pooling layer với size = (3,3), stride = 1, padding = 0...............51
Hình 4.18: Fully connected layer........................................................................51
Hình 4.19: Ví dụ về mơ hình convolutional neural network................................52
Hình 4.20: Các deep learning framework phổ biến.............................................52
Hình 4.21: Ảnh dữ liệu trong tập train................................................................53


Hình 4.22: Cửa sổ ạo cơ sở dữ liệu.....................................................................54
Hình 4.23: Dữ liệu ảnh trong training set (quả)...................................................54
Hình 4.24: Dữ liệu ảnh trong training set (nền)...................................................55
Hình 4.25: Model cho bài tốn............................................................................55
Hình 4.26: Hàm softmax.....................................................................................56
Hình 4.27: One-hot encoding..............................................................................56
Hình 4.28: Giá trị thật và giá trị dự đốn.............................................................57
Hình 4.29: Đồ thị hàm log...................................................................................57
Hình 5.1: Mơ hình convolutional neural network................................................59
Hình 5.2: Đồ thị quan hệ giữa epoch và giá trị hàm mất mát khi dùng thuật tốn
RMSProp............................................................................................................. 59
Hình 5.3: Đồ thị quan hệ giữa epoch và giá trị accuracy khi dùng thuật tốn
RMSProp............................................................................................................. 59
Hình 5.4: Đồ thị quan hệ giữa epoch và giá trị hàm mất mát khi dùng thuật tốn

Adam................................................................................................................... 60
Hình 5.5: Đồ thị quan hệ giữa epoch và giá trị accuracy khi dùng thuật tốn
Adam................................................................................................................... 60
Hình 5.6: Đồ thị quan hệ giữa accuracy và epoch...............................................61
Hình 5.7: Đồ thị quan hệ giữa loss và epoch.......................................................61
Hình 5.8: Ảnh chụp quả để test mơ hình............................................................62
Hình 5.9: Kết quả nhận dạng khi ảnh đầu vào là quả..........................................62
Hình 5.10: Ảnh chụp nền để test mơ hình...........................................................63
Hình 5.11: Kết quả nhận dạng khi ảnh đầu vào là nền........................................63


DANH MỤC BẢNG BIỂU
Bảng 1.1: Định nghĩa chân OV5642.....................................................................4
Bảng 1.2: Mô tả chi tiết các thanh ghi ArduChip..................................................9
Bảng 3.1: So sánh thời gian truyền ảnh giữa 3G và WiFi....................................39
Bảng 5.1: Mối quan hệ giữa số epoch và giá trị loss và accuracy.......................60


CHƯƠNG 1. TỔNG QUAN VỀ HỆ THỐNG
1.1 Lựa chọn phần cứng
Chọn camera:
Qua thơng tin tìm hiểu trên từ nhiều nguồn trên internet, nhóm thấy các
module camera của hãng ArduCam cung cấp rất đa dạng và dều mở. Có nhiều
loại với cảm biến hình ảnh từ 1MP đến 15MP, tuy nhiên cần lựa chọn module hỗ
trợ truyền nhận dữ liệu với vi điều khiển và chất lượng tốt nhất nên nhóm đã lựa
chọn module Camera OV5642 mini 5MP plus và được ArduCam cung cấp tài
liệu đầy đủ cũng như thư viện code C cho vi điều khiển.
Chọn vi điều khiển:
Để chọn ra vi điều khiển đủ nhanh để đáp ứng tốc độ truyền nhận cũng như
hỗ trợ các chuẩn giao tiếp I2C và SPI để có thể giao tiếp đọc ghi dữ liệu với

module camera. Arduino là một nền tảng mã nguồn mở cả phần cứng lẫn phần
mềm để dễ dàng xây dựng các ứng dụng tương tác với nhau. Từ điều trên nên
bọn em đã lựa chọn vi điều khiển ARM 32 bit SAM3X8E lập trình trên nền tảng
Arduino.
Chọn module WiFi:
Để có thể quan sát hình ảnh từ xa cần thiết bị kết nối internet để gửi dữ liệu
hình ảnh nên việc sử dụng module Wifi là cần thiết. Dữ liệu ảnh có thể được
nhận từ vi điều khiển SAM3X8E rồi truyền qua module Wifi để truyền lên mạng,
tuy nhiên có nhiều module Wifi hỗ trợ lập trình trực tiếp điều khiển các chân I/O
thơng qua lập trình Arduino như module ESP8266-07. Module này giá rẻ, dễ
mua, dễ lập trình và có sẵn giao tiếp SPI, I2C và UART nên bọn em đã lựa chọn
module này.
Chọn module 3G:
Trên thị trường Việt Nam sử dụng module 2G, 3G của SIMCOM và
QUECTEL. Tuy nhiên với các module của SIMCOM có cộng đồng người sử
dụng nhiều hơn nên sẽ tiện cho quá trình sử dụng và dữ liệu hình ảnh là dữ liệu
lớn cũng như có thơng tin là vào năm 2022 sẽ xóa bỏ mạng 2G nên nhóm lựa
chọn module SIMCOM 3G là module SIM5320E.
1.2 Tổng quan về hệ thống camera
Hệ thống thu thập ảnh từ camera trong đề tài có sơ đồ khối như sau:

Hình 1.1: Sơ đồ khối hệ thống thu thập ảnh
1


Hệ thống gồm có các thành phần sau:
 Camera ảnh số: là cảm biến biến đổi các pixel điểm ảnh màu hoặc xám ra
thành các từ số liệu. Tốc độ biến đổi phải đủ nhanh để đáp ứng yêu cầu xử
lý theo thời gian thực
 Khối SAM3X8E+SIM5320E (hoặc ESP8266): Là khối vi điều khiển trung

tâm có nhiệm vụ đọc dữ liệu ảnh từ camera OV5642, sau đó gửi dữ liệu
lên webserver theo phương thức HTTP
 Webserver có nhiệm vụ nhận ảnh từ thiết bị gửi lên, lưu ảnh trong bộ nhớ
đồng thời xử lý các yêu cầu truy cập từ người dùng
 Phần xử lý ảnh có nhiệm vụ lấy ảnh từ webserver gửi đến, sau đó xử lý
ảnh rồi gửi kết quả xử lý về webserver
1.3 Giới thiệu phần cứng sử dụng
ATSAM3X8EAU
Vi điều khiển ATSAM3X8EAU:
 Điện áp hoạt động: 3.3V
 Số chân digital I/O: 54 (12 chân PWM)
 Số chân analog I/O: 12
 Dòng ra DC trên tất cả chân I/O: 130mA
 Dòng DC cho chân 3.3V: 800mA
 Dòng DC cho chân 5V: 800mA
 Bộ nhớ Flash: 512KB available
 SRAM: 96KB (2 bank: 64KB và 32KB)
 Tần số hoạt động: 84Mhz
ArduCam OV5642
1.3.1.1. Giới thiệu

Hình 1.2: ArduCam OV5642
2


ArduCAM-Mini-5MP-Plus (OV5642) là một phiên bản cải tiến hiệu năng
của ArduCAM-M-5MP. Nó là một camera SPI độ phân giải cao 5MP, giảm đi sự
phức tạp của giao diện điều khiển camera. Nó tích hợp cảm biến hình ảnh CMOS
5MP OV5642, dễ dàng sử dụng giao diện phần cứng và thư viện mã nguồn mở.
ArduCAM có thể sử dụng với các nền tảng như Arduino, Raspberry, ESP8266,

Maple, Chipkit, Beaglebone…với điều kiện chúng có giao diện SPI và I2C.
Ứng dụng:
 Máy ảnh IOT
 Máy ảnh robot
 Máy ảnh thiên nhiên
 Máy ảnh HDR
Đặc điểm:
 Cảm biến hình ảnh OV5642 5MP
 Giao diện I2C để cấu hình cảm biến
 Giao diện SPI cho các lệnh camera và luồng dữ liệu
 Hiệu năng cao
 Chức năng điều khiển hình ảnh tự động: điều khiển phơi sáng, cân bằng
trắng,...
 Tỷ lệ khung hình điều chỉnh được
 Điều khiển chất lượng ảnh: bão hòa màu, hue, gamma, sharpness,…
Thông số kỹ thuật:
 Nguồn cấp: 3,3V ~ 5V
 Tốc độ SPI tối đa: 8MHz
 Bộ đệm khung: 8MB
 Len M12 mặc định: 90°
 Kích thước: 34 x 24 mm
 Khối lượng: 20g
 Nhiệt độ: -10℃ ~ +55℃
 Kích thước mảng hoạt động: 2592x1944
 Kích thước pixel: 1.4µm x 1.4µm
 Định dạng hỗ trợ: RAW, YUV, RGB, JPEG
1.3.1.2. Định nghĩa chân
Dưới đây là bảng định nghĩa các chân của ArduCam OV5642.

3



Bảng 1.1: Định nghĩa chân OV5642

STT
1
2
3
4
5
6
7
8

Chân
CS
MOSI
MISO
SCLK
GND
VCC
SDA
SCL
1.3.1.3. Sơ đồ khối

Loại
Đầu vào
Đầu vào
Đầu ra
Đầu vào

Đất
Nguồn
Hai chiều
Đầu vào

Mô tả
Đầu vào chọn chip slave SPI
Đầu ra master, đầu vào slave SPI
Đầu vào master, đầu ra slave SPI
Xung clock nối tiếp SPI
Đất
Cấp nguồn 3,3 ~ 5V
Dữ liệu I/O giao diện nối tiếp 2 dây
Xung clock giao diện nối tiếp 2 dây

Hình 1.3: Sơ đồ khối ArduCam OV5642

Hình trên chỉ ra sơ đồ khối của ArduCAM OV5642. Cấu tạo của OV5642
gồm ống kính, cảm biến hình ảnh và một ArduChip. Cảm biến hình ảnh là
OV5642 CMOS 5MP từ Omnivision.
1.3.1.4. Chức năng
Chế độ chụp đơn:
Là chế độ chụp mặc định của camera. Sau khi phát lệnh chụp qua cổng SPI,
ArduCam sẽ đợi một frame mới và lưu tồn bộ dữ liệu ảnh vào bộ đệm frame,
sau đó xác nhận bit cờ báo hoàn thành trong thanh ghi. Người dùng chỉ cần kiểm
tra cờ này từ thanh ghi để biết được việc chụp đã hoàn thành hay chưa.
Chế độ chụp multi:
Là chế độ chụp nâng cao. Bằng việc cài đặt số frame trong thanh ghi chụp,
ArduCam sẽ chụp liên tiếp các frame sau khi phát lệnh chụp. Chú ý rằng số
frame cần được cài đặt chính xác để đảm bảo không vượt quá không gian nhớ tối

đa. Chế độ chụp multi có thể được dùng để chụp các cảnh giống nhau với độ
phơi sáng khác nhau để tạo ảnh HDR.
4


Chế độ chụp phim ngắn:
Là chế độ chụp liên tiếp cho đến khi bộ đệm frame 8MB đầy. Người dùng
có thể sử dụng chế độ này để ghi video ngắn (vài giây) và lưu file AVI vào thẻ
SD.
Kích hoạt phần cứng ngồi:
Đầu vào kích hoạt phần cứng ngồi (tích cực cao) có thể được dùng để bắt
đầu chụp thủ cơng, phần mềm chỉ cần kiểm tra bit cờ báo hoàn thành trước khi
đọc dữ liệu ảnh.

Hình 1.4: Chân kích hoạt phần cứng

Nén JPEG:
Chức năng nén JPG được thực hiện trong cảm biến hình ảnh. Với việc cài
đặt thanh ghi thích hợp cho cảm biến, người dùng có thể đạt được các độ phân
giải khác nhau với đầu ra ảnh JPEG. Người dùng được khuyến nghị để sử dụng
đầu ra JPEG để nhận độ phân giải cao hơn chế độ RGB, do giới hạn của bộ đệm
khung.
Hoạt động đọc thường và đọc burst:
Hoạt động đọc thường đọc mỗi dữ liệu ảnh bằng cách gửi một lệnh đọc
trong một chu kỳ đọc SPI, trong khi đó chế độ đọc burst chỉ cần gửi một lệnh đọc
sau đó đọc nhiều dữ liệu ảnh trong một chu kỳ đọc SPI. Nên sử dụng chế độ đọc
burst để đạt được hiệu suất cao hơn.
Hoạt động đọc rewind:
5



Đôi khi người dùng muốn đọc cùng frame của dữ liệu ảnh nhiều lần để xử
lý, chế độ đọc rewind được thiết kế cho mục đích này. Bằng việc reset lại con trỏ
đọc ở vị trí bắt đầu của dữ liệu ảnh, người dùng có thể đọc dữ liệu ảnh giống
nhau từ vị trí bắt đầu lần nữa.
Chế độ năng lượng thấp:
Một số thiết bị dùng pin cần tiết kiệm năng lượng khi ở trạng thái nghỉ,
ArduCam cung cấp chế độ năng lượng thấp để giảm tiêu thụ năng lượng bằng
cách tắt mạch cảm biến.
Điều khiển cảm biến hình ảnh:
Chức năng điều khiển cảm biến hình ảnh được thực hiện trong cảm biến
ảnh. Bằng việc cài đặt các thanh ghi thích hợp, người dùng có thể điều khiển
phơi sáng, cân bằng trắng, độ sáng, tương phản, bão hòa màu,…
1.3.1.5. Giao tiếp I2C
Giao diện I2C được kết nối trực tiếp đến cảm biến hình ảnh OV5642. Địa
chỉ slave I2C của OV5642 là 0x78 để ghi và 0x79 để đọc. Người dùng có thể sử
dụng master I2C để đọc và ghi tất cả các thanh ghi trong cảm biến OV5642.
Hình 1.5 là ví dụ ghi giá trị 0x80 vào thanh ghi 0x3008 của O5642. Hình
1.6 mơ tả việc đọc giá trị 0x56 từ thanh ghi 0x300A của OV5642.
Ghi dữ liệu I2C:

Hình 1.5: Giản đồ thời gian q trình ghi I2C

Ban đầu tín hiệu SCL và SDA ở mức logic 1 để nhận biết trạng thái đường
truyền. Quá trình truyền dữ liệu I2C gồm 3 bước:
- Start: Sau khi mức tín hiệu SDA chuyển từ trạng thái 1 xuống 0, tín hiệu SCL
chuyển trạng thái từ 1 xuống 0 để báo hiệu bắt đầu truyền.
- Truyền dữ liệu: Chu kỳ ghi dữ liệu 3 pha.
 Pha 1: Truyền địa chỉ slave muốn giao tiếp (0x78)
 Pha 2: Truyền địa chỉ thanh ghi của slave (0x30080)

 Pha 3: Ghi dữ liệu 8 bit vào thanh ghi của slave (0x80)
- Stop: Sau khi mức tín hiệu SCL chuyển trạng thái từ 0 lên 1, tín hiệu SDA
chuyển trạng thái từ 0 lên 1 để báo ngừng truyền dữ liệu.
Đọc dữ liệu I2C:

6


Hình 1.6: Giản đồ thời gian quá trình đọc I2C

Bản thân chu kỳ đọc 2 pha không thể nhận biết được địa chỉ thanh ghi của
slave. Do đó trước khi thực hiện chu kỳ đọc dữ liệu 2 pha, phải có một chu kỳ
ghi dữ liệu 3 pha hoặc 2 pha để slave nhận biết địa chỉ của thanh ghi cần đọc dữ
liệu. Quá trình đọc dữ liệu I2C gồm:
- Chu kỳ ghi dữ liệu 2 pha:
 Pha 1: Truyền địa chỉ slave (0x78)
 Pha 2: Truyền địa chỉ thanh ghi slave mà master muốn đọc (0x200A)
- Chu kỳ đọc dữ liệu 2 pha:
 Pha 1: Truyền địa chỉ slave (0x79)
 Pha 2: Đọc dữ liệu từ slave
1.3.1.6. Giao tiếp SPI
Giao tiếp SPI được fixed SPI mode 0 với POL = 0 và PHA = 0. Tần số lớn
nhất của SCLK là 8MHz. Giao thức SPI được thiết kế với một pha lệnh và pha
dữ liệu thay đổi. Tín hiệu chọn chip luôn được giữ trong suốt chu kỳ đọc và ghi
SPI.
Bit đầu tiên [7] của pha lệnh là để xác định việc đọc/ghi, ‘0’ dùng cho đọc
và ‘1’ dùng cho ghi, các bit [6:0] là địa chỉ để đọc hoặc ghi trong pha dữ liệu.
Giản đồ thời gian quá trình ghi SPI:

Hình 1.7: Giản đồ thời gian quá trình đọc SPI


Giản đồ thời gian quá trình ghi SPI gồm một pha lệnh và một pha dữ liệu, 8
bit đầu là byte lệnh được giải mã là địa chi của thanh ghi và 8 bit sau là dữ liệu
để ghi vào các thanh ghi của ArduChip.
Ban đầu, tín hiệu CS chuyển từ 1 xuống 0 để chọn thiết bị SPI slave. Sau
đó, tiến hành truyền dữ liệu 2 pha với pha 1 là pha truyền địa chỉ thanh ghi và
pha sau là pha truyền dữ liệu. Với mỗi sườn lên của xung SCLK thì một bit sẽ
được truyền đi. Sau khi truyền xong thì CS được kéo lên 1 để kết thúc quá trình
giao tiếp với slave.
Giản đồ thời gian quá trình đọc đơn SPI:
7


Hình 1.8: Giản đồ thời gian quá trình đọc đơn SPI

Giản đồ thời gian quá trình đọc đơn SPI được dùng cho hoạt động đọc các
thanh ghi bên trong ArduChip và hàm đọc đơn FIFO. Nó bao gồm 1 pha lệnh và
1 pha dữ liệu, 8 bit đầu là byte lệnh được giải mã như địa chỉ của thanh ghi, 8 bit
sau là byte giả được ghi đến chân MOSI, và nội dung phản hồi từ thanh ghi được
lấy từ chân MOSI.
Giản đồ thời gian q trình đọc gói SPI:

Hình 1.9: Giản đồ thời gian q trình đọc gói SPI

Giản đồ thời gian q trình đọc gói SPI chỉ dùng cho q trình đọc gói
FIFO. Nó bao gồm một pha đọc lệnh và nhiều pha dữ liệu.
Ban đầu chân CS đang ở mức logic ‘1’ được kéo xuống mức logic ‘0’, khi
đó master sẽ tiến hành chu trình đọc dữ liệu 2 pha với pha đầu là pha lệnh và pha
sau là pha dữ liệu. Sau khi gửi lệnh đọc qua chân MOSI, master sẽ gửi liên tiếp
các byte 0x00H, với mỗi byte 0x00H gửi đi này, master sẽ nhận được byte dữ

liệu trả về tương ứng D0÷Dn.
1.3.1.7. Bảng thanh ghi
Cảm biến và giản đồ thời gian FIFO được điều khiển bởi một nhóm các
thanh ghi trong ArduChip. Người dùng có thể gửi lệnh chụp hoặc lệnh đọc dữ
liệu ảnh với giao tiếp SPI đơn giản. Mô tả chi tiết về các bit của các thanh ghi
được liệt kê trong bảng dưới đây.
Như được đề cập từ trước, bit đầu tiên [7] của pha lệnh để xác định đọc hay
ghi, ‘0’ dùng cho đọc và ‘1’ dùng cho ghi, các bit [6:0] là địa chỉ thanh ghi để đọc

8


hay ghi trong pha dữ liệu. Vì vậy, người dùng phải kết hợp cả 8 bit địa chỉ để đọc
hoặc ghi lệnh.
Bảng 1.2: Mô tả chi tiết các thanh ghi ArduChip

Địa chỉ thanh ghi
Bit [6:0]
0x00
0x01

Loại
thanh ghi
RW
RW

0x02
0x03

RW

RW

0x04

RW

0x05
0x06
0x3B
0x3C
0x3D
0x3E
0x3F
0x40

RW
RW
RO
RO
RO
RO
RO
RO

0x41

RO

0x42
0x43

0x44

RO
RO
RO

Mô tả chi tiết
Thanh ghi kiểm tra
Thanh ghi đều khiển chụp
Bit[2:0]: Số frame cần chụp, giá trị 0~6 tương
ứng với số ảnh chụp được là 1~7, giá trị 7 có
nghĩ là chụp liên tục cho đến bộ đệm frame
8MB đầy
Dự trữ
Thanh ghi giao tiếp cảm biến
Bit[0]: Cực tính tín hiệu Hsync
0 = tích cực cao, 1=tích cực thấp
Bit[1]: Cực tính tín hiệu Vsync
0 = tích cực cao, 1=tích cực thấp
Bit[3]: Đảo PCLK
0=bình thường, 1= đảo PCLK
Thanh ghi điều khiển FIFO
Bit[0]: ghi ‘1’ để xóa cờ báo hoàn thành
Bit[1]: ghi ‘1’ để bắt đầu chụp
Bit[4]: ghi ‘1’ để reset con trỏ ghi FIFO
Bit[5]: ghi ‘1’ để reset con trỏ đọc FIFO
Không sử dụng
Thanh ghi ghi GPIO
Không sử dụng
Hoạt động đọc gói FIFO

Hoạt động đọc đơn FIFO
Khơng sử dụng
Không sử dụng
Phiên bản firmware ArduChip, giá trị là 0x62
với phiên bản 5MP-Plus
Bit[7:4]: phần giá trị nguyên
Bit[3:0]: phần thập phân
Bit[0]: trạng thái thời gian thực chân Vsync
Bit[3]: cờ báo hồn thành
Camera ghi kích thước FIFO[7:0]
Camera ghi kích thước FIFO[15:8]
Camera ghi kích thước FIFO[22:16]
9


0x45

RO

Không sử dụng

1.3.1.8. Sim5320E
Module SIM5320 là giải pháp module hai băng tần HSDPA/WCDMA hỗ
trợ HSDPA lên đến 3,6Mb/s tải dữ liệu xuống. Hỗ trợ nhiều giao tiếp như UART,
USB2.0, SPI, I2C, bàn phím, PCM,...với việc hỗ trợ nhiều kiểu truyền dữ liệu
bằng việc lập trình LUA script, cũng như việc module hỗ trợ điều khiển bằng tập
lệnh AT. Do thời gian khơng cho phép nên nhóm lập trình truyền nhận dữ liệu
thông qua tập lệnh AT mà hãng SIMCOM cung cấp.
Thông số kỹ thuật:
 HSPA: max.7.2Mbps(DL), max.5.76Mbps(UL)

 WCDMA: max.384Kbps(DL), max.384Kbps(UL)
 EDGE : max.236.8Kbps(DL), max.118Kbps(UL)
 GPRS: max.85.6Kbps(DL), max.85.6Kbps(UL)
1.3.1.9. ESP8266-07
ESP8266 là dòng chip tích hợp Wi-Fi 2.4Ghz có thể lập trình được, rẻ tiền
được sản xuất bởi một công ty bán dẫn Trung Quốc: Espressif Systems.
ESP8266 có một cộng đồng các nhà phát triển trên thế giới rất lớn, cung
cấp nhiều module lập trình mã mở giúp người dùng có thể tiếp cận và xây dựng
ứng dụng rất nhanh.
Thông số kỹ thuật:
 32-bit RISC CPU: Tensilica Xtensa LX106 chạy ở xung nhịp 80MHz
 Hỗ trợ Flash ngoài từ 512KB đến 4MB
 64KB RAM thực thi lệnh
 96KB RAM dữ liệu
 Chuẩn wifi EEE 802.11 b/g/n, Wifi 2,4GHz
 Tích hợp TR switch, balun, LNA, khuếch đại công suất và
matching network
 Hỗ trợ WEP, WPA/WPA2, Open network
 Tích hợp giao thức TCP/IP
 Hỗ trợ nhiều loại anten
 16chân GPIO
 Hỗ trợ SDIO 2.0, UART, SPI, I2C, PWM, I2S với DMA
 1 ADC 10 bit
Một số module và board phát triển phổ biến: ESP-01, ESP-07, ESP-12E,…
Trong đề tài, nhóm sử dụng ESP-07 có ưu điểm là có khá nhiều chân GPIO,
có shield chống nhiễu. Tuy nhiên, nhược điểm là dùng chip antenna nên khoảng
cách truyền khơng xa bằng PCB anten. Ta có thể khắc phục bằng cách gắn thêm
anten ngoài với IPEX connector trên board.

10



Hình 1.10: Module ESP8266-07

11


CHƯƠNG 2. THIẾT KẾ PHẦN CỨNG VÀ LẬP TRÌNH HỆ THỐNG
2.1 Thiết kế Board Dev
Khối nguồn
Sơ đồ khối nguồn của mạch được thể hiện như hình dưới đây:

Hình 2.11: Sơ đồ khối nguồn Board Dev

Nguồn lấy từ Adapter 5V 3A cấp cho mạch. Nguồn từ 5V sẽ đi qua IC
AMS1117 hạ áp xuống 3.3V để cấp cho SAM3X8E, ESP8266 và camera
OV5642. Nguồn từ 5V đi qua IC MIC29302 hạ áp xuống 4.2V để cấp cho
module SIM5320.
Khối ESP8266
Hình dưới đây là sơ đồ khối giao tiếp UART của ESP8266 thông qua
CH340 để truyền nhận dữ liệu cũng như nạp code cho ESP8266.

12


Hình 2.12: Sơ đồ khối truyền UART cho ESP8266

Hình dưới đây là sơ đồ khối của module ESP8266 với các kết nối bên
ngồi, để cho ESP hoạt động thì phải kéo chân GPIO0, GPIO2, EN lên mức
cao(tương ứng 3.3V) và chân GPIO15 kéo xuống mức thấp(tương ứng 0V).


Hình 2.13: Sơ đồ khối module ESP8266

Hình dưới đây là sơ đồ kết nối ESP8266 với 2 nút bấm, trong đó 1 nút là để
reset module ESP8266. Nút bấm còn lại cho việc nạp code cho ESP8266, trong
ESP8266 có bootloader trước, khi chạy nó sẽ kiểm tra chân GPIO0 xem đang ở
mức cao hay mức thấp để biết cho ESP vào trạng thái nạp code hay là chạy
chương trình chính, với GPIO0 mức ‘1’ là chế độ chạy chương trình cịn mức ‘0’
là chế độ nạp code.

13


Hình 2.14: Khối nút nhấn ESP8266

Khối ATSAM3X8EAU
Hình ở dưới là sơ đồ của chip ATSAM3X8EAU, để cho chip hoạt động cần
sử dụng nguồn 3.3V và cấp thạch anh bên ngoài cho chip.
Các tụ điện 104 để lọc nhiễu tần số cao cho chip, tụ phân cực đáp ứng
nguồn khi chip hoạt động có sự sụt áp mà nguồn chính chưa đáp ứng kịp sẽ xử
dụng nguồn từ những con tụ này.

14


Hình 2.15: Khối ATSAM3X8EU

Hình bên dưới là sơ đồ kết nối của chip ATSAM3X8EU thơng qua UART1
với máy tính thơng qua CH340.


15


Hình 2.16: Sơ đồ khối UART cho ATSAM3X8EAU

Hình bên dưới là sơ đồ của 2 thạch anh kết nối vào SAM3X8E, với sơ đồ
của thạch anh ở bên trên là thạch anh 12M cung cấp hoạt động chính cho mạch,
thạch anh ở bên dưới là 32,768K để cung cấp cho 1 số chức năng phụ của
SAM3X8E như đồng hồ thời gian thực.

Hình 2.17: Sơ đồ khối thạch anh cho chip ATSAM3X8EAU

Trên ATSAM3X8EAU hỗ trợ chuẩn USB nên có thể nạp code thơng qua
cổng này bằng máy tính, sơ đồ kết nối như hình bên dưới.

Hình 2.18: Sơ đồ khối kết nối USB cho ATSAM3X8EAU
16


Để đọc dữ liệu từ module camera ta phải kết nối chân SPI và I2C của
ATSAM3X8EAU với module camera, kết nối như hình dưới đây.

Hình 2.19: Sơ đồ khối kết nối module camera của ATSAM3X8EAU

Để lập trình truyền nhận dữ liệu với module 3G thì phải giao tiếp với
module SIM bằng UART, nhưng lúc mới cấp nguồn cho module SIM sẽ không
hoạt động được ngay mà phải bật nguồn cho module bằng cách kéo chân
POWON xuống mức 0 thì module SIM sẽ được bật lên cũng như lúc nào cần
khởi động lại module SIM ta phải kéo chân RESET trên module xuống mức thấp,
để làm điều này ta điều khiển bằng ATSAM3X8EAU như sơ hình bên dưới.


Hình 2.20: Sơ đồ khối truyền UART từ ATSAM3X8EAU đến SIM5320E

2.2 Thiết kế module SIM5320E

17


×