Thực hành Contiki OS - Communication

26 Tháng Tư 2021

Khả năng giao tiếp data có sẵn trên các mote WSN cho phép trao đổi dữ liệu giữa các mote WSN. Trong bài này, chúng ta sẽ tìm hiểu cách Contiki-NG hỗ trợ giao tiếp giữa các mote WSN và từ một mote WSN đến một máy tính. Chúng ta cũng sẽ khám phá cách xây dựng middleware cho phép các mote WSN giao tiếp với các hệ thống khác.

Thực hành Contiki OS - Communication

Communication Models for Contiki-NG

Cách bạn muốn giao tiếp giữa các mote WSN và máy tính sẽ quyết định loại mô hình giao tiếp mà bạn sử dụng. Như bạn đã biết, mỗi mote WSN thường hỗ trợ khả năng network để nó có thể trao đổi dữ liệu với các mote WSN và máy tính.

Mô hình giao tiếp cho Contiki-NG được mô tả trong hình dưới. Một số ứng dụng WSN có khả năng kết nối trực tiếp với các máy chủ, nhưng các ứng dụng khác có thể không, vì vậy các ứng dụng đó sử dụng hub / gateway / middleware để giao tiếp với các máy chủ

Serial Communication

Giao tiếp nối tiếp có thể được định nghĩa là một quá trình được sử dụng để gửi và nhận một bit tại một thời điểm một cách tuần tự. Đôi khi giao tiếp nối tiếp được gọi là UART (Universal Asynchronous Receiver/Transmitter). Về mặt kỹ thuật, chúng ta đã sử dụng giao tiếp nối tiếp khi chúng tôi tải các chương trình Contiki-NG lên WSN motes trong các bài trước.

Communication Between Contiki Mote and Computer

Trong phần này, chúng ta sẽ xây dựng các chương trình Contiki và Contiki-NG để giao tiếp giữa Contiki mote và máy tính. Điều này rất hữu ích vì chúng ta có thể điều khiển các Contiki mote của mình từ máy tính. Chạy các ứng dụng trên máy tính với những lợi ích chẳng hạn như tương tác với máy chủ cơ sở dữ liệu và giao tiếp với máy chủ đám mây (cloud server)

Access Contiki Motes via Serial Communication

Vì các mote WSN của chúng ta được gắn vào máy tính thông qua giao tiếp nối tiếp, nên chúng ta có thể bắt đầu giao tiếp giữa máy tính và mote WSN. Một số nền tảng ứng dụng, chẳng hạn như C / C ++, Java, Python, C # và Node.js, cung cấp các thư viện để triển khai giao tiếp nối tiếp

Trong phần này, chúng ta sẽ cố gắng truy cập các motes WSN bằng Python thông qua giao tiếp nối tiếp. Để triển khai giao tiếp nối tiếp trong Python, chúng ta sử dụng thư viện pyserial. Bạn có thể xem thêm về thư viện này tại đây

Bạn có thể xác minh xem máy tính của mình đã cài đặt pip hay chưa. Bạn có thể gõ lệnh này trong Terminal:

$ which pip

Nếu bạn không nhận được phản hồi, điều đó có nghĩa là máy tính của bạn đang thiếu chương trình pip. Bạn có thể cài đặt pip bằng lệnh này trong Terminal:

$ sudo apt-get install python-pip

Bây giờ, bạn có thể cài đặt thư viện pyserial bằng cách gõ lệnh này vào Terminal:

$ pip install pyserial

Bạn cũng có thể cài đặt thư viện pyserial bằng easy_install. Bạn có thể gõ lệnh này trong Terminal:

$ easy_install -U pyserial

Đảm bảo máy tính của bạn được kết nối Internet.

Tiếp theo, bạn phải viết một chương trình Python để lắng nghe các thông báo đến trên một cổng nối tiếp cụ thể. Bạn nên biết cổng nối tiếp nào được sử dụng bởi Contiki mote. Bạn cần nó vì bạn sẽ sử dụng nó trên chương trình của mình.

Để tìm một cổng nối tiếp từ Contiki mote, bạn có thể mở Terminal và gõ lệnh này

$ ls /dev/tty*

Bây giờ, bạn sẽ phát triển chương trình Python. Bạn sẽ in tất cả dữ liệu đến từ cổng nối tiếp lên màn hình console. Đặt baudrate 115200 cho tốc độ cổng nối tiếp. Tạo một tệp, được gọi là contiki-viewer.py và viết các tập lệnh hoàn chỉnh này. Thay đổi giá trị PORT thành giá trị đó cho Contiki-NG mote của bạn:

#!/usr/bin/python
import serial
PORT ='/dev/ttyUSB0'
ser = serial.Serial(
 port=PORT,\
 baudrate=115200,\
 parity=serial.PARITY_NONE,\
 stopbits=serial.STOPBITS_ONE,\
 bytesize=serial.EIGHTBITS,\
 timeout=0)
print("connected to: " + ser.portstr)
ser.write("help\n")
while True:
line = ser.readline()
 if line:
 print(line),
ser.close()

Tạm kết

Bài này mình đã giới thiệu sơ về communication trong contiki. Chúc bạn đọc vui vẻ. Bài tiếp theo chúng ta sẽ tiếp tục nội dung này vì phần này còn khá dài

Bình luận