สารบัญ:

การวัดอุณหภูมิโดยใช้แพลตฟอร์ม Esp32 และ Thingsio.ai: 6 ขั้นตอน
การวัดอุณหภูมิโดยใช้แพลตฟอร์ม Esp32 และ Thingsio.ai: 6 ขั้นตอน

วีดีโอ: การวัดอุณหภูมิโดยใช้แพลตฟอร์ม Esp32 และ Thingsio.ai: 6 ขั้นตอน

วีดีโอ: การวัดอุณหภูมิโดยใช้แพลตฟอร์ม Esp32 และ Thingsio.ai: 6 ขั้นตอน
วีดีโอ: อบรมการสร้างระบบตรวจวัดอุณหภูมิและความชื้นสัมพัทธ์ด้วย ESP32+DL13 รุ่นที่ 2 ครั้งที่ 2 2024, พฤศจิกายน
Anonim
การวัดอุณหภูมิโดยใช้แพลตฟอร์ม Esp32 และ Thingsio.ai
การวัดอุณหภูมิโดยใช้แพลตฟอร์ม Esp32 และ Thingsio.ai

ในบทช่วยสอนนี้ ฉันจะอธิบายเกี่ยวกับการวัดอุณหภูมิในสภาพแวดล้อมโดยรอบโดยใช้เซ็นเซอร์อุณหภูมิในตัวที่มีอยู่ในบอร์ดพัฒนา esp32 esp32 มีเซ็นเซอร์ในตัวมากมาย เช่น เซ็นเซอร์ฮอลล์ที่ใช้เป็นเซ็นเซอร์ระยะใกล้ เซ็นเซอร์สัมผัส เซ็นเซอร์อุณหภูมิ ในบทช่วยสอนนี้ เราจะพูดถึงเกี่ยวกับเซ็นเซอร์อุณหภูมิ

ขั้นตอนที่ 1: ส่วนประกอบ:

ส่วนประกอบ
ส่วนประกอบ

ฮาร์ดแวร์:

บอร์ดพัฒนา 1.esp32

ซอฟต์แวร์:

1. Arduino IDE

2. Thingsio.ai

ขั้นตอนที่ 2: การแสดง BLOCK DIAGRAM ของ Esp32

การแสดงไดอะแกรมบล็อกของ Esp32
การแสดงไดอะแกรมบล็อกของ Esp32

ขั้นตอนที่ 3: การเข้ารหัส:

#รวม

#รวม

#รวม

#รวม

#รวม

#ifdef _cplusplus

ภายนอก "C" {

#endif

uint8_t temprature_sens_read();

//uint8_t g_phyFuns;

#ifdef _cplusplus

}

#endif

จำนวน int=0, i, m, j, k;

int เสื้อ, t1, t2, t3;

int outputpin= A0;//ds18b20

/////////////////////////////////////// ประกาศทั้งหมด

สำหรับคลาวด์ ////////////////////////////

const char* host = "api.thingsai.io"; // หรือโฮสต์ =

devapi2.thethingscloud.com

const char* post_url = "/devices/deviceData"; //

หรือ /api/v2/thingscloud2/_table/data_ac

อักขระ const* time_server =

"baas.thethingscloud.com"; //นี่คือการแปลงการประทับเวลา

const int httpPort = 80;

const int https Port = 443;

เซิร์ฟเวอร์ const char* =

"api.thingsai.io"; // URL เซิร์ฟเวอร์

ถ่านประทับเวลา[10];

WiFiMulti WiFi Multi;

// ใช้คลาส WiFiClient เพื่อสร้างการเชื่อมต่อ TCP

ไคลเอนต์ WiFiClient;

///////////////////////////////////// การประทับเวลา

ฟังก์ชันการคำนวณ/////////////////////////////////////

ภายใน GiveMeTimestamp()

{

ไม่ได้ลงนามยาว

หมดเวลา = มิลลิวินาที ();

// ไคลเอนต์ WiFiClient;

ในขณะที่

(client.available() == 0)

{

ถ้า (มิลลิวินาที () -

หมดเวลา > 50000)

{

client.stop();

กลับ 0;

}

}

ในขณะที่ (client.available())

{

เส้นสาย =

client.readStringUntil('\r'); //indexOf() เป็นฟังก์ชันสำหรับค้นหา smthng มันจะคืนค่า -1 หากไม่พบ

int pos =

line.indexOf("\"ประทับเวลา\""); //ค้นหา "\"ประทับเวลา\"" จากจุดเริ่มต้นของการตอบสนองที่ได้รับและคัดลอกข้อมูลทั้งหมดหลังจากนั้น จะเป็นการประทับเวลาของคุณ

ถ้า (pos >=

0)

{

int j = 0;สำหรับ(j=0;j<10;j++)

{เวลาประทับ[j] = บรรทัด[pos + 12 + j];

}

}

}

}

////////////////////////////////////////////////////////////////////////////////////////////////////////

การตั้งค่าเป็นโมฆะ ()

{Serial.begin(115200);

ล่าช้า(10);

tzset();

// เราเริ่มโดย

เชื่อมต่อกับเครือข่าย WiFiWiFiMulti.addAP("dlink_DWR-113", "madhukar66");

Serial.println();

Serial.println();Serial.print("รอ WiFi… ");ในขณะที่ (WiFiMulti.run () != WL_CONNECTED) {Serial.print(".");

ล่าช้า (500);

}Serial.println("");Serial.println ("เชื่อมต่อ WiFi");Serial.println("ที่อยู่ IP:");Serial.println(WiFi.localIP());

ล่าช้า (500);

}

