JSN-SR04T là phiên bản chống nước của HC-SR04, rất phù hợp cho các ứng dụng ngoài trời hoặc môi trường ẩm ướt như: bể nước, ao hồ, hố ga, silo, thùng chứa.
Trong bài này, chúng ta sẽ đọc khoảng cách bằng JSN-SR04T với ESP32, sau đó gửi dữ liệu realtime lên IoTLabs Cloud MQTT.
1. JSN-SR04T là gì? Dùng khi nào?
JSN-SR04T là cảm biến siêu âm:
- Đầu dò chống nước (IP66/IP67 tuỳ bản)
- Module xử lý tách rời → có dây nối đầu dò
- Đo khoảng cách không tiếp xúc
So sánh nhanh
| Tiêu chí | HC-SR04 | JSN-SR04T |
|---|---|---|
| Chống nước | ❌ | ✅ |
| Ngoài trời | ❌ | ✅ |
| Độ bền | Trung bình | Cao |
| Ứng dụng | Robot, indoor | Bể nước, outdoor |
👉 Nếu đo mực nước / ngoài trời → JSN-SR04T là lựa chọn đúng.
2. Chuẩn bị phần cứng & lưu ý điện áp
Thiết bị
- ESP32-C3 SuperMini
- JSN-SR04T (module + đầu dò)
- (Khuyến nghị) chia áp Echo về 3.3V
Điện áp
- JSN-SR04T thường chạy 5V
- Chân ECHO xuất 5V → cần chia áp trước khi vào ESP32
3. Nối dây JSN-SR04T với ESP32
| JSN-SR04T | ESP32-C3 |
|---|---|
| VCC | 5V |
| GND | GND |
| TRIG | GPIO4 |
| ECHO | GPIO5 (qua chia áp) |
📌 Chia áp gợi ý: 1kΩ + 2kΩ (5V → ~3.3V)
4. Nguyên lý đo khoảng cách (nhắc lại)
JSN-SR04T hoạt động giống HC-SR04:
distance_cm = (duration_us × 0.034) / 2
duration_us: thời gian Echo HIGH- 0.034 cm/µs: vận tốc âm thanh
5. Ví dụ 1: Đọc khoảng cách JSN-SR04T (local)
#define TRIG_PIN 4
#define ECHO_PIN 5
void setup() {
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
}
float readDistanceCM() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH, 30000);
if (duration == 0) return -1;
return (duration * 0.034) / 2.0;
}
void loop() {
float d = readDistanceCM();
if (d > 0) {
Serial.print("Distance: ");
Serial.print(d);
Serial.println(" cm");
} else {
Serial.println("Out of range");
}
delay(1000);
}
📌 Với JSN-SR04T, khoảng đo ổn định thường 20–450 cm.
6. Đặc trưng dữ liệu & tư duy IoT
JSN-SR04T sinh telemetry liên tục, phù hợp:
- Vẽ chart theo thời gian
- Cảnh báo ngưỡng
- Automation
Payload gợi ý:
{
"ts": 1760000000,
"metrics": {
"distance_cm": 128.4
}
}
7. Ví dụ 2: Gửi dữ liệu realtime lên IoTLabs Cloud MQTT
#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <PubSubClient.h>
#define TRIG_PIN 4
#define ECHO_PIN 5
const char* WIFI_SSID = "YOUR_WIFI";
const char* WIFI_PASS = "YOUR_PASS";
const char* MQTT_HOST = "mqtt.iotlabs.vn";
const int MQTT_PORT = 8883;
const char* MQTT_USER = "YOUR_MQTT_USER";
const char* MQTT_PASS = "YOUR_MQTT_PASS";
const char* MQTT_TOPIC =
"iotlabs/<orgId>/devices/<deviceId>/telemetry";
WiFiClientSecure net;
PubSubClient mqtt(net);
float readDistanceCM() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH, 30000);
if (duration == 0) return -1;
return (duration * 0.034) / 2.0;
}
void connectWiFi() {
WiFi.begin(WIFI_SSID, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED) delay(500);
}
void connectMQTT() {
net.setInsecure();
mqtt.setServer(MQTT_HOST, MQTT_PORT);
while (!mqtt.connected()) {
mqtt.connect("esp32c3-jsn", MQTT_USER, MQTT_PASS);
delay(1000);
}
}
unsigned long lastSend = 0;
void setup() {
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
connectWiFi();
connectMQTT();
}
void loop() {
if (!mqtt.connected()) connectMQTT();
mqtt.loop();
if (millis() - lastSend > 2000) {
lastSend = millis();
float d = readDistanceCM();
if (d < 0) return;
long ts = millis() / 1000;
String payload = "{";
payload += "\"ts\":" + String(ts) + ",";
payload += "\"metrics\":{";
payload += "\"distance_cm\":" + String(d, 1);
payload += "}}";
mqtt.publish(MQTT_TOPIC, payload.c_str());
Serial.println(payload);
}
}
8. Kinh nghiệm thực tế khi dùng JSN-SR04T
- Không đặt đầu dò quá gần mặt nước (<20 cm)
- Tránh sóng gió mạnh làm nhiễu
- Nên lấy trung bình 3–5 mẫu
- Với bể sâu → gắn cố định, tránh rung
📌 JSN-SR04T rất phù hợp cho giám sát mực nước dài ngày.
9. Ứng dụng thực tế
Sau bài này, bạn có thể làm:
- Giám sát mực nước bể/ao
- Cảnh báo tràn / cạn
- Kết hợp Rule Engine trên IoTLabs Cloud
- Tạo dashboard outdoor bền bỉ
10. Tổng kết Bài 25
Bạn đã:
- Đọc cảm biến siêu âm chống nước
- Hiểu sự khác biệt HC-SR04 vs JSN-SR04T
- Gửi telemetry realtime lên IoTLabs Cloud
- Sẵn sàng cho các bài automation outdoor


