PHƯƠNG PHÁP GIẢI QUYẾT
3.3. Phương pháp kết nối giữa phần cứng và app của thiết bị
Trong thiết bị truyền dịch thông minh này sử dụng giao thức MQTT để thiết bị và app có thể giao tiếp được với nhau. MQTT là giao thức truyền thơng điệp (message) theo mơ hình publish/ subscribe, được sử dụng cho các thiết bị IoT với băng thông thấp, độ tin cậy cao và khả năng được sử dụng trong mạng lưới khơng ổn định. Nó dựa trên một broker (tạm dịch là “máy chủ mơi giới”) “nhẹ” (khá ít xử lý) và được thiết kế có tính mở (tức là không đặc trưng cho ứng dụng cụ thể nào), đơn giản và dễ cài đặt. Mơ hình kết nối MQTT của thiết bị được thể hiện rõ trong Hình 3.1.
STT Tốc độ truyền dịch % ép dây 1 5 giọt/phút 12% 2 10 giọt/phút 15% 3 15 giọt/phút 22% 4 20 giọt/phút 27% 5 25 giọt/phút 32% 6 30 giọt/phút 37% 7 35 giọt/phút 42% 8 40 giọt/phút 47% 9 45 giọt/phút 52% 10 50 giọt/phút 57% 11 55 giọt/phút 62% 12 60 giọt/phút 67%
29
Hình 3.1. Mơ hình kết nối MQTT của thiết bị
Mơ hình publish/ subscribe có hai thành phần là: client (gồm publisher – nơi gửi thông điệp, subscriber – nơi nhận thơng điệp) và broker (máy chủ mơi giới). Trong đó, broker được coi như trung tâm, nó là điểm giao của tất cả các kết nối đến từ client (publisher/ subscriber). Nhiệm vụ chính của broker là nhận thơng điệp từ publisher, xếp vào hàng đợi rồi chuyển đến một địa điểm cụ thể.
Client thì được chia thành hai nhóm là publisher và subscriber. Client chỉ làm ít nhất một trong hai việc là publish các thông điệp lên một/ nhiều topic cụ thể hoặc subscribe một/ nhiều topic nào đó để nhận message từ topic này. Hiện thiết bị truyền dịch thông minh đang dùng server miễn phí có thơng tin như sau:
• Host: broker.hivemq.com
• TCP Port: 1883
• Websocket Port: 8000
Khối xử lý tín hiệu trung tâm của thiết bị truyền dịch thơng minh là module ESP8266, vì vậy để thiết bị có thể kết nối wifi nhanh chóng thì cần sự trợ giúp của tính năng Smartconfig, là một khái niệm được nhắc đến khi khi muốn cấu hình thơng tin cho thiết bị wifi kết nối nhanh chóng đến internet nhất từ người dùng bằng chính thiết bị (điện thoại) của họ. Để hiểu một cách đơn giản thì Smartconfig nghĩa là người dùng gửi thông tin mạng wifi (bao gồm tên wifi và password wifi) cho ESP8266 thông qua smartphone thay cho cách thông thường là phải khai báo thông tin này trong chương trình và nạp firmware xuống. Lợi ích của Smartconfig:
• Dễ dàng cấu hình wifi cho ESP8266 thơng qua smartphone.
• Khơng cần phải nạp lại code để cấu hình.
• Có thể dùng Smartconfig để cấu hình nhiều thiết bị một lúc.
Và ESP Touch là giao thức được dùng trong Smartconfig để người dùng có thể kết nối tới các phiên bản module ESP8266 thơng qua cấu hình đơn giản trên điện thoại thơng
30
minh. Ban đầu không thể kết nối với ESP8266, nhưng thơng qua giao thức ESP Touch thì điện thoại sẽ gửi gói UDP tới Access Point (AP) ở đây là ESP8266, mã hóa SSID và mật khẩu thành trường length trong gói UDP để ESP8266 có thể hiểu và giải mã được thông tin.
Và sau khi thiết bị kết nối được với wifi mà từ app điều khiển gửi xuống thì những lần khởi động sau, thiết bị đều ghi nhớ thông tin wifi này và miễn sao thiết bị vẫn nằm trong vùng phủ sóng của thơng tin wifi cũ thì app điều khiển khơng cần gửi thơng tin wifi đến cho thiết bị nữa. Vì vậy, dù là nhân viên y tế đang ở vị trí nào trong bệnh viện và có kết nối với một wifi khác thì vẫn có thể điều chỉnh được thiết bị vì thiết bị và app điều khiển đã nhận diện được nhau qua kết nối MQTT.
3.4. Ngơn ngữ lập trình và app điều khiển
• Giới thiệu mơi trường lập trình Visual Studio Code
Arduino IDE là IDE đầu tiên mà tất cả chúng ta sử dụng khi tiếp cận phát triển Arduino lần đầu tiên. Với giao diện đơn giản và cung cấp tất cả các tính năng để viết, biên dịch và tải mã lên các board Arduino, nó dựa trên Java và chạy trên Windows, OS X, Linux. Arduino IDE là một giải pháp hoàn chỉnh, nhưng nó có một vài tính năng cịn hạn chế nên chỉ hoạt động tốt cho các ứng dụng nhỏ. Tuy nhiên, đối với các dự án nâng cao với hơn 200 dịng code, nhiều file và các tính năng nâng cao khác như tự động hoàn thành và kiểm tra lỗi thì Visual Studio Code với phần mở rộng PlatformIO IDE là giải pháp thay thế tốt nhất.
Visual Studio Code (VS Code hay VSC) là một trong những trình soạn thảo mã nguồn phổ biến nhất được sử dụng bởi các lập trình viên. Nhanh, nhẹ, hỗ trợ đa nền tảng, nhiều tính năng và là mã nguồn mở chính là những ưu điểm vượt trội khiến VSC ngày càng được ứng dụng rộng rãi. Ngoài ra VSC với phần mở rộng PlatformIO IDE có các lợi thế sau:
• Hỗ trợ nhiều ngơn ngữ lập trình
• Đa nền tảng
• Tự động hồn chỉnh code khi đang gõ
31
• Nhiều tiện ích mở rộng khác
• Lưu trữ an tồn
• Giao diện thân thiện với người dùng.
Chính vì những ưu điểm nổi bật trên mà VSC với phần mở rộng PlatformIO IDE được lựa chọn thay vì lập trình trên Arduino IDE như trước đây và lập trình bằng ngơn ngữ ngơn ngữ C.
Ngơn ngữ lập trình C là một ngơn ngữ lập trình cấp trung, được phát triển bởi Dennis M. Ritchie để phát triển hệ điều hành UNIX tại Bell Labs và được thực thi lần đầu tiên trên máy tính DEC PDP-11 vào năm 1972. Lựa chọn ngơn ngữ C để lập trình trên VSC vì ngơn ngữ C là ngơn ngữ phổ biến cho những người mới và giúp cho người sử dụng học được nền tảng của các ngơn ngữ lập trình hiện đại.
• App điều khiển
Mục tiêu đặt ra về phần app điều khiển của đề tài là xây dựng được app điều khiển trên điện thoại sử dụng hệ điều hành iOS. Để xây dựng được app điều khiển trên hệ điều hành iOS thì phải sử dụng các thiết bị sử dụng hệ điều hành độc quyền, được phát triển và phân phối bởi Apple. Vì vậy đề tài sử dụng phần mềm VMware để giả lập hệ điều hành macOS 10.15 và xây dựng code dựa trên phần mềm Xcode và iOS Simulator.
• Giới thiệu về Xcode
Với bất cứ ngơn ngữ lập trình nào, IDE là cơng cụ hỗ trợ đóng vai trị vơ cùng quan trọng mà nếu thiếu, năng suất sẽ không thể hiệu quả. Và Apple đã xây dựng và cung cấp một bộ IDE tuyệt vời cho các lập trình viên của mình, đó chính là Xcode. Gần như tất cả lập trình viên iOS trên thế giới đều sử dụng Xcode để lập trình iOS và phần mềm này cũng sở hữu nhiều tính năng hỗ trợ các lập trình viên vơ cùng mạnh mẽ. Và trong phần mềm Xcode có hỗ trợ hai ngơn ngữ lập trình là ngơn ngữ Objective-C và ngơn ngữ Swift, nhóm sử dụng ngơn ngữ Swift vì nó ngắn gọn, dễ hiểu, theo mức độ đánh giá chủ quan của nhóm.
• Giới thiệu về iOS Simulator
iOS Simulator là một trình mơ phỏng di động, nó là một ứng dụng ít phức tạp mà mơ phỏng một số hành vi của một thiết bị di động, nhưng không bắt chước phần cứng và không
32
hoạt động trên hệ điều hành thực sự. iOS Simulator sẽ tạo ra một ứng dụng mô phỏng giống thiết bị thực (hỗ trợ tất cả các dòng thiết bị của Apple) đến từng chi tiết, giống thật nhất có thể nhưng cơng cụ này đơn giản và ít hữu ích hơn giả lập.
3.5. Cấu hình, tính năng và thơng số kỹ thuật của thiết bị
Ngoài sử dụng cảm biến đếm giọt để hiển thị tốc độ truyền dịch theo thời gian thực, thiết bị cịn có thêm cảm biến bọt khí để nhận biết được bọt khí có trong dây truyền dịch, từ đó phát cảnh báo lên điện thoại và thiết bị cho nhân viên y tế. Vì mục đích sử dụng của hai khối cảm biến là khác nhau nên chúng sẽ được sắp xếp thẳng hàng theo thứ tự như sau: cảm biến đếm giọt → động cơ servo → cảm biến bọt khí.
Thiết bị sẽ có các chức năng chính như sau:
• Kết nối, tắt mở wifi.
• Có menu chỉnh sửa và xem các thơng số của thiết bị.
• Hiển thị thông tin cài đặt và các thông tin về thiết bị đang hoạt động.
• Tính tốn và hiển thị thời gian truyền hết dịch dự tính, tính tốn dung tích cịn lại theo cài đặt để gửi thơng tin cho app điều khiển.
• Có chế độ ngủ khi khơng cần thiết.
• Hiển thị thông tin kết nối mạng và kết nối server.
• Đóng mở servo theo lệnh cài đặt từ app hoặc nút nhấn trên thiết bị. App điều khiển có các chức năng chính như sau:
• Thêm thiết bị điều khiển bằng nhiều cách (nhập ID, smartconfig, quét mã QR).
• Chia sẻ thiết bị cho các app khác thông qua mã QR.
• Cập nhật thơng số bệnh nhân (số phịng, số gường, tình hình bệnh, ...).
• Gửi lệnh điều khiển cho thiết bị, nhận thông tin điều khiển từ thiết bị.
• Nhận thơng báo khẩn cấp (phát hiện bóng khí) và phát cảnh báo qua chng.
• Nhận thơng báo khi dịch truyền gần hết.
Thiết bị và app điều khiển giao tiếp với nhau thông qua giao thức MQTT và thiết bị được gắn thêm pin sạc có dung lượng 1200 mAh để đề phòng trường hợp mất điện.
33
CHƯƠNG 4