[ESP8266 HTTP Client] Gửi Dữ Liệu Lên ThingSpeak Server Sử Dụng ESP8266

Xin chào các bạn, đợt này dịch Covid-19 tung hoành quá, nên mình cũng rảnh rỗi hơn chút, mình sẽ tạo một Series hướng dẫn ESP8266 cùng với một vài chức năng truyền nhận dữ liệu cơ bản. Về ESP8266 chắc hẳn đã quá quen thuộc và phổ biến với các bạn, cho nên mình sẽ bỏ qua phần giới thiệu ESP8266 nhé! ^_^

ThingSpeak là một nền tảng đám mây giao thức HTTP rất nổi tiếng bởi độ tin cậy, miễn phí cho người dùng phổ thông trong lĩnh vực IoT. ThingSpeak sở hữu bởi The MathWorks, Inc., là tập đoàn sáng tạo ra phần mềm MathLab nổi danh toàn cầu trong tất cả lĩnh vực kĩ thuật, kinh tế.

Mình khái quát sơ bộ về nội dung bài viết, chúng ta sẽ tận dụng ThingSpeak để gửi dữ liệu từ các loại cảm biến (giả dụ mình đang quan trắc môi trường) và mình sẽ quan sát các dữ liệu này từ xa. OK, cùng bắt đầu nào!

PHẦN 1: TẠO SERVER THINGSPEAK

Bước 1: Tạo tài khoản/Đăng nhập ThingSpeak

Đầu tiên, các bạn truy cập Website: www.thingspeak.com, sau đó chọn Sign Up để tạo một tài khoản ThingSpeak miễn phí nhé!


Các bạn nhập địa chỉ Email, Tên đăng nhập (First Name và Last Name), Mật khẩu, sau đó chọn Continue. ThingSpeak sẽ gửi cho bạn một Email xác nhận, bạn xác nhận xong quay lại chọn Sign In để đăng nhập.

Bước 2: Tạo Channels ThingSpeak

Bạn vào thẻ Channels, chọn New Channel để tạo một kênh mới

Bạn nhập tên kênh vào ô Name, nhập mô tả (viết gì cũng được nhé) vào ô Description, các ô Field 1, 2, 3,...8 chính là các trường dữ liệu mà các bạn sẽ gửi từ ESP8266 Device lên Server này, ở bài này mình sẽ gửi 3 trường dữ liệu là Temp, Humi, Moist (các bạn tự đặt tên nha) tương ứng cho 3 giá trị dữ liệu: Nhiệt độ, độ ẩm không khí và độ ẩm đất. Các bạn chọn dấu tích bên phải để cho phép trường đó hoạt động. Sau đó chọn Save Channel để lưu lại.

Sau đó ThingSpeak sẽ hiện ra 3 biểu đồ, tuy nhiên sẽ chưa có giá trị nào do bạn chưa gửi dữ liệu lên đây.

Bước 3: Lấy Channel ID, Write API Key và Read API keys

Các bạn vào thẻ API Keys, sẽ thấy các thông tin Channel ID, Write API Key, Read API Keys, đây chính là các thông tin quan trọng cho Data của bạn (nên bảo mật cũng như lưu lại nhé, lát nữa chúng ta sẽ cần), các ID và Keys này sẽ giúp ThingSpeak cho phép thiết bị của bạn gửi dữ liệu lên đây.

PHẦN 2: LẮP ĐẶT THIẾT BỊ VÀ BUILD SOURCE CODE CHO ESP8266

Các thiết bị mình sử dụng

1. Mạch WiFi ESP8266 CP2102 NodeMCU
2. Cảm biến nhiệt độ, độ ẩm giao tiếp OneWire AM2301
3. Cảm biến độ ẩm đất (loại ADC)

Bước 1: Lắp đặt thiết bị

Mình sử dụng cảm biến nhiệt độ, độ ẩm AM2301 để đọc giá trị nhiệt độ, độ ẩm từ môi trường, cách kết nối như sau:
- Chân màu đỏ (VVC) các bạn cắm vào ngõ ra 3.3V của ESP8266
- Chân màu đen (GND) các bạn cắm vào ngõ ra GND của ESP8266
- Chân màu vàng (Data) các bạn cắm vào các chân GPIO của board, ở đây mình sử dụng chân D2 nhé!

Đối với cảm biến độ ẩm đất dạng ADC mình cũng cấp điện áp dương (3.3V), âm tương tự, tuy nhiên chân dữ liệu mình buộc phải sử dụng chân ADC là A0 vì board chỉ có một ngõ vào ADC.

Bước 2: Build Source Code cho ESP8266 trên Arduino IDE

Đối với các bạn mới sử dụng ESP8266 thì việc code trên Arduino IDE sẽ giúp dễ tiếp cận vào tạo hứng thú hơn, do đó mình xin giới thiệu cách lập trình trên IDE này, nếu các bạn muốn "tryhard" hơn thì có thể sử dụng cách lập trình tập lệnh AT Command hoặc dùng SDK chính hãng của Espressif.

- Các bạn tải source mẫu của mình: https://github.com/VVCi/ESP8266HTTPServer , sau đó mở file writeDataSensor để build và nạp code cho board, file readDataSensor thì mình sẽ hướng dẫn ở bài sau.

- Hãy thay đổi các thông số sau trong source code để build thành công nhé!

+ Đối với các phần định nghĩa (#define) cho các chân, các bạn cứ để mặc định theo như cách kết nối mình đã hướng dẫn ở phía trên nhé.
+ Các bạn nhập SSID (Tên WiFi) vào ô ssid, nhập PASSWORD (Mật khẩu WiFi) vào ô password.
+ Nhập channelID, writeAPIKey (bước 3, phần 1 mình đã chỉ các bạn lưu lại).

- Các bạn build và nạp Code cho board ESP8266, sau đó mở Serial Monitor/Terminal, các giá trị cảm biến sẽ được sổ ra


- Bây giờ các bạn truy cập lại Channel ThingSpeak đã tạo, các giá trị của cảm biến đã được gửi lên Server và có dạng biểu đồ như thế này.

Ở phần sau, mình sẽ hướng dẫn các bạn chỉnh lại các biểu đồ cho đẹp mắt, dễ quan sát hơn và lấy các giá trị cảm biến này xuống từ ThingSpeak Server.

Nếu các bạn có những thắc mắc cần giải đáp, hãy nhắn tin cho mình qua Fanpage: EPCB hoặc qua Email: epcbtech@gmail.com. Cảm ơn các bạn đã theo dõi!