GIỚI THIỆU LÝ THUYẾT
Tìm hiểu về hệ thống giám sát nhiệt độ, độ ẩm
Hệ thống giám sát mức nhiệt và độ ẩm từ xa bao gồm nhiều bộ phận, thành phần khác nhau, cụ thể:
Thành phần cảm biến nhiệt độ hoặc độ ẩm với chức năng chính là logger
Bộ phận comet cloud và comet vision, chúng được cài đặt thông số IP và truy cập vào trình duyệt web
Hệ thống mạng internet hoặc mạng local gia đình/ văn phòng
Phần mềm Blynk nhằm lưu trữ dữ liệu từ cảm biến
Mỗi thành phần thiết bị đóng vai trò quan trọng trong việc đảm bảo hệ thống hoạt động hiệu quả và ổn định Đặc biệt, bạn có thể dễ dàng truy cập hệ thống từ nhiều thiết bị khác nhau như máy tính, điện thoại thông minh và máy tính bảng.
2.2 Thực hiện giám sát nhiệt độ, độ ẩm từ xa như thế nào
Giám sát nhiệt độ từ xa mang lại nhiều tiện lợi cho người dùng, dưới đây là các lý do cho điều này:
Dễ dàng hiển thị nhiệt độ theo thời gian chính xác với các cảm biến nhiệt độ, độ ẩm
Có thể hiển thị web site thông qua máy tính và thiết bị di động thông minh
Dễ dàng đọc hiểu số liệu từ biểu đồ trend biến thiên theo thời gian
Cho phép khách hàng xuất file dữ liệu để thực hiện hoạt động báo cao
Tiện lợi, nhanh chóng và đơn giản trong việc sử dụng và vận hành hệ thống
2.3 Các phương pháp giám sát nhiệt độ, độ ẩm từ xa
Hiện nay, việc giám sát nhiệt độ qua Internet trở nên phổ biến nhờ vào hai phương thức chính: sử dụng wifi hoặc hệ thống sim 4G Các phương pháp này không chỉ đa dạng hóa nguồn thông tin mà còn giúp phân tích dữ liệu nhanh chóng và hiệu quả Người dùng có thể số hóa dữ liệu và truy cập mọi lúc, mọi nơi mà không bị giới hạn về không gian và thời gian Điện thoại thông minh có khả năng giám sát và tổng hợp thông tin về nhiệt độ và độ ẩm môi trường từ xa, góp phần nâng cao chất lượng cuộc sống và mang lại sự tiện lợi trong cuộc sống hiện đại.
2.4 Blynk Đây là một nền tảng IoT được ưa thích bởi hơn 500.000 kỹ sư trong lĩnh vực IoT trên toàn thể giới
Có ba thành phần chính trong nền tảng Blynk:
Blynk App - cho phép tạo giao diện cho sản phẩm của bạn bằng cách kéo thả các widget khác nhau mà nhà cung cấp đã thiết kế sẵn
Blynk Server đóng vai trò quan trọng trong việc xử lý dữ liệu giữa điện thoại, máy tính bảng và phần cứng Người dùng có thể lựa chọn sử dụng Blynk Cloud hoặc tự tạo máy chủ Blynk riêng Với mã nguồn mở, Blynk cho phép dễ dàng tích hợp vào các thiết bị khác nhau, bao gồm cả việc sử dụng Raspberry Pi làm máy chủ cho hệ thống.
Thư viện Blynk hỗ trợ hầu hết các nền tảng phần cứng phổ biến, cho phép giao tiếp hiệu quả với máy chủ và xử lý tất cả các lệnh đến và đi.
Hình 2.13: Sơ đồ hệ sinh thái Blynk
Nguyên lý hoạt động của Blynk dựa trên việc khi người dùng nhấn nút trong ứng dụng, yêu cầu sẽ được gửi đến server của Blynk Server này sẽ kết nối với phần cứng thông qua thư viện, cho phép thiết bị phần cứng truyền dữ liệu ngược lại đến server Nhờ đó, người dùng có thể xây dựng hệ sinh thái nhà thông minh dựa trên nền tảng Blynk một cách dễ dàng.
- Cung cấp API & giao diện người dùng tương tự cho tất cả các thiết bị và phần cứng được hỗ trợ
- Kết nối với server bằng cách sử dụng:Wifi, Bluetooth và BLE, Ethernet, USB (Serial), GSM, …
- Các tiện ích trên giao diện được nhà cung cấp dễ sử dụng
- Thao tác kéo thả trực tiếp giao diện mà không cần viết mã
- Dễ dàng tích hợp và thêm chức năng mới bằng cách sử dụng các cổng kết nối ảo được tích hợp trên blynk app
- Theo dõi lịch sử dữ liệu
- Thông tin liên lạc từ thiết bị đến thiết bị bằng Widget
Blynk
Đây là một nền tảng IoT được ưa thích bởi hơn 500.000 kỹ sư trong lĩnh vực IoT trên toàn thể giới
Có ba thành phần chính trong nền tảng Blynk:
Blynk App - cho phép tạo giao diện cho sản phẩm của bạn bằng cách kéo thả các widget khác nhau mà nhà cung cấp đã thiết kế sẵn
Blynk Server là trung tâm xử lý dữ liệu giữa điện thoại, máy tính bảng và phần cứng Người dùng có thể lựa chọn sử dụng Blynk Cloud hoặc tự tạo máy chủ Blynk riêng Với mã nguồn mở, Blynk dễ dàng tích hợp vào các thiết bị khác nhau, bao gồm cả việc sử dụng Raspberry Pi làm máy chủ cho hệ thống.
Thư viện Blynk hỗ trợ hầu hết các nền tảng phần cứng phổ biến, cho phép giao tiếp hiệu quả với máy chủ và xử lý tất cả các lệnh gửi và nhận.
Hình 2.13: Sơ đồ hệ sinh thái Blynk
Nguyên lý hoạt động của Blynk dựa trên việc khi người dùng nhấn nút trong ứng dụng, yêu cầu sẽ được gửi đến server của Blynk Server sau đó kết nối với phần cứng thông qua thư viện, cho phép thiết bị truyền dữ liệu ngược lại đến server Nhờ vào cơ chế này, người dùng có thể dễ dàng xây dựng hệ sinh thái nhà thông minh dựa trên nền tảng Blynk.
- Cung cấp API & giao diện người dùng tương tự cho tất cả các thiết bị và phần cứng được hỗ trợ
- Kết nối với server bằng cách sử dụng:Wifi, Bluetooth và BLE, Ethernet, USB (Serial), GSM, …
- Các tiện ích trên giao diện được nhà cung cấp dễ sử dụng
- Thao tác kéo thả trực tiếp giao diện mà không cần viết mã
- Dễ dàng tích hợp và thêm chức năng mới bằng cách sử dụng các cổng kết nối ảo được tích hợp trên blynk app
- Theo dõi lịch sử dữ liệu
- Thông tin liên lạc từ thiết bị đến thiết bị bằng Widget
THIẾT BỊ VÀ GIẢI PHÁP CÔNG NGHỆ
Kit Node MCU Lua ESP8266
Chip ESP8266, do Espressif phát triển, mang đến giải pháp giao tiếp Wifi cho thiết bị IoT với kích thước nhỏ gọn 5x5mm Điểm nổi bật của ESP8266 là sự tích hợp các mạch RF như balun, antenna switches, TX power amplifier và RX filter bên trong chip, giúp giảm kích thước bo mạch và số lượng linh kiện cần thiết.
Hình 3.1: Module NodeMCU Lua ESP8266
Module phát Wifi ESP8266 NodeMCU Lua là một kit phát triển dựa trên chip Wifi SoC ESP8266, nổi bật với thiết kế thân thiện và khả năng lập trình dễ dàng Người dùng có thể trực tiếp sử dụng trình biên dịch Arduino để lập trình và nạp code, giúp việc phát triển ứng dụng trên ESP8266 trở nên đơn giản và hiệu quả hơn.
Module thu phát Wifi ESP8266 NodeMCU Lua là một bộ phát triển dựa trên chip Wifi SoC ESP8266, nổi bật với thiết kế dễ sử dụng Nó cho phép lập trình và nạp code trực tiếp thông qua trình biên dịch của Arduino, giúp việc phát triển ứng dụng trên ESP8266 trở nên đơn giản và hiệu quả.
Hình 3.2: Sơ đồ nguyên lý kit NodeMCU
Module và Board phát triển của ESP8266
ESP8266 cần các linh kiện bổ sung để hoạt động, trong đó anten là phần khó khăn nhất, yêu cầu sản xuất và kiểm tra bằng thiết bị hiện đại Để đơn giản hóa quá trình phát triển ứng dụng cho người dùng, nhiều module và board mạch phát triển đã ra đời trên thị trường Một số module và board phát triển phổ biến hiện nay bao gồm
Hiện nay phiên bản sử dụng phổ biến nhất là ESP8266 12E
Giới thiệu về module ESP 12E (Node MCU V3)
NodeMCU V1.0 được phát triển dựa trên Chip WiFi ESP8266EX bên trong Module ESP-12E dễ dàng kết nối WiFi với một vài thao tác Board còn tích hợp
IC CP2102 cho phép giao tiếp thuận tiện với máy tính qua Micro USB, hỗ trợ quá trình thao tác với board Board được trang bị nút nhấn và đèn LED, giúp ích cho việc học và nghiên cứu Với kích thước nhỏ gọn và linh hoạt, board dễ dàng kết nối với các thiết bị ngoại vi, giúp tạo ra các dự án và sản phẩm mẫu một cách nhanh chóng.
WiFi: 2.4 GHz hỗ trợ chuẩn 802.11 b/g/n
Điện áp vào: 5V thông qua cổng USB
Số chân I/O: 11 (tất cả các chân I/O đều có Interrupt/PWM/I2C/One-wire, trừ chân D0)
Số chân Analog Input: 1 (điện áp vào tối đa 3.3V)
Giao tiếp: Cable Micro USB
Hỗ trợ bảo mật: WPA/WPA2
Tích hợp giao thức TCP/IP
Lập trình trên các ngôn ngữ: C/C++, Micropython, NodeMCU – Lua
Sơ đồ chân GPIO và những lưu ý khi sử dụng Node MCU
Hình 3.6 Sơ đồ chân MODULE Node MCU
NodeMCU sở hữu 13 chân GPIO, mỗi chân có thể đảm nhiệm nhiều chức năng khác nhau Tuy nhiên, một số chân được dành cho các mục đích quan trọng khác, vì vậy cần lưu ý khi sử dụng chúng.
Tất cả các chân GPIO đều được trang bị trở kéo lên nguồn bên trong, ngoại trừ GPIO16, vốn có trở kéo xuống GND Người dùng có khả năng cấu hình để kích hoạt hoặc không kích hoạt các trở kéo này.
GPIO1 và GPIO3 kết nối với TX và RX của bộ UART0, vì vậy khi nạp code cho NodeMCU, cần tránh sử dụng hai chân GPIO này.
GPIO0, GPIO2, và GPIO15 là các chân quan trọng trong việc cấu hình chế độ cho ESP8266, ảnh hưởng đến quá trình nạp code Trong NodeMCU, các chân này có các trở kéo được định sẵn với mức logic: GPIO0 ở mức HIGH, GPIO2 ở mức HIGH, và GPIO15 ở mức LOW Để sử dụng các chân này như GPIO, cần thiết kế một nguyên lý riêng nhằm tránh xung đột trong quá trình nạp code.
GPIO9, GPIO10: hai chân này được dùng để giao tiếp với External Flash của ESP8266 vì vậy cũng không thể dùng được (đã test thực nghiệm).
Như vậy, các GPIO còn lại: GPIO 4, 5, 12, 13, 14, 16 có thể sử dụng bình thường.
Phần mềm IDE
Đây là phần mềm dùng để lập trình nạp code vô kit NodeMCU Lua ESP8266
3.5.1 Cấu trúc một chương trình trong phần mềm IDE:
Phần 1 : Khai báo biến Đây là phần khai báo kiểu biến, tên các biến, định nghĩa các chân trên board một số kiểu khai báo biến thông dụng:
Từ "define" có nghĩa là định nghĩa, trong khi hàm #define được sử dụng để gán tên cho một chân hoặc ngõ ra cụ thể Ví dụ, bạn có thể sử dụng #define để gán tên cho một đèn LED.
Chú ý: sau #define thì không có dấu “,” (dấy phẩy)
*Khai báo các kiểu biến khác như: int (kiểu số nguyên), float,…
Các chúng ta có thể tham khảo thêm các kiểu biến cũng như công dụng tại arduino.cc
Phần 2 : Thiết lập (void setup())
Phần này dùng để thiết lập cho chương trình, cần nhớ rõ cấu trúc của nó: void setup()
Cấu trúc của chương trình được xác định bởi dấu ngoặc nhọn ở đầu và cuối; nếu thiếu phần này, chương trình sẽ báo lỗi khi kiểm tra Phần này có vai trò thiết lập tốc độ truyền dữ liệu và xác định kiểu chân, bao gồm chân ra và chân vào.
Serial.begin(9600); Dùng để truyền dữ liệu từ board Arduino lên máy tính pinMode(biến, kiểu vào hoặc ra); Dùng để xác định kiểu chân là vào hay ra
Ví dụ: pinMode(ChanDO, INPUT);
Dùng để viết các lệnh trong chương trình để mạch Arduino thực hiện các nhiệm vụ mà chúng ta mong muốn, thường bắt đầu bằng: void loop()
Một số câu lệnh, cấu trúc thường gặp:
Dấu "//" được sử dụng để giải thích nội dung trên một dòng, và khi chương trình được kiểm tra, phần mềm sẽ bỏ qua phần này mà không thực hiện kiểm tra hay biên dịch.
#define: Dùng để định nghĩa một chân nào đó, hay gán biến tới 1 chân, địa chỉ ghi đọc tín hiệu Ví dụ: #define LED, 13
3.5.2 Hàm nhập xuất Digital I/O: a digitalWrite(): Miêu tả: Viết một giá trị HIGH hoặc một LOW cho một chân số của arduino
Khi chân được cấu hình là OUTPUT bằng cách sử dụng pinMode(), điện áp sẽ được thiết lập tương ứng: 5V (hoặc 3.3V trên các mạch 3.3V) cho trạng thái HIGH và 0V cho trạng thái LOW.
Khi chân được cấu hình là INPUT, hàm digitalWrite() sẽ cho phép bật (HIGH) hoặc tắt (LOW) pullup nội bộ trên chân đầu vào Do đó, cần thiết lập pinMode() thành INPUT_PULLUP để kích hoạt các điện trở kéo lên bên trong.
Cú pháp: digitalWrite(pin, value);
Thông số: pin: Số của chân digital mà bạn muốn thiết đặt value: HIGH hoặc LOW
Mã làm cho pin kỹ thuật số 13 OUTPUTvà chuyển đổi nó bằng cách luân phiên giữa HIGHvà LOWở tốc độ một giây
Ví dụ: int led ; void setup()
{ pinMode(led, OUTPUT); // led được nối với chân số 13
{ digitalWrite(led, HIGH); // bật led delay(1000); // dừng chương trình 1 giây digitalWrite(led, LOW); // tắt led delay(1000); // dừng chương trình 1 giây
Miêu tả: Đọc giá trị từ một Chân số đã được chỉ định, hoặc là HIGH hoặc LOW
Thông số: pin: số chân digital bạn muốn đọc
HIGH hoặc là LOW c pinMode():
Cấu hình 1 pin quy định hoạt động như là một đầu vào (INPUT) hoặc đầu ra (OUTPUT)
Cú pháp: pinMode(pin, mode)
Thông số: pin: số chân có chế độ bạn muốn thiết lập mode: INPUT, OUTPUT, Hoặc INPUT_PULLUP
{ pinMode (12, OUTPUT); // chân số 12 là đầu ra
{ digitalWrite (12, HIGH); delay(1000); digitalWrite (12, LOW); delay(1000);
3.5.3 Hàm nhập xuất Analog I/O: a analogRead()
Hàm analogRead() có nhiệm vụ đọc giá trị điện áp từ chân Analog (ADC) trên board Node MCU Board này có 1 pin A0, trong khi các board khác như UNO R3 có 5 pin, Mini và Nano có 8 pin, và Mega có 16 pin Bộ chuyển đổi tương tự 10-bit sang số cho phép lập bản đồ điện áp đầu vào từ 0 đến 5 volts thành các số nguyên từ 0 đến 1023, tạo ra độ phân giải giữa các lần đọc là 5 volts / 1024 đơn vị, tương đương với 0,0049 volt (4,9 mV) trên một đơn vị Dải đầu vào và độ phân giải có thể được điều chỉnh bằng cách sử dụng.
Hàm analogRead() cần 100 micro giây để thực hiện Khi người ta nói "đọc tín hiệu analog", bạn có thể hiểu đó chính là việc đọc giá trị điện áp
Cú pháp: analogRead (pin) ; b analogWrite()
Hàm analogWrite() trên mạch Arduino cho phép xuất tín hiệu analog bằng cách phát xung PWM, thường được sử dụng để điều chỉnh độ sáng của đèn LED hoặc tốc độ của động cơ Tần số tín hiệu PWM trên hầu hết các chân Arduino là khoảng 490 Hz, trong khi trên board Node MCU và các board tương tự, tần số này đạt khoảng 980 Hz.
Trên mạch Arduino, bạn không cần sử dụng hàm pinMode() để thiết lập chế độ OUTPUT cho chân phát xung PWM Để phát xung PWM, bạn chỉ cần sử dụng cú pháp: analogWrite([chân phát xung PWM], [giá trị xung PWM]); với giá trị xung PWM nằm trong khoảng từ 0 đến 255.
0 đến 255, tương ứng với mức duty cycle từ 0% đến 100% Trả về
Ví dụ: Đoạn code dưới có chức năng làm sáng dần một đèn LED được kết nối vào chân số 2 trên mạch Arduino void setup() {}
Tạm dừng chương trình cho khoảng thời gian (tính bằng mili giây) được chỉ định là tham số (Có 1000 mili giây = 1 giây.)
Thông số ms: số mili giây để tạm dừng ( unsigned long)
Trả về: Không có ví dụ: int ledPin = 13; // LED pin 13 void setup()
{digitalWrite(ledPin, HIGH); delay(1000);digitalWrite(ledPin, LOW); delay(1000);
Lập trình ESP 12E bằng Arduino IDE
3.6.1 Giới thiệu Để bắt đầu với những dự án Wifi các bạn cần ESP8266 với giá thành rẻ, và dễ dàng sử dụng Đặc biệt ESP8266 12E có thể được lập trình bằng Arduino IDE Trước khi bắt đầu những chuỗi dự án với ESP8266, ở bài viết này, mình sẽ chia sẻ cách cài đặt Arduino
IDE để nạp code cho ESP8266
1 Module ESP8266 V12 hoặc V12E đã tích hợp sẵn mạch nạp
3.6.3 Cài đặt phần mềm arduino IDE và thư viện cho esp8266
Sau khi tải và cài đặt phần mềm Arduino IDE, mở chương trình và cài đặt driver để nhận diện module (driver có sẵn trong file cài) Tiếp theo, để cài đặt thư viện và nạp code cho IDE, hãy thực hiện các bước hướng dẫn.
Vào File→ Preferences, vào textbox Additional Board Manager URLs thêm đường link sau vào http://arduino.esp8266.com/stable/package_esp8266com_index.json
Click OK để chấp nhận
Tiếp theo vào Tool→Board→Boards Manager Đợi một lát để chương trình tìm kiếm Ta kéo xuống và click vào ESP8266 by
ESP8266 Community, click vào Install Chờ phần mềm tự động download và cài đặt
3.6.4 Hướng dẫn nạp chương trình cho ESP8266 12E
Kết nối mudule ESP8266 -12E vào máy tính Vào Tool→Board→NodeMCU 1.0,chọn cổng COM tương ứng với module tương ứng
Chọn chế độ nạp Arduino as ISP và chọn cổng COM cho đúng nhé.Vậy là ta đã có môi trường lập trình cho esp8266 rất thân thiện
Sau khi kết nối ESP8266 với máy tính, chúng ta sẽ test code ESP8266 ở đây: Code ở dưới test led trên board esp8266 12E ở chân 13 (D7 ) sáng tắt trong vòng
1 giây void setup() { pinMode(LED_BUILTIN, OUTPUT);
} void loop() { digitalWrite(LED_BUILTIN, HIGH); // bật led sáng 1 giây delay(1000); // wait for asecond digitalWrite(LED_BUILTIN, LOW); // tắt led 1 giây delay(1000); // wait for a second
Từ ví dụ đơn giản ở trên ta có thể bắt tay vào lập trình cho NODE MCU để làm những dự dán IOT có ứng dụng cao.
Module DHT 11
Cảm biến DHT11 là một trong những cảm biến độ ẩm và nhiệt độ phổ biến hiện nay nhờ vào chi phí thấp và khả năng lấy dữ liệu dễ dàng qua giao tiếp 1 wire Với bộ tiền xử lý tín hiệu tích hợp, DHT11 cung cấp dữ liệu chính xác mà không cần tính toán phức tạp Tuy nhiên, so với cảm biến DHT22 đời mới hơn, DHT11 có khoảng đo và độ chính xác kém hơn nhiều.
Điện áp đầu vào từ 3 đến 5VDC
Đo tốt ở dải nhiệt độ từ 0 đến 55 độ C với sai số +- 2 độ C
Đo tốt ở độ ẩm 20 - 90 % RH với sai số 5%
Tần số lấy mẫu tối đa 1%
Dùng đo nhiệt đô và độ ẩm
Dùng để nghiên cứu học tập bộ môn điện tử
Dùng đo nhiệt độ môi trường xung quanh
Dùng đo độ ẩm xung quanh
Tương thích với nhiều dòng vi điều khiển như 8051 - Pic - AVT
Kết nối cảm biến DHT11 với mạch arduino hoặc node mcu
Màn hình OLED
Màn hình OLED là gì?
OLED (Diode phát sáng hữu cơ) đang nổi lên như một đối thủ cạnh tranh mạnh mẽ và là ứng cử viên tiềm năng thay thế màn hình LCD.
Màn hình OLED gồm những lớp như tấm nền, Anode, lớp hữu cơ, cathode
Và phát ra ánh sáng theo cách tương tự như đèn LED Quá trình trên được gọi là phát lân quang điện tử
3.8.1 Ưu nhược điểm của màn hình OLED
Màn hình OLED có nhiều ưu điểm nổi bật, bao gồm lớp hữu cơ nhựa mỏng, nhẹ và mềm dẻo, cho phép chế tạo màn hình gập cuộn Độ sáng của OLED vượt trội hơn so với LED và không cần đèn nền như LCD, giúp tiết kiệm pin Ngoài ra, góc nhìn của OLED được cải thiện lên tới 170 độ, mang lại trải nghiệm hình ảnh tốt hơn.
Màn hình này có một số nhược điểm như tuổi thọ ngắn, chi phí sản xuất cao và dễ hỏng khi tiếp xúc với nước, điều này giải thích lý do tại sao nó chưa được ứng dụng rộng rãi.
3.8.2 Thông số kĩ thuật màn hình OLED 0.96inch I2C
Điện ấp sử dụng: 3V3 đến 5V (DC)
Góc hiển thị: Lớn hơn 160 độ (Em chưa hiểu chỗ này, bác nào giải thích hộ)
Độ phân giải: 128X64 pixel (Điểm ảnh)
Độ rộng màn hình: 0.96inch
NỘI DUNG THỰC HIỆN VÀ MÔ HÌNH
Mục tiêu
Đọc và hiển thị giá trị nhiệt độ và độ ẩm hiển thị màn hình oled và blynk
4.2 Phần mền cần chuẩn bị
Cài đặt phần mềm arduino IDE
Cài đặt app Blynk cho điện thoại
4.3 Phần cứng cần chuẩn bị:
// You should get Auth Token in the Blynk App char auth[] = "LPDk-ZKlEirfPeV0O8jIfjEuzy_dABSN";
// Set password to "" for open networks char ssid[] = "PHI QUANG"; char pass[] = "88888888";
#define DHTPIN 4 // what pin we're connected to
// Initialize the OLED display using Wire library
// Initialising the UI will init the display too display.init(); display.flipScreenVertically(); display.setFont(ArialMT_Plain_16); display.setTextAlignment(TEXT_ALIGN_LEFT); dht.begin(); // initialize dht
Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 8080); timer.setInterval(1000L, sendSensor);
} void displayWeather(){ float h = dht.readHumidity();
// Read temperature as Celsius float t = dht.readTemperature();
// Read temperature as Fahrenheit float f = dht.readTemperature(true); if (isnan(h) || isnan(t) || isnan(f)){ display.clear(); // clearing the display display.drawString(5,0, "DHT Failed!"); return;
} display.clear(); display.drawString(30, 0, "Weather"); display.drawString(0, 20, "Humidity: " + String(h) + "%\t"); display.drawString(0, 40, "Temp: " + String(t) + "°C");
//Uncomment to get temperature in farenheit
Blynk.run(); // Running the blynk code displayWeather(); //Calling back the displayWeather function timer.run();
{ float h = dht.readHumidity(); //Read the humidity float t = dht.readTemperature(); // or dht.readTemperature(true) for Fahrenheit if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!"); return;
// You can send any value at any time
// Please don't send more that 10 values per second
Bước 1: Tải app blynk trên CH play hoặc App Store
Bước 2: Mở app lên đăng kí tài khoản miễn phí bằng email sau đó chọn NEW PROJECT.
Bước 3: Lập app như hình dưới.
Bước 4: Chọn vào nút OK mã token sẽ được gửi vào email sau đó dùng tay trượt theo dấu mũi tên
Bước 5: Chọn đến mục như hình ở dưới ( chọn 2 lần )
Bước 6: Chọn vào hình chữ nhật như hình dưới và thay đổi thông tin giống hình
Bước 7: Chọn vào hình chữ nhật như hình dưới và thay đổi thông tin giống hình
Bước 8: Chọn vào hình tam giác như hình dưới để chuyển qua chế độ online
Màn hình Oled 0.96’ Hiển thị giá trị nhiệt độ và độ ẩm trong căn phòng
Phần cứng cần chuẩn bị
Code chương trình
// You should get Auth Token in the Blynk App char auth[] = "LPDk-ZKlEirfPeV0O8jIfjEuzy_dABSN";
// Set password to "" for open networks char ssid[] = "PHI QUANG"; char pass[] = "88888888";
#define DHTPIN 4 // what pin we're connected to
// Initialize the OLED display using Wire library
// Initialising the UI will init the display too display.init(); display.flipScreenVertically(); display.setFont(ArialMT_Plain_16); display.setTextAlignment(TEXT_ALIGN_LEFT); dht.begin(); // initialize dht
Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 8080); timer.setInterval(1000L, sendSensor);
} void displayWeather(){ float h = dht.readHumidity();
// Read temperature as Celsius float t = dht.readTemperature();
// Read temperature as Fahrenheit float f = dht.readTemperature(true); if (isnan(h) || isnan(t) || isnan(f)){ display.clear(); // clearing the display display.drawString(5,0, "DHT Failed!"); return;
} display.clear(); display.drawString(30, 0, "Weather"); display.drawString(0, 20, "Humidity: " + String(h) + "%\t"); display.drawString(0, 40, "Temp: " + String(t) + "°C");
//Uncomment to get temperature in farenheit
Blynk.run(); // Running the blynk code displayWeather(); //Calling back the displayWeather function timer.run();
{ float h = dht.readHumidity(); //Read the humidity float t = dht.readTemperature(); // or dht.readTemperature(true) for Fahrenheit if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!"); return;
// You can send any value at any time
// Please don't send more that 10 values per second
Cài đặt app Blynk
Bước 1: Tải app blynk trên CH play hoặc App Store
Bước 2: Mở app lên đăng kí tài khoản miễn phí bằng email sau đó chọn NEW PROJECT.
Bước 3: Lập app như hình dưới.
Bước 4: Chọn vào nút OK mã token sẽ được gửi vào email sau đó dùng tay trượt theo dấu mũi tên
Bước 5: Chọn đến mục như hình ở dưới ( chọn 2 lần )
Bước 6: Chọn vào hình chữ nhật như hình dưới và thay đổi thông tin giống hình
Bước 7: Chọn vào hình chữ nhật như hình dưới và thay đổi thông tin giống hình
Bước 8: Chọn vào hình tam giác như hình dưới để chuyển qua chế độ online
Màn hình Oled 0.96’ Hiển thị giá trị nhiệt độ và độ ẩm trong căn phòng