Mô hình lập trình trong hệ điều hành Contiki

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu hệ điều hành mã nguồn mở contiki cho mạng cảm biến không dây và ứng dụng trong hệ thống nông nghiệp chính xác tại lào​ (Trang 44)

2.4.1. Mô hình lập trình Event-driven

Lập trình hướng sự kiện (Event-driven) là một mô hình lập trình hiệu quả về bộ nhớ để viết phần mềm cho các nút cảm biến. Với kiểu lập trình này, phần mềm được viết như là các trình xử lý sự kiện: Các đoạn mã ngắn gọn mô tả làm thế nào mà hệ thống đáp ứng được các sự kiện. Ví dụ về các sự kiện như một gói tin vô tuyến đến từ một nút lân cận, sự kiện đọc dữ liệu cảm biến từ một trong các bộ cảm biến và sự kiện từ bộ định thời. Khi sự kiện diễn ra, nút cảm biến đáp ứng bằng cách thực thi một đoạn chương trình phần mềm của nó [18].

Lập trình hướng sự kiện đòi hỏi ít bộ nhớ hơn so với lập trình đa luồng bởi vì không có luồng nào yêu cầu ngăn xếp bộ nhớ. Toàn bộ hệ thống có thể chạy như một luồng duy nhất và chỉ yêu cầu một ngăn xếp duy nhất.

2.4.2. Mô hình lập trình Multithreads

Đa luồng (Multithreads) là một kỹ thuật lập trình cho phép nhiều chương trình có thể chạy đồng thời trên một bộ xử lý duy nhất. Trong lập trình đa luồng, mỗi chương trình được định sẵn một luồng điều khiển riêng và luồng đó chạy cùng với tất cả các luồng khác trong hệ thống. Mỗi luồng được định sẵn thời gian nhất định để chạy trên bộ vi xử lý. Để cho phép chạy nhiều chương trình cùng một lúc, hệ điều hành chuyển đổi giữa các luồng để chúng cùng nhau chia sẻ bộ vi xử lý.

Lập trình đa luồng được sử dụng rộng rãi trong các hệ điều hành thông dụng, ở đó các luồng tự bảo vệ lẫn nhau sao cho một luồng không thể tiếp cận một luồng khác mà không đi qua các giao diện đã quy định. Khi các luồng tự bảo vệ lẫn nhau, chúng thường được gọi là các tiến trình thay vì gọi là các luồng.

Đối với các nút cảm biến không dây, tồn tại một vấn đề đa luồng là mỗi luồng yêu cầu một phần bộ nhớ của riêng mình để giữ trạng thái của các luồng này, được gọi là ngăn xếp của luồng. Các ngăn xếp chứa các biến cục bộ mà luồng sử dụng và các giá trị trả về cho các hàm mà luồng gọi đến, nhưng cũng bao gồm một lượng tương đối lớn bộ nhớ không sử dụng. Bộ nhớ này phải được cấp phát bởi vì nó chưa biết trước được có bao nhiêu ngăn xếp bộ nhớ mà mỗi luồng cần dùng. Do đó, bộ nhớ ngăn xếp thường vượt quá sự cấp phát [18].

2.4.3. Mô hình lập trình Protothreads

Protothreads là một cách để kết hợp ưu điểm của các mô hình lập trình hướng sự kiện và đa luồng. Protothreads là cơ chế lập trình được phát triển cho các hệ thống có bộ nhớ hạn chế, nó kết hợp mô hình lập trình hướng sự kiện và đa luồng theo một phương thức hiệu quả về bộ nhớ [18]. Với Protothreads, chương trình được cấu trúc theo tuần tự, giống như trong mô hình đa luồng, nhưng sử dụng ít bộ nhớ tương tự như mô hình hướng sự kiện. Protothreads có thể thực hiện được hiệu quả trong ngôn ngữ lập trình C mà không cần bất kỳ ngôn ngữ lập trình bậc thấp hay các thay đổi nào với trình biên dịch. Điều hạn chế là các lập trình viên phải lưu trữ các biến một cách rõ ràng khi các Protothreads dừng. Bởi vì các Protothreads được thực hiện bởi ngôn ngữ C, nên chúng rất tiện lợi trên các nền tảng phần cứng khác nhau.

