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

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

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 (4.44 MB, 74 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



DANH MỤC HÌNH VẼ


DANH MỤC BẢNG BIỂU


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

6


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

7


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 thc mng hot ng: 2592x1944
ã Kớch thc pixel: 1.4àm x 1.4àm
ã nh dng 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.

8


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.
9


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:
10


Đô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:

11



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:
12


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


13


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]
14


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 ngồ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.

15


Hình 1.10: Module ESP8266-07

16


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.

17


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.

18


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.

19


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.

20


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

21


Để đọ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

22



Hình 2.21: Sơ đồ khối SIM5320E

Hình trên là sơ đồ của chip SIM5320E. Tụ CVRTC và pin VRTC để cấp
nguồn cho phần thời gian thực trong chip để thời gian không bị mất khi mất điện.
Các tụ CS1, CS2, CS3 để cấp điện khi mà chip SIM cần nhiều điện mà nguồn
điện chính khơng đáp ứng đủ hay khơng kịp thời sẽ lấy điện từ những con tụ này.
Chip sim này lúc hoạt động có những lúc dịng điện lên đến 2.5A nhưng nó
khơng phải là tức thời, nó chỉ trong 1 thời gian rất ngắn, nên việc cung cấp những
con tụ to xung quanh như trên sẽ không cần thiết phải sử dụng nguồn đầu vào là
2.5A. Đã thử nghiệm với việc dùng Adapter 5V 0.5A vẫn hoạt động ổn định.

Hình 2.22: Sơ đồ khối chuyển mức logic cho SIM5320E

23


Điện áp các chân I/O trên chip SIM là 2.8V trong khi trên chip SAM3X8E
là 3.3V nên khác nhau điện áp như vậy nếu ta nối thẳng các chân UART của 2
chip với nhau sẽ không giao tiếp được, nên ta cần chuyển mức logic cho 2 bên,
như ở hình trên sử dụng MOSFET để chuyển mức logic của 2 bên.

Hình 2.23: Sơ đồ khối led báo trạng thái SIM5320E

Trong chip SIM đã có sẵn FIRMWARE của hãng cung cấp, trong đó có
việc thơng báo trạng thái của mạng và trạng thái nguồn của chip ở các chân
GPIO1 và GPIO40, nên khi thiết kế như hình trên thì khi bật nguồn cho thiết bị
bằng cách cho chân POWON xuống mức 0 trong 1 khoảng thời gian sẽ bật
nguồn và làm led PWRSTAT sáng. Led NETSTAT khi nguồn được bật sẽ sáng
nhưng sẽ tùy vào cách chớp tắt của led sẽ biết trạng thái của mạng như thế nào.

Phần thiết kế khối antenna cho 3G, module SIM5320E hãng SIMCOM
cung cấp đã thiết kế đầu ra với trở kháng là 50 ohm, các antenna sử dụng cũng
phải sử dụng loại 50 ohm, nhưng còn tùy vào chất lượng của hãng sản xuất
antenna mà giá trị trở kháng có thể thay đổi trong khoảng 50 ohm. Với trường
hợp antenna được sử dụng mà khác 50 ohm, thì khi tín hiệu đi từ module
SIM5320 đến antenna từ môi trường trở kháng này sang môi trường trở kháng
khác một phần tín hiệu sẽ bị dội ngược lại làm méo tín hiệu và suy giảm tín hiệu,
vậy phải thiết kế phần phối hợp trở kháng sao cho tín hiệu tới và tín hiệu bị phản
hồi lại cộng hưởng để không bị ảnh hưởng do sự dội tín hiệu. Cũng như phải
thiết kế đường mạch PCB cho phù hợp với trở kháng, với đẩu ra của module SIM
là 50 ohm thì đường mạch đó có trở kháng là 50 ohm đến phần mạch phối hợp
trở kháng, phần mạch in PCB từ đầu ra của mạch phối hợp trở kháng đến đầu nối
antenna cũng tương ứng là trở kháng đo được từ antenna. Và phải đảm bảo phần
mối hàn trên PCB cũng như các điểm hàn chân linh kiện của phần phối hợp trở
kháng cũng có trở kháng ứng với từng phần, cũng như đường mạch từ module
đến antenna phải thiết kế phần mass để thoát nhiễu tránh ảnh hưởng đến các phần
khác trên mạch cũng như các phần khác gây nhiễu. Tuy nhiên để đo đươc trở
kháng của antenna cần thiết bị chuyên dụng nên trong đề tài này giả thuyết trở
kháng của antenna là 50 ohm nên chỉ cần nối đường mạch từ đầu ra của module

24


SIM5320 đến trực tiếp với antenna sao cho đảm bảo trở kháng trên đường mạch
là 50 ohm và ngắn nhất có thể.
Tool tính phối hợp trở kháng LC: />Tool tính trở kháng trace mạch in: />2.3 Lập trình thiết bị
Lập trình đọc ghi dữ liệu I2C
Các chân SCL, SDA trong giao tiếp I2C được kết nối trực tiếp với cảm biến
để thiết lập các cài đặt về độ chế độ chụp, độ phân giải, các hiệu ứng hình ảnh,…
Các thanh ghi trong cảm biến ArduCAM là các thanh ghi 8 bit và có địa chỉ 8 bit

hoặc 16 bit.
Lập trình ghi dữ liệu I2C:
Để ghi dữ liệu vào các thanh ghi cảm biến OV5642 theo giao thức I2C cần
sử dụng chu kỳ truyền dữ liệu 3 pha:
• Pha 1: Truyền địa chỉ slave muốn giao tiếp (ở đây là địa chỉ cảm biến
OV5642: 0x78)
• Pha 2: Truyền địa chỉ thanh ghi của slave (8 bit hoặc 16 bit, nếu 16 bit
phải truyền 2 lần – truyền byte cao và byte thấp)
• Pha 3: Ghi dữ liệu 8 bit (hoặc 16 bit) vào thanh ghi của slave
Lưu đồ thuật toán như hình dưới đây:

Hình 2.24: Lưu đồ ghi dữ liệu I2C

Lập trình đọc dữ liệu I2C:
Để đọc dữ liệu thanh ghi cảm biến OV5642 theo giao thức I2C cần sử dụng
2 chu kỳ truyền dữ liệu:
- 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
- Chu kỳ đọc dữ liệu 2 pha:
• Pha 1: Truyền địa chỉ slave (0x79)
• Pha 2: Đọc dữ liệu từ slave
Lưu đồ thuật tốn như hình dưới đây:

25


×