Trạm thời tiết Wi-Fi Mini

Trạm thời tiết Wi-Fi Mini: Mở cánh cửa bước vào thế giới IoT với ESP8266

Độ khó: 2/5

1. Giới thiệu dự án

Đây là một dự án kinh điển và là “bài học vỡ lòng” tuyệt vời nhất để đưa bạn chạm ngõ thế giới Internet of Things (IoT). Thay vì dùng các cảm biến nhiệt độ/độ ẩm gắn trực tiếp (như DHT11) vốn hay bị sai số, dự án này hướng dẫn bạn sử dụng vi điều khiển kết nối mạng Wi-Fi để kéo dữ liệu thời tiết thực tế từ các trạm khí tượng quốc tế, sau đó hiển thị gọn gàng lên một chiếc màn hình nhỏ đặt trên bàn làm việc.

2. Danh sách linh kiện (BOM)

Để hoàn thành dự án, bạn chỉ cần chuẩn bị những linh kiện cắm (Through-hole) vô cùng cơ bản và không cần phải hàn xì:

  • NodeMCU ESP8266 (ESP-12E): Bo mạch vi điều khiển trung tâm tích hợp sẵn chip Wi-Fi. (Nó rẻ và mạnh hơn Arduino Uno rất nhiều).
  • Màn hình OLED 0.96 inch I2C: Màn hình cực kỳ sắc nét, tiêu thụ ít điện năng, giao tiếp chuẩn I2C.
  • Cáp Micro-USB: Để nạp code và cấp nguồn 5V cho mạch.
  • Breadboard (Bo test mạch) và Dây cắm (Jumper wires): Loại Đực-Cái (Male-to-Female) để nối trực tiếp từ màn hình vào vi điều khiển.

3. Sơ đồ đấu nối (Wiring)

Giao tiếp I2C là cứu cánh cho người mới vì nó cực kỳ gọn gàng. Bạn chỉ cần cắm đúng 4 sợi dây từ màn hình OLED vào mạch NodeMCU ESP8266 như sau:

  • Chân VCC (OLED) nối với chân 3V3 (ESP8266) – Lưu ý tuyệt đối: Màn hình này chạy điện 3.3V, cắm vào 5V (VIN) có thể làm cháy màn hình.
  • Chân GND (OLED) nối với chân GND (ESP8266).
  • Chân SCL (Xung nhịp I2C) nối với chân D1 (ESP8266).
  • Chân SDA (Dữ liệu I2C) nối với chân D2 (ESP8266).

4. Nguyên lý hoạt động và Tư duy lập trình

Dự án này không yêu cầu bạn phải tự làm toán, vi điều khiển sẽ đóng vai trò như một “trình duyệt web thu nhỏ” thông qua 3 bước cốt lõi:

  • Bước 1: Kết nối Wi-Fi: Khi được cấp điện, thư viện ESP8266WiFi.h sẽ dùng tên Wi-Fi (SSID) và Mật khẩu bạn nhập trong code để đăng nhập vào mạng internet của nhà bạn.
  • Bước 2: Gọi API (Application Programming Interface): ESP8266 sẽ gửi một yêu cầu HTTP GET đến máy chủ của trang thời tiết OpenWeatherMap (bạn cần đăng ký một tài khoản miễn phí trên trang này để lấy mã API Key). Yêu cầu này giống như việc bạn gõ địa chỉ trang web vào Chrome để hỏi: “Trời TP.HCM hôm nay bao nhiêu độ?”.
  • Bước 3: Bóc tách dữ liệu (JSON Parsing): Máy chủ sẽ trả về một gói dữ liệu dưới định dạng JSON (JavaScript Object Notation). Gói dữ liệu này chứa một mớ hỗn độn các text và ngoặc nhọn. Bạn sẽ dùng thư viện ArduinoJson để trích xuất chính xác 2 con số bạn cần: temp (Nhiệt độ) và humidity (Độ ẩm), rồi đẩy chúng ra màn hình OLED bằng thư viện Adafruit_SSD1306.

5. Bạn học được gì từ dự án này?

Sau khi dự án chạy thành công, bạn sẽ nắm được 3 kỹ năng “trấn phái” của một kỹ sư IoT:

  1. Quản lý kết nối Mạng: Biết cách thiết lập vi điều khiển làm Client để kết nối với Router Wi-Fi.
  2. Giao tiếp API HTTP: Hiểu cơ chế Request – Response (Yêu cầu – Phản hồi) giữa thiết bị nhúng và các máy chủ (Server) trên toàn cầu.
  3. Xử lý Dữ liệu JSON: Kỹ năng phân tích cú pháp (Parsing) một cấu trúc dữ liệu tiêu chuẩn công nghiệp, nền tảng để sau này bạn làm các dự án điều khiển Smart Home qua Google Assistant hay lấy dữ liệu giá Bitcoin/Chứng khoán.

6. Nguồn dự án tham khảo

Để bắt tay vào làm, cài đặt các thư viện cần thiết trên phần mềm Arduino IDE và copy toàn bộ mã nguồn (Source Code) đã được cộng đồng test kỹ lưỡng, bạn hãy truy cập trực tiếp vào bài hướng dẫn gốc cực kỳ chi tiết tại nguồn sau:

Hướng dẫn chi tiết trên RandomNerdTutorials: ESP8266 Weather Forecaster


Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Chia sẻ bài viết này

Share Facebook