GIÁO TRÌNH HƯỚNG DẪN LẬP TRÌNH IOT VỚI ARDUINO: KHÁM PHÁ INTERNET OF THINGS


Tổng quan về giáo trình

Tài liệu học thuật “Hướng Dẫn Lập Trình IoT Với Arduino: Khám Phá Internet” (nhan đề bìa và chuyên đề: Arduino và Lập trình IoT) do TS. Nguyễn Tất Bảo Thiện và KS. Phạm Quang Huy biên soạn, được Nhà xuất bản Thanh Niên ấn hành năm 2020. Đây là tập thứ 9 nằm trong bộ sách chuyên đề 25 tập của tủ sách STK, phục vụ công tác giảng dạy, nghiên cứu và thực hành kỹ thuật vi điều khiển, hệ thống nhúng và mạng vạn vật kết nối (IoT). Trong chương trình đào tạo đại học và cao đẳng khối ngành kỹ thuật, tài liệu giữ vị trí giáo trình thực hành bổ trợ cho các học phần: Hệ thống nhúng, Kỹ thuật vi điều khiển, Đo lường & Cảm biến, và Mạng truyền thông công nghiệp / IoT.

Mục tiêu học tập (Learning Outcomes) của giáo trình được thiết kế nhằm trang bị cho người học:

  1. Kiến thức lý thuyết: Nắm vững cấu trúc phần cứng của hệ thống nhúng, nguyên lý hoạt động của vi điều khiển AVR (trọng tâm là ATmega328P), mô hình 3 thành phần cốt lõi của hệ thống IoT (Cảm biến/Cơ cấu tác động, Kết nối, Con người/Quá trình điều khiển), và kiến trúc mạng truyền thông có dây và không dây.
  2. Kỹ năng thực hành: Thành thạo kỹ thuật thiết lập mạch trên bo mạch thử nghiệm (testboard), tính toán các thông số linh kiện phụ trợ (như điện trở hạn dòng cho LED), giao tiếp ngõ vào/ngõ ra (I/O) số và tương tự (Analog), cấu hình các mô-đun truyền thông không dây (Wi-Fi ESP8266, GSM/GPRS SIM800L, GPS) và lập trình gửi dữ liệu lên nền tảng đám mây ThingSpeak.
  3. Năng lực ứng dụng: Khả năng phân tích, tích hợp hệ thống phần cứng và phần mềm để hiện thực hóa các mô hình thực tế như nhà thông minh, nông trại thông minh, hệ thống giám sát y tế và đỗ xe tự động.

Giáo trình tiếp cận theo phương pháp kết hợp lý thuyết nền tảng với bài tập thực hành từng bước (step-by-step), mã nguồn mẫu viết bằng ngôn ngữ C/C++ (và mở rộng với MicroPython), kèm theo sơ đồ nguyên lý và giải thích chi tiết hoạt động của từng dòng lệnh.


Nội dung kiến thức cốt lõi

                             GIÁO TRÌNH ARDUINO & IOT (10 CHƯƠNG)
                                              │
    ┌─────────────────────────────────────────┼─────────────────────────────────────────┐
    │                                         │                                         │
    ▼                                         ▼                                         ▼
[PHẦN 1: TỔNG QUAN]                [PHẦN 2: CẢM BIẾN]                  [PHẦN 3: IOT & ESP8266]
Chương 1:                          Chương 2: Cảm biến tổng quan        Chương 5: Truyền thông dây/không dây
• Hệ thống nhúng & IoT             Chương 3: Thực hành Arduino         Chương 6: Cấu hình ESP8266
• Cấu tạo bo Uno (ATmega328P)        (Analog, Input, LED RGB/thanh)    Chương 7: Bài tập cơ bản ESP8266
• So sánh Arduino vs Raspberry Pi  Chương 4: Giao tiếp cảm biến        Chương 8: Tính năng mở rộng ESP8266
• Quy chuẩn Testboard & LED          (DHT, Tiệm cận, PIR, Khói, RF)    Chương 9: Lập trình MicroPython
                                                                       Chương 10: GPS, GSM & GPRS SIM800L

