جدول المحتويات:
فيديو: كاشف الحركة باستخدام منصة Thingsai.io Iot السحابية: 6 خطوات
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
سأشرح في هذا البرنامج التعليمي اكتشاف الحركة باستخدام مستشعر PIR و Esp32 جنبًا إلى جنب مع منصة سحابة IOT Thingai.io
الخطوة 1: المكونات
مكونات الأجهزة؛
1.esp32 مجلس التنمية
2. PIR الاستشعار
3. أسلاك العبور
البرمجيات:
1. Arduino IDE
2. حساب Thingsai.io
الخطوة 2: التوصيلات
الاتصالات هادئة وبسيطة.
دبابيس البير ------------ دبابيس ESP32
VCC ------------------- 3V3 على esp32
GND ------------------ GND على esp32
خارج ------------------- D22 على esp32
الخطوة 3: البرمجة
الصق هذا الرمز في Arduino IDE الخاص بك مع بعض التحديث ، سيعطي مستشعر الحركة الخاص بك الإخراج بلا عيب.
#يشمل
#يشمل
#يشمل
عدد صحيح = 0 ، أنا ، م ، ي ، ك ؛
int t ، t1 ، t2 ، t3 ؛
دبوس int = 22 ؛
////////////////////////////////////////// جميع التصريحات عن CLOUD ////// //////////////////////////
const char * host = "api.thingsai.io" ؛ // OR host = 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 للخادم
الطابع الزمني char [10] ؛
WiFi متعدد WiFi متعدد ؛
// استخدم فئة WiFiClient لإنشاء اتصالات TCP
عميل WiFiClient ؛
///////////////////////////////////////// TIMESTAMP CALCULATION وظيفة //////// /////////////////////////////////
int GiveMeTimestamp ()
{
مهلة طويلة بدون توقيع = مللي () ؛
// عميل WiFiClient ؛
بينما (client.available () == 0)
{
إذا (بالمللي () - المهلة> 50000)
{
client.stop () ؛
العودة 0 ؛
}
}
بينما (client.available ())
{
String line = client.readStringUntil ('r') ؛ // indexOf () هي وظيفة للبحث عن smthng ، وتعيد -1 إذا لم يتم العثور عليها
int pos = line.indexOf ("\" الطابع الزمني / "") ؛ // ابحث عن "\" timestamp / "" من بداية الرد ونسخ جميع البيانات بعد ذلك ، سيكون طابعك الزمني
إذا (نقاط البيع> = 0)
{
int j = 0 ؛
لـ (j = 0 ؛ j <10 ؛ j ++)
{
الطابع الزمني [j] = الخط [نقطة البيع + 12 + ي] ؛
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
الإعداد باطل()
{
Serial.begin (115200) ؛
تأخير (10) ؛
pinMode (دبوس ، المدخلات) ؛
// نبدأ بالاتصال بشبكة 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) ؛
إذا (تم اكتشافه) {
Serial.println ("تم اكتشاف وجود") ؛
}
تأخير (500) ؛
}
Serial.print ("الاتصال بـ") ؛
Serial.println (مضيف) ؛ // المعرف الصاعد: - host = devapi2.thethingscloud.com أو 139.59.26.117
/////////////////////////////////////// TIMESTAMP CODE SNIPPET ////////// /////////////////
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 ("Postman-Token: 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 / ":" + timestamp؛
PostValue = PostValue + "، \" data / ": {" PIR / ":" + pin + "}" + "}"؛
Serial.println (PostValue) ؛
/ * إنشاء مثيل WiFiClientSecure * /
عميل WiFiClientSecure ؛
Serial.println ("الاتصال بالخادم عبر المنفذ 443") ؛
إذا (! client.connect (الخادم ، 443)) {
Serial.println ("فشل الاتصال!") ؛
} آخر {
Serial.println ("متصل بالخادم!") ؛
/ * إنشاء طلب HTTP * /
client.println ("POST / devices / deviceData HTTP / 1.1") ؛
client.println ("المضيف: api.thingsai.io") ؛
//client.println("Connection: close ") ؛
client.println ("نوع المحتوى: application / json") ؛
client.println ("cache-control: no-cache") ؛
client.println ( التفويض: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqm9PNTk6
client.print ("طول المحتوى:") ؛
client.println (PostValue.length ()) ،
client.println () ،
client.println (PostValue) ؛
////////////////////////////////// تم الانتهاء من نشر البيانات على السحابة والحصول الآن على نموذج الاستجابة السحابية الخادم//////////////////
Serial.print ("في انتظار الرد") ؛
بينما (! client.available ()) {
تأخير (50) ؛ //
Serial.print (".") ؛
}
/ * إذا كانت البيانات متاحة ، فاستلم وطبع إلى Terminal * /
بينما (client.available ()) {
char c = client.read () ؛
Serial.write (ج) ؛
}
/ * إذا تم قطع اتصال الخادم ، أوقف العميل * /
إذا (! client.connected ()) {
Serial.println () ،
Serial.println ("الخادم غير متصل") ؛ javascript:؛
client.stop () ؛
}
}
Serial.println ("//////////////////////// THE END ///////////////////// ") ؛
تأخير (3000) ؛
}
}
الخطوة 4: الإخراج
هذا هو تمثيل الرسم البياني الشريطي للقيم التي تمت قراءتها من المستشعر في منصة Thingsai ، io cloud ،
الخطوة 5: الرسم البياني
هذا هو التمثيل الرسومي للقيم من المستشعر. من الرسم البياني أعلاه يمكننا تحليل تطبيق المستشعر. اشكرك