LỜI CẢM ƠN 1 DANH MỤC HÌNH ẢNH 3 DANH MỤC BẢNG 4 LỜI NÓI ĐẦU 5 CHƯƠNG I: KHẢO SÁT VÀ XÂY DỰNG BÀI TOÁN 6 1.1.ĐẶT VẤN ĐỀ 6 1.2.ỨNG DỤNG FREERTOS VÀO ĐỀ TÀI 6 1.3.XÂY DỰNG BÀI TOÁN 7 CHƯƠNG II: XÂY DỰNG HỆ THỐNG 8 2.1.SƠ ĐỒ KHỐI 8 2.2.THIẾT KẾ PHẦN CỨNG 9 2.2.1. MODULE ARDUINO UNO R3 9 2.2.2.MODULE ESP32 13 2.2.3. MODULE I2C LCD 15 2.2.4. QUANG TRỞ LDR 17 2.2.5.ĐẦU LAZER 18 2.2.5.SƠ ĐỒ THIẾT KẾ 20 2.3.THIẾT KẾ PHẦN MỀM 21 2.3.1. GIỚI THIỆU VỀ BLYNK 21 2.3.1. PHẦN MỀM LẬP TRÌNH 22 2.3.2.LƯU ĐỒ THUẬT TOÁN 24 CHƯƠNG III: THỬ NGHIỆM VÀ ĐÁNH GIÁ HỆ THỐNG 28 3.1.THỬ NGHIỆM HỆ THỐNG 28 3.2.ĐÁNH GIÁ HỆ THỐNG 29 CHƯƠNG IV: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 30 4.1.KẾT QUẢ ĐẠT ĐƯỢC 30 4.2.HƯỚNG PHÁT TRIỂN 30 TÀI LIỆU THAM KHẢO 32 PHỤ LỤC 33
KHẢO SÁT VÀ XÂY DỰNG BÀI TOÁN
ĐẶT VẤN ĐỀ
Thực tế hiện nay xã hội đang ngày càng phát triển, cùng với đó là sự gia tăng các tệ nạn xã hội và sự tinh vi trong hình thức phạm tội Chúng ta hiện nay không chỉ có mong muốn cải thiện chất lượng cuộc sống chúng ta cũng có nhu cầu bảo vệ an toàn bản thân và tài sản cá nhân do đó các hệ thống chống trộm ra đời là điều vô cùng cần thiết
Hình 1 1: Chống trộm bằng lazzer
Với ý tưởng và mong muốn tạo ra được 1 hệ thống có khả năng cảnh báo chống trộm đơn giản và chi phí phù hợp với sinh viên chúng em đã chọn đề tài
“Thiết Bị Cảnh Báo Chống Trộm với Lazer Sử Dụng Hệ Điều Hành FreeRTOS”.Đây là một đề tài có đóng góp thiết thực cho cuộc sống của chúng ta hiện nay.
ỨNG DỤNG FREERTOS VÀO ĐỀ TÀI
FreeRTOS là một hệ điều hành nhúng thời gian thực mã nguồn mở ra đời từ năm 2003, đến nay nó được phát triển rất mạnh mẽ và nhận được nhiều sự ủng hộ của các lập trình cho các hệ nhúng FreeRTOS có tính khả chuyển, có thể sử dụng miễn phí hoặc dùng cho mục đích thương mại Nó có nhiều ưu điểm nổi bật so với các hệ điều hành nhúng thời gian thực khác như có kích thứơc rất nhỏ gọn nên rất phù hợp với các hệ nhúng thời gian thực nhỏ, được viết bằng ngôn ngữ C nên có độ phù hợp cao với các nền phần cứng khác nhau Ngoài ra, FreeRTOS còn hỗ trợ các cơ chế như cho phép tạo cả task và coroutie với số lượng task là không giới hạn phụ thuộc vào tài nguyên của phần cứng, của chip, hỗ trợ cơ chế truyền thông đồng bộ giữa các task hoặc giữa task và ngắt bằng cách sử dụng hàng đợi hoặc semaphore nhị phân hoặc semaphore đếm và các mutex, cho phép nhận biết khi ngăn xếp bị tràn Ngay cả trong các hệ thống nhúng lớn người ta vẫn có thể sử dụng FreeRTOS để tiết kiệm được dung lượng bộ nhớ và làm cho hệ thống ít bị quá tải. Để xây dựng và quản lý các thiết bị cảnh báo chống trộm một cách hiệu quả và tối ưu, việc sử dụng một hệ điều hành FreeRTOS là yếu tố đáng tin cậy.
XÂY DỰNG HỆ THỐNG
SƠ ĐỒ KHỐI
Khối đầu vào: tia laze chiếu vào quang trở, ta sẽ đọc được điện áp ở mức cao, khi mở cửa thì tia laze bị cản dẫn đến ánh sáng chiếu vào quang trở thấp thì điện áp sẽ ở mức thấp
Khối xử lý trung tâm: Xử lý dữ liệu từ khối đầu vào và gửi dữ liệu đến khối đầu ra.
Khối đầu ra: Còi báo động để cảnh báo có trộm, LCD hiện thị trạng thái cửa.
Cloud server: Nhận và lưu trữ dữ liệu từ khối xử lý trung tâm gửi lên thông qua Internet chịu trách nhiệm về tất cả các giao tiếp giữa điện thoại thông minh và phần cứng.
App: Nơi giao tiếp với người dùng, hỗ trợ người dùng nhận cảnh báo từ xa thông qua Internet.
Khối nguồn: Cấp nguồn cho toàn bộ hệ thống hoạt động
THIẾT KẾ PHẦN CỨNG
Mạch Arduino Uno là dòng mạch Arduino phổ biến, khi mới bắt đầu làm quen, lập trình với Arduino thì mạch Arduino thường nói tới chính là dòng Arduino UNO Hiện dòng mạch này đã phát triển tới thế hệ thứ 3 (Mạch Arduino Uno R3)
Arduino Uno R3 là dòng cơ bản, linh hoạt, thường được sử dụng cho người mới bắt đầu Bạn có thể sử dụng các dòng Arduino khác như: Arduino Mega, Arduino Nano, Arduino Micro… Nhưng với những ứng dụng cơ bản thì mạch Arduino Uno là lựa chọn phù hợp nhất.
Arduino UNO R3 là kit Arduino UNO thế hệ thứ 3, với khả năng lập trình cho các ứng dụng điều khiển phức tạp do được trang bị cấu hình mạnh cho các loại bộ nhớ ROM, RAM và Flash, các ngõ vào ra digital I/O trong đó có nhiều ngõ có khả năng xuất tín hiệu PWM, các ngõ đọc tín hiệu analog và các chuẩn giao tiếp đa dạng như UART, SPI, TWI (I2C).
Thông số kỹ thuật của Arduino UNO R3:
Vi điều khiển ATmega328 họ 8bit Điện áp hoạt động 5V DC (chỉ được cấp qua cổng
Tần số hoạt động 16 MHz
Dòng tiêu thụ khoảng 30mA Điện áp vào khuyên dùng 7-12V DC Điện áp vào giới hạn 6-20V DC
Số chân Digital I/O 14 (6 chân hardware PWM)
Số chân Analog 6 (độ phân giải 10bit)
Dòng tối đa trên mỗi chân I/O 30 mA
Dòng ra tối đa (5V) 500 mA
Dòng ra tối đa (3.3V) 50 mA
Bộ nhớ flash 32 KB (ATmega328) với 0.5KB dùng bởi bootloader
Bảng 2 1: Thông số kỹ thuật của Arduino UNO R3
Hình 2 3: Sơ đồ chân của Arduino UNO R3
GND (Ground): cực âm của nguồn điện cấp cho Arduino UNO.
Khi dùng các thiết bị sử dụng những nguồn điện riêng biệt thì những chân này phải được nối với nhau
5V: cấp điện áp 5V đầu ra Dòng tối đa cho phép ở chân này là
3.3V: cấp điện áp 3.3V đầu ra Dòng tối đa ở chân này là 50mA
Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO, ta nối cực dương của nguồn với chân này và cực âm với chân GND
IOREF: điện áp hoạt động của vi điều khiển trên Arduino UNO có thể được đo ở chân này Và dĩ nhiên nó luôn là 5V Mặc dù vậy không được lấy nguồn 5V từ chân này để sử dụng bởi chức năng của nó không phải là cấp nguồn.
RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương đương với việc chân RESET được nối với GND qua 1 điện trở 10KΩ
Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu Chúng chỉ có 2 mức điện áp là 0V và 5V với dòng tối đa trên mỗi chân là 40mA
Một số chân digital có các chức năng đặc biệt như sau:
2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận
(receive – RX) dữ liệu TTL Serial Arduino Uno có thể giao tiếp với thiết bị khác thông qua 2 chân này Kết nối bluetooth thường thấy nói nôm na chính là kết nối Serial không dây Nếu không cần giao tiếp Serial, không nên sử dụng 2 chân này nếu không cần thiết.
Chân PWM (~) 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM với độ phân giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm analogWrite() Nói một cách đơn giản, có thể điều chỉnh được điện áp ra ở chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như những chân khác
Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Ngoài các chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức SPI với các thiết bị khác
LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L) Khi bấm nút Reset, ta sẽ thấy đèn này nhấp nháy để báo hiệu Nó được nối với chân số 13 Khi chân này được người dùng sử dụng, LED sẽ sáng
Arduino UNO có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit (0 → 210-1) để đọc giá trị điện áp trong khoảng 0V → 5V Với chân AREF trên board, ta có thể để đưa vào điện áp tham chiếu khi sử dụng các chân analog Tức là nếu cấp điện áp 2.5V vào chân này thì ta có thể dùng các chân analog để đo điện áp trong khoảng từ 0V → 2.5V với độ phân giải vẫn là 10bit Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết bị khác.
ESP32 là một bộ vi điều khiển thuộc danh mục vi điều khiển trên chip công suất thấp và tiết kiệm chi phí Hầu hết tất cả các biến thể ESP32 đều tích hợp Bluetooth và Wi-Fi chế độ kép, làm cho nó có tính linh hoạt cao, mạnh mẽ và đáng tin cậy cho nhiều ứng dụng.
Nó là sự kế thừa của vi điều khiển NodeMCU ESP8266 phổ biến và cung cấp hiệu suất và tính năng tốt hơn Bộ vi điều khiển ESP32 được sản xuất bởi
Espressif Systems và được sử dụng rộng rãi trong nhiều ứng dụng khác nhau như IoT, robot và tự động hóa.
ESP32 cũng được thiết kế để tiêu thụ điện năng thấp, lý tưởng cho các ứng dụng chạy bằng pin Nó có hệ thống quản lý năng lượng cho phép nó hoạt động ở chế độ ngủ và chỉ thức dậy khi cần thiết, điều này có thể kéo dài tuổi thọ pin rất nhiều.
CPU Xtensa Dual-Core 32-bit LX6 với tần số hoạt động lên đến 240 MHz
Bộ nhớ trong 448 KBytes ROM cho booting và các tính năng của lõi chip.
520 KBytes SRAM trên chip dùng cho dữ liệu và các lệnh instruction.
8 KBytes SRAM trong RTC (gọi là RTC SLOW Memory) để truy xuất bởi các bộ co-processor.
8 KBytes SRAM trong RTC (gọi là RTC FAST Memory) dùng cho lữu dữ liệu, truy xuất bởi CPU khi RTC đang boot từ chế độ Deep- sleep.
1 Kbit EFUSE, với 256 bit cho hệ thống (địa chỉ MAC và cấu hình chip),
768 còn lại cho ứng dụng người dùng, gồm cả mã hóa bộ nhớ Flash và định ID cho chip.
Kết nối không dây Wi-Fi: 802.11 b/g/n/e/i
Bluetooth: BR/EDR phiên bản v4.2 và BLE
Ethernet MAC hỗ trợ chuẩn DMA và IEEE 1588
Giao tiếp ngoại vi: Bộ chuyển đổi ADC 12 bit, 16 kênh.
Bộ chuyển đổi 8-bits DAC: 2 kênh.
10 chân để giao tiếp với cảm biến chạm (touch sensor).
Ngõ ra PWM cho điều khiển Motor.
Nhiệt độ hoạt động ổn định - 40°C đến 85°C Điện áp hoạt động 2.2-3.6V
Dòng tiêu thụ ổn định 80mA
Bảng 2 2: Thông số kỹ thuật của ESP32
Hình 2 5: Sơ đồ chân của esp32
LCD (Liquid Crystal Display) được sử dụng trong rất nhiều các ứng dụng của vi điều khiển LCD có rất nhiều ưu điểm so với các dạng hiển thị khác Nó có khả năng hiện thị kí tự đang dạng, trực quan (chữ, số và kí tự đồ họa), dễ dàng đưa vào mạch ứng dụng theo nhiều giao thức giao tiếp khác nhau, tốn rất ít tài nguyên hệ thống và giá thành rẻ,… LCD có rất nhiều dạng phân biệt theo kích thước từ vài kí tự đến hàng chục kí tự, từ 1 hàng đến vài chục hàng.
Thông số kỹ thuật của Module LCD
Module LCD Điện áp hoạt động
Bảng 2 3: Thông số kỹ thuật của LCD
LCD20x4 có số lượng chân và cách kết nối tương tự LCD16x2.
Hình 2 7: Sơ đồ chân của lcd
Tuy nhiên, LCD có khá nhiều nhiều chân gây khó khăn trong quá trình đấu nối và chiếm dụng nhiều chân trên vi điều khiển
Module I2C LCD ra đời và giải quyết vấn để này một cách tối ưu Thay vì cần ít 6 chân vi điều khiển để kết nối với LCD (RS, EN, D7, D6, D5 và D4) thì module IC2 chỉ cần tốn 2 chân (SCL, SDA)x để kết nối Module I2C hỗ trợ các loại LCD sử dụng driver HD44780(LCD 16×2, LCD 20×4, …) ngoài ra có thể điều chỉnh được độ tương phản bởi biến trở gắn trên module và tương thích với hầu hết các vi điều khiển hiện nay.
Module I2C Điện áp hoạt động
LCD1602, 1604, 2004 (driver HD44780). Địa chỉ mặc định
0X27 (có thể điều chỉnh bằng ngắn mạch chân A0/A1/A2)
Kích thước 41.5mm x 19mm x 15.3mm
Tích hợp Jump chốt để cung cấp đèn cho LCD hoặc ngắt.
Tích hợp biến trở xoay điều chỉnh độ tương phản cho LCD.
Bảng 2 4 Thông số kỹ thuật của I2C
Module được thiết kế dễ dàng cắm vào màn hình LCD theo các chân định sẵn:
Hình 2 9: Sơ đồ chân của I2C
Quang trở hay còn gọi là Điện trở quang (Light Dependent Resistor) Nó cũng được gọi là chất dẫn quang Về cơ bản, quang trở là một tế bào quang điện hoạt động theo nguyên tắc quang dẫn hay có nghĩa là nó là một điện trở có giá trị điện trở thay đổi theo cường độ ánh sáng Quang trở được sử dụng nhiều trong các mạch cảm biến ánh sáng, mạch chuyển đổi, Một số ứng dụng kể đến của LDR như đồng hồ đo ánh sáng máy ảnh, đèn đường, radio đồng hồ, báo động ánh sáng,
Thông số kỹ thuật của quang trở: Điện áp tối đa 150V
Công suất tối đa 100mW
Giá trị bước sóng 540nm
Bảng 2 5: Thông số kỹ thuật của quang trở LDR
THỬ NGHIỆM VÀ ĐÁNH GIÁ HỆ THỐNG
THỬ NGHIỆM HỆ THỐNG
Hình 3 1: Sản phẩm hoàn thiện
Hình 3 2: Cảnh báo trên App điện thoại