Toàn bộ tài liệu được cấu trúc thành 3 phần chính gồm 10 chương chuyên đề và 1 phần phụ lục:

Các chương và chủ đề chính

  • Chương 1: Tổng quan về Hệ thống nhúng, IoT và Arduino: Trình bày lịch sử phát triển của kỹ thuật điều khiển từ mạch tương tự/Op-Amp, mạch số (1975–1985), vi xử lý/vi điều khiển (1985–1995), đến kiến trúc ARM 32-bit/64-bit RISC và các bo mạch tích hợp hiện đại. Phân tích định nghĩa IoT do Kevin Ashton đề xuất năm 1999, cấu trúc 3 tầng IoT, và bản chất kỹ thuật của bo mạch Arduino Uno R3 (vi điều khiển ATmega328P-PU) đối chiếu với máy tính mini Raspberry Pi 3 (Eben Upton).
  • Chương 2: Tổng quan về cảm biến: Hệ thống hóa các khái niệm đo lường, chuyển đổi tín hiệu vật lý sang tín hiệu điện dựa trên khung lý thuyết từ giáo trình đo lường cảm biến của PGS.TS. Lê Chí Kiên (Đại học Quốc gia TP.HCM).
  • Chương 3: Thực hành với Arduino: Cung cấp chuỗi 8 bài tập thực hành cơ sở: Đọc điện áp Analog qua bộ chuyển đổi ADC 10-bit; Điều chỉnh độ sáng và tốc độ nhấp nháy bằng biến trở; Lập trình xử lý ngõ vào nút nhấn; Điều khiển LED đơn, LED RGB, LED cầu vồng và LED hiển thị dạng thanh.
  • Chương 4: Arduino và cảm biến: Khảo sát chi tiết phương pháp ghép nối phần cứng và giải thuật đọc tín hiệu từ các loại cảm biến công nghiệp và dân dụng: cảm biến nhiệt độ - độ ẩm, cảm biến tiệm cận, cảm biến quang trở, cảm biến hồng ngoại, đầu dò khói, cảm biến chuyển động PIR và truyền nhận dữ liệu đo nhiệt - ẩm từ xa qua bo thu phát vô tuyến cao tần (RF).
  • Chương 5: Truyền thông có dây và không dây: Phân tích các giao thức truyền thông nối tiếp UART/Serial, chuẩn giao tiếp I2C, SPI và các chuẩn mạng không dây phổ biến.
  • Chương 6: Cấu hình cho ESP8266: Hướng dẫn thiết lập phần cứng, tập lệnh AT (AT Commands), kết nối vi điều khiển Arduino với mô-đun ESP8266 để thiết lập kết nối mạng Wi-Fi (Station mode và Access Point mode).
  • Chương 7: Các bài tập cơ bản dùng ESP8266: Thực hành tạo Web Server cục bộ, điều khiển bật/tắt thiết bị ngoại vi qua giao diện Web trình duyệt và truyền nhận gói tin dữ liệu TCP/IP.
  • Chương 8: Một số tính năng khác của ESP8266: Mở rộng các chế độ tiết kiệm năng lượng (Sleep modes), cập nhật chương trình qua mạng (OTA) và quản lý bộ nhớ đệm.
  • Chương 9: Sử dụng MicroPython trong ESP8266: Chuyển đổi môi trường lập trình từ C/C++ sang ngôn ngữ thông dịch MicroPython trên nền tảng vi điều khiển ESP8266, tối ưu hóa quá trình tạo mẫu nhanh.
  • Chương 10: Lập trình với GPS, GSM và GPRS: Hướng dẫn tích hợp hệ thống định vị toàn cầu GPS; thiết kế bảng thông báo không dây qua mạng di động GSM; lập trình truyền dữ liệu đo lường qua dịch vụ GPRS của mô-đun SIM800L lên nền tảng IoT Cloud ThingSpeak; phương pháp xử lý sự cố nguồn/mạng của SIM800L; và bài tập mở rộng lập trình giao tiếp GPS trên dòng vi điều khiển 32-bit STM32.

