Để thành công trong thị trường IoT, các OEM cần có khả năng đón nhận sự đổi mới với tốc độ nhanh hơn.
Tuy nhiên, việc xây dựng các sản phẩm mạnh mẽ cho lợi thế IoT không phải là một nhiệm vụ dễ dàng. Với ngày càng nhiều thứ kết nối với Internet trong thế giới IoT, nhu cầu về các thiết bị được kết nối mạng không chỉ có khả năng kết nối với cloud mà còn có thể xử lý các phép tính phức tạp.
Các OEM liên tục xác định các cách mới và hữu ích hơn để khai thác khả năng của cảm biến, giám sát các loại dữ liệu, xử lý thông tin, kết nối với cloud và kiểm soát hệ sinh thái của thiết bị. Phạm vi ứng dụng IoT có thể có là vô tận, từ nhà ở, ô tô, thiết bị đeo được, các ngành công nghiệp và cho đến các thành phố thông minh.
MCU và các thiết bị kết nối là cốt lõi của các sản phẩm dựa trên IoT này. Để giúp các nhà thiết kế IoT thiết kế các thiết bị độc đáo, hiệu quả, an toàn và hấp dẫn về mặt thẩm mỹ, các nhà sản xuất silicon đang tích hợp nhiều tính năng và thiết bị ngoại vi hơn đồng thời tăng cường sức mạnh xử lý sẵn có với các khả năng tiên tiến như máy học và trí tuệ nhân tạo. Các thiết bị không dây và máy tính nhúng này phải hoạt động liền mạch với nhau để giảm độ phức tạp của thiết kế.
Một phần quan trọng của việc giảm thiểu sự phức tạp này được thực hiện thông qua các bộ phần mềm hiện đại che giấu hoặc trừu tượng độ phức tạp và cung cấp một nền tảng dễ dàng, an toàn và trực quan cho các nhà thiết kế IoT để phát triển các ứng dụng của họ.
Các môi trường phần mềm được thiết kế đặc biệt này xử lý cấu hình phần cứng và cho phép kết nối dễ dàng trên nhiều thiết bị, nhiều nền tảng và mạng khác nhau để tạo ra một mạng liên lạc nhằm cách mạng hóa cách chúng ta tương tác thông minh trong thế giới kỹ thuật số này.
Bài viết này sẽ khám phá những thách thức này một cách chi tiết và giải thích cách một môi trường phần mềm trực quan khen ngợi phần cứng IoT được tối ưu hóa để cung cấp nền tảng an toàn mạnh mẽ hoàn chỉnh để phát triển các giải pháp IoT thông minh với tốc độ nhanh hơn nhiều.
Như một minh họa, chúng ta sẽ sử dụng thiết bị IoT công suất thấp làm ví dụ để kết nối an toàn với cloud bằng giao thức MQTT.
Những thách thức khi thiết kế một hệ thống nhúng IoT
Đầu tiên chúng ta hãy tìm hiểu những thách thức trong việc thiết kế các ứng dụng IoT, sau đó khám phá cách phần mềm hiện đại giúp các Nhà thiết kế IoT vượt qua những thách thức này.
Hình 1 cho thấy những thách thức chính.
(Hình 1. Những thách thức chính của việc thiết kế các ứng dụng IoT)
Mua thiết bị IoT ?
Số lượng thiết bị kết nối Internet mỗi năm đang tăng với tốc độ cấp số nhân. Để bắt kịp với sự cạnh tranh, thời gian tiếp thị là chìa khóa. Tuy nhiên, phần mềm có ảnh hưởng đáng kể đến thời gian phát triển và chi phí. Chọn phần mềm và công cụ phù hợp có thể đơn giản và tăng tốc độ phát triển để cắt giảm đáng kể thời gian sản xuất. Với rất nhiều giao thức liên quan đến việc xây dựng các ứng dụng IoT trong thế giới thực, phần mềm cũng cần xử lý những phức tạp cơ bản của các giao thức khác nhau để giúp ứng dụng tương tác liền mạch trong thế giới IoT.
Để giữ cho những giao thức này và sự thay đổi liên tục không trở thành tiêu hao tài nguyên của nhà thiết kế, phần mềm cần phải cách ly ứng dụng khỏi những thay đổi phần cứng.
Dễ sử dụng
Để hỗ trợ nhu cầu tính toán phức tạp cho các Ứng dụng IoT, MCU đã trở nên phức tạp hơn để cung cấp thêm sức mạnh xử lý, bảo mật và logic thông minh. Họ cũng phải cung cấp nhiều thiết bị ngoại vi để hỗ trợ các khả năng bổ sung như âm thanh, giao tiếp với bộ nhớ ngoài, điều khiển động cơ, v.v. Ngoài ra, MCU còn có thêm nhiệm vụ quản lý hệ thống không dây.
Các công cụ phần mềm hỗ trợ cả hệ thống nhúng và hệ thống không dây dưới một cái ô có thể tiết kiệm một lượng thời gian phát triển vô giá và nâng cao tính thân thiện với người dùng. Thách thức lớn nhất đối với các công cụ này là không chỉ che giấu sự phức tạp của phần cứng mà còn cung cấp một nền tảng phát triển dựa trên GUI, dễ sử dụng.
Nền tảng phát triển
-
Công cụ phát triển IoT – Cần có bộ phát triển phần mềm hoàn chỉnh để xây dựng ứng dụng IoT. Các công cụ phần mềm này bao gồm Môi trường phát triển tích hợp (IDE), Giao diện dòng lệnh (CLI), Bộ phát triển phần mềm (SDK) và các thư viện hoặc API được thiết kế riêng cho các nhà phát triển IoT. Các công cụ phát triển phần mềm này có thể được sử dụng trên các nền tảng phát triển IoT hàng đầu hoặc kết hợp với chúng. Các nền tảng phát triển dễ dàng và trực quan cung cấp sự linh hoạt cho các nhà phát triển IoT bằng cách cung cấp tùy chọn phát triển hoàn toàn bằng cách sử dụng IDE và các công cụ của nhà cung cấp hoặc phát triển ứng dụng trên bất kỳ IDE nào khác mà một người lựa chọn như IAR Embedded Workbench, Arm Microcontroller Development Kit và Microsoft Visual Studio Code kết hợp với các công cụ do nhà cung cấp cung cấp.
-
Lựa chọn hệ điều hành – IoT bao gồm các thiết bị khác nhau, từ cảm biến nhỏ đến các hệ thống phức tạp như rô bốt. Lựa chọn môi trường hoạt động cho hệ thống IoT là một trong những nhiệm vụ quan trọng ảnh hưởng đến cách tiếp cận phát triển phần sụn. Các yêu cầu quan trọng của hệ điều hành IoT bao gồm dấu chân bộ nhớ được tối ưu hóa, tiết kiệm năng lượng, bảo mật tích hợp, tính năng kết nối, hoạt động bất khả tri của phần cứng và khả năng xử lý thời gian thực. Các môi trường hoạt động IoT bao gồm từ kim loại thô đến các hệ điều hành nhúng đến các hệ điều hành đầy đủ tính năng đáp ứng các yêu cầu khác nhau của các ứng dụng IoT. Có nhiều sự lựa chọn về nền tảng phát triển cho các ứng dụng nhúng IoT , bao gồm Mbed OS và Amazon FreeRTOS, có thể kể đến hai nền tảng. Ngoài các nền tảng này, các nhà cung cấp thiết bị nhúng và kết nối đôi khi cung cấp các thư viện bổ sung để hỗ trợ các tính năng IoT tùy chỉnh. Các thư viện / nền tảng này bổ sung cho hệ điều hành phát triển để cung cấp cả tính năng nhúng và không dây trong môi trường phát triển IoT trực quan. Sự kết hợp liền mạch giữa các thư viện giàu tính năng được cung cấp bởi các nhà cung cấp thiết bị và Hệ điều hành được lựa chọn dựa trên ứng dụng cung cấp cho các nhà phát triển IoT một nền tảng phát triển toàn diện cho các giải pháp IoT.
Khả năng kết nối với cloud
Với nhiều thiết bị nhúng hơn được kết nối, có rất nhiều dịch vụ cloud . Bất kỳ ai có kế hoạch phát triển các ứng dụng IoT trong thế giới thực đều có thể chọn và chọn kết hợp các dịch vụ cloud cho các tác vụ khác nhau. Do đó, phần mềm nhúng phải có tính linh hoạt cao để hỗ trợ các dịch vụ cloud khác nhau (AWS, Azure, AliOS, v.v.) và các nền tảng. Phần mềm phải cho phép các nhà phát triển thiết kế hệ thống theo cách của họ thay vì giới hạn chúng trong một số tùy chọn nhất định. Một kiến trúc phần mềm độc lập với phần cứng là chìa khóa để giải quyết vấn đề này và các hệ sinh thái phần mềm cung cấp tính năng này sẽ cung cấp rất nhiều tính linh hoạt cho người dùng.
Bảo mật: Một yếu tố không thể bỏ qua
Phần cứng được thiết kế cho các ứng dụng IoT cần có đầy đủ các yếu tố để phát triển các ứng dụng an toàn và bảo mật. Ngoài bảo mật phần cứng, phần mềm cũng cần bổ sung các yếu tố bảo mật phần cứng này. Bảo mật cũng cần được tích hợp theo cách phù hợp với yêu cầu xử lý và chi phí của ứng dụng.
Giải quyết các thách thức trong một hệ thống nhúng IoT
Hãy thảo luận sâu hơn về các khái niệm trên bằng cách sử dụng ứng dụng nhúng IoT dựa trên MQTT năng lượng thấp làm ví dụ. MQTT là một giao thức truyền thông phổ biến được sử dụng bởi các hệ thống nhúng để kết nối với thế giới IoT. Trong một hệ thống IoT điển hình, các thiết bị nhúng thu thập nhiều dữ liệu cảm biến khác nhau, xử lý chúng và truyền thông tin tới hệ thống cloud từ xa bằng giao thức MQTT.
Để xây dựng một ứng dụng như vậy, bạn sẽ cần một vi điều khiển công suất cực thấp được thiết kế với các ứng dụng IoT (Ví dụ: PSoC 6 MCU) và thiết bị kết nối không dây công suất thấp (Ví dụ: thiết bị kết hợp Wi-Fi / BT CYW43012 ). Để phát triển hiệu quả, cần phải có một nền tảng phần mềm cho phép phát triển và gỡ lỗi các thiết bị nhúng và không dây này cùng nhau, chẳng hạn như ModusToolbox.
ModusToolboxlà một hệ thống phát triển hoàn chỉnh cho các ứng dụng nhúng và IoT. Hình 2 giới thiệu tổng quan về ModusToolbox. Nó cung cấp các công cụ dựa trên GUI, phần sụn, phần mềm trung gian, API và tài liệu cho các nhà phát triển IoT. Với Gói hỗ trợ hội đồng quản trị (BSP), thư viện Phần mềm trung gian và Ứng dụng mẫu có sẵn trong GitHub, các nhà phát triển có thể truy cập trực tiếp vào tài nguyên mà họ cần. Ngoài ra, một dự án được tạo trong ModusToolbox có thể được xuất sang các IDE khác như IAR Embedded Workbench, Arm Microcontroller Development Kit và Microsoft Visual Studio Code.
Có thể tiếp tục phát triển thêm trong môi trường này cùng với việc xây dựng dự án với sự trợ giúp của các công cụ biên dịch được người dùng ưa thích như GCC, ARM, IAR như được đánh dấu bằng cách sử dụng các hộp trắng trong Hình 2.
ModusToolbox cung cấp một bộ sưu tập thư viện phần mềm được gọi là giải pháp AnyCloud để phát triển nhanh chóng các ứng dụng Wi-Fi và Bluetooth (xem Hình 3). Các khối màu tím như USB và CapSense đại diện cho các thư viện MCU. Các khối màu xanh lá cây như MQTT và Hỗ trợ nguồn điện thấp (LPA) là thư viện kết nối. Các thư viện kết nối và MCU này tích hợp liền mạch để cho phép phát triển ứng dụng IoT an toàn.
(Hình 3. Ngăn xếp phần mềm AnyCloud)
Đối với các ứng dụng MQTT, AnyCloud cung cấp một môi trường phần mềm duy nhất ẩn chứa nhiều phức tạp khác nhau như quản lý kết nối Wi-Fi xử lý các kết nối mạng, thay đổi địa chỉ IP, v.v.; tạo ổ cắm mạng; Bảo mật lớp truyền tải (TLS) và hơn thế nữa. Nó cung cấp sự linh hoạt cho người dùng để phát triển các ứng dụng của họ theo phong cách riêng của họ.
Để phát triển hệ thống IoT dựa trên MQTT, các nhà thiết kế IoT có thể bắt đầu với ứng dụng MQTT hiện có sẵn như một phần của các ứng dụng mẫu cho thiết bị mong muốn trong công cụ Project Creator GUI (xem Hình 4).
(Hình 4. Tạo dự án IoT bằng các ứng dụng mẫu)
Các nhà phát triển IoT có một dự án hiện có và cần thêm MQTT vào ứng dụng của họ có thể sử dụng Trình quản lý thư viện để làm như vậy. Trình quản lý Thư viện quản lý và nhập các thư viện được ứng dụng sử dụng, cũng như chăm sóc các phần phụ thuộc mà một thư viện đã chọn có.
Nó cũng nhập đệ quy tất cả các thư viện cần thiết cho một ứng dụng cấp cao nhất. Đối với dự án IoT công suất thấp này, nhà thiết kế IoT sẽ kích hoạt thư viện “mqtt” và trình quản lý thư viện tự động kéo tất cả các phụ thuộc vào như minh họa trong Hình 5 bên dưới.
(Hình 5. Thêm chức năng MQTT vào một dự án hiện có)
Khi gói MQTT được nhập, nhà thiết kế IoT có thể lấy thêm thông tin để bắt đầu phát triển ứng dụng bằng cách sử dụng các tệp README rất chi tiết được cung cấp cùng với cả ứng dụng mẫu MQTT và thư viện MQTT. Hình 6 cho thấy một phần của các tệp README riêng lẻ giúp các nhà thiết kế IoT bắt đầu và chạy ứng dụng của họ cho quy trình phát triển mà họ mong muốn.
(Hình 6. README chi tiết để bắt đầu nhanh phần mềm IoT)
Khi MQTT được triển khai, trọng tâm chính của nhà phát triển IoT thường là tiêu thụ điện năng thấp. Một tính năng chính trong các hệ thống IoT tiết kiệm điện là “giảm tải”. Giảm tải máy chủ cho phép MCU PSoC 6 của máy chủ đi vào chế độ ngủ sâu trong thời gian dài trong khi thiết bị không dây xử lý các tác vụ thay mặt máy chủ MCU như yêu cầu ARP, lưu giữ TCP, v.v.
Giảm tải trên máy chủ đóng vai trò quan trọng trong việc tối ưu hóa mức tiêu thụ điện năng của máy chủ . Ngoài ra, những lần giảm tải này giải phóng CPU chủ cho các tác vụ khác mạnh mẽ hơn như xử lý dữ liệu âm thanh hoặc cảm biến. Điều này sẽ cải thiện hiệu quả và sức mạnh tổng thể của hệ thống. Định cấu hình các tải trọng này trong một hệ thống IoT thế giới thực sẽ là một nhiệm vụ phức tạp. Với một môi trường công cụ tích hợp cả MCU và thiết kế không dây, thời gian và nỗ lực phát triển được giảm bớt.
Ví dụ: công cụ cấu hình “Low Power Assistant” (LPA) đi kèm với ModusToolbox, cho phép các nhà phát triển định cấu hình tải điện thấp bằng cách bật hộp kiểm và chọn cấu hình cần thiết như Hình 7 cho thấy. Công cụ tự động tạo mã nguồn dựa trên các cài đặt đã định cấu hình cho ứng dụng.
(Hình 7. Công cụ hỗ trợ công suất thấp (LPA))
Ngoài ra, cần phải viết rất nhiều mã để cấu hình các chân, thiết bị ngoại vi và đồng hồ khác nhau cho MCU. Trình cấu hình cung cấp một cách dễ dàng để thực hiện các tác vụ đó bằng GUI, giúp nhà phát triển không mất thời gian viết mã các tác vụ này theo cách thủ công. Các trình cấu hình cũng có thể trợ giúp với các cài đặt liên quan đến MCU khác nhau như thiết lập chân GPIO, cấu hình ngoại vi, định tuyến tương tự, cài đặt hệ thống, thiết lập cây đồng hồ và định tuyến DMA.
Hình 8 cho thấy một vài trong số các cấu hình này: cấu hình chân GPIO, cấu hình ngoại vi và cài đặt đồng hồ. Các công cụ như trình tạo dự án, trình quản lý thư viện, trình cấu hình USB, máy chủ cập nhật chương trình cơ sở thiết bị, trình cấu hình Bluetooth và trình cấu hình LCD phân đoạn cũng làm giảm đáng kể thời gian và nỗ lực phát triển của các nhà phát triển IoT.
(Hình 8. (a) Công cụ GUI của Trình cấu hình Pin)
(Hình 8. (b) Công cụ GUI của trình cấu hình thiết bị ngoại vi)
(Hình 8. (c) Công cụ GUI của Trình cấu hình Đồng hồ Hệ thống)
Một số ứng dụng sẽ cần linh hoạt hơn trong quá trình phát triển để tùy chỉnh cài đặt. Các cấu hình được tạo bởi các công cụ GUI có thể được ghi đè bằng mã hóa thủ công khi cần thiết. Ngoài ra, các nền tảng phát triển linh hoạt hơn cung cấp các hệ thống xây dựng có thể được tích hợp với nhiều IDE của bên thứ ba và người dùng nâng cao cũng có thể sử dụng các công cụ CLI. Có một nền tảng phát triển mạnh mẽ nhưng linh hoạt như vậy sẽ đẩy nhanh thời gian sản xuất và cải thiện đáng kể hiệu quả.
Với sự sẵn có của nhiều dịch vụ và nền tảng cloud , OEM cần phải linh hoạt và có thể nhanh chóng thích ứng với sự đổi mới. Yếu tố chính của sự linh hoạt là thiết kế với các công cụ phát triển có thể thích ứng với các nền tảng IoT khác nhau và hỗ trợ một hệ sinh thái rộng lớn. Trong bài viết này, chúng ta đã xem xét những thách thức quan trọng nhất của việc thiết kế một hệ thống IoT và cách các công cụ phần mềm có thể đơn giản hóa độ phức tạp của thiết kế bằng cách che giấu những phức tạp cơ bản mà kiến trúc IoT yêu cầu.
Các nền tảng SW này cũng cung cấp sự linh hoạt cho các nhà phát triển nâng cao để tùy chỉnh hầu hết các khía cạnh thiết kế của một hệ thống IoT. Điều này đạt được thông qua sự tích hợp tích cực và liền mạch của các thiết bị nhúng và kết nối cả trong ngăn xếp phần cứng và phần mềm. Sự tích hợp MCU và các thiết bị không dây này là nền tảng của một