Logo Zephyrnet

Cách kết nối không dây cảm biến IoT với ứng dụng web

Ngày:

Bài báo này đã được xuất bản như một phần của Blogathon Khoa học Dữ liệu.

trodtion

Bài viết này sẽ thảo luận về cách chúng ta có thể không dây gửi dữ liệu khác nhau Cảm biến IoT từ vi điều khiển đến ứng dụng web. Ngoài ra, chúng tôi sẽ lưu trữ dữ liệu đó trong cơ sở dữ liệu MongoDB để xử lý dữ liệu đó theo nhu cầu và yêu cầu của chúng tôi.

Việc gửi dữ liệu cảm biến từ Vi điều khiển đến Máy chủ ứng dụng Web không còn khó khăn hơn nhiều. Chúng ta phải làm theo bốn bước dưới đây một cách đơn giản:
1. Tạo kết nối phần cứng
2. Biên dịch mã Arduino
3. Tạo một ứng dụng web
4. Chạy máy chủ

Tôi sẽ giải thích chi tiết cho bạn từng bước.

IoT & Vi điều khiển là gì

IoT là viết tắt của Internet of Things. Đây là những thực thể vật lý như thiết bị nhúng và cảm biến có thể kết nối qua mạng và trao đổi dữ liệu qua internet.

Nguồn - https://www.tibco.com/reference-center/what-is-the-internet-of-things-iot

Mục đích chính của IoT là tạo ra những hệ thống có thể hoạt động mà không cần sự can thiệp của con người hoặc tuân theo cơ chế tự báo cáo trong thời gian thực. Ngoài ra, những điều này có thể giúp thu thập dữ liệu và thông tin có giá trị từ nhiều thiết bị khác nhau có thể mang lại lợi ích cho việc cải thiện trải nghiệm tổng thể với sản phẩm đó. Chúng tôi cũng có thể tạo ra nhiều thông tin chi tiết có giá trị từ dữ liệu đó bằng cách áp dụng nhiều thuật toán học máy cho dữ liệu đó.

Có rất nhiều ví dụ về thiết bị IoT, như Camera quan sát, Báo động thông minh, được kết nối 24×7 qua internet và gửi tất cả dữ liệu trên điện thoại thông minh. Một số ví dụ khác về thiết bị IoT là Giám sát chất lượng không khí và Giám sát thời tiết cũng đang có xu hướng đáng kể hiện nay.

Đặc điểm của IoT

IoT giúp các vật thể vật lý có thể kết nối và tương tác, biến nó từ thế giới vật lý sang thế giới kỹ thuật số. Nó làm cho các công ty và tổ chức đơn giản hóa công việc hàng ngày của họ bằng cách tự động hóa chúng. Dưới đây là một số tính năng cơ bản của thiết bị IoT.

Đặc điểm của IoT
Nguồn - https://www.interviewbit.com/blog/features-of-iot/

Vi điều khiển là gì?

Các thiết bị này tự động điều khiển các sản phẩm và cảm biến khác nhau như điều khiển từ xa, đồ chơi, máy móc, v.v. Chúng bao gồm Bộ vi xử lý, RAM, ROM và Chân I/O được chế tạo trên một chip duy nhất sử dụng công nghệ VLSI.

Phần lớn các bộ vi điều khiển này được lập trình bằng ngôn ngữ lập trình C và C++. Họ sử dụng các hệ điều hành tự nhiên và yêu cầu tốc độ cũng như hiệu quả rất cao mà chỉ C và C++ mới có thể cung cấp.

Một trong những bộ vi điều khiển phổ biến nhất được sử dụng trong IoT là UNO Arduino. Nó được phát triển trên bộ vi điều khiển Microchip ATmega328P. Thiết kế thân thiện với người dùng, chi phí thấp và kích thước nhỏ gọn đã khiến nó trở thành Bộ vi điều khiển được sử dụng phổ biến nhất.