Kiến thức nền tảng được xây dựng

Giáo trình xây dựng nền tảng lý thuyết thông qua các thông số kỹ thuật chuẩn hóa:

Thông số / Thành phần Chi tiết kỹ thuật quy định trong giáo trình
Vi điều khiển trung tâm ATmega328P-PU (AVR 8-bit, tần số thạch anh 16 MHz, tối đa 20 MHz)
Bộ nhớ vi điều khiển 32 KB Flash (0.5 KB cho Bootloader), 2 KB SRAM, 1 KB EEPROM
Hệ thống ngõ vào/ra 14 chân Digital I/O (6 chân PWM ~), 6 kênh ngõ vào Analog (A0–A5, ADC 10-bit)
Thông số điện áp & dòng Điện áp hoạt động: 5 V; Nguồn ngoài đề nghị: 7–12 V (giới hạn 6–20 V); Dòng max chân I/O: 20 mA (tổng không quá 200 mA)
Giao tiếp nạp nạp/USB ATmega16U2 (thay thế FTDI / 8U2 trên bản Uno R3) hoặc CH341 (trên bản chip dán SMD)
Mô hình 3 yếu tố IoT 1. Cảm biến & Cơ cấu tác động (Sensors & Actuators)
2. Sự kết nối (Connectivity)
3. Con người & Quy trình điều khiển (People & Processes)

Nội dung còn cung cấp công thức vật lý tính toán điện trở phân áp bảo vệ LED:

$$R = \frac{V_s - V_L}{I}$$

Trong đó $V_s$ là điện áp nguồn cung cấp ($+5\text{ V}$ từ chân Arduino), $V_L$ là điện áp rơi trên tiếp giáp P-N của LED (biến thiên theo màu sắc: Đỏ $1{,}63\text{ V} - 2{,}10\text{ V}$, Xanh lục/Xanh dương $2{,}48\text{ V} - 3{,}7\text{ V}$, Trắng $3{,}5\text{ V}$), và $I$ là dòng định mức hoạt động ($10\text{ mA} - 20\text{ mA}$). Với LED đỏ $V_L = 2\text{ V}$, $I = 10\text{ mA}$, điện trở tính toán là $R = (5 - 2) / 0{,}01 = 300\ \Omega$.

                       SƠ ĐỒ NGUYÊN LÝ GHÉP NỐI LED ĐƠN VÀ ARDUINO
                       
                       Chân Digital (VD: Pin 13) ──[ +5V / HIGH ]
                                                       │
                                                       ▼
                                                ┌──────────────┐
                                                │  R = 300 Ω   │ (Điện trở hạn dòng)
                                                └──────────────┘
                                                       │
                                                       ▼
                                                   ▲ (Anode - Chân dài)
                                                  / \ LED Đơn (VL = 2V, I = 10mA)
                                                 ──┬──
                                                   │ (Cathode - Cạnh vát, chân ngắn)
                                                   ▼
                                              Chân GND (0V)

Kỹ năng phát triển cho người học

  • Kỹ năng lắp ráp và đo kiểm phần cứng: Hiểu rõ cấu trúc lưới tiếp xúc trong bo cắm thử nghiệm (testboard) với quy chuẩn phân chia 30 hàng (mỗi hàng chia 2 nhóm 5 ngàm đồng A–E và F–J cách ly bởi rãnh giữa đặt IC) và 4 thanh dẫn nguồn dọc (power bus $+/-$).
  • Kỹ năng lập trình phần mềm nhúng: Sử dụng thành thạo Arduino IDE, cấu hình cổng nạp COM, xử lý luồng dữ liệu nối tiếp qua thư viện Serial Monitor để gỡ lỗi (debugging).
  • Kỹ năng mạng và đám mây: Cấu hình truyền thông không dây IP thông qua ESP8266, tương tác API RESTful gửi trường dữ liệu (fields) lên server ThingSpeak, giải quyết vấn đề sụt áp nguồn xung khi khởi động mô-đun phát sóng GSM/GPRS.