2.4.4. So sánh ba mô hình lập trình trong hệ điều hành Contiki

Mô hình lập trình Multithreads có khả năng thực hiện đồng thời một chuỗi các luồng. Tuy nhiên, các luồng đòi hỏi phải được thực hiện trên những ngăn nhớ riêng, tạo ra chuỗi các luồng điều khiển tuần tự.

Trong khi đó, mô hình lập trình Event-driven chỉ hoạt động trên một ngăn nhớ và thực hiện các luồng điều khiển tùy theo các sự kiện đến. Do đó Event-driven đòi hỏi bộ nhớ ít hơn và cung cấp cơ chế điều khiển linh hoạt theo các sự kiện.

Hình 2.7: Phương thức sử dụng bộ nhớ của Multithreads và Event-driven.

Hình 2.8: Các luồng điều khiển trong Multithreads và Event-driven.

Nhờ sự kết hợp các đặc tính của hai cơ chế Multithreads và Event-driven, Protothreads có khả năng cung cấp cơ chế điều khiển kiểu Event-driven, cung cấp các luồng điều khiển liên tục, đồng thời sử dụng dung lượng bộ nhớ nhỏ với một ngăn nhớ duy nhất.

Hình 2.9 trình bày một ví dụ của một chương trình được thực thi với mô hình lập trình đa luồng và mô hình lập trình hướng sự kiện. Hình 2.10 trình bày một chương trình tương tự được thực hiện với Protothreads. Sự khác biệt giữa mô hình

không chỉ là cấu trúc đoạn mã mà còn cả chiều dài của đoạn mã. Mặc dù mô hình lập trình hướng sự kiện có nhiều dòng mã hơn, nhưng nó hiệu quả về bộ nhớ hơn so mô hình đa luồng.

Hình 2.9: Ví dụ về lập trình đa luồng (trái) và lập trình hướng sự kiện (phải) [18].

Hình 2.10: Ví dụ của lập trình Protothreads [18].

2.5. Các bộ định thời trong hệ điều hành Contiki

 Timer: là loại định thời thụ động, chỉ sử dụng để lưu lại vết các thời điểm khi bộ định thời hết hạn.

 Rtimer: là loại định thời thời gian thực, sử dụng để gọi một hàm tại một thời điểm cụ thể nào đó.

 Event timer (etimer): Được kích hoạt trong các Process và sử dụng để gửi một sự kiện đến Process khi bộ định thời hết hạn.

 Callback timer (ctimer): Có thể được sử dụng ở bất kỳ vị trí nào trong chương trình, có chức năng gọi một hàm xử lý mỗi khi bộ định thời hết hạn. Ctimer được sử dụng trong mô đun RIME của Contiki.

2.6. Cài đặt môi trường phát triển với hệ điều hành Contiki Bước 1: Download và giải nén các phần mềm cần thiết. Bước 1: Download và giải nén các phần mềm cần thiết.

- Download VMware tại địa chỉ: http://www.vmware.com/download/player/ - Download Instant Contiki tại địa chỉ:

https://github.com/contiki-os/contiki - Giải nén Contiki.

Bước 2: Cài đặt các phần mềm cần thiết. - Cài đặt VMware.

Bước 3: Mở Contiki-Instant bằng VMware. - Chạy VMware

- Mở Instant-Contiki: Chọn Open và chọn đường dẫn đến thư mục Contiki vừa giải nén. Chọn Instant-Contiki.

Hình 2.12: Chọn đường dẫn đến Instant-Contiki.

- Điền username là “user” rồi ấn enter. Màn hình đăng nhập hiện lên:

Hình 2.13: Giao diện đăng nhập username. - Điền password là “user” rồi ấn enter .

Hình 2.14: Giao diện nhập Password. - Giao diện của Instant-Contiki được cài trên Ubuntu.

Hình 2.15: Giao diện Instant-Contiki được cài trên Ubuntu.

2.7. Kết luận chương 2

Trong chương này, tác giả đã tập trung nghiên cứu hệ điều hành mã nguồn mở Contiki cho mạng cảm biến không dây. Hệ điều hành Contiki được thiết kế cho các vi điều khiển có bộ nhớ nhỏ, với thông số 2KB RAM và 40KB ROM. Nhờ đó, Contiki có thể được sử dụng cho các hệ thống nhúng. Các kết quả nghiên cứu về hệ điều hành Contiki là cơ sở lý thuyết quan trọng trong việc cài đặt, mô phỏng và đánh giá hệ thống mạng cảm biến không dây ứng dụng trong nông nghiệp chính xác được thực hiện ở chương 3.

Chương 3. ỨNG DỤNG THU THẬP DỮ LIỆU TRONG NÔNG NGHIỆP CHÍNH XÁC TẠI LÀO

3.1. Mô hình hệ thống thu thập dữ liệu trong nông nghiệp chính xác tại Lào Lào

3.1.1. Giới thiệu về nông nghiệp chính xác

Theo truyền thống, nông nghiệp là việc thực hiện một nhiệm vụ cụ thể, chẳng hạn như trồng hoặc thu hoạch, với một lịch trình định trước. Nhưng bằng cách thu thập dữ liệu thời gian thực về thời tiết, đất và chất lượng không khí, theo dõi sự trưởng thành của cây trồng và thậm chí cả trang thiết bị và chi phí lao động, các phân tích có thể được sử dụng để đưa ra quyết định thông minh hơn. Đây được gọi là nông nghiệp chính xác (hoặc canh tác chính xác). Một định nghĩa của nông nghiệp chính xác có thể là như sau: kỹ thuật áp dụng đúng số lượng đầu vào (nước, phân bón, thuốc trừ sâu,…) vào đúng vị trí và vào đúng thời điểm để tăng cường sản xuất và nâng cao chất lượng.

Với nông nghiệp chính xác, trung tâm kiểm soát thu thập và xử lý dữ liệu trong thời gian thực để giúp nông dân đưa ra quyết định tốt nhất liên quan đến trồng, bón phân và thu hoạch cây trồng. Các nút cảm biến được đặt tại nơi trồng để đo nhiệt độ và độ ẩm của đất và không khí xung quanh. Ứng dụng cảm biến không dây trong nông nghiệp chính xác nâng cao hiệu quả, năng suất và lợi nhuận trong nhiều hệ thống sản xuất nông nghiệp, trong khi giảm thiểu tác động không mong muốn đến địa điểm nơi trồng. Các thông tin thời gian thực thu được từ các lĩnh vực có thể cung cấp một cơ sở vững chắc cho nông dân để điều chỉnh chiến lược bất cứ lúc nào.

Việc ứng dụng mạng cảm biến không dây để quản lý hoạt động nông nghiệp chính xác làm giảm đáng kể số lượng đầu vào như phân bón, nước, thuốc trừ sâu... được sử dụng trong khi tăng sản lượng. Do đó, nông dân thu được lợi nhuận trên đầu tư của mình bằng cách tiết kiệm chi phí kiểm dịch thực vật và phân bón. Áp dụng đúng số lượng đầu vào ở đúng nơi và đúng thời điểm đem lại lợi ích cho cây

trồng, trong khi tiết kiệm nguồn tài nguyên như đất và nước ngầm, và do đó tối ưu hóa toàn bộ chu kỳ trồng trọt. Nông nghiệp bền vững tìm cách để đảm bảo một nguồn cung cấp liên tục của thực phẩm trong giới hạn sinh thái, kinh tế và xã hội cần thiết để duy trì sản xuất trong dài hạn. Do đó độ chính xác nông nghiệp bằng cách sử dụng mạng cảm biến không dây sẽ cho phép theo đuổi mục tiêu này.

