K4 — Nhiệt kế
Bài mẫu bậc K4: đọc nhiệt độ DHT11, một biến làm ngưỡng, nếu…nếu không thì
Trần kỹ năng K4: nếu … thì … nếu không thì, một biến làm ngưỡng, đọc cảm biến và phản ứng.
Thiết bị: ThingBot + cảm biến nhiệt độ, độ ẩm DHT11.
Đấu nối: chân dữ liệu của DHT11 vào IO4, VCC vào 3,3 V, GND vào GND. Đèn báo là LED 1 và LED 2 có sẵn trên bo.
Chế độ: chạy trực tiếp (V1, V2), nạp chương trình (V3).
V1 — Buổi 3: Đọc nhiệt độ lần đầu
Mục tiêu: người học thấy con số nhiệt độ thật đổi theo vật nóng, lạnh chạm vào cảm biến.
Chọn No board, thêm ThingBot Telemetrix, bấm Connect ThingBot. Số đo hiện ở khung Monitor.

Khi bấm vào [lá cờ xanh]
setup [DHT11] sensor on pin (4)
liên tục
print (temperature (°C) on pin (4))
đợi (2) giây
Chú thích cho Mentor
- Vài giây đầu số đo là 0: cảm biến chưa kịp gửi số nào. Bỏ qua, đó không phải hỏng.
- DHT11 chỉ cho số nguyên và cập nhật khoảng 3 giây một lần. Nói trước để người học khỏi sốt ruột.
- Cho các em áp ngón tay lên cảm biến rồi thả ra, xem số lên xuống. Đó là khoảnh khắc "cảm biến là thật".
Thử thách mở rộng: đo ở 3 chỗ trong phòng, đoán trước chỗ nào nóng nhất rồi mới đo.
V2 — Buổi 5: Ngưỡng cảnh báo
Mục tiêu: người học dùng một biến làm ngưỡng và cho đèn phản ứng hai chiều.

Khi bấm vào [lá cờ xanh]
setup [DHT11] sensor on pin (4)
đặt [ngưỡng] thành (30)
liên tục
nếu <(temperature (°C) on pin (4)) > (ngưỡng)> thì
LED [LED 2] [on]
LED [LED 1] [off]
nếu không thì
LED [LED 2] [off]
LED [LED 1] [on]
đợi (1) giây
Chú thích cho Mentor
- Đặt ngưỡng bằng biến chứ không gõ thẳng 30 vào ô so sánh. Cả bài học nằm ở chỗ này: đổi một chỗ, cả chương trình đổi theo.
- Chọn 30 vì nhiệt độ phòng ở Việt Nam thường 28–32 °C, chạm tay vào là vượt ngưỡng: người học thấy đèn đổi sau vài giây.
- Đèn nhấp nháy qua lại quanh ngưỡng là hiện tượng thật của mọi hệ điều khiển. Đừng vội sửa, hỏi các em cách xử lý: hạt giống của khái niệm trễ.
Thử thách mở rộng: đổi ngưỡng bằng phím bàn phím (khi bấm phím …) thay vì sửa chương trình.
V3 — Buổi 7: Nhiệt kế chạy độc lập
Mục tiêu: nhiệt kế chạy bằng pin, có đèn báo, mang đi Make & Share.
Chọn bo ThingBot, thêm ngoại vi DHT Sensor, bấm Upload.

khi Arduino khởi động
init dht (1) pin (4) model [dht11]
đặt [ngưỡng] thành (30)
đợi (2) giây
vòng lặp Arduino
đặt [nhiệt] thành (dht (1) read temperature [°C])
nếu <(nhiệt) > (ngưỡng)> thì
set led [2] (100)
set led [1] (0)
nếu không thì
set led [2] (0)
set led [1] (100)
đợi (2) giây
Chú thích cho Mentor
- Lưu số đo vào biến
nhiệtmột lần rồi mới so sánh, thay vì gọi khối đọc nhiều lần. Với DHT11 điều này còn quan trọng về kỹ thuật: mỗi lần gọi là một lần đọc cảm biến. đợi (2) giâysau khi khởi tạo và cuối mỗi vòng là bắt buộc với DHT11: đọc dày hơn thì cảm biến trả số cũ hoặc lỗi.- Vỏ hộp phải để hở cảm biến ra ngoài. Bọc kín thì đo nhiệt độ của chính cái vỏ.
Thử thách mở rộng: thêm còi (play note) kêu khi vượt ngưỡng, nhưng chỉ kêu một lần lúc vừa vượt chứ không kêu liên tục.
Nguồn học liệu: ThingEdu, Maker Việt.