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

BÁO CÁO BÀI TẬP Môn học: Đồ án thiết kế hệ thống nhúng Hệ thống trang trại thông minh

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.21 MB, 39 trang )

Đồ án thiết kế hệ thống nhúng

Nhóm 02



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

BÁO CÁO BÀI TẬP
Môn học: Đồ án thiết kế hệ thống nhúng

Hệ thống trang trại thơng minh
Giảng viên
Nhóm mơn học
Sinh viên thực hiện

: Nguyễn Ngọc Minh
: 02
: Nguyễn Văn Thắng
: Phạm Hoàng Long
: Nguyễn Cao Đàm
: Nguyễn Thành Nam

B18DCDT241
B18DCDT133
B18DCDT038
B18DCDT169

Hà Nội, ngày 2 tháng 5 năm 2022


1


Đồ án thiết kế hệ thống nhúng

Nhóm 02



Lời cảm ơn
Trong thời gian thực hiện đề tài, chúng em đã nhận được sự giúp đỡ của thầy cô và
bạn bè nên đề tài đã được hoàn thành. Chúng em xin chân thành cảm ơn đến :
Thầy Nguyễn Ngọc Minh, giảng viên Học viện Cơng nghệ Bưu chính Viễn thơng
đã trực tiếp hướng dẫn và nhiệt tình giúp đỡ tạo điều kiện để chúng em có thể hồn thành
tốt đề tài và đúng thời hạn.
Chúng em cũng gửi lời đồng cảm ơn đến các bạn trong Khoa Kĩ thuật Điện – Điện
tử đã chia sẻ trao đổi những kiến thức cũng như những kinh nghiệm quý báu giúp đỡ
chúng em hoàn thành đề tài này
Xin chân thành cảm ơn!

Người thực hiện đề tài
Nguyễn Văn Thắng
Nguyễn Cao Đàm
Phạm Hoàng Long
Nguyễn Thành Nam

2


Đồ án thiết kế hệ thống nhúng


Nhóm 02



Mục Lục
Chương 1: Tổng quan .................................................................................................................................6
1.1

Đặt vấn đề ....................................................................................................................................6

1.2

Mục tiêu ........................................................................................................................................6

1.3

Nội dung thực hiện ......................................................................................................................6

Chương 2: Cơ sở lý thuyết ..........................................................................................................................8
2.1 Giới thiệu phần cứng .........................................................................................................................8
2.1.1 ESP32 ...........................................................................................................................................8
2.1.2 Cảm biến nhiệt độ DHT11..........................................................................................................10
2.1.3. Cảm biến ánh sáng ....................................................................................................................11
2.1.4 Cảm biến siêu âm .......................................................................................................................12
2.1.5 Máy bơm nước ............................................................................................................................13
2.1.6 Relay ...........................................................................................................................................14
2.1.7 Cảm biến vân tay AS608 ...........................................................................................................14
2.1.8 Động cơ servo SG90...................................................................................................................15
2.2 Các loại chuẩn giao tiếp ..................................................................................................................16

2.2.1 Chuẩn giao tiếp one-wire ...........................................................................................................16
2.2.2 Chuẩn giao tiếp I2C ...................................................................................................................18
2.3 Hệ điều hành FreeRTOS ................................................................................................................20
2.3.1 Khái niệm ...................................................................................................................................20
2.3.2 Các khái niệm trong hệ điều hành thời gian thực RTOS ............................................................20
2.3.3 Cách hoạt động của RTOS .........................................................................................................23
2.4 Cơ sở dữ liệu MySQL .....................................................................................................................24
2.4.1. Khái niệm ..................................................................................................................................24
2.4.2 Mơ hình Client-server ................................................................................................................24
2.4.3. Làm việc với cơ sở dữ liệu .........................................................................................................25
2.4.4. Kết nối Socket io với MYSQL ....................................................................................................27
2.5 Socket io ...........................................................................................................................................28
2.5.1 Khái niệm ...................................................................................................................................28
2.5.2. Cấu trúc Socket io .....................................................................................................................28
2.6 HTML, CSS, JS ...............................................................................................................................30
3


Đồ án thiết kế hệ thống nhúng

Nhóm 02



2.6.1 HTML .........................................................................................................................................30
2.6.2 CSS .............................................................................................................................................31
2.6.3 Javascript ...................................................................................................................................32
Chương 3 : Thiết kế hệ thống ...................................................................................................................33
3.1 Thiết kế sơ đồ khối hệ thống...........................................................................................................33
3.2 Sơ đồ nguyên lý ................................................................................................................................34

3.2 Lưu đồ thuật toán ............................................................................................................................35
3.2.1 Lưu đồ thuật toán cho Esp..........................................................................................................35
3.2.2 Lưu đồ thuật toán cho webserver ...............................................................................................36
3.3 Nguyên lý hoạt động ........................................................................................................................36
3.4 Kết quả xây dựng Webserver .........................................................................................................37
Chương 4 : Kết luận và hướng phát triển ...............................................................................................38
4.1 Kết luận ............................................................................................................................................38
4.2 Hướng phát triền .............................................................................................................................38
Tài liệu tham khảo.....................................................................................................................................39

4


Đồ án thiết kế hệ thống nhúng

