Thực hành IoT: Xây dựng hệ thống hoàn chỉnh từ cảm biến đến ứng dụng

MỤC LỤC

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG Posts and Telecommunications Institute of Technology

THỰC HÀNH GIAO TIẾP CẢM BIẾN-VI ĐIỀU KHIỂN- THIẾT BỊ CHẤP HÀNH

- Cảm biến độ ẩm và nhiệt độ DHT11 là cảm biến rất thông dụng và chi phí rẻ và rất dễ lấy dữ liệu thông qua giao tiếp 1 wire (dùng 1 chân digital để truyền dữ liệu. Khi một tín hiệu điều khiển được đưa vào cuộn dây điện, relay sẽ chuyển từ trạng thái thường mở (NO) sang trạng thái thường đóng (NC) giúp cho thiết bị được hoạt động.

Sơ đồ đấu nối:
Sơ đồ đấu nối:

THỰC HÀNH CÁC GIAO THỨC TRUYỀN NHẬN DỮ LIỆU SPI/I2C/UART

    - Serial là chuẩn giao tiếp truyền thông nối tiếp không đồng bộ, sử dụng UART (Universal Asynchronous Receiver- Transmitter, một bộ phận phần cứng được tích hợp bên trong chip ATmega328 của board Arduino Uno) kết hợp với mức logic TTL (mức điện áp cao tương ứng với 5V hoặc 3.3V và mức điện áp thấp tương ứng với 0V). - Giao tiếp Serial giữa 2 thiết bị với nhau thông thường sẽ có 2 dây tín hiệu, đó là TX (Transmitter) có chức năng truyền tải dữ liệu và RX (Receiver) có chức năng thu nhận dữ liệu. 2 dây tín hiệu này được kết nối chéo nhau giữa 2 thiết bị. Điều đặc biệt của Serial đó là quá trình truyền và quá trình nhận dữ liệu được diễn ra hoàn toàn độc lập với nhau. - B oard Arduino đều được hỗ trợ sẵn 1 hoặc nhiều cổng giao tiếp. Đối với board Arduino Uno, cổng Serial được ra chân tại vị trí chân số 1 và chân số 0 trên board), đây được gọi là Hardware Serial, tức là giao tiếp Serial dựa trên phần cứng (có sử dụng UART).

    Hình 1: V í dụ về khung truyền, bao gồm 1 bit start, 8 bits data và cuối cùng là 1 bit
    Hình 1: V í dụ về khung truyền, bao gồm 1 bit start, 8 bits data và cuối cùng là 1 bit

    THỰC HÀNH TRUYỀN NHẬN DỮ LIỆU BẰNG ZIGBEE

    - Phần cuối cùng của bảng giữ thông tin về các node có thể giao tiếp trực tiếp với nó ( không phải parent cũng ko phải child) Neighbour table size mặc định được để là 26 – đây là độ rộng size tối thiểu được yêu cầu bởi Zigbee- Compliant Platform. Hơn nữa, nếu tăng Neighbour size > 26 thì packet sẽ bị dài ra ( vì 1 packet có thể chứa tố i đa là 26 neighbour), do đó, bản tin sẽ được truyền 2 lần cho những packet này, 2 phần đầu của bảng neighbor, dành cho các thiết bị parent và child, chúng được lưu ở 1 bảng phụ trong EEPROM, bảng phụ này không được lớn hơn 2/3 bảng neighbor. - Nếu Ex-PANID chưa được đặt sẵn cho Router hoặc End-device, sau khi vàomạng, nó sẽ học Ex-PANID của mạng và sẽ sử dụng nó trong việc rejoin network nếu trong 1 vài trường hợp nó không thể liên kết được với mạng đó (rơi vào trạng thái orphaned).

    Mô-đun không dây CC2530 ZigBee là giải pháp hệ thống trên chip (SOC) thực sự cho các ứng dụng IEEE 802.15.4, mô-đun có thể được sử dụng rộng rãi trong lĩnh vực truyền thông không dây khoảng cách ngắn, với mức tiêu thụ điện năng thấp , âm lượng nhỏ, khả năng chống nhiễu mạnh mẽ. Khác với các loại mô-đun ZigBee khác, CC2530 khởi chạy mô-đun ZigBee tự tạo, sử dụng năng lượng, người dùng không cần hiểu sự phức tạp của giao thức ZigBee, tất cả phần xử lý giao thức ZigBee, trong mô-đun ZigBee tự động, người dùng chỉ cần truyền dữ liệu thông qua cổng nối tiếp, hiện đang có trên thị trường cách đơn giản nhất để sử dụng các ứng dụng ZigBee.

    Sơ đồ đấu nối cho Router:
    Sơ đồ đấu nối cho Router:

    THỰC HÀNH TRUYỀN NHẬN DỮ LIỆU BẰ NG LORA

      Coding Rate - CR là số lượng bit được tự thêm vào trong payload gói tin LoRa để mạch nhận có thể sử dụng để phục hồi lại một số bit dữ liệu đã nhận sai và từ đó phục hồi được nguyên vẹn dữ liệu payload. Mạch thu phát EBYTE E32-433T20D sử dụng chip SX1278 của nhà sản xuất SEMTECH chuẩn giao tiếp LORA, chuẩn LORA mang đến hai yếu tố quan trọng là tiết kiệm năng lượng và khoảng cách phát siêu xa ( Ultimate long range wireless solution), ngoài ra nó còn có khả năng cấu hình để tạo thành mạng nên hiện tại được phát triển và sử dụng rất nhiều trong các nghiên cứu về IoT. Mạch thu phát EBYTE E32-433T20D được tích hợp phần chuyển đổi giao tiếp SPI của SX1278 sang UART giúp việc giao tiếp và sử dụng rất dễ dàng, chỉ cần kết nối với Software của hãng để cấu hình địa chỉ , tốc độ và công suất truyền là có thể sử dụng.

      Điều chỉnh địa chỉ và kênh cho Lora AS32, để 2 Lora giao tiếp được với nhau thì địa chỉ và kênh của 2 lora phải cùng với nhau ví dụ trong hình mình đang cài đặt Lora ở địa chỉ 0 và kênh 15 thì Lora thứ 2 cũng phải là địa chỉ 0 kênh 15. Nếu đã chuyền nhận thành công rồi, thì có thể áp dụng cảm biến thôi các bạn có thể xem lại cách đấu nối các bài trước, với chân Digital của DHT11 để giao tiếp arduino thì các bạn có thể tuỳ chọn chân.

      THỰC HÀNH CLOUD 1. Giới thiệu về giao thức MQTT

      Client chỉ làm ít nhất một trong 2 việc là publish các thông điệp (message) 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. Mosquitto là một MQTT Broker mã nguồn mở cho phép thiết bị truyền nhận dữ liệu theo giao thức MQTT version 5.0, 3.1.1 và 3.1 – Một giao thức nhanh, nhẹ theo mô hình publish/subscribe được sử dụng rất nhiều trong lĩnh vực Internet of Things. Mosquitto cung cấp một thư viện viết bằng ngôn ngữ C để triển khai các MQTT Client và có thể dễ dàng sử dụng bằng dòng lệnh: “mosquitto_pub” và “mosquitto_sub”.

      Tiếp đến, thực hiện cấu hình port cho Mosquitto broker: mở Windows Defender Firewall with Advanced Security, bấm vào Inbound Rules, chọn New Rule.., chọn Port và sau đó bấm Next. Để trực quan hóa dữ liệu, thay vì sử dụng Command Prompt để hiển thị bản tin được Publish gửi lên MQTT Broker như trên, chúng ta download phần mềm MQTT Explorer , chọn hệ điều hành và phiên bản phù hợp với máy tính của bạn.

      Sơ đồ đấu nối
      Sơ đồ đấu nối

      THỰC HÀNH ĐIỀU KHIỂN QUA SMART PHONE, WEB

      Các thiết bị này thực hiện việc đo lường và thu thập dữ liệu về các đại lượng vật lý thông qua các cảm biến, điều khiển các thiết bị chấp hành và có khả năng truyền và nhận dữ liệu từ các thiết bị khác qua mạng. Các thiết bị ở lớp thiết bị kết nối với thiết bị Gateway ở lớp mạng thông qua các mạng cục bộ như Wifi, Zigbee, Bluetooth, LoRaWAN hoặc các mạng có dây như CAN Modbus, Profibus, RS485, Ethernet. • Vi điều khiển Arduino: Arduino là một bo mạch điện tử mạnh mẽ và linh hoạt sử dụng để kết nối với các cảm biến hoặc thiết bị điện tử khác và thực hiện các hành động dựa trên các tín hiệu từ các cảm biến hoặc lệnh điều khiển từ người dùng thông qua giao diện web.

      • Gateway là chip WiFi LOLIN(WEMOS) D1 mini Lite : Gateway này giúp việc kết nối các thiết bị nhúng như Arduino với mạng Internet thông qua Wi-Fi, tạo điều kiện cho việc điều khiển từ xa thông qua trang web. Thứ nhất là xuất bản (Publish) data trạng thái của các thiết bị lên Broker với topic Publish và trên web sẽ thực hiện đăng kí (Subscribe) bản tin đó từ Broker để hiển thị trạng thái của thiết bị chấp hành lên DashBoard.

      Sơ đồ đấu nối
      Sơ đồ đấu nối

      Nếu Topic subscribe của sinh viên là: button1/#

      Chú ý: Trong nội dung 2 sinh viên sẽ thực hiện hiển thị trạng thái của các thiết bị chấp hành( bật hoặc tắt), và điều khiển các thiết bị chấp hành thông qua web. Sẽ có 2 luồng data: 2 luồng data này là khác nhau, nên topic cũng khác nhau. Thứ hai là web ( Client) sẽ tiến hành điều khiển các thiết bị chấp hành thông qua việc xuất bản các bản tin (Publish) về Broker.

      Sau đó Gateway sẽ đăng kí (Subscribe) các bản tin đó từ Broker và truyền về cho Arduino để xử lí các yêu cầu từ Client. Trong code nạp cho chip WiFi ta tiến hành đăng kí bản tin từ phía Client : topicSub : button/#.

      Thì ta có các topic con là: button1/led, button1/buzzer , button1/fan

      * Chú thích: button (để phân biệt topic giữa các nhóm) /# (để bắt tất cả các topic con của button, trong bài này ta có 3 topic gồm: button/led, button/buzzer, button/ fan). Mục đích của topic S ub này là đăng kí (Subscribe) các bản tin từ Broker mà Web(Client) đã xuất bản (Publish) trước đó tới Broker. // Khởi tạo cổng nối tiếp phần mềm với tốc độ baud là 9600 ( đây là Baudrate của cổng mySerial để giao tiếp với board Arduino Uno).

      Có nhiệm vụ là nhận data từ Chip WiFi D1 mini Lite lấy từ MQTT Broker để bật tắt Led/ Còi/Quạt thông qua giao tiếp USART. Trong hàm loop() khi arduino nhận data từ chip WiFi ta phân tích bản tin để có thể tiến hành điều khiển các thiết bị chấp hành như: bật/ tắt Led/ Còi/Quạt.

      Sinh viên thiết kế 1 hệ thống IoT hoàn chỉnh gồm đầy đủ 3 lớp: thiết bị, mạng, ứng dụng

      Thì trên trang web các bạn nhập vào ô Topic to Publish là : button/fan và message: 1 (value). Sinh viên thiết kế 1 hệ thống IoT hoàn chỉnh gồm đầy đủ 3 lớp: thiết bị, mạng,.