ĐỒ ÁN HỆ THỐNG NHÚNG ĐỒ ÁN HỆ THỐNG NHÚNG Nhóm 9 ĐỀ TÀI Thiết kế ổ khóa đóng mở cửa bằng key pad , Đọc thời gian thực RTC hiện thị lên LCD và PASSWORD 2 SƠ ĐỒ KHỐI 3 Keypad 4x4 Vi điều khiển SM32 Hiện.
Trang 1ĐỒ ÁN HỆ
THỐNG NHÚNG
Nhóm 9
Trang 2ĐỀ TÀI
Thiết kế ổ khóa đóng mở cửa bằng key pad , Đọc thời
gian thực RTC hiện thị lên LCD và PASSWORD
2
Trang 3SƠ ĐỒ KHỐI
3
Keypad 4x4
Vi điều khiển SM32
Hiện thị ngày giờ lên LCD
Mở cửa nếu pass đúng
Hiển thị trên LCD,PASS
Trang 4Linh kiện
● STM32F103C8T6
● Module I2C
● Keypad 4x4
● Màn hình LCD
● Module RTC (Có sẵn trong STM32)
4
Trang 5Hệ điều hành FreeRTOS
0 1
Trang 6Là một hệ điều hành nhúng thời gian thực (Real Time Operating System) mã nguồn mở được
phát triển bởi Real Time Engineers Ltd, sáng lập và sở hữu bởi Richard Barry FreeRTOS được
thiết kế phù hợp cho nhiều hệ nhúng nhỏ gọn vì nó chỉ triển khai rất ít các chức năng như: cơ
chế quản lý bộ nhớ và tác vụ cơ bản, các hàm API quan trọng cho cơ chế đồng bộ Nó không
cung cấp sẵn các giao tiếp mạng, drivers, hay hệ thống quản lý tệp (file system) như những hệ điều hành nhúng cao cấp khác Tuy vậy, FreeRTOS có nhiều ưu điểm, hỗ trợ nhiều kiến trúc vi
điều khiển khác nhau, kích thước nhỏ gọn (4.3 Kbytes sau khi biên dịch trên Arduino), được viết bằng ngôn ngữ C và có thể sử dụng, phát triển với nhiều trình biên dịch C khác nhau (GCC,
OpenWatcom, Keil, IAR, Eclipse, …), cho phép không giới hạn các tác vụ chạy đồng thời, không hạn chế quyền ưu tiên thực thi, khả năng khai thác phần cứng Ngoài ra, nó cũng cho phép triển khai các cơ chế điều độ giữa các tiến trình như: queues, counting semaphore, mutexes.(Theo
Wiki Media)
6
Trang 77
RTOS thường sẽ là một phân đoạn của chương trình Tại
đây nó có nhiệm vụ giải quyết và điều phối các tác vụ
(task), lập lịch và phân mức ưu tiên cho chúng Việc này
có thể thực hiện bằng cơ chế Hướng sự kiện
(Event-driven) và Chia sẻ thời gian (Time-sharing).
Cơ chế Hướng sự kiện sẽ điều hướng các tác vụ dựa trên
mức độ ưu tiên và Chia sẻ thời gian sẽ làm nhiệm vụ
chuyển đổi tác vụ RTOS đều kèm theo thuật
Pre-emptive scheduling (Đặt lịch trước).
Trang 8Lập Trình
0 2
Trang 9Lập trình KeyPad
9
Ma trận phím là tập hợp các nút nhấn kết nối với nhau theo
các hàng và các cột Số nút nhấn tương ứng sẽ là tích của số
hàng nhân số cột.
Để điều khiển 16 nút nhấn, thông thường chúng ta phải sử
dụng 16 GPIO nhưng nếu sử dụng ma trận phím chúng ta chỉ
cần sử dụng 8 GPIO.
Các nút nhấn sẽ nối hàng và cột với nhau Khi nhần nút 1
dây Hàng (Row) sẽ nối với dây Cột (Colum hay Col) Các nút
nhấn tương ứng sẽ có vị trí nối hàng với cột khác nhau.
Trang 10Lập trình KeyPad
10
Đầu tiên kéo các chân kết nối với hàng xuống mức thấp, các
chân ở cột lên mức cao Khi đó nếu có phím nào được nhấn
thì sẽ bắt đầu tìm vị trí phím.
Lần lượt xét các trường hợp sau: hàng A bằng 0 và các hàng
B, C, D bằng 1 suy ra đọc tín hiệu vào ở các cột (1,2,3), nếu
có cột nào được kéo xuống ở mức thấp thì thực hiện lệnh
tương ứng hoặc xuất ra vị trí của phím Nếu không có phím
nào được nhấn thì tiếp tục cho hàng tiếp theo bằng 0 (các
hàng còn lại bằng 1) đến khi tìm được vị trí phím được nhấn.
Trang 11Lập trình LCD và module I2C
11
-Giới thiệu về I2C
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.
Trang 12Lập trình LCD và module I2C
12
-Quá trình truyền dữ liệu đến thiết bị I2C
Bước 1: Master gửi tín hiệu start I2C.
Bước 2: Master gửi địa chỉ của thiết bị I2C (7 bit) kèm bit Write (bit 0);
Bước 3: Master gửi địa chỉ của thanh ghi dữ liệu của Slave muốn ghi
giá trị.
Bước 4: Master gửi giá trị mà muốn ghi vào thành ghi ở bước 3.
Bước 5: Master tạo tín hiệu stop.
Trang 13Lập trình LCD và module I2C
13
-Quá trình nhận dữ liệu đến thiết bị I2C
Bước 1: Master gửi tín hiệu start I2C.
Bước 2: Master gửi địa chỉ của thiết bị I2C (7 bit) kèm bit Write (bit 0).
Bước 3: Master gửi đia chỉ thanh ghi của Slave mà muốn đọc dữ liệu.
Bước 4: Master gửi tín hiệu Repeated Start.
Bước 5: Master gửi địa chỉ của thiết bị I2C (7 bit) kèm bit Read (bit 1).
Bước 6: Master đọc dữ liệu chứa trong thanh ghi ở bước 3 từ Slave gửi
về.
Bước 7: Master tạo tín hiệu Stop.
.
Trang 14Lập trình LCD và module I2C
14
-Quá trình giao tiếp module LCD I2C PCF8574
Vận dụng lập trình sử dụng STM32F103C8T6 thực hiện quá trình I2C
ghi dữ liệu
Bước 1: Gửi tín hiệu Start
Bước 2: Gửi địa chỉ của thiết bị I2C: PCF8574
Bước 3: Master truyền dữ liệu tới Slave
Bước 4: Tạo tín hiệu Stop
.
Trang 15Cấu hình RTC trong STM32
15
Đầu tiên, chương trình sẽ gọi các chương trình con đã được cấu hình(GPIO, UART,
NVIC) để chúng hoạt động được Tiếp đến kiểm tra thanh ghi đã có backup data hay
chưa bằng cách đọc data ở thanh ghi DR1 và so sánh chúng với 0xA5A5.
Nếu chưa có thì thông báo là chưa được cấu hình, gọi chương trình con cấu
hình, chương trình con set thời gian, ghi data 0xA5A5 vào thanh ghi DR1 để
sau khi reset còn kiểm tra.
Nếu đã được cấu hình thì kiểm tra nguyên nhân Reset và đưa ra nguyên
nhân đó là do nguồn bị tắt hoặc do nhấn nút reset.
Trong vòng lặp while : khi cờ báo có ngắt 1s xảy ra thì sẽ đọc thanh ghi thời gian về và
in lên máy tính thông qua UART, xóa cờ ngắt báo 1s Chương trình con thực thi ngắt 1s
được đặt trong file stm3210x_it.c.
Trang 16CREDITS: This presentation template was
created by Slidesgo, including icons by Flaticon,
and infographics & images by Freepik
THANKS
!
Cảm ơn thầy và các bạn đã lắng nghe