Nhóm 02



Danh mục hình ảnh
Hình 2. 1: Vi điều khiển esp32 ............................................................................................ 8
Hình 2. 2 Cảm biến nhiệt độ, độ ẩm DHT11 ..................................................................... 10
Hình 2. 3 Cảm biến ánh sáng ............................................................................................. 12
Hình 2. 4 cảm biến siêu âm................................................................................................ 12
Hình 2. 5 Máy bơm nước ................................................................................................... 13
Hình 2. 6 Module 1 Relay Với Opto Cách Ly Kích H/L (5VDC) .................................... 14
Hình 2. 7 Cảm biến vân tay AS608 ................................................................................... 15
Hình 2. 8 Động cơ sevro SG90 .......................................................................................... 16
Hình 2. 9 Chuẩn giao tiếp One Wire ................................................................................. 16
Hình 2. 10 Cách gửi tin của giao tiếp One Wire................................................................ 17

Hình 2. 11 Cấu tạo chuẩn giao tiếp I2C ............................................................................. 18
Hình 2. 12 Quá trình truyền dữ liệu ................................................................................... 19
Hình 2. 13 Cấu tạo Kernel ................................................................................................. 20
Hình 2. 14 Trạng thái Task trong Rtos .............................................................................. 21
Hình 2. 15 Cấu taọ Priority base ........................................................................................ 22
Hình 2. 16 Message queue – Hàng đợi tin nhắn ................................................................ 23
Hình 2. 17 Cách hoạt động của RTOS............................................................................... 23
Hình 2. 18 Mơ hình Client – Server................................................................................... 24
Hình 2. 19 Cách hoạt động của MySQL client .................................................................. 25
Hình 2. 20 Cấu trúc socket io ............................................................................................ 28
Hình 3. 1 Sơ đồ khối hệ thống ........................................................................................... 33
Hình 3. 2 Sơ đồ nguyên lý ................................................................................................. 34
Hình 3. 3 Lưu đồ thuật tốn Esp32 .................................................................................... 35
Hình 3. 4 Lưu đồ thuật tốn webserver ............................................................................. 36
Hình 3. 5 Giao diện điều khiển , giám sát.......................................................................... 37
Hình 3. 6 Giao diện hiện thị lịch sử đo .............................................................................. 37

5


Đồ án thiết kế hệ thống nhúng

Nhóm 02



Chương 1: Tổng quan
1.1 Đặt vấn đề
Ngành nông nghiệp là một ngành truyền thống của nước ta thế nhưng không,phát
triển một cách mạnh mẽ bởi vì với lối canh tác truyền thống, chúng ta cịn gặp phải rất

nhiều hạn chế, hiệu quả khơng cao. Việc áp dụng công nghệ, kỹ thuật mới sẽ là một hướng
đi mới mang lại “làn gió mới” cho ngành nông nghiệp nước nhà.
Việc ứng dụng IoT vào nông nghiệp sẽ mang lại rất nhiều thuận lợi cho người
nông dân, quan trọng hơn là nâng cao hiệu quả trồng trọt, cũng như nâng cao hiệu quả
kinh tế. Như chúng ta đều biết khí hậu ngày càng trở nên khắc nghiệt, thế nên việc con
người tự theo dõi thời tiết và can thiệp, chăm sóc cây trồng sao cho kịp với sự thay đổi
của khí hậu, quả thật tốn rất nhiều thời gian công sức, hiệu quả lại không cao. Thế nhưng
với sự can thiệp của máy móc, hệ thơng cảm biến, sẽ giúp người nông dân giám sát một
cách chính xác và hiệu quả nhất. Ngày nay, loT được ứng dụng vào nông nghiệp ở hầu
hết các giai đoạn từ q trình sản xuất đến đóng, gói và phân phối nông sản đến người
tiêu dùng.
Nhận thấy sự thuận lợi cũng như tính ứng dụng cao của IoT trong ngành nơng.
nghiệp, cụ thể là là trong cây trồng, nhóm chúng tôi quyết định chọn đề tài “Hệ thống
nông nghiệp thông minh”. Ý tưởng cốt lõi của hệ thống này là các thông tin từ các cảm
biến sẽ được thu thập đưa đến xử lý trung tâm, sau đó trung tâm sẽ đưa ra các xử lý cho
hệ thống bơm phun sương, quạt, đèn hoạt động một cách phù hợp đề tạo ra một môi
trường thuận lợi nhất cho cây trồng phát triển tối ưu.
1.2 Mục tiêu
Tìm hiểu và thực hiện việc điều khiển các thiết bị trong nông nghiệp như đèn, quạt,
máy bơm nước,… thông qua mạng Internet. Cụ thể là tìm hiểu về chip ESP32 để điều
khiển thiết bị thơng qua mạng Wifi.
Tìm hiểu và tiến hành xây dựng cơ sở dữ liệu thông qua MySQL, thực hiện truyền
nhận thiết bị và server Socket io.
Xây dựng giao diện Webserver để điều khiển và giám sát thiết bị.
Thiết kế và thi cơng mơ hình nơng nghiệp thơng minh.
1.3 Nội dung thực hiện
Nội dung 1: Tìm hiểu nguyên lý hoạt động và thiết kế mạch điều khiển sử dụng chip
ESP32, các cảm biến, thiết bị được sử dụng.
6



Đồ án thiết kế hệ thống nhúng

Nhóm 02



Nội dung 2: Thiết kế mạch nguồn và mạch công suất cho mô hình
Nội dung 3: Tìm hiểu và xây dựng cơ sở dữ liệu
Nội dung 4: Thiết kế lưu đồ giải thuật và viết chương trình điều khiển thiết bị, xây
dựng Socket Server, thiết kế giao diện Webserver và điều khiển, giám sát trạng thái
đóng mở của các thiết bị.
Nội dung 5 : Thi cơng mơ hình
Nội dung 6 : Thử nghiêm và điều chỉnh phần cứng cũng như chương trình để mơ hình
được tối ưu. Đánh giá các thơng số của mơ hình.
Nội dung 7: Viết báo cáo thực hiện.

7


Đồ án thiết kế hệ thống nhúng

Nhóm 02



Chương 2: Cơ sở lý thuyết
2.1 Giới thiệu phần cứng
2.1.1 ESP32
Module ESP32-WROOM bao gồm:

 30 chân GPIO.
 Điện áp logic là 2,7 đến 3,3 V.
 1 Enable Button (Chân reset) và 1 User Button(GPIO 0).
 Led báo nguồn và User Led (GPIO 2).
 UART: Serial Debug mặc định là UART 0.
 Clock: 240MHz

Hình 2. 1: Vi điều khiển esp32
Input Only Pins:
GPIO 34 đến 39 – input only pins. Các chân này khơng có nội trở kéo lên hoặc kéo
xuống. Chúng không thể được sử dụng làm output, vì vậy chỉ sử dụng các chân này làm
input:
 GPIO 34
 GPIO 35
 GPIO 36
 GPIO 39
8


Đồ án thiết kế hệ thống nhúng

Nhóm 02



Analog to Digital Converter (ADC)
ESP32 có 18 kênh input ADC và độ phân giải 12 bit (trong khi ESP8266 chỉ có 1
kênh ADC độ phân giải 10 bit). Đây là các GPIO có thể được sử dụng làm ADC và các
kênh tương ứng:
 ADC1_CH0 (GPIO 36)

 ADC1_CH1 (GPIO 37)
 ADC1_CH2 (GPIO 38)
 ADC1_CH3 (GPIO 39)
 ADC1_CH4 (GPIO 32)
 ADC1_CH5 (GPIO 33)
 ADC1_CH6 (GPIO 34)
 ADC1_CH7 (GPIO 35)
 ADC2_CH0 (GPIO 4)
 ADC2_CH1 (GPIO 0)
 ADC2_CH2 (GPIO 2)
 ADC2_CH3 (GPIO 15)
 ADC2_CH4 (GPIO 13)
 ADC2_CH5 (GPIO 12)
 ADC2_CH6 (GPIO 14)
 ADC2_CH7 (GPIO 27)
 ADC2_CH8 (GPIO 25)
 ADC2_CH9 (GPIO 26)
Digital to Analog Converter (DAC)
 DAC1 (GPIO25)
 DAC2 (GPIO26)
PWM
Bộ điều khiển ESP32 LED PWM có 16 kênh độc lập có thể được cấu hình để tạo
tín hiệu PWM với các đặc tính khác nhau. Tất cả các chân có thể hoạt động như output
đều có thể được sử dụng làm chân PWM (GPIO từ 34 đến 39 khơng thể tạo PWM). Các
thơng số cấu hình:
 Tần số tín hiệu.
9


Đồ án thiết kế hệ thống nhúng


Nhóm 02



 Duty cycle.
 Kênh PWM.
 Chân GPIO xuất tín hiệu.
I2C
ESP32 có hai kênh I2C và bất kì chân nào cũng có thể cấu hình làm chân SDA và
SCL. Khi sử dụng ESP32 với Arduino IDE, chân I2C mặc định là:
 GPIO 21 (SDA)
 GPIO 22 (SCL)
SPI
ESP32 có module giao tiếp SPI với thiết bị ngoại vi, gọi là SPI0, SPI1, HSPI, VSPI.
SPI0 chỉ dành riêng để kết nối bộ nhớ flash của ESP32 với các thiết bị bố nhớ flash khác
bên ngoài.
SPI1 được kết nối cũng tương tự như SPI0 nhưng nó dùng để ghi dữ liệu cho bộ nhớ
Flash của chip.
HSPI và VSPI và sử dụng tự do. SPI1 và HSPI và VSPI đều có 3 cổng kết với chip,
giúp chúng ta dễ dàng kết nối đồng thời với 3 slave bằng giao tiếp SPI mà ESP32 sẽ là
thiết bị master.
Interrupts
Tất cả các GPIO có thể được cấu hình như ngắt.
2.1.2 Cảm biến nhiệt độ DHT11
Cảm biến độ ẩm và nhiệt độ DHT11 Temperature Humidity Sensor là cảm biến rất
thông dụng hiện nay vì chi phí rẻ và rất dễ lấy dữ liệu thông qua giao tiếp 1 wire (giao
tiếp digital 1 dây truyền dữ liệu duy nhất). Bộ tiền xử lý tín hiệu tích hợp trong cảm biến
giúp bạn có được dữ liệu chính xác mà khơng phải qua bất kỳ tính tốn nào. So với cảm
biến đời mới hơn là DHT22 thì DHT11 cho khoảng đo và độ chính xác kém hơn rất nhiều.