3.1.2. Mô hình hệ thống thu thập dữ liệu trong nông nghiệp chính xác tại Lào

Năm 2019, kinh tế Lào gặp nhiều khó khăn, đặc biệt là ngành nông nghiệp do xẩy ra tình trạng lũ lụt trên diện rộng, kéo dài tại miền trung và miền nam Lào. Đến cuối năm, hạn hán lại xẩy ra tại các tỉnh miền bắc, ảnh hưởng nghiêm trọng đến đời sống người dân Lào.

Số liệu của Sở Nông nghiệp và Lâm nghiệp, tỉnh Luang Prabang cho thấy, tỉnh này bị ảnh hưởng nặng nề bởi tình trạng hạn hán gây thiệt hại 7.241/26.322 héc-ta lúa; 2.242/8.577 héc-ta ngô… và nhiều loại cây hoa màu khác. Tỉnh Vientiane, địa phương cũng bị ảnh hưởng bởi tình trạng hạn hán, người dân trong tỉnh đã sẵn sàng cho vụ mùa khô. Tuy nhiên, theo ước tính, vụ khô mùa khô năm nay, tỉnh Vientiane sẽ giảm 2.000 héc-ta diện tích canh tác do thời tiết khô hạn và hệ thống thủy lợi xuống cấp trầm trọng, hiện chỉ còn 8.000 héc-ta trên toàn tỉnh trong vụ mùa khô năm 2019.

Trong phạm vi luận văn này, tác giả tập trung nghiên cứu ứng dụng mạng cảm biến không dây trong nhà kính tại Lào. Một nhà kính là một cấu trúc bao phủ mặt đất thường được sử dụng cho sự tăng trưởng và phát triển của cây. Cấu trúc này được gắn với mục đích bảo vệ cây trồng và cho phép một môi trường tốt hơn để phát triển. Sự bảo vệ này đủ để đảm bảo đem lại chất lượng cao trong sản xuất cây trồng.

Chức năng chính của một nhà kính là để cung cấp một môi trường thuận lợi hơn so với bên ngoài. Các yếu tố chính liên quan đến hệ thống điều khiển nhà kính: nhiệt độ, độ ẩm, khí CO2, nồng độ, bức xạ, nước và chất dinh dưỡng có thể được điều khiển bằng mạng cảm biến không dây. Hệ thống tưới tiêu thông minh sử dụng mạng cảm biến không dây cũng là một trong các nghiên cứu được quan tâm nhiều

vì lợi thế trong việc tiết kiệm nhân lực và tiết kiệm nước. Cây trồng cần ánh sáng mặt trời, các chất dinh dưỡng và nước để phát triển. Tất cả các nhà sản xuất nông nghiệp có một yêu cầu lượng nước tối thiểu hàng năm để tồn tại và yêu cầu lượng nước tối ưu hàng năm cho sản xuất tối đa. Do đó hệ thống tưới tiêu thông minh là cần thiết để nâng cao năng suất cây trồng. Hình 3.1 là mô hình hệ thống thu thập dữ liệu và điều khiển tưới chính xác trong nhà kính.

Hình 3.1: Mô hình hệ thống thu thập dữ liệu và điều khiển tưới chính xác trong nhà kính.

Các thông số môi trường như độ ẩm đất, nhiệt độ đất, vi khí hậu trong môi trường nhà kính, nhiệt độ không khí và cường độ ánh sáng được đo lường và thu thập bởi các nút mạng cảm biến không dây, thuật toán tưới chính xác sẽ tính toán theo thời gian thực và đưa ra các khuyến nghị về lịch tưới tối ưu, thể hiện trên giao diện điện thoại thông minh của người sử dụng.

3.2. Phần cứng Tmote Sky cho ứng dụng nông nghiệp chính xác

