Arduino UNO R4 MySQL
Hướng dẫn này sẽ chỉ cho bạn cách sử dụng Arduino UNO R4 thu thập dữ liệu từ cảm biến và lưu vào cơ sở dữ liệu MySQL. Cụ thể, chúng ta sẽ học:
- Cách lập trình Arduino UNO R4 kết nối với cơ sở dữ liệu MySQL
- Cách lập trình Arduino UNO R4 chèn dữ liệu vào cơ sở dữ liệu MySQL
- Cách lập trình Arduino UNO R4 cập nhật dữ liệu trong cơ sở dữ liệu MySQL
- Cách lập trình Arduino UNO R4 truy xuất dữ liệu từ cơ sở dữ liệu MySQL

Phần Cứng Cần Thiết
| 1 | × | Arduino UNO R4 WiFi | ||
| 1 | × | Alternatively, DIYables STEM V4 IoT | ||
| 1 | × | (Tùy chọn) DIYables STEM V4 IoT | ||
| 1 | × | Cáp USB Type-C | ||
| 1 | × | (Khuyến nghị) Screw Terminal Block Shield for Arduino UNO R4 | ||
| 1 | × | (Khuyến nghị) Breadboard Shield for Arduino UNO R4 | ||
| 1 | × | (Khuyến nghị) Enclosure for Arduino UNO R4 | ||
| 1 | × | (Khuyến nghị) Power Splitter for Arduino UNO R4 | ||
| 1 | × | (Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO |
Or you can buy the following kits:
| 1 | × | DIYables STEM V4 IoT Starter Kit (Arduino included) | ||
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Arduino UNO R4 - MySQL
Arduino UNO R4 có thể kết nối với cơ sở dữ liệu MySQL bằng hai phương pháp khác nhau:
- Arduino UNO R4 kết nối trực tiếp đến MySQL Server sử dụng giao thức MySQL (đây là phương pháp trực tiếp).
- Arduino UNO R4 kết nối đến MySQL Server thông qua giao thức HTTP (đây là phương pháp gián tiếp).
Hãy xem phương pháp nào tốt hơn.
Arduino UNO R4 tương tác trực tiếp với MySQL Server

Điều này có vẻ dễ dàng, nhưng có một số nhược điểm:
- Cho phép MySQL User truy cập cơ sở dữ liệu từ xa có thể gây rủi ro bảo mật, ngay cả với quyền hạn người dùng hạn chế.
- Xử lý dữ liệu trong Arduino UNO R4 hoặc MySQL server làm cho code Arduino và MySQL script phức tạp hơn và sử dụng nhiều bộ nhớ và CPU của Arduino.
- MySQL server có thể gửi lượng dữ liệu lớn đến Arduino UNO R4, điều này có thể khiến nó bị hết bộ nhớ.
- Nhiều thư viện MySQL không hỗ trợ SSL/TLS, có nghĩa là tên đăng nhập và mật khẩu được gửi mà không mã hóa, tạo ra rủi ro bảo mật khác.
Arduino UNO R4 tương tác gián tiếp với MySQL Server qua HTTP/HTTPS
Phương pháp gián tiếp này giải quyết tất cả các vấn đề mà phương pháp trực tiếp gặp phải. Hãy xem phương pháp gián tiếp này hoạt động như thế nào trước khi chúng ta khám phá cách nó tránh được các vấn đề của phương pháp trực tiếp.
Cách thức hoạt động
- Bước 1: Arduino UNO R4 gửi HTTP Request đến Web Server
- Bước 2: Web Server thực thi PHP script
- Bước 3: PHP script nhận dữ liệu từ HTTP Request, xử lý và tương tác với cơ sở dữ liệu MySQL.
- Bước 4: PHP script xử lý kết quả và gửi lại cho Arduino UNO R4 thông qua HTTP Response

Hướng dẫn này cũng sẽ chỉ bạn cách cài đặt Web server và MySQL server trên máy tính của bạn. Có vẻ phức tạp nhưng thực ra không khó.
Bây giờ, hãy khám phá cách phương pháp gián tiếp giúp tránh những nhược điểm của phương pháp trực tiếp.
- Bằng cách đặt MySQL server và HTTP server trên cùng một máy, bạn có thể thiết lập tài khoản MySQL user chỉ truy cập từ máy đó. Tên đăng nhập và mật khẩu cho tài khoản này được lưu trên server (được đề cập ở bước 3), giúp tăng cường bảo mật.
- PHP script (bước 3 và 4) xử lý việc xử lý dữ liệu. Điều này làm mọi thứ đơn giản và ít phức tạp hơn cho cả Arduino UNO R4 và MySQL server. Sử dụng PHP để xử lý dữ liệu dễ dàng hơn so với việc sử dụng code Arduino UNO R4 hoặc MySQL script.
- PHP script xử lý dữ liệu và chỉ gửi những gì cần thiết đến Arduino UNO R4 (bước 4). Điều này giúp ngăn Arduino UNO R4 khỏi bị hết bộ nhớ.
- Hầu hết các thư viện Ethernet/WiFi đều hỗ trợ TLS/SSL, cho phép HTTPS request. Với HTTPS, dữ liệu được mã hóa và truyền tải an toàn qua Internet.
Trong bước 1, bạn có thể sử dụng tên đăng nhập và mật khẩu khác để kết nối Arduino UNO R4 với Web Server. Quan trọng là HTTP username và password phải khác với MySQL username và password để giữ an toàn.
Hướng dẫn này sẽ chỉ cách kết nối Arduino UNO R4 với MySQL một cách gián tiếp.
Arduino UNO R4 - MySQL qua HTTP/HTTPS
Chúng ta cần thực hiện các bước sau:
- Cài đặt MySQL server, Web server và PHP trên máy tính của bạn
- Kích hoạt MySQL và Web server
- Tạo tài khoản MySQL User
- Tạo cơ sở dữ liệu MySQL
- Tạo bảng MySQL
- Viết PHP script
- Lập trình Arduino UNO R4
Bây giờ, hãy thực hiện từng bước một.
Cài đặt MySQL server, Web server và PHP trên máy tính
Gói XAMPP bao gồm tất cả những gì cần thiết. Chúng ta chỉ cần cài đặt một lần.
- Tải XAMPP từ liên kết này
- Cài đặt nó.
Sau khi cài đặt, thư mục có tên C:\xampp\htdocs sẽ xuất hiện trên máy tính của bạn. Thư mục này sẽ chứa code PHP (được giải thích sau).
Kích hoạt MySQL và Web server
- Mở XAMPL Control Panel
- Nhấp vào nút Start để bật MySQL và Web server (Tham khảo hình ảnh bên dưới)

Tạo tài khoản MySQL User
Chúng ta sẽ thiết lập một tài khoản MySQL có thể truy cập cơ sở dữ liệu MySQL chỉ từ máy tính cục bộ.
- Ngay cả khi ai đó biết tên đăng nhập và mật khẩu của bạn, họ cũng không thể truy cập vào cơ sở dữ liệu MySQL từ xa.
- Vì PHP và MySQL ở trên cùng một máy tính, PHP có thể sử dụng tên đăng nhập và mật khẩu để kết nối với cơ sở dữ liệu MySQL.
Hãy tạo một tài khoản MySQL user với tên đăng nhập ArduinoUnoR4 và mật khẩu newbiely.com.
- Mở Command Prompt trên máy tính của bạn. Giữ nó mở cho đến khi bạn hoàn thành hướng dẫn.
- Nhập lệnh này trong Command Prompt:
- Cài đặt mặc định của MySQL bao gồm một tài khoản root không có mật khẩu. Bạn nên tạo mật khẩu cho tài khoản này.
Nhập lệnh sau trong Command Prompt để đặt mật khẩu cho tài khoản root: (ví dụ YOUR-ROOT-PASSWORD)
- Nhập lệnh này trong Command Prompt:
- Nhập mật khẩu root và nhấn Enter.
- Tạo tài khoản MySQL user với tên đăng nhập 'ArduinoUnoR4' và mật khẩu 'newbiely.com'. Sao chép các lệnh sau và dán vào Command Prompt:
Bây giờ bạn đã tạo thành công tài khoản MySQL user. Hãy ghi nhớ tên đăng nhập và mật khẩu vì bạn sẽ cần chúng cho PHP script.
Tạo cơ sở dữ liệu MySQL
Tạo cơ sở dữ liệu có tên db_arduino bằng cách nhập lệnh này trong Command Prompt:
Tạo bảng MySQL
Hãy tạo một bảng có tên tbl_temperature. Sao chép các lệnh sau và dán vào Command Prompt:
Viết một hoặc nhiều file PHP
Tạo file PHP có tên insert_temp.php tại C:\xampp\htdocs
Code PHP này lấy nhiệt độ từ HTTP Request và chèn nó vào cơ sở dữ liệu.
- Tìm địa chỉ IP của máy tính bạn. Tìm kiếm trên Google nếu bạn không biết cách tìm.
- Để kiểm tra xem code PHP có hoạt động không, mở trình duyệt web (như Chrome) và truy cập liên kết này: http://192.168.0.4/insert_temp.php?temperature=25.3. Nhớ sử dụng địa chỉ IP của máy tính bạn thay vì "192.168.0.4".
- Bạn sẽ thấy kết quả hiển thị trong trình duyệt web.

- Để xem dữ liệu có được lưu trong cơ sở dữ liệu không, nhập lệnh này trong Command Prompt:
Nhiệt độ 25.3 đã được lưu trong cơ sở dữ liệu. Tiếp theo, chúng ta cần lập trình Arduino UNO R4 để gửi HTTP request tương tự đến máy tính của bạn.
Viết code Arduino UNO R4
Code Arduino UNO R4 này gửi HTTP request đến máy tính của bạn để thêm nhiệt độ 30.5°C vào cơ sở dữ liệu.
Code Arduino UNO R4 cho Arduino UNO R4 R4 WiFi
Các Bước Nhanh
Thực hiện theo các hướng dẫn từng bước:
- Nếu đây là lần đầu tiên bạn sử dụng Arduino Uno R4 WiFi/Minima, hãy tham khảo hướng dẫn Arduino UNO R4 - Cài Đặt Phần Mềm.
- Kết nối board Arduino Uno R4 với máy tính bằng cáp USB.
- Khởi chạy Arduino IDE trên máy tính của bạn.
- Chọn board Arduino Uno R4 phù hợp (ví dụ: Arduino Uno R4 WiFi) và cổng COM.
- Thay thế địa chỉ IP trong code bằng địa chỉ IP máy tính của bạn.
- Biên dịch và upload code lên Arduino UNO R4.
- Mở Serial Monitor.
- Xem kết quả trên Serial Monitor.
- Để xem thông tin có được lưu trong cơ sở dữ liệu không, nhập lệnh này trong Command Prompt:
Nhiệt độ 30.5 đã được lưu trong cơ sở dữ liệu.
Cách Arduino UNO R4 chèn, cập nhật hoặc lấy dữ liệu từ cơ sở dữ liệu MySQL
Trong ví dụ trên, chúng ta đã học cách thêm dữ liệu vào cơ sở dữ liệu MySQL. Để cập nhật hoặc truy xuất dữ liệu, quy trình cũng tương tự. Chỉ cần thay đổi các truy vấn MySQL trong PHP script. Để biết thêm thông tin, hãy truy cập W3Schools.
Sử Dụng Nâng Cao
Để cải thiện bảo mật,
- Bạn có thể sửa đổi code của Arduino UNO R4 để sử dụng HTTPS thay vì HTTP. Để biết cách thực hiện, hãy truy cập Arduino UNO R4 - HTTPS.
- Bạn có thể xác thực bằng tên đăng nhập và mật khẩu khi kết nối Arduino UNO R4 với Web server. Tìm hiểu thêm tại Basic access authentication.
※ Lưu ý:
Để tạo một hệ thống hoàn chỉnh với bảo mật cao nhất, chúng ta phải thêm nhiều tính năng hơn (như ngăn chặn MySQL injection, chuyển HTTPS thành REST API và sử dụng định dạng JSON cho dữ liệu). Tuy nhiên, hướng dẫn này dành cho người mới bắt đầu học Arduino UNO R4. Chúng tôi đã giữ nó rất đơn giản. Sau khi hoàn thành hướng dẫn này, bạn có thể học các chủ đề nâng cao hơn.
Video Tutorial
Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.