Hình 2. 2 Cảm biến nhiệt độ, độ ẩm DHT11
DHT11 là cảm biến có thể đọc được nhiệt độ và độ ẩm cùng lúc.
10


Đồ án thiết kế hệ thống nhúng

Nhóm 02



Cấu tạo gồm 4 chân:
 VCC (chân nguồn dương)
 DATA (chân tín hiệu)
 NC (Not Connected - chân này chúng ta không dùng đến)
 GND (chân nối đất).
Thông số kỹ thuật:
 Nguồn: 3 -> 5 VDC.
 Dòng sử dụng: 2.5mA max (khi truyền dữ liệu).
 Đo tốt ở độ ẩm 20-80%RH với sai số 5%.
 Đo tốt ở nhiệt độ 0 to 50°C sai số ±2°C.
 Tần số lấy mẫu tối đa 1Hz (1 giây 1 lần)
 Kích thước 15mm x 12mm x 5.5mm.
 4 chân, khoảng cách chân 0.1''.
Đọc cảm biến
Dữ liệu truyền về của DHT11 gồm 40bit dữ liệu theo thứ tự: 8 bit biểu thị phần
nguyên của độ ẩm + 8 bit biểu thị phần thập phân của độ ẩm + 8 bit biểu thị phần nguyên
của nhiệt độ + 8 bit biểu thị phần thập phân của nhiệt độ + 8 bit check sum.
Ví dụ: ta nhận được 40 bit dữ liệu như sau:

0011 0101 0000 0000 0001 1000 0000 0000 0100 1101
 Tính tốn:
8 bit checksum: 0011 0101 + 0000 0000 + 0001 1000 + 0000 0000= 0100 1101
 Độ ẩm: 0011 0101 = 35H = 53% (ở đây do phần thập phân có giá trị 0000 0000 nên
ta bỏ qua khơng tính phần thập phân)Nhiệt độ: 0001 1000 = 18H = 24°C (ở đây do
phần thập phân có giá trị 0000 0000, nên ta bỏ qua khơng tính phần thập phân)
2.1.3. Cảm biến ánh sáng
Cảm biến ánh sáng là thiết bị cảm biến thơng minh có khả năng nhận biết các biến
đổi của môi trường thông qua mắt cảm biến để đúng lúc xoay chỉnh ánh sáng để phù hợp.
Cảm biến này biết được ánh sáng và xoay chỉnh thay đổi dựa trên các đi-ốt quang học.
Cảm biến ánh sáng hoạt động trên nguyên lý làm việc còn được nhắc đên là hiệu ứng
quang điện bên trong. Nói một cách đơn giản, khi một chùm ánh sáng chiếu vào, các
electron bị nới lỏng, gây ra các lỗ electron dẫn đến dòng điện chạy qua.
Ánh sáng càng lớn, dòng điện sẽ càng mạnh.
11


Đồ án thiết kế hệ thống nhúng

Nhóm 02



Hình 2. 3 Cảm biến ánh sáng
Thông số kỹ thuật
 Nguồn: 3.3 – 5VDC
 Sử dụng quang trở CDS.
 Kích thước nhỏ gọn: 36x16mm
 Xuất tín hiệu Digital rất dễ sử dụng.
2.1.4 Cảm biến siêu âm

