Πίνακας περιεχομένων:

Ανιχνευτής κίνησης με χρήση πλατφόρμας cloud Thingsai.io Iot: 6 βήματα
Ανιχνευτής κίνησης με χρήση πλατφόρμας cloud Thingsai.io Iot: 6 βήματα

Βίντεο: Ανιχνευτής κίνησης με χρήση πλατφόρμας cloud Thingsai.io Iot: 6 βήματα

Βίντεο: Ανιχνευτής κίνησης με χρήση πλατφόρμας cloud Thingsai.io Iot: 6 βήματα
Βίντεο: Как Блокчейн Может Принести Пользу Пищевой Промышленности И Цепочкам Поставок 2024, Δεκέμβριος
Anonim
Ανιχνευτής κίνησης χρησιμοποιώντας την πλατφόρμα σύννεφων Thingsai.io Iot
Ανιχνευτής κίνησης χρησιμοποιώντας την πλατφόρμα σύννεφων Thingsai.io Iot

Σε αυτό το σεμινάριο θα εξηγήσω για την ανίχνευση κίνησης χρησιμοποιώντας έναν αισθητήρα PIR και Esp32 μαζί με μια πλατφόρμα cloud IOT Thingai.io

Βήμα 1: Στοιχεία

Συστατικά
Συστατικά
Συστατικά
Συστατικά

ΣΥΣΤΑΤΙΚΑ HARDWARE;

1.esp32 Πίνακας Ανάπτυξης

2. Αισθητήρας PIR

3. Jumper Wires

ΛΟΓΙΣΜΙΚΟ:

1. Arduino IDE

2. Λογαριασμός Thingsai.io

Βήμα 2: ΣΥΝΔΕΣΕΙΣ

ΣΥΝΔΕΣΕΙΣ
ΣΥΝΔΕΣΕΙΣ

Οι συνδέσεις είναι ήσυχες απλές.

PIN PIN ------------ ESP32 PIN

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"; // host 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 διακομιστή

timestamp char [10]?

WiFiMulti WiFiMulti;

// Χρησιμοποιήστε την κλάση WiFiClient για να δημιουργήσετε συνδέσεις TCP

Πελάτης WiFiClient.

//////////////////////////////////////// Λειτουργία TIMESTAMP CALCULATION ///////// /////////////////////////////////

int GiveMeTimestamp ()

{

unsigned long timeout = millis ();

// πελάτης WiFiClient.

while (client.available () == 0)

{

εάν (millis () - χρονικό όριο> 50000)

{

client.stop ();

επιστροφή 0?

}

}

while (client.available ())

{

String line = client.readStringUntil ('\ r'); // indexOf () είναι μια λειτουργία αναζήτησης για smthng, επιστρέφει -1 αν δεν βρεθεί

int pos = line.indexOf ("\" timestamp / ""); // αναζήτηση για "\" timestamp / "" από την αρχή της απόκρισης και αντιγράψτε όλα τα δεδομένα μετά από αυτό, θα είναι η χρονική σήμανση σας

αν (pos> = 0)

{

int j = 0;

για (j = 0; j <10; j ++)

{

χρονική σήμανση [j] = γραμμή [pos + 12 + j];

}

}

}

}

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

void setup ()

{

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 (έξοδος εξόδου);

{

/////////////////////////////////////// ΣΤΕΙΛΤΕ ΤΟ ΕΡΩΤΗΜΑ ΚΑΙ ΛΑΒΕΤΕ ΤΗΝ ΑΠΑΝΤΗΣΗ //// /////////////////////

{

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 (time_server, {

ΕΠΙΣΤΡΟΦΗ; //*-*-*-*-*-*-*-*-*-*-*

}

client.println ("GET/api/timestamp HTTP/1.1"); // Τι κάνει αυτό το μέρος, δεν κατάλαβα

client.println ("Host: 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 / ":" + χρονική σήμανση;

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 ("Host: api.thingsai.io");

//client.println("Σύνδεση: κλείσιμο ");

client.println ("Τύπος περιεχομένου: εφαρμογή/json");

client.println ("cache-control: no-cache");

client.println ("Άδεια: Ανώνυμες eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2PNTkXs9PKy6_m9tdW5AG7ajfVlY")?

client.print ("Περιεχόμενο-Μήκος:");

client.println (PostValue.length ());

client.println ();

client.println (PostValue);

/////////////////////////////////// ΑΠΟΣΤΟΛΗ των δεδομένων στο cloud έχει γίνει και τώρα λάβετε τη φόρμα απόκρισης cloud υπηρέτης//////////////////

Serial.print ("Αναμονή για απάντηση");

ενώ (! client.available ()) {

καθυστέρηση (50)? //

Serial.print (".");

}

/ * εάν τα δεδομένα είναι διαθέσιμα, λάβετε και εκτυπώστε στο τερματικό */

while (client.available ()) {

char c = client.read ();

Serial.write (c);

}

/ * εάν ο διακομιστής είναι αποσυνδεδεμένος, διακόψτε τον πελάτη */

εάν (! client.connected ()) {

Serial.println ();

Serial.println ("Ο διακομιστής αποσυνδέθηκε"); javascript:;

client.stop ();

}

}

Serial.println ("///////////////////// ΤΕΛΟΣ //////////////////// ");

καθυστέρηση (3000)?

}

}

Βήμα 4: ΕΞΟΔΟΣ

ΠΑΡΑΓΩΓΗ
ΠΑΡΑΓΩΓΗ

Αυτή είναι η αναπαράσταση του γραφήματος ράβδων των τιμών που διαβάζονται από τον αισθητήρα στην πλατφόρμα clouds things, io,

Βήμα 5: Γράφημα

Γραφική παράσταση
Γραφική παράσταση

Αυτή είναι η γραφική αναπαράσταση των τιμών από τον αισθητήρα. Από το παραπάνω γράφημα μπορούμε να αναλύσουμε την εφαρμογή του αισθητήρα. Σας ευχαριστώ

Συνιστάται: