You are on page 1of 95

TẬP ĐOÀN CÔNG NGHIỆP – VIỄN THÔNG QUÂN ĐỘI

TỔNG CÔNG TY CÔNG NGHIỆP CÔNG NGHỆ CAO VIETTEL

HƯỚNG DẪN TÍCH HỢP


PHẦN
CÁC CÔNG CỤ CỦA INNOWAY
0
01
3 Các Khối chức năng của nền tảng InnoWay

Khối quản lý người dùng


(User management)

Khối quản lý thiết bị


(Device management)

Khối quản lý dữ liệu


(Data Management)

Khối định nghĩa nghiệp


vụ (Flow Engine)

Bảng điều khiển - Giám


sát (Dashboard)
3 Khối quản lý người dùng

Cho phép đăng ký, đăng nhập

Quản lý thông tin người dùng

Quản lý vai trò người dùng


trong dự án

Quản lý gói cước và thông tin


thanh toán
3 Khối quản lý thiết bị

Quản lý kết nối của thiết bị

Quản lý thông tin, cấu hình,


trạng thái thiết bị

Quản lý hành vi và điều khiển


thiết bị

Quản lý phiên bản firmware


. bị
thiết
3 Khối quản lý dữ liệu

Sensorization Layer: Quản lý luồng dữ liệu

Storage Layer: lưu trữ

Data Clean: Tiền xử lý, làm sạch dữ liệu thô

Analytic layer: Hỗ trợ phân tích và tổng hợp

Service Layer: Cung cấp các API để theo dõi,


giám sát
3 Khối định nghĩa nghiệp vụ (Flow Engine)

(1) Quản lý vòng đời dự án (kích hoạt,


cập nhật, vận hành..)

(2) Định nghĩa và quản lý cảnh báo khi sự


kiện xảy ra (qua SMS/ email)

(3) Cho phép định nghĩa nghiệp vụ của


sản phẩm bao gồm:

Lưu trữ
Logic xử lý Tạo API
dữ liệu
3 Các node nghiệp vụ của flow engine

Các node Enrichment: Bổ sung thông tin


nhằm xử lý bản tin từ thiết bị

Các node Transformation: Chuyển đổi


dữ liệu
Các node Filter: Lọc các bản tin theo
điều kiện của nghiệp vụ

Các node External: Gửi tới bên thứ 3


cho các dịch vụ SMS, email, DB, API
3 Bảng quản lý giám sát (Dashboard)

Các công cụ bảng biểu,bản đồ, sơ đồ hỗ trợ theo dõi được tình trang của sản phẩm, giải pháp một
cách trực quan, Mobile App mẫu cho hệ điều hành iOS và Android
3 Tham khảo bổ sung

- Giới thiệu chung: https://innoway.vn


- Dev Portal: (đăng ký tài khoản)
- Market place: https://innoway.vn/marketPlace
- Cộng đồng phát triển: https://blog.innoway.vn/forum/dien-
dan-iot
- Giải pháp mẫu: https://innoway.vn/solutionMaketPage
- Hướng dẫn sử dụng: https://vht-iot.gitbook.io/innoway/
PHẦN
QUY TRÌNH TÍCH HỢP GIẢI PHÁP
0
02
4 Quy trình tích hợp giải pháp
Quy trình thực hiện

Tạo Tài
Khoản

Tạo dự án

Tích hợp
thiết bị

Phát triển
FlowEngine

Phát triển
công cụ theo
dõi ,giám sát
4 Quy trình tích hợp giải pháp
Tạo tài khoản

Tạo tài khoản : Đăng ký Email, tạo mật khẩu… Tạo Tài Khoản

Tạo dự án

Tích hợp thiết


bị

Phát triển
FlowEngine

Xác nhận để
đăng ký Phát triển
công cụ theo
dõi ,giám sát
4 Quy trình tích hợp giải pháp
Tạo dự án

Tạo Tài Khoản


Sau khi đăng ký tài khoản mới và đăng nhập vào hệ Nhấn chọn dự án để mở
thống, ấn vào Tạo mới dự án để lập dự án mới.

Tạo dự án

Tích hợp thiết


bị

Phát triển
FlowEngine

Phát triển
công cụ theo
dõi ,giám sát
Link hướng dẫn: https://vht-iot.gitbook.io/innoway/bat-dau-su-dung/du-an-dau-tien
4 Quy trình tích hợp giải pháp
Phát triển Firmware

Tạo Tài Khoản


Chuẩn bị môi
Chuẩn bị KIT phát triển Triển khai dev
trường lập trình
Tạo dự án

Tích hợp thiết


bị

Phát triển
ESP DEV KIT V1 Môi trường lập trình ESP32 FlowEngine

Phát triển
công cụ theo
dõi ,giám sát
4 Quy trình tích hợp giải pháp
Phát triển Flow Engine
Ở thanh chức năng bên trái, bấm chọn Đám mây, sau đó ấn chọn Flow Engine
Tạo Tài Khoản

Tạo dự án

Tích hợp thiết


bị

Phát triển
FlowEngine

Ấn chọn dấu + bên phải để tạo mới một Flow Engine


Phát triển
công cụ theo
dõi ,giám sát
4 Quy trình tích hợp giải pháp
Thiết lập Flow Engine

Ấn chọn Import flow Tạo Tài Khoản

Tạo dự án

Tích hợp thiết


Truy cập vào link: https://github.com/duydev294/MQTT_Innoway và tải về file led_flow.json rồi sau đó bị
đưa file vào Flow Engine

Phát triển
FlowEngine

Phát triển
công cụ theo
dõi ,giám sát
4 Quy trình tích hợp giải pháp
Phát triển Flow Engine

Tạo Tài Khoản


Sau khi thêm thành công, Flow Engine hiện ra như sau

Tạo dự án

Tích hợp thiết


bị

Phát triển
FlowEngine

Ấn chọn Apply changes để lưu lại Phát triển


công cụ theo
dõi ,giám sát
4 Quy trình tích hợp giải pháp
Phát triển Flow Engine

Tạo Tài Khoản


Chọn sau đó chọn Make root flow để mặc định flow chính

Tạo dự án

Tích hợp thiết


bị

2
Phát triển
FlowEngine

Phát triển
công cụ theo
dõi ,giám sát
4 Quy trình tích hợp giải pháp
Bảng điểu khiển
B1. Tại màn hình bảng điều khiển chọn Thêm Widget
Tạo Tài Khoản

Tạo dự án

Tích hợp thiết


bị

Phát triển
FlowEngine

Phát triển
công cụ theo
dõi ,giám sát
4 Quy trình tích hợp giải pháp
Bảng điểu khiển
B2. Chọn một Widget phù hợp với nhu cầu để thêm vào bảng điều khiển
Tạo Tài Khoản

Tạo dự án

Tích hợp thiết


bị

Phát triển
FlowEngine

Phát triển
công cụ theo
dõi ,giám sát
4 Quy trình tích hợp giải pháp
Bảng điểu khiển
B2. Chỉnh sửa dữ liệu cần hiển thị tương ứng với từng biểu đồ bằng cách chọn vào biểu
tượng “bút” góc trên bên phải Tạo Tài Khoản

Tạo dự án

Tích hợp thiết


bị

Phát triển
FlowEngine

Phát triển
công cụ theo
dõi ,giám sát
PHẦN
HƯỚNG DẪN CHI TIẾT TÍCH HỢP
0
03
Mục tiêu bài thực hành 24

Sẵn sàng các kiến thức thực tế để phát triển các ứng dụng trên nền tảng InnoWay

• Sử dụng sóng wifi


Thực hành • Các ứng dụng điều khiển và đọc trạng thái
Indoor • Nền tảng phát triển: Smart Home, Smart
Farm

• Sử dụng Module SIM, Sóng LPWAN (NB-IoT)


Thực hành • Tiếp nhận dữ liệu cảm biến, vị trí GPS
Outdoor • Nền tảng phát triển: Track&Trace, Smart
Metering
BÀI TẬP SỐ 1:
THỰC HÀNH GIẢI PHÁP INDOOR

Đề bài: Xây dựng hệ thống điều khiển đèn Led từ xa qua wifi

Mô tả bài toán:
1. Dùng đèn Led có sẵn trên ESP32 DEV KIT để thực hiện các lệnh điều
khiển qua sóng wifi
2. Thực hiện tích hợp thiết bị lên nền tảng Innoway để theo dõi và xử lý
lệnh điều khiển
3. Sử dụng MQTT Box để thực hiện gửi lệnh điều khiển thiết bị

Ứng dụng:
Cho các ứng dụng tại các khu vực có phủ sóng wifi: Smart Home, Smart
Farm

Source code: https://github.com/duydev294/MQTT_Innoway


Điều khiển đèn Led từ xa 26

Dung cụ và công cụ chuẩn bị.

Nền tảng IOT Innoway MQTT Box


ESP DEV KIT V1

Môi trường lập trình ESP32


Điều khiển đèn Led từ xa
Tạo dự án mới
Sau khi đăng ký tài khoản mới và đăng nhập vào hệ thống, ấn vào Tạo mới dự án để lập
dự án mới.

Link hướng dẫn: https://vht-iot.gitbook.io/innoway/bat-dau-su-dung/du-an-dau-tien


Điều khiển đèn Led từ xa
Tạo thiết bị ảo đầu tiên

Tại menu bên trái, chọn Đám mây, vào Quản lý tổ chức, chọn thẻ Dự án, và ấn vào thẻ Thiết bị.

Link hướng dẫn: https://vht-iot.gitbook.io/innoway/bat-dau-su-dung/thiet-bi-ao-dau-tien


Điều khiển đèn Led từ xa
Tạo thiết bị ảo đầu tiên

Nhấn Tạo mới, nhập tên thiết bị và ấn Lưu.


Điều khiển đèn Led từ xa
Thiết lập Flow Engine

Ở thanh chức năng bên trái, bấm chọn Đám mây, sau đó ấn chọn Flow Engine

Ấn chọn dấu + bên phải để tạo mới một Flow Engine


Điều khiển đèn Led từ xa
Thiết lập Flow Engine

Ấn chọn Import flow

Truy cập vào link: https://github.com/duydev294/MQTT_Innoway và tải về file led_flow.json rồi sau đó
đưa file vào Flow Engine
Điều khiển đèn Led từ xa
Thiết lập Flow Engine

Sau khi thêm thành công, Flow Engine hiện ra như sau

Ấn chọn Apply changes để lưu lại


Chọn sau đó chọn Make root flow để mặc định flow chính

2
Điều khiển đèn Led từ xa
Lập trình ESP32
Link code mẫu: https://github.com/duydev294/MQTT_Innoway/tree/main/ESP32_code

Tạo dự án kết nối MQTT đầu tiên: Vào File/New/Espressif IDF Project, đăt tên cho dự án, sau đó chọn
Next -> Create a project using one of the templates -> protocols -> tcp

2
3

1
Điều khiển đèn Led từ xa
Lập trình ESP32
Thiết lập kết nối wifi cho esp32
Từ thư mục dự án, chọn sdkconfig => Example Connection Configuration => Điền thông tin wifi mà bạn muốn kết
nối tới (SSID, Password)

2
1
Điều khiển đèn Led từ xa
Lập trình ESP32

Sau khi tạo dự án thành công,


dự án của bạn sẽ được biểu
diễn như sau

Ấn chọn file app_main.c


Điều khiển Led từ xa
Lập trình ESP 32

Cấu hình chân GPIO cho đèn Led trên ESP32


Điều khiển đèn Led từ xa
Lập trình ESP32

Chương trình xử lý các trạng thái khi kết nối MQTT


Điều khiển đèn Led từ xa
Lập trình ESP32

Cấu hình cho kết nối MQTT tới Innoway, với MQTT_Broker là mqtt://mqtt.innoway.vn,
Password là deviceToken được lấy ở Innoway, username là một chuỗi bất kỳ

Code đọc dữ liệu trả về thiết bị và điều khiển đèn Led


Điều khiển đèn Led từ xa

1
Cách lấy device token trên nền tảng Innoway

2
Điều khiển đèn Led từ xa

Cách lấy device ID


Trên thanh công cụ, chọn Đám mây => Quản lý tổ chức => Thiết bị => chọn biểu tượng
trên thiết bị cần lấy device ID => chọn Copy ID
Điều khiển đèn Led từ xa
Cấu trúc bản tin và bản tin trả về giá trị điều khiển

Cấu trúc bản tin điều khiển và trả về cho thiết bị

Cấu trúc bản tin điều khiển:


Topic: messages/{device_ID}/update
Payload: {“st”:0}

Cấu trúc bản tin gửi về thiết bị:


Topic: messages/{device_ID}/status
Payload:{“st”:0}

Với device_ID là device_id lấy được ở innoway


0 là giá trị trạng thái của đèn: 0 là đèn tắt, 1 là đèn sáng
Điều khiển đèn Led từ xa
Sử dụng MQTT BOX

Cấu hình cho Client:


Client Name: Bất kỳ
Protocol: mqtt/tcp
Username: Bất kỳ
Host: mqtt.innoway.vn
Password: Device Token lấy ở Innoway
Chọn Create MQTT Client
để tạo Client MQTT
Sau khi điền các thông số xong ấn Save
để kết nối
Điều khiển đèn Led từ xa
Sử dụng MQTT BOX

Ở phần Topic to publish, ta điền cấu trúc topic điều khiển ở


trên, ở phần payload ta viết dưới dạng JSON

Ta cũng điền tương tự ở mục Topic to subscribe để kiểm tra


dữ liệu trả về thiết bị
Điều khiển đèn Led từ xa
Checklist hoàn thành (Quan trọng)

