Đọc giá trị cảm biến nhiệt độ LM35 và gửi lên thingspeak

Một phần của tài liệu EBOOK Tài liệu IOT ESP8266 (Trang 28 - 33)

II. Bài học mẫu ứng dụng lập trình esp8266:

7. Đọc giá trị cảm biến nhiệt độ LM35 và gửi lên thingspeak

Cảm biến nhiệt độ LM35 là một loại cảm biến tương tự rất hay được ứng dụng trong các ứng dụng đo nhiệt độ thời gian thực ( nhưng vẫn còn sai số lớn) . Với kích thước nhỏ và giá thành rẻ là một trong những ưu điểm của nó. Vì đây là cảm biến tương tự (analog sensor) nên ta có thể dễ dàng đọc được giá trị của nó bằng hàm analogRead().

Nhiệt độ được xác định bằng cách đo hiệu điện thế ngõ ra của LM35. → Đơn vị nhiệt độ: °C.

→ Nhiệt độ thay đổi tuyến tính: 10mV/°C

Độ chính xác thực tế: 1/4°C ở nhiệt độ phòng và 3/4°C ngoài khoảng 2°C tới 150°C công suất tiêu thụ là 60uA.

Cảm biến LM35 hoạt động bằng cách cho ra một giá trị hiệu điện thế nhất định tại chân Vout (chân giữa) ứng với mỗi mức nhiệt độ.

Chuẩn bị phần cứng:

 1 x ESP8266 V12 hoặc V12E đã tích hợp sẵn mạch nạp ( Trong ví bài viết này tôi sử dụng ESP8266-V12E)

 1 breadboard.

 1 cảm biến nhiệt độ LM35.

Phần mềm :

 Phần mềm Arduino IDE.

 Đăng kí 1 tài thoản miễn phí trên thingspeak.

Cài đặt trên thingspeak:

sau khi đăng kí một tài khoản miễn phí ta được giao diện như sau và ta chọn New Channel

Và ta được giao diện như hình sau:

Lắp mạch:

Lập trình:

#include <ESP8266WiFi.h>

String apiWritekey = "VXMLHG2R6DDPUCNT"; // mã Writekey ta thay vào đây const char* ssid = "coffee "; // tên wifi nhà bạn

const char* password = "coffee" ;// wifi pasword

const char* server = "api.thingspeak.com";

float resolution=3.3/1023; // 3.3 is the supply volt & 1023 is max analog read value WiFiClient client; void setup() { Serial.begin(115200); WiFi.disconnect(); delay(10); WiFi.begin(ssid, password); Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) { delay(500);

Serial.print("."); }

Serial.println("");

Serial.print("NodeMcu connected to wifi..."); Serial.println(ssid); Serial.println(); } ESP8266_12E LM35 3.3 VCC ( 5V) GND GND (--) A0 OUT

void loop() {

float temp = (analogRead(A0) * resolution) * 100;

if (client.connect(server,80)) {

String tsData = apiWritekey; tsData +="&field1="; tsData += String(temp); tsData += "\r\n\r\n"; client.print("POST /update HTTP/1.1\n"); client.print("Host: api.thingspeak.com\n"); client.print("Connection: close\n"); client.print("X-THINGSPEAKAPIKEY: "+apiWritekey+"\n"); client.print("Content-Type: application/x-www-form-urlencoded\n"); client.print("Content-Length: "); client.print(tsData.length());

client.print("\n\n"); // the 2 carriage returns indicate closing of Header fields & starting of data

client.print(tsData);

Serial.print("Temperature: "); Serial.print(temp);

Serial.println("uploaded to Thingspeak server...."); }

client.stop();

Serial.println("Waiting to upload next reading..."); Serial.println();

// thingspeak needs minimum 15 sec delay between updates delay(15000);

}

và được kết quả như sau

Một phần của tài liệu EBOOK Tài liệu IOT ESP8266 (Trang 28 - 33)