uint8_t temp_farenheit;

ลอย temp_celsius;

ถ่าน strftime_buf[64];

time_t ตอนนี้ = 0;

โครงสร้าง tm timeinfo;

ถ่านบัฟ[256];

วงเป็นโมฆะ ()

{

// int analogValue =

analogRead (เอาต์พุต);

{

////////////////////////////////////// ส่งคำถามและ

ตอบกลับ/////////////////////

//

t1=(ค่าแอนะล็อก/1024.0) *5000;

//

Serial.print("อุณหภูมิ: ");

// Serial.println(t1);

/

/ t2=(t1/10);

//

Serial.print("celc: ");

//

Serial.println(t2);

/

/ t3=((t2 *

9)/5 + 32);

//

Serial.print("fhrn: ");

//

Serial.println(t3); //หยุดพัก;localtime_r(&ตอนนี้ &timeinfo);strftime(strftime_buf, sizeof(strftime_buf), "%c", &timeinfo);sprintf(buf, "เริ่มสแกน %02d:%02d:%02d ", timeinfo.tm_hour, timeinfo.tm_min, timeinfo.tm_sec);

Serial.print

(บัฟ);

temp_farenheit=

temprature_sens_read();

temp_celsius = (temp_farenheit - 32) / 1.8;Serial.print("อุณหภูมิบนบอร์ด");Serial.print(temp_farenheit);Serial.print("°F ");Serial.print(temp_celsius);Serial.println("°C");

ล่าช้า (1000);

ตอนนี้++;

Serial.print( กำลังเชื่อมต่อ

ถึง );Serial.println (โฮสต์); // กำหนด upside:- host = devapi2.thethingscloud.com หรือ 139.59.26.117

//////////////////////////////////// ตัวอย่างรหัสการประทับเวลา

/////////////////////////

Serial.println("inside get timestamp\n");

ถ้า

(!client.connect(time_server, {

กลับ;

//*-*-*-*-*-*-*-*-*-*

}client.println("GET /api/timestamp HTTP/1.1"); //ส่วนนี้ทำอะไรอยู่ ไม่เข้าใจclient.println("โฮสต์: baas.thethingscloud.com");client.println("การควบคุมแคช: ไม่มีแคช");client.println("บุรุษไปรษณีย์โทเค็น: ea3c18c6-09ba-d049-ccf3-369a22a284b8");

client.println();

GiveMeTimestamp(); //มันจะเรียก

ฟังก์ชั่นที่จะได้รับการตอบสนองการประทับเวลาจากเซิร์ฟเวอร์

Serial.println("ได้รับประทับเวลา");

Serial.println (ประทับเวลา);Serial.println("ภายใน ThingsCloudPost");

ค่า PostValue ของสตริง =

"{"device_id\": 61121695920, \"slave_id\": 2";

PostValue =

PostValue + ", \"dts\":" +การประทับเวลา;

PostValue =

PostValue +", \"data\":{"TEMP\":" + temp_farenheit +"}"+"}";Serial.println (PostValue);

/* สร้างอินสแตนซ์ของ WiFiClientSecure */

ไคลเอนต์ WiFiClientSecure;Serial.println("เชื่อมต่อกับเซิร์ฟเวอร์ผ่านพอร์ต 443");

ถ้า

(!client.connect(เซิร์ฟเวอร์ 443)){Serial.println("การเชื่อมต่อล้มเหลว!");

} อื่น {Serial.println("เชื่อมต่อกับเซิร์ฟเวอร์แล้ว!");

/* สร้าง

ขอ */client.println("POST /devices/deviceData HTTP/1.1");client.println("โฮสต์: api.thingsai.io");//client.println("การเชื่อมต่อ: ปิด");client.println("ประเภทเนื้อหา: แอปพลิเคชัน/json");client.println("การควบคุมแคช: ไม่มีแคช");client.println("การอนุญาต: ผู้ถือ eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2PykXs9Pt5"client.print("เนื้อหา-ความยาว: ");client.println(PostValue.length());client.println();client.println(PostValue);

//////////////////////////////////โพสต์ข้อมูลบน

คลาวด์เสร็จแล้วและตอนนี้ได้รับแบบฟอร์มตอบกลับเซิร์ฟเวอร์คลาวด์/////////////////

Serial.print( กำลังรอ

สำหรับการตอบสนอง );

ในขณะที่

(!client.available()){

ล่าช้า (50);

//Serial.print(".");

}

/* ถ้าข้อมูลเป็น

พร้อมรับและพิมพ์ไปที่ Terminal */

ในขณะที่

(client.available()) {

ถ่าน c =

client.read();Serial.write(c);

}

/* ถ้า

เซิร์ฟเวอร์ถูกตัดการเชื่อมต่อ หยุดไคลเอนต์ */

ถ้า

(!client.connected()) {Serial.println();Serial.println("เซิร์ฟเวอร์ถูกตัดการเชื่อมต่อ");

client.stop();

}

}

Serial.println( //////////////////// สิ้นสุด

///////////////////// );

ล่าช้า (3000);

}

}

ขั้นตอนที่ 4: ผลลัพธ์:

เอาท์พุท
เอาท์พุท

นี่คือผลลัพธ์ของค่าอุณหภูมิที่อ่านได้จากเซ็นเซอร์

ขั้นตอนที่ 5: กราฟ:

กราฟ
กราฟ
กราฟ
กราฟ

การแสดงค่าแบบกราฟิกที่อ่านจากเซ็นเซอร์อุณหภูมิออนบอร์ด

แนะนำ: