สารบัญ:

เครื่องตรวจจับความเคลื่อนไหวโดยใช้แพลตฟอร์ม Thingsai.io Iot Cloud: 6 ขั้นตอน
เครื่องตรวจจับความเคลื่อนไหวโดยใช้แพลตฟอร์ม Thingsai.io Iot Cloud: 6 ขั้นตอน

วีดีโอ: เครื่องตรวจจับความเคลื่อนไหวโดยใช้แพลตฟอร์ม Thingsai.io Iot Cloud: 6 ขั้นตอน

วีดีโอ: เครื่องตรวจจับความเคลื่อนไหวโดยใช้แพลตฟอร์ม Thingsai.io Iot Cloud: 6 ขั้นตอน
วีดีโอ: Tuya Zigbee PIR Motion Sensor JMPIR01 ตรวจจับความเคลื่อนไหวเชื่อมต่อ SmartLife 2024, พฤศจิกายน
Anonim
เครื่องตรวจจับความเคลื่อนไหวโดยใช้ Thingsai.io Iot Cloud Platform
เครื่องตรวจจับความเคลื่อนไหวโดยใช้ Thingsai.io Iot Cloud Platform

ในบทช่วยสอนนี้ ฉันจะอธิบายเกี่ยวกับการตรวจจับการเคลื่อนไหวโดยใช้เซ็นเซอร์ PIR และ Esp32 ร่วมกับแพลตฟอร์มคลาวด์ IOT Thingai.io

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

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

ส่วนประกอบฮาร์ดแวร์

1.esp32 คณะกรรมการพัฒนา

2.เซ็นเซอร์ PIR

3. สายจัมเปอร์

ซอฟต์แวร์:

1. Arduino IDE

2. บัญชี Thingsai.io

ขั้นตอนที่ 2: การเชื่อมต่อ

การเชื่อมต่อ
การเชื่อมต่อ

การเชื่อมต่อนั้นเรียบง่าย

PIR PINS -------------- ESP32 PINS

VCC ----- 3V3 บน esp32

GND -------------------- GND บน esp32

ออก ----- D22 บน esp32

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

วางโค้ดนี้ลงใน Arduino IDE ของคุณด้วยการอัพเดต เซ็นเซอร์ตรวจจับความเคลื่อนไหวจะให้ผลลัพธ์ที่ไร้ที่ติ

#รวม

#รวม

#รวม

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

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

int พิน = 22;

/////////////////////////////////////// ประกาศทั้งหมดสำหรับ CLOUD ////// ///////////////////////

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

const char* post_url = "/devices/deviceData"; // หรือ /api/v2/thingscloud2/_table/data_ac

const char* 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()

{

หมดเวลานานที่ไม่ได้ลงนาม = millis();

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

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

{

ถ้า (มิลลิวินาที () - หมดเวลา > 50000)

{

client.stop();

กลับ 0;

}

}

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

{

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

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

ถ้า (ตำแหน่ง >= 0)

{

int j = 0;

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

{

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

}

}

}

}

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

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

{

Serial.begin(115200);

ล่าช้า(10);

pinMode(พิน, INPUT);

// เราเริ่มต้นด้วยการเชื่อมต่อกับเครือข่าย WiFi

WiFiMulti.addAP("wifi_name", "Wifi_password");

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);

}

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

{

int analogValue = analogRead (เอาต์พุต);

{

////////////////////////////////////// ส่งคำถามและรับคำตอบ//// //////////////////

{

bool isDetected = digitalRead (พิน);

ถ้า (ถูกตรวจพบ){

Serial.println("ตรวจพบการมีอยู่");

}

ล่าช้า (500);

}

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\": 61121695839, \"slave_id\": 2";

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

PostValue = PostValue +", \"data\":{"PIR\":" + pin +"}"+"}";

Serial.println (PostValue);

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

ไคลเอนต์ WiFiClientSecure;

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

if (!client.connect(เซิร์ฟเวอร์, 443)){

Serial.println("การเชื่อมต่อล้มเหลว!");

} อื่น {

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

/* สร้างคำขอ HTTP */

client.println( POST /devices/deviceData

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("เซิร์ฟเวอร์ถูกตัดการเชื่อมต่อ");javascript:;

client.stop();

}

}

Serial.println("////////////////////// สิ้นสุด //////////////////// ");

ล่าช้า (3000);

}

}

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

ผลผลิต
ผลผลิต

นี่คือการแสดงกราฟแท่งของค่าที่อ่านจากเซ็นเซอร์ใน Thingsai แพลตฟอร์มคลาวด์ io

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

กราฟ
กราฟ

นี่คือการแสดงค่าแบบกราฟิกจากเซ็นเซอร์ จากกราฟข้างต้น เราสามารถวิเคราะห์การใช้งานเซ็นเซอร์ได้ ขอบคุณ

แนะนำ: