ĐẠI HỌC BÁCH KHOA HÀ NỘI TRƯỜNG ĐIỆN ĐIỆN TỬ BỘ MÔN KỸ THUẬT ĐO VÀ TIN HỌC CÔNG NGHIỆP MẠNG VÀ CÁC GIAO THỨC TRONG IOT ĐỀ TÀI Triển khai một hệ thống cảm biến với mục đ.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
ĐẠI HỌC BÁCH KHOA HÀ NỘI TRƯỜNG ĐIỆN - ĐIỆN TỬ BỘ MÔN KỸ THUẬT ĐO VÀ TIN HỌC CÔNG NGHIỆP ******************************* MẠNG VÀ CÁC GIAO THỨC TRONG IOT ĐỀ TÀI: Triển khai hệ thống cảm biến với mục đích: Đếm số lượng lượt khách dừng lại xem sản phẩm thời gian khách lưu lại sản phẩm Hà Nội – 2022 Nội dung 1.1 Yêu cầu chung: .6 1.2 Yêu cầu cần đạt : 1.3 Các bước cần thực hiện: 3.1 Phân tích yêu cầu đề xuất giải pháp 10 3.1.1 Node cảm biến: .10 1.2 MQTT Server .10 1.3 MQTT Client: .11 3.2 Kiến trúc hệ thống 11 3.2.1 Mơ hình Client-Sever 11 3.2.2 Sơ đồ khối kiến trúc hệ thống 13 3.2.3 Một số vấn đề, khái niệm liên quan 14 3.2.3.1 Giao thức MQTT 14 3.2.3.2 MQTT Server (Broker) 15 3.2.3.3 MQTT client 16 3.4.2.4 Bảo mật giao thức MQTT 16 3.3 Triển khai dự án 20 3.3.1 Node cảm biến 20 3.3.1.1 Cảm biến hồng ngoại thụ động PIR .20 3.3.1.2 ESP32 NodeMCU 21 3.3.1.3 Thiết kế node cảm biến: .23 3.3.1.4 Lập trình node cảm biến: 23 3.3.2 MQTT Server 23 3.3.2.1 Mosquitto 23 3.3.2.2 Cài đặt sử dụng thiết lập bảo mật 24 3.3.3 MQTT Client 28 3.3.3.1 MIT APP INVENTOR 28 Phần 4: Đánh giá, kiểm tra 33 Phần 5: Kết luận .33 Phần 6: Tài liệu tham khảo .34 LỜI NÓI ĐẦU Internet vạn vật (IoTs) phát triển với tốc độ nhanh chóng ngày trở nên quan trọng đối lĩnh vực Để khai thác cách hiệu sức mạnh IoT, cần hiểu gì, hoạt động làm cách để vận dụng IoT ứng dụng mơ hình kinh doanh Trong mơn học Mạng giao thức IoT, chúng em học cách thức hoạt động IoTs, mạng IoTs cách mà “things” kết nối mạng IoTs việc xử lý thông tin cục từ xa (Cloud) Bên cạnh đó, chúng em tìm hiểu kiểu kết nối, mơ hình phân lớp mạng giao thức chuẩn IoTs Và để ứng dụng kiến thức giảng dạy lớp, nhóm chúng em thực Project thầy giao “Thiết kế hệ thống chat thông qua mạng LAN (hoặc Internet) Project gồm có phần: Phần 1: Yêu cầu, kết cần đạt Phần 2: Kế hoạch thực Phần 3: Phân tích, thiết kế Phần 4: Đánh giá, kiểm tra Phần 5: Kết luận Trong trình thực Project, chúng em củng cố tiếp thu kiến thức mạng giao thức IoT Hơn chúng em học tập rèn luyện phương pháp làm việc, nghiên cứu cách chủ động hơn, linh hoạt hơn, đặc biệt phương pháp làm việc theo nhóm Kết nhóm làm đáp ứng yêu cầu đặt thầy Chúng em chân thành cảm ơn thầy Nguyễn Quốc Cường tận tình hướng dẫn nhóm học kì vừa qua Danh mục hình ảnh Phần 1: Yêu cầu, mục tiêu, kết cần đạt 1.1 u cầu chung: Hình 1: Mơ hình hệ thống Cấu trúc hệ thống thiết kế bao gồm: Các nút cảm biến PIR có kết nối Wifi Access point để gần nút cảm biến Gateway để kết nối Internet MQTT server để nhận thông tin từ cảm biến xử lý thông tin cần thiết Các client App phần mềm PC để nhận thông báo kiện có khách đến khách rời (ví dụ: kiện kệ số có khách đến , kệ số khách rời đi….) 1.2 Yêu cầu cần đạt : Triển khai hệ thống mơ tả Phần cảm biến tích hợp mơ-đun, khơng thiết phải làm PCB Lập trình nút cảm biến MQTT server Hiển thị thông tin nhận MQTT server để kiểm tra Client App Máy tính Lưu ý đến tính bảo mật thơng tin truyền liệu từ nút cảm biến đến MQTT server Lưu ý lượng tiêu thụ nút cảm biến 1.3 Các bước cần thực hiện: Phân tích u cầu Tìm giải pháp liên quan Phân tích, đánh giá sơ lựa chọn giải pháp Thiết kế sơ đồ kiến trúc mơ tả luồng thơng tin hệ thống (có thể sử dụng mơ hình TCP/IP, MQTT publisher/broker… để mơ tả ) Phân công nhiệm vụ cho thành viên (cần phân công công liên quan đến mạng cho tất thành viên Ví dụ: nhóm làm nút cảm biến, nhóm làm MQTT server, Nhóm làm App…) Các nhóm triển khai Lưu ý thành phần hệ thống thiết kế cần có kịch đánh giá riêng thành phần trước tích hợp thành hệ thống Phần 2: Kế hoạch thực Bảng 1: Tiến độ hoàn thành theo tuần Tuần Tên thành viên thực Cơng việc giao Đức - Tìm hiểu MQTT Server & MQTT Client - Cài đặt Mosquitto MQTT Cơng việc hồn thành Server - Test thử số tính publish/subscribe Trung - Tìm hiểu hoạt động PIR, ESP32 - Publish lên test server mqtt.eclipseprojects.io Phương - Tìm hiểu MQTT Server & MQTT Client - Viết chương trình đơn giản subscribe topic test server Đức - Tìm hiểu phương thức bảo mật mosquitto 3&4 - Dịch địa Private IP sang Public IP, test truyền nhận tin qua MQTT Server với public IP Trung - Test hoạt động cảm biến PIR, đo thời gian Phương - Viết chương trình Client đơn giản gửi nhận thông tin MIT App Inventor Đức - Tìm hiểu thử nghiệm bảo mật TLS/SSL mosquitto Trung - Thử phương án sử dụng cảm biến IR - Viết function đo thời gian gửi thông tin lên server Phương - Thêm function nhập username & password - Sửa lại giao diện hiển thị thêm số lượng tin nhận nội dung tin Đức Trung Phương Phần 3: Phân tích, thiết kế 3.1 Phân tích yêu cầu đề xuất giải pháp 3.1.1 Node cảm biến: Yêu cầu: - Node cảm biến sử dụng cảm biến PIR kết nối với WiFi - Node cảm biến đếm số lượng khách hàng dừng lại sản phẩm thời gian khách hàng dừng lại sản phẩm - Phải ý đến vấn đề lượng node cảm biến (không bắt buộc tối ưu phải tính tốn được) Đề xuất: - Sử dụng ESP32 NodeMCU tích hợp sẵn Wifi hỗ trợ Arduino IDE - Cảm biến PIR để phát có người sử dụng timer để đo thời gian - MCU chế độ deepsleep sử dụng ngắt để wake up phát người đến - Đối với lượt dừng lại MCU gửi tin => số lượt người số tin gửi - Nội dung tin gửi thời gian dừng lại lượt - MCU gửi liệu qua gateway lên Internet 1.2 MQTT Server Yêu cầu: MQTT Server triển khai máy tính cá nhân, không sử dụng công cụ Cloud MQTT MQTT Server nhận liệu từ node cảm biến từ Internet Phải ý đến bảo mật Đề xuất: 10 Để phát người trước gian hàng, nhóm sử dụng cảm Biến Thân Nhiệt Chuyển Động PIR SR505 Cảm biến thân nhiệt chuyển động PIR (Passive infrared sensor) HC-SR505 Mini có kích thước nhỏ gọn 10mm, sử dụng để phát chuyển động vật thể phát xạ hồng ngoại: người, vật, vật phát nhiệt,… Cảm biến thân nhiệt chuyển động PIR SR505 Mini xuất tín hiệu mức cao (High) phát vật thể nhiệt chuyển động vùng qt, tín hiệu sau giữ mức cao khoảng thời gian trễ T sau kích hoạt, lúc cảm biến bắt tín hiệu trì chân tín hiệu mức cao thời gian trễ T, khoảng thời gian trễ T mà cảm biến không bắt tín hiệu chân tín hiệu cảm biến trở mức thấp (Low) Thông số cảm biến PIR SR505: Điện áp hoạt động: 4.5~20VDC Dòng tiêu thụ: 80mhz (tùy chỉnh lập trình) RAM: 520 KByte SRAM 20 KB SRAM liền chip –(trong KB RAM RTC tốc độ cao – KB RAM RTC tốc độ thấp (dùng chế độ DeepSleep) Hỗ trợ giao tiếp không dây Wi-Fi: 802.11 b/g/n/e/i Bluetooth: v4.2 BR/EDR and BLE Hỗ trợ tất loại giao tiếp 8-bit DACs( digital to analog) cổng Analog(ADC) 12-bit 16 cổng I²C – cổng UART – cổng SPI – cổng (1 cổng cho chip FLASH ) I²S – cổng SD card /SDIO/MMC host 22 Slave (SDIO/SPI) Ethernet MAC interface with dedicated DMA and IEEE 1588 support CAN bus 2.0 IR (TX/RX) Băm xung PWM (tất chân ) Ultra low power analog pre-amplifier’ 3.3.1.3 Thiết kế node cảm biến: Node cảm biến sử dụng MCU-ESP32 để xử lí liệu kết nối với server modul cảm biến hồng ngoại IR LM393 để phát đếm thời gian người xuất trước cửa hàng 3.3.1.4 Lập trình node cảm biến: Node đếm thời có người chắn trước cảm biến Khi người rời đồng hồ đếm thời gian tự động dừng lại gửi thời gian người đứng trước hàng (ms) lên server 23 3.3.2 MQTT Server 3.3.2.1 Mosquitto Mosquitto MQTT Broker mã nguồn mở cho phép thiết bị truyền nhận liệu theo giao thức MQTT version 5.0, 3.1.1 3.1 – Một giao thức nhanh, nhẹ theo mơ hình publish/subscribe sử dụng nhiều lĩnh vực Internet of Things Mosquitto cung cấp thư viện viết ngôn ngữ C để triển khai MQTT Client Logo Mosquitto Ưu điểm: Ưu điểm bật Mosquitto tốc độ truyền nhận xử lí liệu nhanh, độ ổn định cao, sử dụng rộng rãi phù hợp với ứng dụng embedded Mosquitto nhẹ phù hợp để sử dụng tất thiết bị Ngoài ra, Mosquitto hỗ trợ giao thức TLS/SSL (các giao thức nhằm xác thực server client, mã hóa message để bảo mật liệu) Nhược điểm: 24 Một số nhược điểm mosquitto khó thiết kế làm ứng dụng lớn phương thức xác thực thiết bị nên khả bảo mật chưa tối ưu 3.3.2.2 Cài đặt sử dụng thiết lập bảo mật Cài đặt Mosquitto Server, host theo dõi hoạt động Server qua số lệnh qua Command Prompt (mosquito_pub & mosquito_sub) sử dụng IP mạng cục Port Forwarding cổng 40000 Gateway cổng 9000 PC Địa Public IP Gateway 113.190.237.43, ta gửi gói tin MQTT vào địa IP 25 Các số config MQTT chương trình viết Arduino Mở kết nối MQTT Broker nghe cổng 9000 PC Kết quả: Config User/Password cho MQTT Broker Ở ta tạo file text passwordfile.txt với nội dung sau, lưu vào đường dẫn cài đặt mosquito (ở D:\mosquitto) 26 Trong Command Promp chạy câu lệnh Câu lệnh mã hoá password file password Để cấu hình user/password cho MQTT Broker ta chỉnh sửa file config test.conf sau: Kết quả: Trước cài đặt user/password cho ESP32 27 Sau cài đặt lại user/password cho ESP32: Có thể thấy tin thơng báo user1 kết nối tới MQTT Broker: 3.3.3 MQTT Client 3.3.3.1 MIT APP INVENTOR App Inventor ứng dụng web mã nguồn mở cung cấp Google từ tháng năm 2010 Sau này, App Inventor quản lý Viện Cơng nghệ Massachusetts hay cịn gọi MIT Đó lý hay gọi MIT App Inventor Về bản, App Inventor hoạt động dựa tảng di động Android Tức thành phẩm tạo từ App Inventor hoạt động Android Giao diện App Inventor bao gồm khối hộp, bên đoạn mã Khi sử dụng, người dùng kéo thả khối vào bảng mã để tiến hành lắp ghép thành ứng dụng hoàn chỉnh Những tính có MIT App Inventor là: Cho phép xây dựng nhanh chóng thành phần (components) ứng dụng Android: Nút bấm, nút lựa chọn, chọn ngày giờ, ảnh, văn bản, thông báo, kéo trượt, trình duyệt web Sử dụng nhiều tính điện thoại: Chụp ảnh, quay phim, chọn ảnh, bật video audio, thu âm, nhận diện giọng nói, chuyển lời thoại thành văn bản, dịch 28 Hỗ trợ xây dựng game components: Ball, Canvas, ImageSprite Cảm biến: đo gia tốc (AccelerometerSensor), đọc mã vạch, tính giờ, quay hồi chuyển (gyroscopeSensor), xác định địa điểm (locationSensor), NFC, đo tốc độ (pedometer), đo khoảng cách xa gần với vật thể (proximitySensor) Kết nối: Danh bạ, email, gọi điện, chia sẻ thông qua ứng dụng mạng xã hội khác thiết bị, nhắn tin, sử dụng twitter qua API, bật ứng dụng khác, bluetooth, bật trình duyệt Lưu trữ: đọc lưu tệp txt, csv, sử dụng FusiontablesControl, tạo sở liệu đơn giản điện thoại đám mây thông qua server tự tạo Firebase Điều khiển robot thông qua LegoMindstorms Và nhiều mở rộng nhà lập trình hoạt động riêng liên tục thêm vào là: Mua bán ứng dụng, Floating button, Báo thức, cảm biến ánh sáng, kết nối liệu SQLite… Những nhược điểm App Inventor là: Lập trình viên chưa thể sử dụng tính Android việc phụ thuộc vào mở rộng có tính bạn cần có tạo Khuyết điểm khắc phục cách tự xây dựng mở rộng cho App Inventor Vì website với mục đích giáo dục, MIT App Inventor khơng hỗ trợ quảng cáo Chính nhược điểm Thunkable AppyBuilder sinh Giao diện chưa chuyên nghiệp Chuyển mã từ ngôn ngữ Drag and Drop sang Java chưa thực dễ dàng Do ứng dụng phát triển server MIT, giới hạn dung lượng project 5mb Giao diện MIT App Inventor Gồm: Thiết kế giao diện cho app: 29 Lập trình khối blocks: Cơng việc hồn thành tuần 2: Đã tạo app đơn giản nhận message từ MQTT Broker Publish tin lên MQTT broker 30 App nhận tin từ MQTT Broker: Công việc thực tuần 3&4: - Hoàn thành giao diện app với thông tin bản: + Nhập địa MQTT broker để kết nối + Nhập User, pass với vấn đề bảo mật 31 + Đếm số lượng tin nhận tượng trưng cho số người đến xem sản phẩm + Lập danh sách tin nhận gồm có người thời gian người xem sản phẩm 32 33 Phần 4: Đánh giá, kiểm tra Bước thiết kế Phân tích yêu cầu & chức Thiết kế kiến trúc Thiết kế Model Triển khai Đánh giá & kiểm tra Đưa yêu cầu chức phù hợp với nguồn nhân lực lực nhóm, đạt yêu cầu đề project Kiến trúc Client-Server thiết kế chi tiết dựa yêu cầu chức đề Các khối chức xây dựng mô tả cụ thể theo chức nó, tạo thành khối tổng thể hoàn chỉnh Triển khai thiết kế đề Bảng Bảng đánh giá, kiểm tra Phần 5: Kết luận 34 Phần 6: Tài liệu tham khảo 35