Cảm biến siêu âm HC-SR04 (Ultrasonic Sensor) được sử dụng rất phổ biến để xác
định khoảng cách vì RẺ và CHÍNH XÁC. Cảm biến HC-SR04 sử dụng sóng siêu âm và
có thể đo khoảng cách trong khoảng từ 2 -> 300cm, với độ chính xác gần như chỉ phụ
thuộc vào cách lập trình.
VCC (5V), trig (chân điều khiển phát), echo (chân nhận tín hiệu phản hồi), GND.
Cảm biến siêu âm SR04 sử dụng nguyên lý phản xạ sóng siêu âm. Cảm biến gồm 2
module.1 module phát ra sóng siêu âm và 1 module thu sóng siêu âm phản xạ về. Đầu
tiên cảm biến sẽ phát ra 1 sóng siêu âm với tần số 40khz. Nếu có chướng ngại vật trên
đường đi, sóng siêu âm sẽ phản xạ lại và tác động lên module nhận sóng. Bằng cách đo
thời gian từ lúc phát đến lúc nhận sóng ta sẽ tính được khoảng cách từ cảm biến đến vật.
Khoảng cách = (thời gian * vận tốc âm thanh (340 m/s) / 2

Hình 2. 4 cảm biến siêu âm

12


Đồ án thiết kế hệ thống nhúng

Nhóm 02



Thơng số kĩ thuật
Điện áp: 5V DC
Dòng hoạt động: < 2mA
Mức cao: 5V
Mức thấp: 0V
Góc tối đa: 15 độ
Khoảng cách: 2cm – 450cm (4.5m)

Độ chính xác: 3mm
2.1.5 Máy bơm nước
 Điện áp: 5V DC
 Dịng hoạt động: < 2mA
 Mức cao: 5VThơng số kĩ thuật :
 Điện Áp: 3 - 5V DC
 Dòng : 100-200ma
 Kích Thước: 23x43mm
 Đầu Hút Nước Vào: 5mm
 Đầu Nước Ra:
+ Đầu Chui 45mm
+ Đầu Bao Ngoài: 75mm
 Lưu lượng :1.1-1.6L/Phút
 Mức thấp: 0V
 Góc tối đa: 15 độ
 Khoảng cách: 2cm – 450cm (4.5m)
 Độ chính xác: 3mm

Hình 2. 5 Máy bơm nước
13


Đồ án thiết kế hệ thống nhúng

Nhóm 02



2.1.6 Relay
Module 1 Relay với opto cách ly nhỏ gọn, có opto và transistor cách ly giúp cho việc

sử dụng trở nên an tồn với board mạch chính, module 1 Relay với opto cách ly hl 5v
được sử dụng để đóng ngắt nguồn điện cơng suất cao AC hoặc DC, có thể chọn đóng khi
kích mức cao hoặc mức thấp bằng Jumper.
Tiếp điểm đóng ngắt gồm 3 tiếp điểm NC (thường đóng), NO(thường mở) và
COM(chân chung) được cách ly hoàn toàn với board mạch chính, ở trạng thái bình thường
chưa kích NC sẽ nối với COM, khi có trạng thái kích COM sẽ chuyển sang nối với NO
và mất kết nối với NC.
Thông số kỹ thuật
 Sử dụng điện áp nuôi DC 5V.
 Relay mỗi Relay tiêu thụ dòng khoảng 80mA.
 Điện thế đóng ngắt tối đa: AC250V ~ 10A hoặc DC30V ~ 10A.
 Có đèn báo đóng ngắt trên mỗi Relay.
 Có thể chọn mức tín hiệu kích 0 hoặc 1 qua jumper.
 Kích thước: 1.97 in x 1.02 in x 0.75 in (5.0 cm x 2.6 cm x 1.9 cm)
 Weight: 0.60oz (17g)

Hình 2. 6 Module 1 Relay Với Opto Cách Ly Kích H/L (5VDC)
2.1.7 Cảm biến vân tay AS608
Cảm biến nhận dạng vân tay sử dụng giao tiếp UART TTL hoặc USB 1.1 để giao tiếp
với Vi điều khiển hoặc kết nối trực tiếp với máy tính (thơng qua mạch chuyển USBUART hoặc giao tiếp USB 1.1).
Cảm biến nhận dạng vân tay được tích hợp nhân xử lý nhận dạng vân tay phía trong,
tự động gán vân tay với 1 chuỗi data và truyền qua giao tiếp UART ra ngoài nên hồn
tồn khơng cần các thao tác xử lý hình ảnh, đơn giản chỉ là phát lệnh đọc/ghi và so sánh
chuỗi UART nên rất dễ sử dụng và lập trình.
14


Đồ án thiết kế hệ thống nhúng

Nhóm 02




Cảm biến nhận dạng vân tay có khả năng lưu nhiều vân tay cho 1 ID (1 người), thích
hợp cho các ứng dụng bảo mật, khóa cửa, sinh trắc học,…
Thơng số kĩ thuật :
 Điệp áp hoạt động: 3.6 đến 6.0VDC
 Dòng điện tiêu thụ: <120mA
 Phương thức giao tiếp: UART
 Mức độ an toàn: 5
 Tỉ lệ chấp nhận sai (FAR): <0.001% (mức bảo mật 3)
 Tỉ lệ từ chối sai (FRR): <1.0% (mức bảo mật 3)
 Có thể lưu trữ được 127 dấu vân tay khác nhau

Hình 2. 7 Cảm biến vân tay AS608
Sơ đồ kết nối :
Cảm biến vân tay
VCC
TX
RX
GND

Esp32
3.3V
RX2
TX2
GND

2.1.8 Động cơ servo SG90
Động cơ servo SG90 có kích thước nhỏ, là loại được sử dụng nhiều nhất để làm các

mơ hình nhỏ hoặc các cơ cấu kéo khơng cần đến lực nặng.
Động cơ servo SG90 90 độ có tốc độ phản ứng nhanh, các bánh răng được làm bằng
nhựa nên cần lưu ý khi nâng tải nặng vì có thể làm hư bánh răng, động cơ RC Servo 9G
có tích hợp sẵn Driver điều khiển động cơ bên trong nên có thể dễ dàng điều khiển góc
quay bằng phương pháp điều độ rộng xung PWM.
Thông số kĩ thuật
 Điện áp hoạt động: 4.8-5VDC
15


Đồ án thiết kế hệ thống nhúng

Nhóm 02



 Tốc độ: 0.12 sec/ 60 deg (4.8VDC)
 Lực kéo: 1.6 Kg.cm
 Kích thước: 21x12x22mm
 Trọng lượng: 9g.

Hình 2. 8 Động cơ sevro SG90
2.2 Các loại chuẩn giao tiếp
2.2.1 Chuẩn giao tiếp one-wire
Chuẩn giao tiếp1dây (one-wire) được thiết kế bởi Dallas Semiconductor và đã được
Maxim mua lại năm 2001. Maxim là một hãng sản xuất chip lớn. One-Wrire dùng một
dây để truyền nhận nên có tốc độ thấp. Chủ yếu sử dụng cho việc thu thập dữ liệu, truyền
nhận dữ liệu thời tiết, nhiệt độ, công việc không yêu cầu tốc độ cao. Là chuẩn giao tiếp
không đồng bộ và bán song công (half-duplex). Giao tiếp tuân theo mối quan hệ chủ tớ
một cách chặc chẽ. Trên cùng một bus thì chúng ta có thể gắn1hoặc nhiều thiết bị slave

nhưng chi có một master có thể kết nối được với bus này. Khi khơng có dữ liệu trên đường
truyền thì bus dữ liệu được xem là ở trạng thái rảnh.

Hình 2. 9 Chuẩn giao tiếp One Wire
16


Đồ án thiết kế hệ thống nhúng

Nhóm 02



Để giao tiếp được với vi điều khiển, tín hiệu trên bus one-wire chia thành các khe
thời gian 60 µs. Một bit dữ liệu được truyền trên bus dựa trên khe thời gian (time slots).
Các thiết bị slave khác nhau cho phép có thời gian quy định khác nhau. Nhưng quan trọng
nhất trong chuẩn giao tiếp này là cần chính xác về thởi gian. Vì vậy để tối ưu đường
truyền thì cần một bộ định thời để delay chính xác nhất.

Hình 2. 10 Cách gửi tin của giao tiếp One Wire

Giải thích ý nghĩa :
 Gửi bit 1: Khi muốn gửi đi bit 1, thiết bị Master sẽ kéo bus xuống mức 0 trong một
khoảng thời gian A (µs) và trở về mức 1 trong khoảng B (µs).
 Gửi bit 0: Thiết bị Master kéo bus xuống mức 0 trong một khoảng thời gian C (µs)
và trở về mức 1 trong khoảng D (µs).
 Đọc bit: Thiết bị Master kéo bus xuống 1 khoảng A (µs). Trong khoảng thời gian E
(µs) tiếp theo, thiết bị master sẽ tiến hành lấy mẫu. Có nghĩa trong E (µs) này, nếu
bus ở mức 1, thiết bị master sẽ đọc bit 1. Ngược lại, nếu bus ở mức 0 thì master sẽ
đọc được bit 0.

 Reset: Thiết bị Master kéo bus xuống 1 khoảng thời gian H (µs) và sau đó về mức
1. Khoảng thời gian này gọi là tín hiệu reset. Trong khoảng thời gian I (µs) tiếp theo,
thiết bị master tiến hành lấy mẫu. Nếu thiết bị slave gắn với bus gửi về tín hiệu 0,
(tức bus ở mức 0), master sẽ hiểu rằng slave vẫn có mặt và q trình trao đổi dữ liệu
lại tiếp tục. Ngược lại nếu slave gửi về tin hiệu 1 ( bus ở mức 1) thì master hiểu rằng
khơng có thiết bị slave nào tồn tại và dừng quá trình.
17


Đồ án thiết kế hệ thống nhúng

Nhóm 02



2.2.2 Chuẩn giao tiếp I2C
Khái niệm
I2C ( Inter – Integrated Circuit) là 1 giao thức giao tiếp nối tiếp đồng bộ được phát
triển bởi Philips Semiconductors, sử dụng để truyền nhận dữ liệu giữa các IC với nhau
chỉ sử dụng hai đường truyền tín hiệu.
Các bit dữ liệu sẽ được truyền từng bit một theo các khoảng thời gian đều đặn được
thiết lập bởi 1 tín hiệu đồng hồ.
Bus I2C thường được sử dụng để giao tiếp ngoại vi cho rất nhiều loại IC khác nhau
như các loại vi điều khiển, cảm biến, EEPROM, … .
Cấu tạo
I2C sử dụng 2 đường truyền tín hiệu:
 SCL - Serial Clock Line : Tạo xung nhịp đồng hồ do Master phát đi
 SDA - Serial Data Line : Đường truyền nhận dữ liệu

Hình 2. 11 Cấu tạo chuẩn giao tiếp I2C


 Giao tiếp I2C bao gồm quá trình truyền nhận dữ liệu giữa các thiết bị chủ tớ, hay
Master - Slave.
 Thiết bị Master là 1 vi điều khiển, nó có nhiệm vụ điều khiển đường tín hiệu SCL
và gửi nhận dữ liệu hay lệnh thơng qua đường SDA đến các thiết bị khác.
 Các thiết bị nhận các dữ liệu lệnh và tín hiệu từ thiết bị Master được gọi là các thiết
bị Slave. Các thiết bị Slave thường là các IC, hoặc thậm chí là vi điều khiển.
 Master và Slave được kết nối với nhau như hình trên. Hai đường bus SCL và SDA
đều hoạt động ở chế độ Open Drain, nghĩa là bất cứ thiết bị nào kết nối với mạng
18


Đồ án thiết kế hệ thống nhúng

Nhóm 02



I2C này cũng chỉ có thể kéo 2 đường bus này xuống mức thấp (LOW), nhưng lại
không thể kéo được lên mức cao. Vì để tránh trường hợp bus vừa bị 1 thiết bị kéo
lên mức cao vừa bị 1 thiết bị khác kéo xuống mức thấp gây hiện tượng ngắn mạch.
Do đó cần có 1 điện trờ ( từ 1 – 4,7 kΩ) để giữ mặc định ở mức cao.
Quá trình truyền nhận dữ liệu:
 Bắt đầu: Thiết bị Master sẽ gửi đi 1 xung Start bằng cách kéo lần lượt các đường
SDA, SCL từ mức 1 xuống 0.

Hình 2. 12 Quá trình truyền dữ liệu
 Tiếp theo đó, Master gửi đi 7 bit địa chỉ tới Slave muốn giao tiếp cùng với bit
Read/Write.
 Slave sẽ so sánh địa chỉ vật lý với địa chỉ vừa được gửi tới. Nếu trùng khớp, Slave

sẽ xác nhận bằng cách kéo đường SDA xuống 0 và set bit ACK/NACK bằng ‘0’.
Nếu khơng trùng khớp thì SDA và bit ACK/NACK đều mặc định bằng ‘1’.
 Thiết bị Master sẽ gửi hoặc nhận khung bit dữ liệu. Nếu Master gửi đến Slave thì
bit Read/Write ở mức 0. Ngược lại nếu nhận thì bit này ở mức 1.
 Nếu như khung dữ liệu đã được truyền đi thành công, bit ACK/NACK được set
thành mức 0 để báo hiệu cho Master tiếp tục.
 Sau khi tất cả dữ liệu đã được gửi đến Slave thành công, Master sẽ phát 1 tín hiệu
Stop để báo cho các Slave biết quá trình truyền đã kết thúc bằng các chuyển lần lượt
SCL, SDA từ mức 0 lên mức 1.
19


Đồ án thiết kế hệ thống nhúng

Nhóm 02



2.3 Hệ điều hành FreeRTOS
2.3.1 Khái niệm
RTOS là viết tắt của cụm từ Real-time operating system hay hệ điều hành thời gian
thực thường được nhúng trong các dòng vi điều khiển dùng để điều khiển thiết bị một
cách nhanh chóng và đa nhiệm (multi tasking).
Hệ điều hành thời gian thực (realtime): sinh ra cho các tác vụ cần sự phản hồi nhanh
của hệ thống, thường được nhúng trong các loại vi điều khiển và khơng có giao diện (GUI)
tương tác với người dùng. Chúng cần phản hồi nhanh bởi vì đa số các tác vụ tương tác
với thiết bị, máy móc khác chứ không phải con người. Các tài nguyên bên trong rất hữu
hạn nên chỉ một sự chậm trễ cũng có thể làm hệ thống làm việc hoàn toàn sai lệch.
2.3.2 Các khái niệm trong hệ điều hành thời gian thực RTOS
Kernel – Nhân

Kernel hay cịn gọi là Nhân có nhiệm vụ quản lý và điều phối các Task. Mọi sự kiện
(Even) như ngắt, Timer, data truyền tới… đều qua Kernel xử lý để quyết định xem nên
làm gì tiếp theo. Thời gian xử lý của Kernel thường rất nhanh nên độ trễ rất thấp.

Hình 2. 13 Cấu tạo Kernel
20


Đồ án thiết kế hệ thống nhúng

Nhóm 02



Task – Tác vụ
Task là một đoạn chương trình thực thi một hoặc nhiều vấn đề gì đó, được Kernel
quản lý.
Kernel sẽ quản lý việc chuyển đổi giữa các task, nó sẽ lưu lại ngữ cảnh của task sắp
bị hủy và khôi phục lại ngữ cảnh của task tiếp theo bằng cách:


Kiểm tra thời gian thực thi đã được định nghĩa trước (time slice được tạo ra
bởi ngắt systick)



Khi có các sự kiện unblocking một task có quyền cao hơn xảy ra (signal, queue,
semaphore,…)




Khi task gọi hàm Yield() để ép Kernel chuyển sang các task khác mà không
phải chờ cho hết time slice



Khi khởi động thì kernel sẽ tạo ra một task mặc định gọi là Idle Task.

Task States – Trạng thái Task
Một task trong RTOS thường có các trạng thái như sau

Hình 2. 14 Trạng thái Task trong Rtos
 RUNNING: đang thực thi
 READY: sẵn sàng để thực hiện
 WAITING: chờ sự kiện
 INACTIVE: khơng được kích hoạt
21


Đồ án thiết kế hệ thống nhúng

Nhóm 02



Scheduler – Lập lịch
Đây là 1 thành phần của kernel quyết định task nào được thực thi. Có một số luật
cho scheduling như:



Cooperative: giống với lập trình thơng thường, mỗi task chỉ có thể thực thi khi
task đang chạy dừng lại, nhược điểm của nó là task này có thể dùng hết tất cả
tài nguyên của CPU



Round-robin: mỗi task được thực hiện trong thời gian định trước (time slice) và
khơng có ưu tiên.



Priority base: Task được phân quyền cao nhất sẽ được thực hiện trước, nếu các
task có cùng quyền như nhau thì sẽ giống với round-robin, các task có mức ưu
tiên thấp hơn sẽ được thực hiện cho đến cuối time slice

Hình 2. 15 Cấu taọ Priority base


Priority-based pre-emptive: Các task có mức ưu tiên cao nhất ln nhường các
task có mức ưu tiên thấp hơn thực thi trước.

Message queue – Hàng đợi tin nhắn
Message queue là cơ chế cho phép các task có thể kết nối với nhau, nó là một FIFO
( First In First Out) buffer được định nghĩa bởi độ dài (số phần tử mà buffer có thể lưu
trữ) và kích thước dữ liệu (kích thước của các thành phần trong buffer).
Task có thể ghi vào hằng đợi (queue)


Task sẽ bị khóa (block) khi gửi dữ liệu tới một message queue đầy đủ




Task sẽ hết bị khóa (unblock) khi bộ nhớ trong message queue trống



Trường hợp nhiều task mà bị block thì task với mức ưu tiên cao nhất sẽ được
unblock trước
22


Đồ án thiết kế hệ thống nhúng

Nhóm 02



Task có thể đọc từ hằng đợi (queue)


Task sẽ bị block nếu message queue trống



Task sẽ được unblock nếu có dữ liệu trong message queue.



Tương tự ghi thì task được unblock dựa trên mức độ ưu tiên


Hình 2. 16 Message queue – Hàng đợi tin nhắn
2.3.3 Cách hoạt động của RTOS
RTOS là một phân đoạn hoặc một phần của chương trình, trong đó nó giải quyết việc
điều phối các task, lập lịch và phân mức ưu tiên cho task, nắm bắt các thông điệp gửi đi
từ task.
RTOS khá phức tạp, nói một cách dễ hiểu hơn là nó thực hiện việc xử lý các trạng
thái máy (State Machine). Các bạn có thể tìm hiểu tại bài viết States Machine và lập trình
nhúng.

Hình 2. 17 Cách hoạt động của RTOS
23


Đồ án thiết kế hệ thống nhúng

Nhóm 02



Cách hoạt động của RTOS Nhân Kernel sẽ điều phối sự hoạt động của các tác vụ
(Task), mỗi task sẽ có một mức ưu tiên (prioritize) và thực thi theo chu kì cố định. Nếu
có sự tác động như ngắt, tín hiệu hoặc tin nhắn giữa các Task, Kernel sẽ điều phối chuyển
tới Task tương ứng với Code đó. Sự chuyển dịch giữa các Task rất linh động, độ trễ thấp
mang lại độ tin cậy cao cho chương trình.
2.4 Cơ sở dữ liệu MySQL
2.4.1. Khái niệm
MySQL là một hệ thống quản trị cơ sở dữ liệu mã nguồn mở (gọi tắt là RDBMS)
hoạt động theo mơ hình client-server. Với RDBMS là viết tắt của Relational Database
Management System. MySQL được tích hợp apache, PHP. MySQL quản lý dữ liệu thông
qua các cơ sở dữ liệu. Mỗi cơ sở dữ liệu có thể có nhiều bảng quan hệ chứa dữ liệu.

MySQL cũng có cùng một cách truy xuất và mã lệnh tương tự với ngôn ngữ SQL. MySQL
được phát hành từ thập niên 90s.
Database là tập hợp dữ liệu theo cùng một cấu trúc được đặt trong một bộ dữ liệu
chung dataset. Database được tổ chức sắp xếp giống như một bảng tính có sự liên kết chặt
chẽ với nhau.
Được hiểu là mã nguồn mở, Open source cho phép mọi người dùng sử dụng, cài đặt
và tùy chỉnh nó.
2.4.2 Mơ hình Client-server

Hình 2. 18 Mơ hình Client – Server

24


Đồ án thiết kế hệ thống nhúng

Nhóm 02



Máy tính cài đặt và chạy phần mềm RDBMS được gọi là client (máy khách). Mỗi khi
chúng cần truy cập dữ liệu, chúng kết nối tới máy chủ (server) RDBMS. Cách thức này
chính là mơ hình client-server.
MySQL Server
Đây là máy tính hay một hệ các máy tính cài đặt phần mềm MySQL dành cho server
để giúp bạn lưu trữ dữ liệu trên đó để máy khách có thể truy cập vào quản lý.
MySQL Client
MYSQL Client là tên gọi chung của mọi phần mềm có thể thực hiện truy vấn MySQL
server và nhận kết quả trả về. Hay nói cách khác, MySQL Client là đoạn mã PHP script
trên một máy tính hay trên cùng server dùng để kết nối tới MySQL database.

Cách hoạt động

Hình 2. 19 Cách hoạt động của MySQL client
Cách vận hành chính trong mơi trường MySQL như sau:
 MySQL tạo ra bảng để lưu trữ dữ liệu, định nghĩa sự liên quan giữa các bảng đó.
 Client sẽ gửi yêu cầu SQL bằng một lệnh đặc biệt trên MySQL.
 Ứng dụng trên server sẽ phản hồi thông tin và trả về kết quả trên máy client.
2.4.3. Làm việc với cơ sở dữ liệu
Tạo cơ sở dữ liệu với tên được chỉ định nếu tên đó khơng tồn tại trong máy chủ cơ
sở dữ liệu
CREATE DATABASE [IF NOT EXISTS] database_name;
25


×