Phương pháp giảng dạy và học tập

Giáo trình áp dụng mô hình sư phạm thực hành tuần tự, lấy bài tập dự án làm trung tâm. Mỗi bài học được cấu trúc theo 4 bước chuẩn mực:

  1. Sơ đồ nguyên lý mạch điện: Minh họa rõ ràng vị trí cắm chân trên Arduino và tọa độ kết nối tương ứng trên testboard (ví dụ: chân tín hiệu nối vào ô C12).
  2. Mã nguồn hoàn chỉnh: Cung cấp code mẫu đã được biên dịch và kiểm nghiệm thực tế trên nền tảng Arduino IDE (hỗ trợ đa nền tảng Windows, Linux, macOS).
  3. Giải thích chi tiết giải thuật: Phân tích chức năng của từng hàm điều khiển (như analogRead(), digitalWrite(), pinMode(), các lệnh tập lệnh AT của ESP8266 và thư viện EEPROM).
  4. Mở rộng và ứng dụng: Đưa ra các tình huống mở rộng thông số hoặc liên kết đa cảm biến.
                              QUY TRÌNH HỌC TẬP THỰC NGHIỆM
┌────────────────┐     ┌────────────────┐     ┌────────────────┐     ┌────────────────┐
│   BƯỚC 1:      │     │   BƯỚC 2:      │     │   BƯỚC 3:      │     │   BƯỚC 4:      │
│ Phân tích sơ đồ│ ──> │ Lắp ráp mạch   │ ──> │ Nạp mã nguồn & │ ──> │ Gỡ lỗi qua     │
│ nguyên lý mạch │     │ trên Testboard │     │ biên dịch IDE  │     │ Serial Monitor │
└────────────────┘     └────────────────┘     └────────────────┘     └────────────────┘

Giáo trình tích hợp các số liệu nghiên cứu thực tế từ các cơ quan quản lý chuyên ngành làm tình huống phân tích (case studies):

  • Ứng dụng Giao thông thông minh: Dẫn chứng dữ liệu từ Cơ quan Giao thông Đô thị San Francisco (SFMTA) chỉ ra $20% - 30%$ nguyên nhân ùn tắc giao thông xuất phát từ việc tìm kiếm điểm đỗ xe, làm cơ sở xây dựng mô hình bãi đỗ xe thông minh dùng cảm biến phát hiện vị trí trống kết hợp thanh toán tự động.
  • Ứng dụng Giám sát Y tế: Trích dẫn báo cáo từ Cục Quản lý Đời sống Cộng đồng thuộc Bộ Y tế và Dịch vụ Nhân sinh Hoa Kỳ (ACL) về thực trạng 40 triệu người cao tuổi sống độc thân tại Bắc Mỹ và châu Âu, phục vụ thiết kế hệ thống cảnh báo khẩn cấp và đo đạc chỉ số sức khỏe 24/7.
  • Ứng dụng Tiết kiệm Năng lượng: Sử dụng thống kê của Cơ quan Bảo vệ Môi trường Hoa Kỳ (EPA) về việc các tòa nhà văn phòng và khu công nghiệp tiêu thụ năng lượng tạo ra gần $50%$ lượng khí thải nhà kính, nhằm giảng dạy bài toán tối ưu hóa điều hòa không khí HVAC và hệ thống chiếu sáng qua mạng cảm biến môi trường.

Về lộ trình tự học, tài liệu thiết kế để người học có kiến thức cơ bản về điện - điện tử có thể hoàn thành các bài tập cơ sở trong khoảng thời gian từ 3 đến 5 ngày thực hành liên tục trước khi tiến hành phát triển các dự án liên chương.