STT Nội dung kiểm tra Kết quả Nguyên nhân (nếu có)
1 Tạo và đăng nhập thành công tài khoản trên innoway
2 Tạo và lấy được deviceID và deviceToken từ nền tảng
3 Thiết bị kết nối được vào mạng WIFI
4 Thiết bị kết nối được đến server innoway thông qua
giao thức MQTT
5 Thiết bị nhận và thực hiện đúng lệnh gửi từ người
dùng
BÀI TẬP SỐ 2:
THỰC HÀNH GIẢI PHÁP INDOOR
Đề bài: Xây dựng công tắc thông minh 4 nút Wi-Fi tích hợp nền tảng Innoway,
điều khiển bằng ứng dụng VTHome qua giao thức MQTT.
Mô tả bài toán:
1. Dùng 4 nút nhấn nối với ESP32 mô phỏng như 4 nút của công tắc, 4 đèn LED đơn
để xem trạng thái bật tắt của nút nhấn
2. Để tích hợp được công tắc lên nền tảng Innoway, ta phải đăng kí thiết bị thông qua
app VTHome (được gọi là quá trình pair). Trong quá trình này, công tắc phải thực
hiện:
+ Kết nối Wi-Fi (smartconfig)
+ Lấy thông tin device id và token (app sẽ gửi thông tin này qua giao thức http)
+ Kết nối MQTT
3. Sau khi đăng kí được thiết bị, mở app VTHome để điều khiển bật tắt công tắc. Hoặc bật
tắt từ 4 nút nhấn.

Ứng dụng:
Dành cho các giải pháp trong vùng phủ sóng wifi: Smart Home, Smart Farm

Link source code: https://github.com/IcyWaterDL/switchWifi


2 Bài tập thực hành 2

Chuẩn bị:
Phần cứng:
1. Kit ESP32-Wroom-32
2. Cab micro USB 2.0/3.0
3. 4 nút nhấn
4. Dây nối
5. 4 LED đơn
6. Breadboard

Phần mềm:
1. Trình biên dịch Espressif-IDE: https://dl.espressif.com/dl/esp-idf/
2. Ứng dụng VTHome:
• IOS: https://apps.apple.com/vn/app/vthome/id1611471811?l=vi
• Android: https://play.google.com/store/apps/details?id=com.viettel.VTHome
2 Bài tập thực hành 2
Sơ đồ nối chân

GND GND

D32 D2

D33 D4

D34 D5

D35 D18
2 Bài tập thực hành 2
Lưu ý cấu hình flash
Mở SDK configuration, chọn Flash size 4M
2 Bài tập thực hành 2
Lưu ý cấu hình flash
Chọn Custom partition table CSV. Gõ partitions4M.csv
2 Bài tập thực hành 2
Luồng tích hợp thiết bị lên nền tảng Innoway
2 Bài tập thực hành 2
Thực hành lập trình

Thiết bị chạy chế độ smartconfig lấy ssid và password sau đó kết nối Wi-Fi
Code chạy smartconfig:

void start_smartconfig(void)
{
if(initEvent == false)
{
initEvent = true;
s_wifi_event_group = xEventGroupCreate();
ESP_ERROR_CHECK( esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &event_handler, NULL) );
ESP_ERROR_CHECK( esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &event_handler, NULL) );
ESP_ERROR_CHECK( esp_event_handler_register(SC_EVENT, ESP_EVENT_ANY_ID, &event_handler, NULL) );
}
esp_wifi_stop();
ESP_ERROR_CHECK( esp_wifi_set_mode(WIFI_MODE_STA) );
ESP_ERROR_CHECK( esp_wifi_start() );
}

ESP32 Smartconfig: https://docs.espressif.com/projects/esp_smartconfig.html


2 Bài tập thực hành 2
Thực hành lập trình

ESP32 chạy webserver để gửi thông tin của thiết bị, nhận device id và token từ app gửi qua giao thức http 1.1

httpd_handle_t start_webserver(void)
{
esp_err_t err;
httpd_config_t config = HTTPD_DEFAULT_CONFIG();
config.stack_size = 8192;
config.lru_purge_enable = true;

// Start the httpd server


ESP_LOGI(TAG, "Starting server on port: '%d'", config.server_port);
httpd_stop(server);
err = httpd_start(&server, &config);
if (err == ESP_OK) {
// Set URI handlers
ESP_LOGI(TAG, "Registering URI handlers");
httpd_register_uri_handler(server, &GET_device);
httpd_register_uri_handler(server, &POST_ap);
httpd_register_uri_handler(server, &AP_POST_ap);
httpd_register_uri_handler(server, &AP_rest);
return server;
}
printf("\r\nerr: %d\r\n", err);
ESP_LOGI(TAG, "Error starting server!");
return NULL;
}
2 Bài tập thực hành 2
Kết nối MQTT

void mqtt_app_start(char *broker, char *client_id, char *passowrd)


{
buf_handle = xRingbufferCreate(4096, RINGBUF_TYPE_NOSPLIT);
if (buf_handle == NULL) {
ESP_LOGE(TAG, "Failed to create ring buffer\n");
}
mqtt_cfg.uri = broker;
mqtt_cfg.username = client_id;
mqtt_cfg.client_id = client_id;
mqtt_cfg.password = passowrd;
mqtt_cfg.keepalive = 60;
client = esp_mqtt_client_init(&mqtt_cfg);
xTaskCreate(mqtt_handle, "mqtt_handle", 4096, NULL, 3, NULL);
esp_mqtt_client_register_event(client, ESP_EVENT_ANY_ID,
mqtt_event_handler, NULL);
esp_mqtt_client_start(client);
}

