สารบัญ:
- ขั้นตอนที่ 1: ส่วนประกอบ:
- ขั้นตอนที่ 2: การแสดง BLOCK DIAGRAM ของ Esp32
- ขั้นตอนที่ 3: การเข้ารหัส:
- ขั้นตอนที่ 4: ผลลัพธ์:
- ขั้นตอนที่ 5: กราฟ:
- ขั้นตอนที่ 6:
วีดีโอ: การวัดอุณหภูมิโดยใช้แพลตฟอร์ม Esp32 และ Thingsio.ai: 6 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:06
ในบทช่วยสอนนี้ ฉันจะอธิบายเกี่ยวกับการวัดอุณหภูมิในสภาพแวดล้อมโดยรอบโดยใช้เซ็นเซอร์อุณหภูมิในตัวที่มีอยู่ในบอร์ดพัฒนา esp32 esp32 มีเซ็นเซอร์ในตัวมากมาย เช่น เซ็นเซอร์ฮอลล์ที่ใช้เป็นเซ็นเซอร์ระยะใกล้ เซ็นเซอร์สัมผัส เซ็นเซอร์อุณหภูมิ ในบทช่วยสอนนี้ เราจะพูดถึงเกี่ยวกับเซ็นเซอร์อุณหภูมิ
ขั้นตอนที่ 1: ส่วนประกอบ:
ฮาร์ดแวร์:
บอร์ดพัฒนา 1.esp32
ซอฟต์แวร์:
1. Arduino IDE
2. Thingsio.ai
ขั้นตอนที่ 2: การแสดง BLOCK DIAGRAM ของ 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: กราฟ:
การแสดงค่าแบบกราฟิกที่อ่านจากเซ็นเซอร์อุณหภูมิออนบอร์ด
แนะนำ:
ติดตาม: ศูนย์สื่อขั้นสูงพร้อม Odroid N2 และ Kodi (รองรับ 4k และ HEVC): 3 ขั้นตอน
ติดตาม: Advanced Media Center พร้อม Odroid N2 และ Kodi (รองรับ 4k และ HEVC): บทความนี้เป็นบทความต่อจากบทความก่อนหน้าของฉันที่ประสบความสำเร็จค่อนข้างมากเกี่ยวกับการสร้างศูนย์สื่ออเนกประสงค์ โดยอ้างอิงจาก Raspberry PI ที่ได้รับความนิยมมากในตอนแรก แต่ ในภายหลัง เนื่องจากไม่มีเอาต์พุตที่สอดคล้องกับ HEVC, H.265 และ HDMI 2.2 จึงมีสวิตช์
Blinds Control ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: 5 ขั้นตอน (พร้อมรูปภาพ)
การควบคุมมู่ลี่ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: ในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นว่าฉันเพิ่มระบบอัตโนมัติให้กับมู่ลี่ของฉันอย่างไร ฉันต้องการเพิ่มและลบระบบอัตโนมัติได้ ดังนั้นการติดตั้งทั้งหมดจึงเป็นแบบหนีบ ส่วนหลักคือ: สเต็ปเปอร์มอเตอร์ ตัวขับสเต็ปควบคุม bij ESP-01 เกียร์และการติดตั้ง
DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: 3 ขั้นตอน
DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: Story A beacon จะส่งสัญญาณอย่างต่อเนื่องเพื่อให้อุปกรณ์บลูทู ธ อื่น ๆ รู้ว่ามีอยู่ และฉันอยากได้บีคอนบลูทูธเพื่อติดตามกุญแจมาตลอด เพราะฉันลืมเอามันมาเหมือน 10 ครั้งในปีที่แล้ว และฉันก็เกิดขึ้น
RuuviTag และ PiZero W และ Blinkt! เทอร์โมมิเตอร์แบบ Bluetooth Beacon: 3 ขั้นตอน (พร้อมรูปภาพ)
RuuviTag และ PiZero W และ Blinkt! เครื่องวัดอุณหภูมิที่ใช้ Bluetooth Beacon: คำแนะนำนี้อธิบายวิธีการอ่านข้อมูลอุณหภูมิและความชื้นจาก RuuviTag โดยใช้ Bluetooth กับ Raspberry Pi Zero W และเพื่อแสดงค่าเป็นเลขฐานสองบน Pimoroni กะพริบตา! pHAT.หรือเรียกสั้นๆ ว่า จะสร้างสถานะอย่างไร
การวัดปริมาณความชื้นในดินโดยใช้แพลตฟอร์ม Esp32 และ Thingsio.ai: 6 ขั้นตอน
การวัดปริมาณความชื้นในดินโดยใช้แพลตฟอร์ม Esp32 และ Thingsio.ai: ในบทช่วยสอนนี้ ฉันจะอธิบายเกี่ยวกับการอ่านปริมาณความชื้นในดินโดยใช้ esp32 แล้วส่งค่าไปยังแพลตฟอร์มคลาวด์ของ thingsio.ai IoT