Lập trình nhúng và IoT khác nhau thế nào: phạm vi, ví dụ, cách kết nối, kỹ năng và nên học gì trước
Phân biệt lập trình nhúng và IoT qua bốn lớp thiết bị, kết nối, máy chủ, ứng dụng; ví dụ nhiệt kế bật quạt; chọn Wi-Fi, BLE, LoRa, 4G; kỹ năng từng vai trò, bảo mật và học gì trước.
"Lập trình nhúng" và "IoT" hay được dùng lẫn lộn, cả trong tin tuyển dụng lẫn tên khóa học. Thật ra hai khái niệm lồng vào nhau: mọi thiết bị IoT đều có phần nhúng, nhưng không phải thiết bị nhúng nào cũng là IoT. Bài này giải thích phạm vi của từng khái niệm, so sánh qua một ví dụ cụ thể, giới thiệu các cách kết nối thường dùng, kỹ năng của từng vai trò và nên học phần nào trước.
1. Nhúng là một phần của IoT

- Lập trình nhúng là viết chương trình chạy bên trong thiết bị: đọc cảm biến, điều khiển relay, động cơ, màn hình, quản lý nguồn. Thiết bị có thể không nối mạng: lò vi sóng, máy giặt, đồng hồ đo nhiệt độ.
- IoT (Internet of Things, Internet vạn vật) là cả hệ thống: thiết bị nhúng gửi dữ liệu qua mạng tới máy chủ, máy chủ lưu và xử lý, người dùng xem và điều khiển qua ứng dụng web hoặc điện thoại.
Nói cách khác, IoT = thiết bị nhúng + kết nối + máy chủ + ứng dụng. Người làm nhúng lo lớp đầu tiên; một dự án IoT trọn vẹn cần thêm người (hoặc kỹ năng) cho ba lớp còn lại.
2. Một ví dụ: nhiệt kế bật quạt

- Bản nhúng: ESP32 đọc cảm biến, hiện nhiệt độ lên màn hình OLED, quá 30 °C thì đóng relay bật quạt. Mọi thứ nằm trong một hộp, không cần mạng.
- Bản IoT: vẫn mạch đó, thêm Wi-Fi gửi số đo mỗi phút lên máy chủ MQTT; điện thoại xem nhiệt độ, xem lịch sử theo ngày, đổi ngưỡng, nhận cảnh báo khi quá nóng.
Điểm quan trọng: bản IoT vẫn phải tự bật quạt khi mất mạng. Những quyết định cần nhanh và cần an toàn nên nằm trong thiết bị (xử lý tại chỗ, còn gọi là edge); máy chủ để lưu, tổng hợp, xem và chỉnh từ xa. Thiết kế ngược lại (thiết bị chờ máy chủ ra lệnh mới bật quạt) sẽ hỏng ngay khi router mất điện.
3. Chọn cách kết nối

| Kết nối | Hợp với | Lưu ý |
|---|---|---|
| Wi-Fi | Thiết bị trong nhà, xưởng có router; gửi nhiều dữ liệu | Tốn điện, khó chạy pin lâu |
| Bluetooth Low Energy | Thiết bị đeo, cảm biến cạnh điện thoại | Tầm gần, cần điện thoại hoặc cổng chuyển tiếp |
| ESP-NOW | Nhiều mạch ESP32 nói chuyện trực tiếp | Chỉ giữa các chip của cùng hãng, không ra Internet |
| Zigbee | Nhà thông minh nhiều cảm biến nhỏ | Cần bộ điều phối (hub) |
| LoRa | Cảm biến ở vườn, ruộng, trang trại cách vài km, chạy pin | Rất chậm, mỗi gói vài chục byte |
| 4G, NB-IoT, LTE-M | Thiết bị di động, nơi không có Wi-Fi | Cần SIM và gói cước, module đắt hơn |
Các bài đã có trên pyworld.vn: kết nối Wi-Fi trên ESP32, BLE là gì, ESP-NOW, LoRa SX1278 với ESP32.
4. Giao thức và máy chủ
- HTTP: thiết bị gửi yêu cầu tới máy chủ web hoặc tự làm máy chủ web nhỏ (ESP32 làm web server điều khiển relay).
- MQTT: thiết bị và ứng dụng cùng nối tới một máy chủ trung gian (broker), gửi và nhận tin theo chủ đề. Nhẹ, hợp với thiết bị nhỏ. Xem MQTT với ESP32 và gateway LoRa sang MQTT.
- Nền tảng có sẵn: thay vì tự viết máy chủ, có thể dùng nền tảng nhà thông minh chạy trong nhà hoặc dịch vụ đám mây có ứng dụng điện thoại sẵn. Nhanh để làm thử, nhưng phụ thuộc vào nền tảng đó.
5. Kỹ năng của từng vai trò
| Vai trò | Làm gì | Kỹ năng chính |
|---|---|---|
| Kỹ sư nhúng (firmware) | Chương trình trong thiết bị | C/C++, ngoại vi, ngắt, RTOS, tiết kiệm năng lượng, đọc sơ đồ mạch, đo đạc |
| Kỹ sư phần cứng | Mạch điện, mạch in | Nguồn, chọn linh kiện, vẽ mạch in, kiểm tra nhiễu |
| Kỹ sư IoT, backend | Máy chủ, cơ sở dữ liệu, giao thức | Mạng, MQTT, HTTP, cơ sở dữ liệu, bảo mật, vận hành máy chủ |
| Lập trình ứng dụng | Web, ứng dụng điện thoại | Giao diện, gọi API, hiển thị dữ liệu |
Ở dự án nhỏ, một người thường làm cả bốn phần ở mức cơ bản; ở công ty, mỗi phần là một nhóm riêng.
6. Bảo mật: điều riêng của IoT
Thiết bị nhúng không nối mạng chỉ bị phá khi có người cầm vào. Thiết bị IoT có thể bị truy cập từ bất cứ đâu, nên cần thêm:
- Không để mật khẩu mặc định; không ghi mật khẩu Wi-Fi, khóa dịch vụ thẳng vào mã nguồn chia sẻ công khai.
- Dùng kết nối có mã hóa (HTTPS, MQTT qua TLS) khi gửi qua Internet.
- Không mở cổng trên router để truy cập thiết bị từ ngoài; dùng máy chủ trung gian hoặc mạng riêng ảo.
- Có cách cập nhật firmware (nạp qua Wi-Fi) để vá lỗi về sau.
7. Học cái nào trước
Nên học nhúng trước: đọc cảm biến, điều khiển đầu ra, gỡ lỗi phần cứng cho thật vững, rồi mới thêm Wi-Fi và máy chủ. Thêm mạng vào một chương trình còn lỗi phần cứng chỉ làm lỗi khó tìm hơn. Với ESP32, bước chuyển sang IoT rất ngắn vì chip có sẵn Wi-Fi và Bluetooth: cùng một mạch ESP32 DevKit, một module relay và một màn hình OLED làm được cả bản nhúng lẫn bản IoT của nhiệt kế trên.
8. Xem thêm
- TCP và UDP là gì: nền tảng mạng cho mọi giao thức IoT.
- RF 433 MHz: kết nối không dây đơn giản nhất.
- Bài học lập trình nhúng bắt đầu từ đâu trong cùng loạt lộ trình, và loạt bài ESP32 với điện thoại và dịch vụ đám mây.
Xem thêm