ESP32 MQTT: https://docs.espressif.com/projects/protocols/mqtt.html


2 Bài tập thực hành 2
Hướng dẫn pair thiết bị
Sau khi cấp nguồn cho ESP32, lúc này ESP32 sẽ ở chế độ DISCONNECT, để đăng kí thiết bị lên nền tảng
Innoway ta làm các bước sau:
Bước 1: Ấn nút boot trên ESP32 5 lần để chuyển sang chế độ pair thiết bị
Bước 2: Mở App VTHome và thao tác theo các hình sau:
2 Bài tập thực hành 2
Kết quả kết nối công tắc thành công
2 Bài tập thực hành 2
Hướng dẫn sử dụng App Vhome

- B1: Đăng kí tài khoản theo đường link: https://innoway.vn/


- B2: Đăng nhập tài khoản đã đăng kí trên hệ thống

Danh sách project gồm:


• Cảnh biến lượng nước
• Định vị
• Kết nối công tắc wifi
2 Kết nối công tắc wifi

- B1: chọn vào Button ”Thêm”

- B2: Chọn tiếp vào “Thêm thiết bị”


Kết nối công tắc wifi
Hướng dẫn sử dụng App Vhome

- B3: Bật các thiết bị kết nối


- B4: Kết nối với Wifi
Kết nối công tắc wifi
Hướng dẫn sử dụng App Vhome

B5: Bắt đầu kết nối với thiết bị


-> kết nối thành công Kết quả sau khi kết nối thành công với thiết
bị và quay về màn danh sách Project
Kết nối công tắc wifi
Checklist hoàn thành (Quan trọng)

STT Nội dung kiểm tra Kết quả Nguyên nhân (nếu có)
1 Đăng ký và đăng nhập thành công tài khoản trên App
2 Đưa được thiết bị vào đúng chế độ Smartconfig bằng
nút bấm trên thiết bị
3 Đưa được thiết bị vào đúng chế độ Smartconfig bằng
nút bấm trên thiết bị
4 Thiết bị gửi đúng thông tin cho App để app hiển thị
đúng loại thiết bị
5 Thiết bị nhận được và lưu thông tin deviceId và
deviceToken để kết nối đến server Innoway
6 Thiết bị nhận và thực hiện đúng lệnh được gửi từ App
7 Thiết bị gửi được thông tin trạng thái để đồng bộ trên
App
BÀI TẬP SỐ 3:
THỰC HÀNH GIẢI PHÁP OUTDOOR
Đề bài: Tích hợp thiết bị định vị, cấu hình thông số bằng ứng dụng qua giao thức MQTT.

Mô tả bài toán:

Ứng dụng:
Dành cho các giải pháp sử dụng các module SIM, cho các ứng dụng Out Door: Tracking
vị trí, cảm biến môi trường

Link source code: Liên hệ nhóm phát triển (innoway.vn)


3 Bài tập thực hành 3

Yêu cầu phần cứng:


1. Kit ESP-WROOM-32
2. Cab micro USB 2.0/3.0
3. Dây nối
4. Module Simcom 7020E (SIM đã đăng
ký gói cước NB hoặc 4G)
5. Module GPS NEO
6. Breadboard

Phần mềm:
1. Trình biên dịch Arduino-IDE
2. Ứng dụng: AiHome
• IOS: https://dply.me/n1wl2c
• Android: https://dply.me/zz0r9p
3 Bài tập thực hành 3
Mô tả thiết bị

-Vi điều khiển sẽ giao tiếp với Module sim thông qua
uart
Vd: AT, AT+CEREG?, …
- Sử dụng các phần mềm có thể giao tiếp UART
(Tham khảo tài liệu SIM7020 Series_ AT Command Manual để hiểu về

UART (AT COMMAND) tập hợp các câu lệnh và chức năng)

Câu lệnh đúng

Câu lệnh sai


3 Bài tập thực hành 3
Mô tả thiết bị

- Với Module GPS, vi điều khiển sẽ nhận các giá trị thông tin
vị trí thông qua UART theo chuẩn truyền thông NMEA
- Kiểm tra và bóc tách 1 số thông tin cần thiết như lat, lon,
speed…
Lưu ý: baudrate mặc định của các module là 9600
UART

Thông tin vị trí theo NMEA


3 Bài tập thực hành 3
Luồng tích hợp thiết bị lên nền tảng Innoway

B1: Đăng ký tài khoản theo đường link: https://innoway.vn/


B2: Sau khi đăng ký thành công, người dùng đăng nhập theo TK đã
đăng ký.
B2: Chọn Giải pháp mẫu, sau đó cài đặt project tương ứng. Ở bài tập
này chúng ta sẽ họn SMART TRACKING.
3 Bài tập thực hành 3
Luồng tích hợp thiết bị lên nền tảng Innoway

Device token
Sau khi đăng nhập vào project
tương ứng, click vào tài khoản
ở góc phải và chọn copy device
token để lấy được device token
3 Bài tập thực hành 3
Luồng tích hợp thiết bị lên nền tảng Innoway

Device ID

Đối với device id, chúng ta vào Đám


mây => Quản lý tổ chức => Thiết bị.

Ở đây chọn Copy ID, như vậy chúng


ta đã có đủ thông tin để kết nối giữa
thiết bị với server broker
Bài tập thực hành 3
Luồng trao đổi dữ liệu thiết bị - nền tảng

STT Luồng Mô tả
Thiết bị -> Thiết bị kết nối MQTT về server với username là device_id và password là
1
Server devicetoken. Thông tin MQTT Broker: mqtt.innoway.vn:1883
Server -> Thiết bị sẽ Subcribe vào topic:
2
Thiết bị Command/{device_id}/control để nhận lệnh điều chỉnh chu kỳ gửi
Thiết bị -> Gửi bản tin vị trí vào topic
3
Server messages/{device_id}/attributes
3 Bài tập thực hành 3
Sơ đồ chân cắm

Sơ đồ cắm chân theo link example đã gửi. Người sử dụng có thể tham khảo example và thay đổi chân
cắm theo ý mình

Có thể sử dụng một dây


cắm micro khác để kết
nối nguồn cho module
sim. Tuy nhiên vẫn cần
phải cấp chung đất cho
các thiết bị bằng cách
cắm chung GND.

Link source example: https://github.com/duydev294/Simcom_VHT.git


3 Bài tập thực hành 3
Thực hành lập trình
Kết nối nối MQTT cho thiết bị
Ví dụ cho câu lệnh kết nối MQTT:

AT+CMQNEW="116.101.122.190","1883",50000,512

Trước khi chúng ta kết nối, hãy (Tạo mới MQTT)


AT+CMQCON=0,3,"myclient",60,1,0,"batky","R0BeRO26eUCd8vLM4R4GWGe
đảm bảo rằng thiết bị có thể giao
5W2i6Jxj8“
tiếp bình thường và có kết nối
(Gửi kết nối với MQTT)
mạng: AT+CMQSUB=0,"command/499ff80f-2db7-4c20-8eff-
- AT 987e79592e82/control",0

- AT + CEREG?(nếu trả stat = 1 (Đăng ký topic: command/499ff80f-2db7-4c20-8eff-


987e79592e82/control)
thì là thiết bị đã có mạng)
AT+CMQPUB=0,"messages/499ff80f-2db7-4c20-8eff-
987e79592e82/attributes",0,0,1,5“”hello”
(Gửi bản tin vào topic ….attributes với message: hello)
AT+CMQDISCON=0
(Ngắt kết nối MQTT)
3 Bài tập thực hành 3
Kết nối MQTT

Ngoài các thông tin về server mqtt, hãy đảm


bảo thông tin và chân cắm UART được chính
Thay đổi các thông số theo thiết bị và dự án
xác

Một số hàm được dùng và chức năng sẽ dùng trong example


3 Bài tập thực hành 3
Kết nối MQTT

Kiểm tra đăng ký mạng


3 Bài tập thực hành 3
Kết nối MQTT

Sau khi kết nối và sub topic thành


công, hãy thử gửi bản tin và kiểm
tra thông qua MQTT BOX
VD:
mqtt_message_publish(client_mqtt
, “hello”, topic_pub, 0, 5);

Ví dụ về luồng kết nối MQTT trong example


2 Bài tập thực hành 3
Hướng dẫn sử dụng App Edu

Đăng nhập tài khoản đã đăng kí trên hệ thống. Nếu chưa có


tài khoản thì người dùng có thể đăng ký theo đường link: Danh sách project gồm:
https://innoway.vn/ • Cảnh biến lượng nước
• Định vị
• Kết nối công tắc wifi
3 Định vị
Đổi chu kỳ

Thay đổi chu kì theo mốc thời


gian

Vd: Chọn chu kì là 2 phút thì cứ


mỗi 2 phút thiết bị sẽ update lại
vị trí mới
3 Định vị
Lộ trình

- Lưu Lại toàn bộ lộ trình đường đã đi trong khoảng thơi gian đã chọn
Định vị
Checklist hoàn thành (Quan trọng)

STT Nội dung kiểm tra Kết quả Nguyên nhân (nếu có)
1 Tạo và đăng nhập thành công tài khoản trên innoway
2 Tạo và lấy được deviceID và deviceToken từ nền tảng
3 Kết nối thành công với trạm BTS (4G)
4 Thiết bị kết nối được đến server innoway thông qua
giao thức MQTT
5 Kiểm tra bản tin phản hồi từ thiết bị thông qua MQTT
Box
6 App hiển thị được thông tin vị trí và hành trình đúng
với vị trí của thiết bị, đối chiếu đúng với bản tin nhận từ
MQTT Box
BÀI TẬP SỐ 4:
THỰC HÀNH GIẢI PHÁP OUTDOOR
Đề bài: Thiết kế đồng hồ nước thông minh tích hợp nền tảng Innoway

Mô tả bài toán:
1. Sử dụng cảm biến YF-S201 đo tốc độ dòng chảy, lượng nước tiêu thụ trong chu kì 2
phút.
2. Sử dụng SIM7020E, dùng công nghệ kết nối NB-IoT
3. Bản tin gồm thời gian, tốc độ dòng chảy, lượng nước tiêu thụ gửi qua giao thức truyền
thông MQTT với chu kì 2 phút

Ứng dụng:
Dành cho các giải pháp sử dụng các module SIM, công nghệ NB-IoT, cho các ứng dụng
Out Door: Smart Metering

Link source code: https://github.com/IcyWaterDL/smartMetering


4 Bài tập thực hành 4

Chuẩn bị Phần cứng:


1. ESP32 wroom-32
2. Module SIM7020E
3. Water Flow Sensor YF-S201

Phần mềm:
1. Trình biên dịch Espressif-IDE: https://dl.espressif.com/dl/esp-idf/
2. App AiHome:
IOS: https://dply.me/n1wl2c
Android: https://dply.me/zz0r9p
4 Bài tập thực hành 4
Sơ đồ nối chân
4 Bài tập thực hành 4
Công nghệ kết nối NB-IoT

Phạm vi kết nối rộng, băng thông thấp, điện năng tiêu thụ thấp (LPWAN)

Thông số kỹ thuật:
4 Bài tập thực hành 4
Lưu đồ thuật toán:

Link source code:


4 Bài tập thực hành 4
Module sim 7020E
Module sim 7020E giao tiếp với ESP32 bằng các câu lệnh AT qua giao thức UART, khởi tạo UART:
void init_simcom(uart_port_t uart_num, int tx_num, int rx_num, int baud_rate)
{
simcom_7020.baud_rate = baud_rate;
simcom_7020.uart_num = uart_num;
simcom_7020.tx_io_num = tx_num;
simcom_7020.rx_io_num = rx_num;
uart_config_t uart_congfig =
{
.baud_rate = baud_rate,
.data_bits = UART_DATA_8_BITS,
.parity = UART_PARITY_DISABLE,
.stop_bits = UART_STOP_BITS_1,
.flow_ctrl = UART_HW_FLOWCTRL_DISABLE,
};
ESP_ERROR_CHECK(uart_driver_install(uart_num, BUF_SIZE, 0, 0, NULL, 0));
ESP_ERROR_CHECK(uart_param_config(uart_num, &uart_congfig));
ESP_ERROR_CHECK(uart_set_pin(uart_num, tx_num, rx_num, ECHO_TEST_RTS, ECHO_TEST_CTS));
xTaskCreate(uart_simcom, "uart_echo_task1", 4096, NULL, 10, NULL);
}

AT command: sim7020_series_at_command_manual_v1.05.pdf
4 Bài tập thực hành 4
Module sim 7020E
Kiểm tra đăng kí mạng:

bool isRegistered(int retry)


{
while(retry--)
{
vTaskDelay(1000/portTICK_PERIOD_MS);
send_ATComand("AT+CREG?");
if(_readSerial(1000) == false) continue;
if(strstr((char*)simcom_7020.AT_buff, "0,1") || strstr((char*)simcom_7020.AT_buff, "0,5")
|| strstr((char*)simcom_7020.AT_buff, "1,1") || strstr((char*)simcom_7020.AT_buff, "1,5")||
strstr((char*)simcom_7020.AT_buff, "2,1") || strstr((char*)simcom_7020.AT_buff, "2,5"))
return true;
else continue;
}
return false;
}

AT command: sim7020_series_at_command_manual_v1.05.pdf
4 Bài tập thực hành 4
Module sim 7020E
Kết nối MQTT:

bool mqtt_start(client clientMQTT, int versionMQTT, int keepalive, int clean_session, int retry) {
if (mqtt_new(clientMQTT, 50000, 512, 3) == 0) return false;
AT_flag res;
char buf[300];
sprintf(buf, "AT+CMQCON=%d,%d,\"%s\",%d,%d,0,\"%s\",\"%s\"", clientMQTT.mqtt_id, versionMQTT,
clientMQTT.client_id, keepalive, clean_session, clientMQTT.user_name, clientMQTT.password); // will
flag = 0
send_ATComand("AT+CREVHEX=0\r\n");
while (retry--) {
send_ATComand(buf);
res =_readFeedback(5000, "OK");
if(res == AT_OK) return true;
else if(res == AT_ERROR) return false;
}
return false;
}

