תוכן עניינים:
וִידֵאוֹ: גלאי תנועה באמצעות Thingsai.io Iot Cloud Platform: 6 שלבים
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-13 06:57
במדריך זה אני הולך להסביר על זיהוי תנועה באמצעות חיישן PIR ו- Esp32 יחד עם פלטפורמת ענן IOT Thingai.io
שלב 1: רכיבים
רכיבי חומרה;
1. מועצת הפיתוח שלesp32
2. חיישן PIR
3. חוטי מגשר
תוכנה:
1. Arduino IDE
2. חשבון Thingsai.io
שלב 2: חיבורים
החיבורים שקטים ופשוטים.
PINS PIR ------------ ESP32 PINS
VCC ------------------- 3V3 ב- esp32
GND ------------------ GND ב- esp32
OUT ------------------- D22 ב- esp32
שלב 3: קידוד
הדבק את הקוד הזה ב- Arduino IDE שלך עם עדכון כלשהו, חיישן התנועה שלך ייתן את הפלט ללא רבב.
#לִכלוֹל
#לִכלוֹל
#לִכלוֹל
int count = 0, i, m, j, k;
int t, t1, t2, t3;
int pin = 22;
/////////////////////////// //////////////////////////
const char* host = "api.thingsai.io"; // OR מארח = devapi2.thethingscloud.com
const char* post_url = "/devices/deviceData"; // OR/api/v2/thingscloud2/_table/data_ac
const char* time_server = "baas.thethingscloud.com"; // זה כדי להמיר את חותמת הזמן
const int httpPort = 80;
const int httpsPort = 443;
const char* server = "api.thingsai.io"; // כתובת URL של השרת
חותמת זמן של צ'ארה [10];
WiFiMulti WiFiMulti;
// השתמש בכיתה WiFiClient ליצירת חיבורי TCP
לקוח WiFiClient;
////////////////////////////////////////// פונקציית חישוב זמן ////////////////////////////////////
int 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);
pinMode (pin, 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 (outputpin);
{
/////////////////////////////////// ////////////////////
{
bool isDetected = digitalRead (pin);
if (isDetected) {
Serial.println ("זיהוי נוכחות");
}
עיכוב (500);
}
Serial.print ("מתחבר אל");
Serial.println (מארח); // מוגדר כלפי מעלה:- host = devapi2.thethingscloud.com או 139.59.26.117
////////////////////////////////////////// SNIPPET CODE ////////////////
Serial.println ("בפנים חותמת זמן / n");
אם (! client.connect (שרת הזמן, {
לַחֲזוֹר; //*-*-*-*-*-*-*-*-*-*
}
client.println ("GET/api/timestamp HTTP/1.1"); // מה החלק הזה עושה, לא הבנתי
client.println ("מארח: baas.thethingscloud.com");
client.println ("Cache-Control: no-cache");
client.println ("אגרת דוור: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
client.println ();
GiveMeTimestamp (); // הוא יקרא לפונקציה שתקבל את תגובת חותמת הזמן מהשרת
Serial.println ("חותמת זמן התקבלה");
Serial.println (חותמת זמן);
Serial.println ("בתוך ThingsCloudPost");
String 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 ("cache-control: no-cache");
client.println ( הרשאה: נושאת eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2PNYs9k9y7y9y9s9y9k9y9c9y9c9y9c9y9c9p6y9c9y9c9y9c9y9c9p6y9c5j9J9JyJ9JyN9C9pK9y9YYYYYYN9CYPWzQy9J9yYyYNJC9pJ6y9JyJJJJJJJJ9JyJJ9JyJJJjJJJJJJJg
client.print ("אורך התוכן:");
client.println (PostValue.length ());
client.println ();
client.println (PostValue);
///////////////////////////////// שרת//////////////////
Serial.print ("מחכה לתגובה");
בעוד (! client.available ()) {
עיכוב (50); //
Serial.print (".");
}
/ * אם יש נתונים, קבל והדפס לטרמינל */
while (client.available ()) {
char c = client.read ();
Serial.write (ג);
}
/ * אם השרת נותק, עצור את הלקוח */
אם (! client.connected ()) {
Serial.println ();
Serial.println ("השרת מנותק"); javascript:;
client.stop ();
}
}
Serial.println ("////////////////////// END ////////////// ");
עיכוב (3000);
}
}
שלב 4: פלט
זהו ייצוג תרשים העמודים של הערכים הנקראים מהחיישן בפלטפורמת הענן Thingsai, io,
שלב 5: גרף
זהו הייצוג הגרפי של הערכים מהחיישן. מהגרף לעיל נוכל לנתח את היישום של החיישן. תודה