Điểm nổi bật và cập nhật

  1. Tối ưu hóa chi phí linh kiện thực hành: Phiên bản này được biên soạn lại và nâng cấp từ tài liệu “Lập trình IoT với Arduino, ESP8266 & XBee”. Nhóm tác giả đã chủ động thay thế mô-đun không dây XBee (vốn có giá thành cao và khó tìm mua tại thị trường Việt Nam) bằng mô-đun Wi-Fi ESP8266 giá rẻ và hệ thống liên lạc GSM/GPRS/GPS qua mô-đun SIM800L.
  2. Bổ sung nội dung định vị và vi điều khiển 32-bit: Chương 10 bổ sung toàn diện kỹ thuật lập trình hệ thống định vị toàn cầu GPS và bài tập lập trình tương thích trên dòng vi điều khiển 32-bit STM32 (sử dụng lõi ARM Cortex-M).
  3. Cập nhật ngôn ngữ lập trình MicroPython: Bên cạnh ngôn ngữ C/C++ truyền thống của Arduino IDE, sách bổ sung Chương 9 hướng dẫn nhúng trình thông dịch MicroPython lên chip ESP8266, phản ánh xu hướng phát triển ứng dụng IoT hiện đại.
  4. Phân tích đối chuẩn kỹ thuật giữa hai nền tảng phần cứng phổ biến: Giáo trình đưa ra bảng so sánh chi tiết giữa Arduino Uno R3 (Massimo Banzi sáng lập) và Raspberry Pi 3 (Eben Upton sáng lập):
Tiêu chí so sánh Bo mạch Arduino (Uno R3) Bo mạch Raspberry Pi (Pi 3)
Bản chất kiến trúc Vi điều khiển đơn mạch (Microcontroller) Máy tính đơn bo hoàn chỉnh (Single-Board Computer)
Hệ điều hành Không có (chạy trực tiếp mã máy bare-metal) Chạy hệ điều hành Linux (Raspbian, Ubuntu) hoặc Windows IoT
Bộ nhớ & Xử lý ATmega328P, RAM 2 KB, Flash 32 KB, 16 MHz Vi xử lý đa nhân 64-bit, RAM 1 GB – 3 GB, lưu trữ thẻ MicroSD
Thế mạnh ứng dụng Đọc cảm biến Analog, điều khiển thời gian thực, điều khiển động cơ, rơ-le số lượng lớn (kết hợp Arduino Mega 2560 với 60 chân I/O) Điện toán đám mây, xử lý ảnh với OpenCV, nhận diện khuôn mặt, các tác vụ tính toán phức tạp

Đối tượng sử dụng giáo trình

Giáo trình hướng đến các nhóm đối tượng cụ thể trong hệ thống giáo dục và nghiên cứu ứng dụng:

  • Sinh viên chuyên ngành: Sinh viên năm thứ 2 đến năm thứ 4 các ngành Kỹ thuật Điện - Điện tử, Kỹ thuật Cơ điện tử, Kỹ thuật Điều khiển & Tự động hóa, Điện tử Viễn thông và Công nghệ Thông tin. Tài liệu cung cấp cơ sở phần cứng và thuật toán phục vụ các bài tập lớn, đồ án môn học vi điều khiển và khóa luận tốt nghiệp.
  • Người học liên ngành và giáo dục STEM: Sinh viên hoặc kỹ thuật viên thuộc các khối ngành Công nghệ Thực phẩm, Hóa học, Sinh học, Vật lý, Xây dựng, Kiến trúc có nhu cầu tự động hóa đo đạc; học sinh trung học phổ thông tiếp cận nghiên cứu khoa học kỹ thuật, chuẩn bị cho các cuộc thi Robocon và sáng tạo khoa học kỹ thuật.
  • Giảng viên và cán bộ nghiên cứu: Sử dụng làm tài liệu tham khảo để biên soạn đề cương bài giảng thực hành phòng thí nghiệm, xây dựng ngân hàng câu hỏi và kịch bản thí nghiệm về đo lường cảm biến và IoT.
  • Yêu cầu kiến thức tiên quyết: Người học cần có kiến thức cơ bản về mạch điện một chiều/xoay chiều (định luật Ohm, phân áp, cực tính linh kiện bán dẫn Diode/LED) và kỹ năng lập trình cấu trúc cơ bản với ngôn ngữ C/C++.

Câu hỏi thường gặp

1. Giáo trình này phù hợp với đối tượng nào?

Tài liệu phù hợp cho sinh viên đại học, cao đẳng kỹ thuật, học sinh phổ thông tham gia hoạt động STEM, kỹ sư và kỹ thuật viên liên ngành muốn nắm vững kỹ thuật ghép nối phần cứng và xây dựng ứng dụng kết nối vạn vật (IoT) từ cấp độ cơ bản đến nâng cao.

2. Người học cần chuẩn bị kiến thức nền tảng nào trước khi học?

Người học cần nắm vững lý thuyết mạch điện tử cơ bản (nhận biết điện trở, tụ điện, transistor, diode, cách sử dụng testboard và đồng hồ đo vạn năng) cùng với tư duy lập trình căn bản (các cấu trúc điều khiển, vòng lặp, biến và hàm trong ngôn ngữ C/C++).

3. Điểm khác biệt kỹ thuật giữa giáo trình này và các tài liệu khác là gì?

Tài liệu tập trung khai thác các linh kiện có tính khả thi cao và chi phí thấp tại thị trường Việt Nam (thay thế bo XBee bằng ESP8266 và SIM800L), tích hợp hướng dẫn cả hai ngôn ngữ C/C++ và MicroPython, đồng thời mở rộng lập trình định vị GPS trên dòng vi điều khiển 32-bit STM32.

4. Làm sao để tự học giáo trình này đạt hiệu quả cao nhất?

Người học nên trang bị một bộ kit phần cứng gồm bo Arduino Uno R3, testboard, các cảm biến thông dụng (nhiệt - ẩm, khoảng cách, PIR), mô-đun ESP8266, SIM800L và thực hành tuần tự từng bài tập trong Chương 3, Chương 4 trước khi ghép nối hệ thống truyền thông không dây ở các Chương 6, 7 và 10.

5. Có những tài liệu bổ trợ nào trong cùng hệ thống của nhóm tác giả?

Tủ sách STK cung cấp chuỗi tài liệu liên kết chặt chẽ gồm:

  • STEM với Arduino - Hướng dẫn sử dụng Arduino (Trương Đình Nhơn, Lê Thị Hồng Nhung, Phạm Quang Huy, NXB Thanh Niên, 2020).
  • Lập trình điều khiển trên Arduino cho hệ Vạn vật kết nối IoT (Hà Quang Phúc, Phạm Quang Huy, NXB Thanh Niên, 2020).
  • Vi điều khiển và ứng dụng - Arduino và cảm biến (Tập 11 trong bộ sách, NXB Thanh Niên, 2020).
  • Giáo trình Đo lường cảm biến (PGS.TS. Lê Chí Kiên, NXB Đại học Quốc gia TP.HCM).
  • Bộ giáo trình chuyên đề nâng cao về máy tính nhúng: Lập trình hệ thống nhúng với Raspberry (2019) và Giáo trình Lập trình xử lý ảnh với Raspberry (2019).

Kết luận

Giáo trình “Hướng Dẫn Lập Trình IoT Với Arduino: Khám Phá Internet” của TS. Nguyễn Tất Bảo Thiện và KS. Phạm Quang Huy cung cấp một hệ thống kiến thức hoàn chỉnh từ nền tảng phần cứng vi điều khiển 8-bit ATmega328P đến các kỹ thuật truyền thông không dây hiện đại qua ESP8266 và mạng di động GSM/GPRS. Với cấu trúc 10 chương rõ ràng, phương pháp trình bày gắn liền mã nguồn thực nghiệm và phân tích dữ liệu ứng dụng thực tế, tài liệu là một giáo trình thực hành giá trị phục vụ công tác giảng dạy, học tập và phát triển các hệ thống nhúng kết nối trong thời kỳ chuyển đổi công nghệ IoT.