AT command: sim7020_series_at_command_manual_v1.05.pdf
4 Bài tập thực hành 4
Đọc cảm biến YF-S201

YF-S201 là cảm biến dùng để đo lưu lượng nước.


- Cảm biến lưu lượng nước này gồm thân van nhựa, cụm rotor
và cảm biến hiệu ứng Hall.
• Mô-đun này hoạt động dựa trên hiệu ứng từ trường.
- Khi dòng nước chảy qua cụm rotor, cánh quạt sẽ quay và cảm
biến hiệu ứng hall sẽ tạo ra một xung điện.
- Bằng cách đếm các xung được tạo ra này, lượng nước đi qua
cảm biến có thể được ước lượng
Phạm vi đo lưu lượng nước là 1-30 L / phút và áp suất tối đa lên
đến 1,75 MPa. Mỗi xung gần tương đương với 2,25 ml.
4 Bài tập thực hành 4
Đọc cảm biến YF-S201
Cấu hình chân cảm biến là chân input, trở kéo lên, mỗi lần có xung thì tăng biến đếm tần số lên 1 đơn vị
static void IRAM_ATTR gpio_isr_handler(void* arg)
{
freq++;
}

void init_gpio_input(gpio_num_t gpio_num) {


gpio_config_t io_conf;
io_conf.pin_bit_mask = 1ull << gpio_num;
io_conf.mode = GPIO_MODE_INPUT;
io_conf.pull_up_en = 1;
io_conf.pull_down_en = 0;
io_conf.intr_type = GPIO_INTR_NEGEDGE;
gpio_config(&io_conf);

gpio_install_isr_service(0);
gpio_isr_handler_add(gpio_num, gpio_isr_handler, (void*) gpio_num);
}
4 Bài tập thực hành 4
Đọc cảm biến YF-S201
Gửi bản tin gồm: timestamp, lưu lượng nước tức thời, lượng nước tiêu thụ trong chu kì 2 phút
void publish_task(void * pvParameters) {
while (1) {
if (esp_timer_get_time()/1000 - current_time > 2000) {
current_time = esp_timer_get_time()/1000;
ESP_LOGI("MAIN", "CNT: %d", freq);
freq = 0;
// Pulse frequency (Hz) = 7.5Q, Q is flow rate in L/min.
float flowRate = (freq / 7.5);
// (Pulse frequency x 60 min) / 7.5Q = flowrate in L/hour
float waterVolume = (flowRate / 60.0) * 1000;
char data[100] = {0};
sprintf(data, "{\"t\":%d,\"wv\":%.2f,\"wf\":%.2f}", gettimeofday(&epoch, 0), waterVolume,
flowRate);
mqtt_message_publish(client_mqtt, data, topic_pub, 0, 3);
}
vTaskDelay(10 / portTICK_PERIOD_MS);
}
}
2 Bài tập thực hành 4
Hướng dẫn sử dụng App Edu

- B1: Đăng kí tài khoản theo đường link: https://innoway.vn/


- B2: Đăng nhập tài khoản đã đăng kí trên hệ thống

Danh sách project gồm:


• Cảnh biến lượng nước
• Định vị
• Kết nối công tắc wifi
3 Bài tập thực hành 4
Luồng tích hợp thiết bị lên nền tảng Innoway

B1: Đăng ký tài khoản theo đường link: https://innoway.vn/


B2: Sau khi đăng ký thành công, người dùng đăng nhập theo TK đã
đăng ký.
B2: Chọn Giải pháp mẫu, sau đó cài đặt project tương ứng. Ở bài tập
này chúng ta sẽ họn SMART METERING.
Cảm biến lượng nước.
Biểu đồ

- Hiển thị thông tin: lượng nước, lưu lượng dòng chảy theo các mốc thời gian tùy chọn
Thông báo lưu lượng nước
Smart Meter
Checklist hoàn thành (Quan trọng)

STT Nội dung kiểm tra Kết quả Nguyên nhân (nếu có)
1 Tạo và đăng nhập thành công tài khoản trên innoway
2 Tạo và lấy được deviceID và deviceToken từ nền tảng
3 Kết nối thành công với trạm BTS (4G)
4 Thiết bị kết nối được đến server innoway thông qua
giao thức MQTT
5 Kiểm tra bản tin phản hồi từ thiết bị thông qua MQTT
Box
6 App hiển thị được thông tin lưu lượng nước và tổng
lượng nước chảy qua cảm biến theo thời gian thực, so
sánh đối chiếu với bản tin nhận được từ MQTT Box
TRÂN TRỌNG CẢM ƠN.SMART
HOME

You might also like