Tmote Sky là một module không dây công suất thấp sử dụng trong các mạng cảm biến không dây, được ứng dụng trong giám sát và thu thập dữ liệu nhanh chóng. Tmote sky sử dụng các tiêu chuẩn giao tiếp phổ biến như USB và IEEE 802.15.4 để tương tác với các thiết bị khác. Phần cứng Tmote sky tích hợp các cảm biến độ ẩm, nhiệt độ và ánh sáng và cung cấp kết nối linh hoạt với các thiết bị ngoại

vi. Tmote Sky cho phép một loạt các ứng dụng trong mạng cảm biến không dây trong đó có ứng dụng nông nghiệp chính xác.

Hình 3.2. phần cứng Tmote Sky. Các tính năng chính của phần cứng Tmote Sky:

Bộ thu phát không dây Chipcon 250kbps 2.4GHz IEEE 802.15.4.

Khả năng tương tác với các thiết bị IEEE 802.15.4 khác.

Bộ vi điều khiển MSP430 8 MHz của Texas (10k RAM, 48k Flash).

Tích hợp ADC, DAC, giám sát điện áp cung cấp.

Tích hợp ăng-ten trên board mạch với phạm vi 50m trong nhà/phạm vi 125m ngoài trời.

Tích hợp cảm biến độ ẩm, nhiệt độ và ánh sáng.

Tiêu thụ năng lượng thấp.

Khả năng đánh thức nhanh tróng từ chế độ ngủ (<6μs).

Lập trình và thu thập dữ liệu qua USB.

Hỗ trợ mở rộng trên 16 chân IO cho phép kết nối thêm được nhiều cảm biến khác.

3.3. Giao thức truyền thông cây thu thập dữ liệu CTP 3.3.1. Giới thiệu giao thức CTP 3.3.1. Giới thiệu giao thức CTP

Hầu hết các hệ thống mạng cảm biến không dây đều dựa trên hai giao thức vận hành cơ bản đó là: Giao thức thu thập dữ liệu (Collection protocol) để lấy dữ liệu từ mạng và giao thức gửi dữ liệu vào mạng thông qua một hoặc nhiều nút mạng. Bởi vì mục đích chính của các mạng cảm biến thường là thu thập thông tin

cảm nhận được trong trường cảm biến nên các giao thức thu thập dữ liệu được tập trung nghiên cứu nhiều.

Tất cả các giao thức thu thập cho phép chuyển tiếp gói tin đến một điểm thu thập dữ liệu (được gọi là Sink/Gateway) sử dụng cây định tuyến với chi phí tối thiểu. Chi phí thường được tính là số lần truyền kỳ vọng ETX sao cho: Các nút gửi dữ liệu trên tuyến đường có số lần truyền để đến được điểm thu thập là ít nhất.

Các giao thức thu thập ban đầu xây dựng một cấu trúc cây định tuyến. Theo đó, mỗi nút lựa chọn một bước nhảy kế tiếp cho tất cả các lưu lượng dữ liệu được chuyển tiếp bởi nút đó. Điều này tạo thành một cây định tuyến hướng về một điểm thu thập cố định. Cấu trúc cây định tuyến được xây dựng thông qua việc thiết lập một Gradient chi phí định tuyến. Điểm thu thập có chi phí bằng 0. Mỗi nút tính toán chi phí của các bước nhảy kế tiếp bằng cách cộng chi phí của nó với chi phí của liên kết nối đến nút đó. Một cách quy nạp, chi phí của một nút là tổng các chi phí của các liên kết trong tuyến đường của nó đến điểm thu thập.

Hình 3.3: Cấu trúc liên kết mạng được xây dựng theo giao thức CTP.

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu hệ điều hành mã nguồn mở contiki cho mạng cảm biến không dây và ứng dụng trong hệ thống nông nghiệp chính xác tại lào​ (Trang 44)

Tải bản đầy đủ (PDF)

(79 trang)