Πίνακας περιεχομένων:
Βίντεο: Ανιχνευτής κίνησης με χρήση πλατφόρμας cloud Thingsai.io Iot: 6 βήματα
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2025-01-13 06:57
Σε αυτό το σεμινάριο θα εξηγήσω για την ανίχνευση κίνησης χρησιμοποιώντας έναν αισθητήρα 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: Γράφημα
Αυτή είναι η γραφική αναπαράσταση των τιμών από τον αισθητήρα. Από το παραπάνω γράφημα μπορούμε να αναλύσουμε την εφαρμογή του αισθητήρα. Σας ευχαριστώ