Tạo Ứng Dụng IoT Hub Với NodeJS và Raspberry Pi

28/03/2026 P T P Chung 7 phút đọc 0 bình luận

Giới thiệu

Internet of Things (IoT) đang trở thành xu hướng chủ đạo trong lĩnh vực công nghệ, cho phép các thiết bị kết nối và trao đổi dữ liệu thông minh. Trong hệ sinh thái này, IoT hub đóng vai trò trung tâm, giúp quản lý, điều khiển và thu thập dữ liệu từ các thiết bị ngoại vi. Việc kết hợp NodeJS - một runtime JavaScript mạnh mẽ - với Raspberry Pi - một nền tảng phần cứng giá rẻ và linh hoạt - tạo ra giải pháp hoàn hảo để xây dựng một ứng dụng IoT hub hoàn chỉnh. Bài viết này sẽ hướng dẫn từng bước thiết kế, lập trình và triển khai hệ thống như vậy.

Chuẩn bị môi trường

Trước khi bắt đầu, cần đảm bảo các thành phần sau đã sẵn sàng:

- Raspberry Pi được cài đặt hệ điều hành (thường là Raspbian hoặc Raspberry Pi OS). - NodeJS được cài đặt trên Pi (có thể tải bản LTS từ trang chủ). - Cảm biến nhiệt độ (ví dụ: DHT11 hoặc DS18B20) để minh họa. - Thư viện cần thiết: onoff để điều khiển GPIO, node-dht-sensor hoặc w1thermsensor để đọc cảm biến.

Cài đặt NodeJS trên Raspberry Pi có thể thực hiện qua terminal:

curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt-get install -y nodejs

Thiết kế kiến trúc ứng dụng

Một ứng dụng IoT hub thường có cấu trúc client-server, trong đó:

- Server (chạy trên Raspberry Pi) đóng vai trò hub, quản lý kết nối, xử lý dữ liệu và giao tiếp với client. - Client có thể là ứng dụng web, mobile app hoặc các thiết bị IoT khác.

Kiến trúc đề xuất bao gồm:

1. Module cảm biến: Đọc dữ liệu từ DHT11 qua GPIO. 2. Module server: Sử dụng Express.js để tạo API REST. 3. Module WebSocket: Dùng Socket.IO để truyền dữ liệu thời gian thực. 4. Module lưu trữ: Có thể dùng file JSON hoặc cơ sở dữ liệu nhẹ như SQLite.

Lập trình chi tiết

1. Đọc dữ liệu từ cảm biến

Sử dụng thư viện node-dht-sensor:

const sensor = require('node-dht-sensor');

function readSensorData() { const data = sensor.read(11, 4); // DHT11, GPIO 4 return { temperature: data.temperature.toFixed(1), humidity: data.humidity.toFixed(1) }; }

2. Thiết lập server Express

const express = require('express');
const app = express();
const http = require('http').createServer(app);
const io = require('socket.io')(http);

app.use(express.static('public'));

Quảng cáo

300x250 In-Content Advertisement

app.get('/api/sensor', (req, res) => { const data = readSensorData(); res.json(data); });

io.on('connection', (socket) => { console.log('Client connected'); });

3. Cập nhật dữ liệu thời gian thực

setInterval(() => {
    const data = readSensorData();
    io.emit('sensor-data', data);
}, 5000); // Mỗi 5 giây

4. Giao diện web đơn giản

Tạo file public/index.html:

<!DOCTYPE html>
<html>
<head>
    <title>IoT Hub Dashboard</title>
    <script src="/socket.io/socket.io.js"></script>
</head>
<body>
    <h1>Sensor Data</h1>
    <p>Temperature: <span id="temp">--</span> °C</p>
    <p>Humidity: <span id="hum">--</span> %</p>

<script> const socket = io(); socket.on('sensor-data', (data) => { document.getElementById('temp').textContent = data.temperature; document.getElementById('hum').textContent = data.humidity; }); </script> </body> </html>

Chạy và kiểm thử

Khởi động ứng dụng:

node server.js

Mở trình duyệt tại địa chỉ http://:3000 để xem dashboard. Mỗi 5 giây, dữ liệu sẽ tự động cập nhật.

Mở rộng và nâng cao

Để ứng dụng thực tế hơn, có thể bổ sung:

- Lưu trữ dữ liệu: Kết nối với SQLite hoặc MongoDB để lưu lịch sử. - Cảnh báo: Gửi email/SMS khi nhiệt độ vượt ngưỡng. - Bảo mật: Xác thực JWT cho API, mã hóa dữ liệu. - Mobile app: Dùng React Native hoặc Flutter để xây dựng giao diện di động.

Kết luận

Việc tạo một ứng dụng IoT hub với NodeJSRaspberry Pi không chỉ giúp nắm vững kiến thức về IoT, mà còn mở ra khả năng phát triển các giải pháp thông minh trong thực tế. Từ hệ thống giám sát nhiệt độ đơn giản, bạn có thể mở rộng thành trạm quan trắc môi trường, nhà thông minh hay thậm chí là nhà máy tự động hóa. Điều quan trọng là bắt đầu từ những bước nhỏ, thử nghiệm và không ngừng cải tiến.

Quảng cáo

728x90 Bottom Advertisement

Thay thế bằng mã Google AdSense

Chia sẻ bài viết

Facebook Twitter

Bình luận

Chia sẻ ý kiến của bạn về bài viết này

Viết bình luận

Bình luận của bạn sẽ được kiểm duyệt trước khi hiển thị

Chưa có bình luận nào

Hãy là người đầu tiên bình luận về bài viết này!