CHƯƠNG 3 : THIẾT KẾ PHẦN CỨNG VÀ XÂY DỰNG GIẢI PHÁP
3.2 XÂY DỰNG GIẢI PHÁP:
3.2.1 Sơ bộ phần cứng các khối
3.2.1.1Khối Giám sát và xử lý cục bộ – Board mạch Raspberry Pi:
Khối giám sát và xử lý cục bộ có nhiệm vụ thu thập các thông số từ các khối giám sát, cảm biến, sau đó nó thực hiện xử lý các dữ liệu này, tính toán xác định trạng thái theo ngưỡng tiêu chuẩn được thiết lập trước, đưa cảnh báo cục bộ (chuông báo tại chỗ) và tùy ngữ cảnh, chuyển dữ liệu lên cloud.
Raspberry Pi (Pi) là chiếc máy tính nhúng có giá phải chăng với kích thước bằng một chiếc thẻ tín dụng. Raspberry Pi ra đời năm 2012, ban đầu được thiết kế cho mọi người, ở mọi độ tuổi để học tin học và lập trình. Raspberry Pi chỉ cần thêm một màn hình kết nối qua cổng HDMI, bàn phím và chuột USB là có thể sử dụng để thực hiện các tác vụ văn phòng, giải trí tương đương với một chiếc máy tính thông thường. Nhờ ưu điểm về kích thước, chi phí đầu tư, độ ổn định và có các giao diện phần cứng hỗ trợ cho đa giao thức, Raspberry Pi nhanh chóng phổ biến và được cộng đồng thế giới sử dụng trong nhiều dự án khác nhau. Cụ thể, ngay trong năm đầu tiên, một triệu board Raspberry
Pi đã được bán ra. Đến thời điểm viết luận văn này, Raspberry Pi đã cho ra 5 họ sản phẩm phổ thông và một họ chuyên biệt dành cho các dự án công nghiệp [10] (Hình 3.13).
Hình 3.13: Dòng sản phẩm Compute Module 3+ Development Kit
Trong bài luận này, tôi sẽ sử dụng mẫu board mạch Raspberry Pi 3 B+, với các thông số kỹ thuật như Bảng 3.2 (Hình 3.14, 3.15)
Bảng 3.2. Thông số kỹ thuật của board mạch Raspberry Pi 3B+
Thông số Giá trị
Bộ xử lý
Broadcom BCM2837B0, Cortex- A53 (ARMv8) 64-bit SoC @ 1.4GHz
Bộ nhớ 1GB LPDDR2 SDRAM
Giao diện kết nối
2.4GHz and 5GHz IEEE
802.11.b/g/n/ac wireless LAN, Bluetooth 4.2, BLE
Gigabit Ethernet over USB 2.0 (maximum throughput
300Mbps)
4 × USB 2.0 ports
Giao diện truy xuất 40 chân vào ra số mở rộng
Thiết bị lưu trữ Thẻ nhớ micro SD lưu trữ hệ điều hành và dữ liệu.
Nguồn điện
Sử dụng nguồn cung cấp tối thiểu 5V/2.5A.
Có thể nhận qua các giao diện: micro USB, chân 5V GPIO hay chức năng Power over Ethernet
Vòng đời Còn được sản xuất tối thiểu đến tháng 03/2023
Hình 3.14: Board mạch Raspberry Pi 3 B+
Board mạch Raspberry Pi 3 với các thông số kỹ thuật và giao diện trên đáp ứng hoàn toàn nhiệm vụ thu thập dữ liệu từ các cảm biến, thiết bị ngoại vi và nhiệm vụ làm gateway kết nối với dịch vụ website giám sát và email cảnh báo qua các giao thức có dây có dây như UART, USB, I2C, SPI, Ethernet cũng như các giao diện không dây Bluetooth , Wireless .v.v…
Cài đặt hệ điều hành và cấu hình cơ bản cho Raspberry Pi:
Mặc dù nhiều hệ điều hành có thể chạy trên Pi, nhưng các họ của Pi có hệ điều hành chính thức dựa trên nhân Linux được tinh chỉnh cho các board Raspberry Pi. Hệ điều hành này trước đây có tên gọi là Raspbian. Đến nay, hệ điều hành này đã đổi tên thành hệ điều hành cùng tên board mạch, hệ điều hành Raspberry Pi (Pi OS). Tôi sẽ sử dụng Pi OS cho hệ thống thực nghiệm [11], [12].
Công cụ cần dùng để cài đặt Pi OS trên windows:
- Máy tính chạy Windows cài phần mềm Win32DiskImager.
- File ảnh Pi OS tải trực tiếp từ trang chủ của nhà sản xuất board mạch.
- Thẻ micro SD tối thiểu 4GB, nên sử dụng class 10 để đảm bảo tốc độ đọc ghi. - Board mạch Raspberry Pi 3 B+ và bộ nguồn cấp 5V tối thiểu 2.5A
Sau khi đã chuẩn bị đủ công cụ, ta thực hiện ghi hệ điều hành vào thẻ nhớ (Hình 3.16)
Hình 3.16: Giao diện ứng dụng Win32 Disk Imager trên Windows 10
- Bước 1: Đưa thẻ micro SD vào máy tính Windows, đợi máy tính nhận thẻ. - Bước 2: Tại khung nhập Image File, chuyển đường dẫn đến file ảnh Pi OS. - Bước 3: Chọn thẻ microSD tại mục Device (ở đây thẻ của tôi được ánh xạ vào
thiết bị tên F).
- Bước 4: Bấm nút Write để bắt đầu ghi Pi OS vào thẻ.
- Bước 5: Sau khi ghi xong đưa thẻ nhớ vào board mạch Raspberry Pi và cấp nguồn cho board.
Để làm việc với Pi, ta có thể làm việc trực tiếp hoặc từ xa, qua giao diện desktop hoặc dòng lệnh (giao diện được hỗ trợ ở hầu hết các hệ điều hành Like-Unix). Với một màn hình kết nối với Pi qua cổng HDMI cùng chuột và bàn phím USB, khi đó ta sẽ làm
việc với Pi trên giao diện desktop như trên một máy tính thông thường hoặc có thể sử dụng dịch vụ VNC (Virtual Network Computing, một dịch vụ điều khiển từ xa qua giao diện tương tự như Teamviewer, Anydesk, Ultraview… cài sẵn theo Pi OS) (Hình 3.17). Và một lựa chọn khác là ta có thể làm việc thông qua giao diện câu lệnh từ xa thông qua dịch vụ ssh (cũng được tích hợp sẵn trên Pi OS, nhưng cần phải kích hoạt lần đầu).
Hình 3.17: Giao diện desktop của Pi OS
Làm việc với Pi từ xa qua giao diện dòng lệnh cần một máy tính có phần mềm hỗ trợ giao thức ssh như putty, địa chỉ IP của Pi và tài khoản truy cập Pi (mặc định là
pi/raspberry) (Hình 3.18).
Hình 3.18: Giao diện tương tác dòng lệnh thông qua giao thức ssh với Putty
Sau khi truy cập được Pi cần thực hiện các cấu hình cơ bản thông qua tiện ích Software Configuration (Hình 3.19) bằng lệnh:
- Đổi mật khẩu mặc định cho an toàn; cấu hình IP tĩnh/wireless để dễ dàng truy cập cục bộ đến Pi hoặc nếu cần thực hiện định tuyến cho router chuyển hướng truy cập ra các mạng khác.
Hình 3.19: Tiện ích cấu hình Raspberry Pi đính kèm trong Pi OS
- Thực hiện mở rộng bộ nhớ của Pi OS trên toàn dung lượng thẻ nhớ; tùy chỉnh lại dung lượng chia sẻ Ram với GPU tối ưu với mục đích sử dụng trong tùy chọn
Advanced Options – Software Configuration (Hình 3.20).
Hình 3.20: Cấu hình nâng cao mở rộng bộ nhớ
- Kích hoạt giao tiếp 1-wire với cảm biến nhiệt DS18B20 bằng lệnh:
$modprobe w1-gpio $modprobe w1-therm
- Sau khi thiết lập một số cấu hình liên quan đến hệ thống, nếu cần, Pi OS sẽ yêu cầu khởi động lại.
Thiết lập ftp server để nhận file ghi chuyển động từ camera:
Khi hệ thống camera giám sát phát hiện chuyển động sẽ thực hiện đẩy sự kiện ghi hình thông qua giao thức ftp. Ta thực hiện thiết lập máy chủ ftp trên Pi như sau: - Bước 1: Cài đặt
$sudo apt-get install vsftpd
- Cấu hình trong file /etc/vsftpd.conf
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022
chroot_local_user=YES
- Tạo user phục vụ công tác xác thực:
$useradd camera -d /home/camera -s /usr/sbin/nologin $passwd camera
$mkdir /home/camera/files/
Chọn và thiết lập môi trường lập trình trên Pi OS:
Python là ngôn ngữ lập trình chính thức của Raspberrry Pi (và hầu hết các hệ Linux OS hiện nay), điều này được thể hiện ở các bài giảng lập trình trực tuyến trên trang chủ của tổ chức này ở địa chỉ https://www.raspberrypi.org/training/online/ đều sử dụng ngôn ngữ Python, bên cạnh đó là việc cài đặt sẵn Python trên mọi phiên bản Pi OS (ngoài C và C++ cũng luôn có trên các hệ Linux).
Một số đặc điểm chính của Python như sau:
- Là ngôn ngữ thông dịch, tức lúc chạy code dạng text mới được xử lý tuần tự từng dòng như PHP, Javascript chứ không dịch toàn bộ code dạng text thành mã máy trước rồi chạy sau như C, C++...
- Là ngôn ngữ tương tác, ta có thể viết các mã lệnh trực tiếp trong Python Shell để trình thông dịch thực hiện lệnh ngay lập tức.
- Là ngôn ngữ hướng đối tượng, python là ngôn ngữ lập trình bậc cao hỗ trợ phong cách lập trình hướng đối tượng.
- Là ngôn ngữ dễ học, trở thành ngôn ngữ lập trình thông dụng nhất hiện nay và có cộng đồng hỗ trợ rất mạnh (Hình 3.21). Với python người phát triển có thể thực hiện các tác vụ đơn giản như xử lý text, các ứng dụng tự động hóa hệ thống trong, các ứng dụng web cho đến các công tác phân tích dữ liệu, thử nghiệm các giải thuật, mô hình dự đoán dữ liệu...
Hình 3.21: Mức độ quan tâm các ngôn ngữ lập trình dựa trên từ khóa tìm kiếm Google trends 01/2016-01/2021
Trong bài luận tôi cũng sẽ sử dụng ngôn ngữ lập trình Python để lập trình các module dịch vụ giám sát lẫn ứng dụng web để thiết lập các thông số ngưỡng cảnh báo cũng như cấu hình hệ thống.
Để lập trình python trên Pi OS, ta có thể sử dụng Python Shell viết code trực tiếp vào trình biên dịch hoặc sử dụng trình soạn thảo như vi hoặc nano để soạn thảo toàn bộ code vào file có phần mở rộng là py.
Ta thực hiện cài đặt thêm các thư viện khác phục vụ phát triển các module sau này. Bao gồm gói mqtt server và các gói thư viện python mqtt (cho client) cùng thư viện phát triển ứng dụng web django, bằng các lệnh lần lượt:
$apt-get install mosquitto $pip install paho-mqtt $pip install django
3.2.1.2 Khối Giám sát ra vào – Hệ thống kiểm soát cửa ra vào F18:
Hệ thống kiểm soát cửa ra vào phòng máy F18 có thể hoạt động độc lập, bao gồm các thành phần chính:
- Thiết bị điều khiển độc lập F18. - Nút Exit.
Và các thành phần phụ mở rộng như: Chuông, máy tính cài đặt phần mềm chấm công, bộ xác thực vân tay mở rộng, USB để truyền thông local như Hình 3.22.
Hình 3.22: Sơ đồ kết nối hệ thống kiểm soát cửa ra vào
Trong đó thiết bị điều khiển F18 là bộ não của hệ thống kiểm soát ra vào có đặc tính kỹ thuật như Bảng 3.3:
Bảng 3.3. Thông số kỹ thuật bộ điều khiển F18
Thông số Giá trị
Vi xử lý ZK 6001, 400 Mhz
Bộ nhớ 64M Flash, 32MSDRAM
Cảm biến vân tay Cảm biến quang
Dung lượng vân tay 3.000 mẫu
Dung lượng giao dịch 100.000
Màn hình LCD 2.4 inch
Kết nối Ethernet (10/100 M), RS485, USB-Host
Tín hiệu wiegand Ngõ vào và ra
Tốc đô nhận dạng ≤ 2 giây
Nhiệt độ vận hành 0-45 oC
Độ ẩm vận hành 20-80%
Ngôn ngữ Đa ngôn ngữ
Nguồn cấp 12V DC, tối thiểu 3A
Giao diện truy cập Khóa điện, alarm, nút đi ra, chuông dây Để thực hiện được chức năng của Khối giám sát ra vào, hệ thống kiểm soát cửa F18 cần thực hiện kết nối với Khối Giám sát và xử lý cục bộ thông qua kết nối Ethernet (ta có thể kết nối trực tiếp, hoặc thông qua các thiết bị trung gian như switch hoặc router IP).
3.2.1.3 Khối Giám sát an ninh, chuyển động – Hệ thống camera Analog:
Thay vì sử dụng cảm biến hồng ngoại để phát hiện có chuyển động trong phòng máy, tôi sử dụng tính năng phát hiện chuyển động tích hợp sẵn của đầu ghi camera để phát hiện chuyển động đồng thời cho người xem thấy được hình ảnh chuyển động mà camera ghi nhận được. Đầu ghi, sử dụng ở đây là loại đầu ghi Analog DVR H264 (Hình 3.23) phổ thông có thông số kỹ thuật như Bảng 3.4.
Bảng 3.4. Thông số kỹ thuật đầu ghi H264
Thông số Giá trị
Chuẩn nén H.264
Định dạng Video 720P/1080P AHD hoặc Analog 960H/D1
Ngõ ra hiển thị VGA, HDMI (max 1920x1080)
Độ phân giải ghi hình 120fps @1280x720P/ 48 fps@ 1920x1080P
Tỉ lệ khung hình chiếu lại 120fps @1280x720P/ 48 fps@ 1920x1080P
Các chế độ ghi hình Continuous / Schedule / Sensor / Motion
Số ngõ vào âm thanh 4
Số ngõ ra âm thanh 1
Dạng nén âm thanh G711A
Hỗ trợ dung lượng ổ cứng
lưu trữ tối đa 1 HDD x 4 TB
Lưu trữ dự phòng USB, External HDDs, qua mạng thông qua CMS
Các giao thức mạng HTTP, DDNS, NTP, SMTP,RTP, RTSP, RTCP
Giao diện mạng Ethernet 10/100 Mbps
Phân quyền quản lý 4 nhóm: Admin, users 1,2,3
Điều khiển Camera PTZ 1-RS485
Xem trực tiếp từ xa Hai luồng chính và phụ
Nhiệt độ vận hành -5-70 oC
Ngôn ngữ Đa ngôn ngữ
Nguồn tiêu thụ 12V DC, tối đa 24 W
NTP Server Có
Hình 3.23: Sơ đồ kết nối hệ thống camera analog
TCP/IP
Analog
Đầu ghi AHD Camera
Tương tự như Khối giám sát ra vào, để thực hiện chức năng của Khối giám sát an ninh, chuyển động thì đầu ghi của hệ thống camera cần thực hiện kết nối với Khối Giám
sát và xử lý cục bộ , giao diện kết nối hỗ trợ của đầu ghi là chuẩn Ethernet. 3.2.1.4 Khối Giám sát Nhiệt độ - Cảm biến nhiệt độ DS18B20:
Cảm biến nhiệt độ DS18B20 giao tiếp với vi xử lý thông qua giao thức truyền thông nối tiếp chỉ sử dụng 1 dây để truyền dữ liệu, ứng dụng của DS18B20 có thể dùng trong các hệ thống điều khiển môi trường HVAC, các hệ thống giám sát nhiệt độ trong tòa nhà, thiết bị, máy móc (Hình 3.24).
Hình 3.24: Sơ đồ chân các dòng IC DS18B20
DS18B20 có bộ nhớ chỉ đọc 64 bit lưu trữ chuỗi sê-ri duy nhất của thiết bị được hiểu như địa chỉ của thiết bị để phân biệt nó với thiết bị khác. Điều này cho phép bộ xử lý như Raspberry Pi nhận dữ liệu nhiệt độ từ nhiều cảm biến trên cùng 1 chân GPIO sử dụng giao thức Dallas 1-wire. Một vài thông số kỹ thuật và tính năng của cảm biến [13]:
- Nguồn hoạt động: 3.0 - 5.5 V DC - Khoảng đo: -55 oC đến +125 oC
- Đô chính xác ±0.5 oC trong khoảng đo -10oC đến +85 oC - Chu kỳ lấy mẫu: 750 ms
3.2.1.5 Khối Giám sát Độ ẩm - Cảm biến nhiệt độ, độ ẩm DHT22:
DHT22 (Hình 3.25) là loại cảm biến nhiệt độ và độ ẩm (đầy đủ là độ ẩm tương đối) với dữ liệu được truyền trên 1 dây (nhưng giao thức khác với Dallas 1-wire của
DS18B20), kích thước nhỏ và giá thành thấp. Ta điểm qua một số đặc tính kỹ thuật của cảm biến này như Bảng 3.5.
Bảng 3.5. Thông số kỹ thuật DHT22 Đặc điểm Giá trị Đặc điểm Giá trị Điện áp làm việc 3.3 – 6 V DC Dòng tiêu thụ Trạng thái nghỉ: 40 – 50 μA Trạng thái làm việc: 1 – 1.5 mA Tín hiệu ngõ
ra Tín hiệu số trên 1 chân
Thành phần
cảm biến Cảm biến điện dung
Khoảng đo Độ ẩm: 0 đến 100% RH; Nhiệt độ: -40 đến +80 oC Độ chính xác Độ ẩm: ±2 % RH (Có thể lên đến ±5 % RH); Nhiệt độ: ± 0.5 oC Độ phân giải thang đo Độ ẩm: 0.1 %RH; Nhiệt độ: 0.1 oC
Tuổi thọ cao Sai số thay đổi: ± 0.5 %RH/năm Chu kì lấy mẫu 2s Kích thước (mm) 14*18*5.5 Khoảng cách truyền tín hiệu
Tối đa 100 m, tùy thuộc chất lượng dây dẫn và mối nối
Cảm biến này cũng có một số khuyến cáo không nên dùng cho các ứng dụng liên quan đến an toàn thiết bị hay các hệ thống đòi hỏi độ chính xác và an toàn cao. Đối với phạm vi ứng dụng của hệ thống là Giám sát điều kiên môi trường phòng máy để cảnh báo giảm thiểu rủi ro hao mòn thiết bị thì việc xảy ra lỗi là có thể chấp nhận được nhưng cũng cần có cảnh báo khi lỗi xảy ra để thực hiện tác vụ kiểm tra xử lý [14].
Chi tiết về hoạt động giao thức 1-wire của cảm biến DHT22: Nguồn điện và chân:
Khi nguồn điện được cấp (áp 3.3 – 5.5 VDC), trong giây đầu tiên không gửi bất kỳ tín hiệu nào đến sensor để bỏ qua trạng thái khởi động. Nên chèn 1 cảm tụ 100nF giữa VCC và GND để lọc hài.
Tín hiệu truyền thông và giao tiếp:
Dữ liệu truyền thông giữa vi xử lý (MCU) và DHT22 là dữ liệu trên một bus, cấu trúc dữ liệu DHT22 gửi về cho MCU có độ dài 40 bit có cấu trúc như sau:
DATA = 16 bit RH + 16 bit nhiệt độ + 8 bit check-sum
Ví dụ:
- Data = 0000 00101000 1100 0000 0001 0101 1111 1110 1110
- Khi đó ta chuyển bin sang dec với hệ số 0.1 là được giá trị thực: RH = 0000 0010 1000 1100 = 652/10 = 65.2%
Nhiệt độ = 0000 0001 0101 1111 = 351/10 = 35.1 oC
Check-sum = 0000 0010 + 1000 1100 + 0000 0001 + 0101 1111 =