Nó bao gồm 14 chân I/O kỹ thuật số và 6 chân analog. Ngoài ra, nó có Bộ nhớ Flash 32Kb và hoạt động ở tốc độ xung nhịp 16 MHz.

arduino UNO |Ứng dụng web
UNO Arduino
Nguồn – amazon.com

Một trong những nhược điểm chính của Arduino UNO là nó không có bất kỳ kết nối Bluetooth hoặc Wi-Fi tích hợp nào. Chúng ta phải sử dụng mô-đun Bluetooth hoặc Wi-Fi riêng để kết nối không dây.

Chúng tôi có một bộ vi điều khiển khác là NodeMCU (ESP8266), có thể khắc phục các vấn đề trên. Nó có hầu hết tất cả các tính năng tương tự như Arduino, nhưng nó cũng có mô-đun Wi-Fi tích hợp, cho phép nó kết nối với các ứng dụng khác bằng Wi-Fi.

Nút MCU
NútMCU
Nguồn - https://comComponents101.com/development-boards/nodemcu-esp8266-pinout-features-and-datasheet

Trong bài viết này, chúng tôi sẽ sử dụng NútMCU để gửi dữ liệu của Cảm biến siêu âm đến Ứng dụng web.

Bắt đầu thôi, 😉

Điều kiện tiên quyết

Trong phần này, chúng ta sẽ xem tất cả các yêu cầu và công nghệ cơ bản mà bạn phải làm quen trước khi bắt đầu dự án.

1. Bạn phải có một số kiến ​​thức cơ bản về phát triển ứng dụng web backend.
2. Bạn phải có kiến ​​thức cơ bản về các thiết bị dựa trên IoT.
3. Chúng tôi sẽ sử dụng máy Windows 10 trong hướng dẫn đầy đủ.
4. Bạn phải có một số thiết bị phần cứng ảo như:

  • NútMCU
  • Thiết bị cảm biến sóng siêu âm
  • bảng bánh mì
  • Dây nhảy (FF)
  • 5V Power Supply
  • Cáp USB

Bạn có thể tìm thấy những linh kiện này ở bất kỳ cửa hàng điện tử nào hoặc trên các trang thương mại điện tử nổi tiếng.

Thật tốt nếu bạn có phần cứng, nhưng bạn không cần phải lo lắng nếu không có phần cứng đó. Ở cuối bài viết, tôi sẽ chỉ cho bạn cách bạn có thể kiểm tra ứng dụng của mình mà không cần phần cứng vật lý.

Thiết lập kết nối phần cứng

Trong phần này chúng ta sẽ thấy kết nối phần cứng của NodeMCU với Cảm biến siêu âm.

1. Sơ đồ mạch

sơ đồ mạch| Ứng dụng web

KHAI THÁC. Kết nối

NútMCU Thiết bị cảm biến sóng siêu âm
Vin VCC
GND GND
D6 TRIG
D5 ECHO

Sau khi thực hiện các kết nối trên, hãy kết nối nguồn điện 5V hoặc pin với NodeMCU, như minh họa trong sơ đồ trên. Cuối cùng, kết nối PC của bạn với NodeMCU bằng cáp Micro-USB để chúng tôi có thể ghi mã vào đó.

Thiết lập Arduino IDE

.

2. Tạo một dự án Arduino mới.

Ứng dụng Web

3. Chọn bảng từ UNO Arduino đến NútMCU (ESP8266). Quy trình này được hiển thị dưới đây.

nút mcu

4. Bây giờ, dán đoạn mã dưới đây vào IDE của bạn.

#include char ssid[] = ""; mật khẩu ký tự [] = "
const int HOST_PORT = 80;
Chuỗi url = "/liveSensorData"; //URL gửi dữ liệu

Đoạn mã trên bao gồm:

1. Nếu bạn chưa cài đặt gói trên, “ESP8266WiFi”, thì bạn cũng có thể cài đặt nó bằng cách điều hướng qua Phác thảo << Bao gồm các thư viện << Quản lý thư viện. Sau đó gõ tên thư viện mà bạn muốn cài đặt.

XUẤT KHẨU. Của bạn SSID Mật khẩu của mạng Wi-Fi của bạn.

3. Địa chỉ IP máy chủ và số cổng máy chủ của bạn. Số Cổng máy chủ là Cổng mà ứng dụng web của bạn chạy trên đó. Và địa chỉ IP máy chủ là số 32 bit có thể nhận dạng duy nhất máy tính của bạn. Kết nối với mạng Wi-Fi để xác định loại và địa chỉ IP của bạn ipconfig trên dấu nhắc lệnh của bạn. Sau đó, bạn sẽ có thể thấy Địa chỉ IP của mình. Nhưng IP riêng của bạn sẽ thay đổi nếu bạn kết nối với một mạng khác.

Ứng dụng Web

5. Bây giờ chúng ta sẽ xác định một số biến lưu trữ Cổng đầu vào và Khoảng cách của Cảm biến siêu âm.

const int trig = 12; // D6 const int echo = 14; // D5 int khoảng cách; // Biến này sẽ lưu trữ khoảng cách của đối tượng với cảm biến.

Lưu ý: TRIG được kết nối với Cổng D6ECHO được kết nối với cổng D5. Nếu bạn thay đổi các cổng trong mã, bạn cũng phải thay đổi chúng trong các kết nối mạch.

6. bên trong void setup () function, chúng ta sẽ viết mã khởi tạo các chân trên và kết nối NodeMCU với mạng Wi-Fi. Chúng tôi cũng sẽ xác định tốc độ baud.

Tốc độ Baud là gì?

Tốc độ Baud là tốc độ truyền thông tin trong mạng/kênh. Chủ yếu nó được sử dụng trong truyền thông nối tiếp của thiết bị điện tử. Ví dụ: tốc độ truyền 9600 có nghĩa là nó có thể di chuyển 9600 bit mỗi giây qua Cổng nối tiếp. Nói chung, giá trị baud của NodeMCU là 115200. 

void setup() { // Siêu âm pinMode(trig, OUTPUT); pinMode(echo, INPUT); // Xác định tốc độ truyền Serial.begin(115200); độ trễ(10); // Thiết lập kết nối với WIFI: Serial.println(); Serial.println(); Serial.print("Đang kết nối với "); Serial.println(ssid); WiFi.begin(ssid, mật khẩu); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print(".."); } Serial.println(""); Serial.println("Đã kết nối WiFi"); Serial.println("Địa chỉ IP: "); Serial.println(WiFi.localIP()); }

7. Trong hàm void loop(), chúng ta sẽ viết mã để nhập dữ liệu từ Cảm biến siêu âm rồi gửi dữ liệu đó đến máy chủ.

void loop() { // Kiểm tra trạng thái kết nối của Wi-Fi: if(WiFi.status() != WL_CONNECTED) { WiFi.begin(ssid, pass); Serial.println("Không kết nối được với WIFI"); trở lại; } else { // Kết nối với máy chủ: Serial.print("đang kết nối với "); Serial.println(HOST_IP); // Sử dụng lớp WiFiClient để tạo kết nối TCP WiFiClient client; if (!client.connect(HOST_IP, HOST_PORT)) { // Nếu NodeMCU không thể kết nối với máy chủ. Serial.println("kết nối thất bại"); } else { // Nhập dữ liệu của Cảm biến siêu âm digitalWrite(trig, LOW); độ trễMicro giây(2); digitalWrite(trig, CAO); độ trễMicro giây(10); digitalWrite(trig, THẤP); // Tính khoảng cách bằng cách nhân tốc độ âm thanh với thời gian khoảng cách echo = xungIn(echo, HIGH) * 0.034 / 2; Dữ liệu chuỗi = "{'data':" + Chuỗi(khoảng cách) + "'}"; Serial.println(dữ liệu); // Gửi yêu cầu đến máy chủ: client.println("POST " + url + " HTTP/1.1"); client.println("Máy chủ: server_name"); client.println("Chấp nhận: *" + url + "*"); client.println("Content-Type: application/x-www-form-urlencoded"); client.print("Độ dài nội dung: "); client.println(data.length()); client.println(); client.print(dữ liệu); thời gian chờ dài không dấu = millis(); while (client.available() == 0) { if (millis() - timeout > 5000) { Serial.println(>>> Client Timeout !"); client.stop(); trở lại; } } // Đọc tất cả các dòng trả lời từ máy chủ và in chúng ra Serial while (client.available()) { String line = client.readStringUntil('r'); Serial.print (dòng); } Serial.println(); Serial.println("đóng kết nối"); } } // Chúng tôi sẽ gửi yêu cầu cứ sau 5 giây. Chúng tôi đang thêm độ trễ 5000 mili giây => 5 giây. độ trễ (5000); }

8. Dưới đây là mã hoàn chỉnh cho Arduino IDE

#include char ssid[] = ""; char pass[] = " 5000) { Serial.println(">> Client Timeout !"); client.stop(); return; } } // Đọc tất cả các dòng trả lời từ máy chủ và in chúng ra Serial while (client.available()) { String line = client.readStringUntil('r'); Serial.print(line); } Serial.println(); Serial.println("đóng kết nối"); } } // Chúng tôi sẽ gửi yêu cầu cứ sau 5 giây. Chúng tôi đang thêm độ trễ 5000 mili giây => độ trễ 5 giây (5000); }

Tạo cơ sở dữ liệu

Phần này sẽ tạo cơ sở dữ liệu trên MongoDB theo danh mục bậc miễn phí. Bạn có thể bỏ qua phần này nếu bạn đã có cơ sở dữ liệu MongoDB.

1. Vào trang chính thức của MongoDB Cloud trang mạng và hoàn tất việc đăng ký.

2. Tạo một tổ chức mới

Mongo DB

3. Đặt tên cho tổ chức của bạn và chọn MongoDBAtlas

4. Tạo một dự án mới bên trong tổ chức mà bạn đã tạo trước đó

5. Xây dựng cơ sở dữ liệu mới

Ứng dụng Web

6. Chọn Bậc miễn phí và sau đó chọn nhà cung cấp đám mây mà chúng tôi chọn

7. Bây giờ, hãy nhập tên người dùng và mật khẩu cho cơ sở dữ liệu của bạn. Ngoài ra, hãy thêm địa chỉ IP hiện tại của bạn vào Danh sách IP.

Ứng dụng Web

8. Khi cơ sở dữ liệu của bạn đã sẵn sàng, hãy nhấp vào Kết nối.

TRIỂN KHAI CƠ SỞ DỮ LIỆU

9. Nhấp vào tùy chọn như trong hình bên dưới

KẾT NỐI VỚI DỰ ÁN IOT

10. URL trong hình bên dưới là MongoURI. Nó sẽ khác nhau đối với mỗi cơ sở dữ liệu. Trong URI này, thay vì nhập mật khẩu cơ sở dữ liệu mà bạn đã đặt trong quá trình tạo.

Lưu URI này. Chúng tôi sẽ sử dụng nó sau trong ứng dụng web của chúng tôi.

Ứng dụng Web

Tạo ứng dụng web

Trong phần này, chúng ta sẽ tạo một cách đơn giản NodeJS ứng dụng web nhận dữ liệu từ NodeMCU và hiển thị dữ liệu đó trên Trang web HTML, đồng thời lưu trữ dữ liệu đó trong Cơ sở dữ liệu MongoDB để chúng tôi có thể sử dụng dữ liệu đó để thực hiện một số phân tích và xử lý trước dữ liệu đó bằng các công cụ học máy.

1. Tải xuống và cài đặt phiên bản mới nhất của NodeJS từ trang chính thức của họ trang mạng

2. Tạo thư mục dự án

$ mkdir // iot_project $ cd // iot_project

3. Khởi tạo dự án nút vào thư mục này

$ npm ban đầu

4. Cài đặt thể hiện thư viện

$ npm cài đặt nhanh --save

5. Cài đặt tất cả các thư viện cần thiết

$ npm i nodemon -g $ npm i dotenv $ npm i ejs $ npm i express $ npm i express-ejs-layouts $ npm i mongoose

6. Tạo một file có tên máy chủ.js

// Lấy dữ liệu .env require('dotenv').config(); const mongoose = require("mongoose"); const express = require("express"); const ứng dụng = express(); const expressEjslayouts = require("express-ejs-layouts"); const path = require("path"); const DbConnect = async () => { try { đang chờ mongoose.connect(process.env.MongoURI, { useNewUrlParser: true, useUnifiedTopology: true, }); console.log("Đã kết nối DB"); } bắt (err) { console.log(err.message); // Thoát khỏi quá trình bị lỗi process.exit(1); } }; //Kết nối cơ sở dữ liệu DbConnect(); app.use(expressEjslayouts); app.set("lượt xem", path.join(__dirname, "lượt xem")); app.set("xem công cụ", "ejs"); app.use(express.json()); app.use(express.urlencoded({extend: true })); // Các tuyến máy chủ app.use('/', require("./routes/sensor")); app.get("/", (req, res) => { return res.render("index"); }); const PORT = process.env.PORT || 5000 ; app.listen(PORT, () => { console.log(`Server chạy trên cổng ${PORT}`); });

7. Tạo một .NS tệp lưu trữ tất cả các Biến môi trường của dự án của chúng tôi, như Số cổng và MongoURI.

Sử dụng MongoURI mà chúng tôi đã tạo ở phần trước.

CỔNG=80 MongoURI=
USE_PYTHON_SCRIPT=sai

Chúng ta sẽ sử dụng biến USE_PYTHON_SCRIPT sau trong hướng dẫn này. Tôi sẽ giải thích điều này ở phần sau.

8. Tạo một thư mục mới có tên là models, sau đó tạo một tệp bên trong nó có tên Cảm biến.js

const mongoose = require("mongoose"); const SensorsSchema = new mongoose.Schema({ name: { type: String, bắt buộc: false, mặc định: "Ultrasonic-1" }, time: { type: String, bắt buộc: true, }, data: { type: String, bắt buộc : ĐÚNG VẬY, }, }); module.exports = mongoose.model("Cảm biến", SensorsSchema);

9. Tạo một thư mục có tên Lượt xem trong thư mục mẹ.

Trong thư mục đó, tạo Mẫu EJS có tên chỉ mục.ejs bố cục.ejs. Trong các tệp này, chúng tôi sẽ viết mã cho Mẫu HTML của mình.

In bố cục.ejs, dán đoạn mã dưới đây

<link href="https://cdn.jsdelivr.net/npm/[email được bảo vệ]/dist/css/bootstrap.min.css" rel="stylesheet" Integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous"> * { lề: 0; phần đệm: 0; } html { hành vi cuộn: mịn; kích thước hộp: hộp viền; }

In chỉ mục.ejs, dán đoạn mã dưới đây

Dữ liệu cảm biến Giám sát

Dữ liệu trực tiếp

Ồ.

Tên cảm biến

Giá trị

Dấu thời gian

1.

Giá trị quá khứ

Ồ.

Tên cảm biến

Giá trị

Dấu thời gian

Được Thực Hiện Bởi – Aryan Garg

<script src="https://cdn.jsdelivr.net/npm/[email được bảo vệ]/dist/js/bootstrap.bundle.min.js" tính toàn vẹn="sha384-A3rJD856KowSb7dwlZdYEkO39Gagi7vIsF0jrRAoQmDKKtQBHUuLZ9AsSv4jD4Xa" crossorigin="anonymous"> hàm createRow(rowData, i) { var row = document.createElement("tr"); var serialNo = document .createElement("td"); var cảm biếnName = document.createElement("td"); var cảm biếnValue = document.createElement("td"); var cảm biếnTime = document.createElement("td"); serialNo.innerText = `$ {i + 1}.`; cảm biếnName.innerText = rowData.name; cảm biếnValue.innerText = rowData.data; cảm biếnTime.innerText = Ngày mới (rowData.time).toLocaleTimeString() + " " + ngày mới (rowData.time) .toDateString(); row.append(serialNo); row.append(sensorName); row.append(sensorValue); row.append(sensorTime); return row; } hàm không đồng bộ getAllData() { const settings = { phương thức: " GET", headers: { Chấp nhận: "application/json", "Content-Type": "application/json", }, }; // Gọi API để lấy tất cả dữ liệu const reply = đang chờ tìm nạp("/getAllData" , cài đặt); allData = đang chờ phản hồi.json(); var n = allData.length; var liveData = allData[n - 1]; // Điền giá trị hiện tại của tài liệu cảm biến.getElementById("sensorNameLive").innerText = liveData.name; document.getElementById("sensorValueLive").innerText = liveData.data; document.getElementById("sensorTimeLive").innerText = Ngày mới(liveData.time).toLocaleTimeString() + " " + ngày mới(liveData.time).toDateString(); // Điền dữ liệu cũ vào bảng var dataTable = document.getElementById("dataTable"); dataTable.innerHTML = ""; for (var i = n - 2; i >= 0; i--) { dataTable.append(createRow(allData[i], n - i - 2)); } } getAllData(); // Làm mới trang với dữ liệu mới cứ sau 5 giây setInterval(getAllData, 5000);

Xem trước giao diện người dùng:

Ứng dụng Web

Cấu trúc thư mục của bạn sẽ trông giống như thế này:

iot_project/model/Sensors.js node_modules/views/index.ejslayout.ejs .env package-lock.json package.json server.js

Trong phần tiếp theo, chúng ta sẽ tạo các API để kết nối nó với Vi điều khiển.

Tạo API

Trong phần này, chúng ta sẽ tạo một API để nhận yêu cầu từ Vi điều khiển và một API khác để lấy toàn bộ dữ liệu cảm biến hiển thị trên ứng dụng web.

Tạo thư mục có tên tuyến đường/ và một tệp có tên cảm biến.js bên trong nó. Trong tệp này, chúng tôi sẽ tạo API của mình.

1. API nhận dữ liệu từ Vi điều khiển:

Tên API – /liveSensorData. Tên API tương tự mà bạn phải nhập vào Mã NodeMCU.

router.post("/liveSensorData", async (req, res) => { const main = []; let content; if (process.env.USE_PYTHON_SCRIPT == "true") { content = JSON.parse(`${ JSON.stringify(req.body.data)}`); // Để kiểm tra thông qua tập lệnh python. } else { content = JSON.parse(`${JSON.stringify(req.body)}`.slice(1, - 4)); // Vì mục đích thực tế. } const arr = content.split("|"); arr.forEach((elm) => { let obj = JSON.parse(elm.replace(/'/gi, ` "`)); obj["time"] = new Date().toISOString(); main.push(obj); }); console.log("Giá trị đã nhận: ", main[0]); res.json ({ msg: "Dữ liệu đã được nhận thành công!" }); // Thêm dữ liệu hiện tại vào cơ sở dữ liệu const newSensor = new Sensor({ time: main[0].time, data: main[0].data, }); đang chờ newSensor.save(); });

2. API lấy dữ liệu cảm biến cho trang web

Tên API – /getAllData

// @ Lấy tất cả dữ liệu của các cảm biến router.get("/getAllData", async (req, res) => { try { const data = wait Sensor.find(); return res.status(200).json( data); } Catch (err) { console.log(err); return res.status(500).json({ msg: "Internal Server Error" }); } });

3. Mã hoàn chỉnh cho cảm biến.js tệp chứa tất cả các API trên

const express = require("express"); require("dotenv").config(); const bộ định tuyến = express.Router(); const Cảm biến = require("../models/Sensors");
router.post("/liveSensorData", async (req, res) => { const main = []; let content; if (process.env.USE_PYTHON_SCRIPT == "true") { content = JSON.parse(`${ JSON.stringify(req.body.data)}`); // Để kiểm tra thông qua tập lệnh python. } else { content = JSON.parse(`${JSON.stringify(req.body)}`.slice(1, - 4)); // Vì mục đích thực tế. } const arr = content.split("|"); arr.forEach((elm) => { let obj = JSON.parse(elm.replace(/'/gi, ` "`)); obj["time"] = new Date().toISOString(); main.push(obj); }); console.log("Giá trị đã nhận: ", main[0]); res.json ({ msg: "Đã nhận dữ liệu thành công!" });
// Thêm dữ liệu hiện tại vào cơ sở dữ liệu const newSensor = new Sensor({ time: main[0].time, data: main[0].data, }); đang chờ newSensor.save(); }); // @ Lấy tất cả dữ liệu của các cảm biến router.get("/getAllData", async (req, res) => { try { const data = wait Sensor.find(); return res.status(200).json( data); } Catch (err) { console.log(err); return res.status(500).json({ msg: "Internal Server Error" }); } });
module.exports = bộ định tuyến;

Phần mã hóa đã hoàn tất và bây giờ chúng ta đã sẵn sàng để thử nghiệm ứng dụng của mình✨.

Cấu trúc thư mục cuối cùng:

iot_project/ models/ Sensors.js node_modules/ lượt xem/ index.ejs bố trí.ejs tuyến đường/ cảm biến.js .env package-lock.json package.json server.js

Kiểm tra ứng dụng

Trong phần này, chúng ta sẽ thảo luận về hai cách để kiểm tra ứng dụng của chúng ta.

1. Kiểm tra ứng dụng bằng NodeMCU:

Tải mã được cung cấp trong Phần 5 lên NodeMCU của bạn và kết nối nó với Mạng Wi-Fi.

Khi NodeMCU của bạn kết nối, hãy kết nối máy tính xách tay/máy tính của bạn với cùng mạng Wi-Fi đó.

Lưu ý: Vui lòng kiểm tra kỹ hai điểm dưới đây:
1. Bạn phải kết nối NodeMCU và PC của mình với cùng một mạng Wi-Fi.
2. Địa chỉ IP của bạn nhập vào mã NodeMCU phải chính xác. Bạn có thể kiểm tra địa chỉ IP của mình bằng cách chạy ipconfig lệnh trong Command Prompt.

Chạy máy chủ phát triển:

máy chủ gật đầu $

Bạn sẽ thấy rằng bạn đã bắt đầu nhận dữ liệu trên máy chủ.

Ứng dụng Web

Mở URL localhost của bạn (http://localhost/). Sau đó bạn cũng sẽ thấy dữ liệu trên trang web

2. Kiểm tra ứng dụng bằng Python Script:

Ở đầu bài viết, tôi phải hướng dẫn bạn cách kiểm tra ứng dụng mà không cần sử dụng vi điều khiển.

Nếu bạn còn nhớ, trong Phần-7, trong .NS tệp, tôi đã bao gồm một biến boolean có tên USE_PYTHON_SCRIPT và đánh dấu nó là sai.

Chúng tôi sẽ tạo một tập lệnh ngôn ngữ Python để gửi các yêu cầu giả mạo đến máy chủ của chúng tôi. Và những yêu cầu này sẽ hoạt động giống như những yêu cầu thực tế đến từ bộ vi điều khiển.

Trong tệp .env, đánh dấu biến có tên USE_PYTHON_SCRIPT as sự thật.

Tạo một tệp python và dán đoạn mã dưới đây vào trong đó.

yêu cầu nhập nhập thời gian nhập ngẫu nhiên cho i trong phạm vi (1, 100): data = "{'data':" + str(random.randint(10, 500)) + "}" x = request.post("http: //localhost/liveSensorData", {"data": data}) print(data) time.sleep(5)

Bây giờ, hãy chạy máy chủ phát triển của bạn.

máy chủ gật đầu $

Sau khi chạy máy chủ, hãy chạy tập lệnh python ở trên. Nó sẽ gửi yêu cầu đến máy chủ cứ sau 5 giây.

Kết luận

Tìm mã hoàn chỉnh cho bài viết đó trên GitHub.

Bạn cũng có thể Lưu trữ ứng dụng này trên Máy chủ đám mây. Để tìm hiểu cách lưu trữ trang web AWS, vui lòng tham khảo Hướng dẫn chi tiết để lưu trữ ứng dụng NodeJS.

Sau khi lưu trữ, bạn cần thay đổi Địa chỉ IP từ IP cục bộ sang IP của máy chủ đám mây trong Mã NodeMCU. Sau đó, NodeMCU sẽ gửi dữ liệu đến máy chủ đám mây của bạn.

Trong bài viết này, chúng tôi đã thảo luận về các bước hoàn chỉnh để gửi dữ liệu của cảm biến siêu âm từ bộ vi điều khiển đến máy chủ web từ xa. Thay vì cảm biến siêu âm, bạn cũng có thể sử dụng nhiều loại cảm biến khác như ánh sáng, nhiệt độ, độ ẩm, v.v. Hoặc bạn cũng có thể tạo một hệ thống giám sát hoàn chỉnh bằng cách kết nối nhiều cảm biến với NodeMCU đó. Ví dụ: bạn có thể tạo Hệ thống giám sát chất lượng không khí của riêng mình bằng cách nhấp vào các cảm biến khí khác nhau để phát hiện nồng độ của các loại khí như Sulphur dioxide, Nitrogen dioxide, Khói, v.v. Và bạn có thể theo dõi tất cả dữ liệu này trong thời gian thực trên bảng điều khiển của mình.

Hơn nữa, nhu cầu trong tương lai về Ứng dụng web IoT IN là vô hạn. Những tiến bộ trong lĩnh vực công nghiệp và lĩnh vực Trí tuệ nhân tạo đã làm tăng nhu cầu về các thiết bị kết nối này, có thể tự động hóa và bảo mật các dạng ứng dụng đa dạng ở quy mô lớn. Dự kiến ​​thị trường IoT sẽ đạt 1 nghìn tỷ USD vào năm 2026 và nhu cầu đang tăng với tốc độ tăng trưởng hàng năm là 24.7%.

Những điểm chính của bài viết đó:
1. Đầu tiên, chúng ta đã thảo luận về ý nghĩa của IoT và Vi điều khiển.
2. Sau đó, chúng ta đã tìm hiểu về kết nối dây của NodeMCU.
3. Sau đó, chúng ta đã thảo luận về phần mã hóa của NodeMCU.
4. Sau đó, chúng tôi phát triển ứng dụng web của mình bằng NodeJS.
5. Cuối cùng, chúng tôi đã kết nối ứng dụng web của mình với NodeMCU và gửi dữ liệu cảm biến siêu âm qua mạng không dây.

Đó là tất cả cho ngày hôm nay. Tôi hy vọng bạn đã thích bài viết. Nếu bạn có bất kỳ nghi ngờ hoặc đề xuất, đừng ngại bình luận bên dưới. Hoặc bạn cũng có thể kết nối với tôi trên LinkedIn. Tôi sẽ rất vui khi được kết bạn với bạn.

Hãy kiểm tra cái khác của tôi bài viết cũng có.

Cảm ơn vì đã đọc, 😊

GitHub | Instagram | Facebook

Phương tiện hiển thị trong bài viết này không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định riêng của Tác giả.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img