Sisällysluettelo:
Video: Liikeilmaisin Thingsai.io Iot -pilvialustan avulla: 6 vaihetta
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Tässä opetusohjelmassa aion selittää liiketunnistuksen käyttämällä PIR -anturia ja Esp32: ta yhdessä IOT -pilvialustan Thingai.io kanssa
Vaihe 1: Komponentit
LAITTEISTON KOMPONENTIT;
1.esp32 Kehityslautakunta
2. PIR -anturi
3. Hyppyjohdot
OHJELMISTO:
1. Arduino IDE
2. Thingsai.io -tili
Vaihe 2: LIITÄNNÄT
Liitännät ovat yksinkertaisia ja hiljaisia.
PIR PINS ------------ ESP32 PINS
VCC ------------------- 3V3 esp32: ssa
GND ------------------ GND esp32: ssa
OUT ------------------- D22 esp32: ssa
Vaihe 3: KOODAUS
Liitä tämä koodi Arduino IDE -laitteeseesi jonkin verran päivitystä, liikeanturi antaa ulostulon virheettömästi.
#sisältää
#sisältää
#sisältää
int -luku = 0, i, m, j, k;
int t, t1, t2, t3;
int nasta = 22;
///////////////////////////////////////////////////////////////////// KAIKKI ILMOITUKSET PILVILLE ////// /////////////////////////
const char* isäntä = "api.thingsai.io"; // TAI isäntä = devapi2.thethingscloud.com
const char* post_url = "/devices/deviceData"; // TAI/api/v2/thingscloud2/_table/data_ac
const char* time_server = "baas.thethingscloud.com"; // tämä on aikaleiman muuntaminen
const int httpPort = 80;
const int httpsPort = 443;
const char* palvelin = "api.thingsai.io"; // Palvelimen URL -osoite
char -aikaleima [10];
WiFiMulti WiFiMulti;
// Käytä WiFiClient -luokkaa TCP -yhteyksien luomiseen
WiFiClient -asiakas;
///////////////////////////////////////////////////////////////////// AIKAISLEIMAN LASKELU -funktio //////// ////////////////////////////////
int GiveMeTimestamp ()
{
unsigned long timeout = millis ();
// WiFiClient -asiakas;
kun taas (client.available () == 0)
{
jos (millis () - aikakatkaisu> 50000)
{
client.stop ();
palauta 0;
}
}
kun taas (client.available ())
{
Merkkijono = client.readStringUntil ('\ r'); // indexOf () on smthng -hakutoiminto, se palauttaa -1, jos sitä ei löydy
int pos = line.indexOf ("\" aikaleima / ""); // etsi "\" aikaleima / "" vastauksen alusta ja kopioi kaikki tiedot sen jälkeen, se on aikaleimasi
jos (pos> = 0)
{
int j = 0;
(j = 0; j <10; j ++)
{
aikaleima [j] = rivi [pos + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
mitätön asennus ()
{
Sarja.alku (115200);
viive (10);
pinMode (pin, INPUT);
// Aloitamme muodostamalla yhteyden WiFi -verkkoon
WiFiMulti.addAP ("wifi_nimi", "Wifi_salasana");
Sarja.println ();
Sarja.println ();
Serial.print ("Odota WiFi -yhteyttä …");
while (WiFiMulti.run ()! = WL_CONNECTED) {
Serial.print (".");
viive (500);
}
Serial.println ("");
Serial.println ("WiFi -yhteys");
Serial.println ("IP -osoite:");
Serial.println (WiFi.localIP ());
viive (500);
}
tyhjä silmukka ()
{
int analogValue = analogRead (outputpin);
{
////////////////////////////////////////////////////// LÄHETÄ KYSYMYS JA VASTAA VASTAUS ////////////////////
{
bool isDetected = digitalRead (pin);
if (isDetected) {
Serial.println ("Läsnäolo havaittu");
}
viive (500);
}
Serial.print ("yhdistäminen");
Serial.println (isäntä); // määritelty ylösalaisin:- isäntä = devapi2.thethingscloud.com tai 139.59.26.117
/////////////////////////////////////////////////////////////////////////////////////////////// ////////////////
Serial.println ("inside get timestamp / n");
if (! client.connect (aikapalvelin, {
palata; //*-*-*-*-*-*-*-*-*-*
}
client.println ("GET/api/aikaleima HTTP/1.1"); // Mitä tämä osa tekee, en saanut
client.println ("Isäntä: baas.thethingscloud.com");
client.println ("Välimuistin hallinta: ei välimuistia");
client.println ("Postimies-tunnus: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
client.println ();
GiveMeTimestamp (); // se kutsuu funktion, joka saa aikaleiman vastauksen palvelimelta
Serial.println ("aikaleima vastaanotettu");
Serial.println (aikaleima);
Serial.println ("sisällä ThingsCloudPost");
Merkkijono PostValue = "{" device_id / ": 61121695839, \" slave_id / ": 2";
Postiarvo = Postiarvo + ", \" dts / ":" + aikaleima;
Postiarvo = Postiarvo +", \" data / ": {" PIR / ":" +nasta +"}" +"}";
Serial.println (PostValue);
/ * luo WiFiClientSecure -ilmentymä */
WiFiClientSecure -asiakas;
Serial.println ("Yhdistä palvelimeen portin 443 kautta");
if (! client.connect (palvelin, 443)) {
Serial.println ("Yhteys epäonnistui!");
} muuta {
Serial.println ("Yhdistetty palvelimeen!");
/ * luo HTTP -pyyntö */
client.println ( POST/devices/deviceData
client.println ("Isäntä: api.thingsai.io");
//asiakas.println ("Yhteys: sulje");
client.println ("Sisältötyyppi: application/json");
client.println ("cache-control: no-cache");
client.println ( Valtuutus: Siirtotie eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqs2f2x2x2X2K2KWDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
client.print ("Content-Length:");
client.println (PostValue.length ());
client.println ();
client.println (PostValue);
////////////////////////////////////////////////// Tietojen julkaiseminen pilveen on valmis ja nyt saat vastauslomakkeen pilvi palvelin ////////////////////
Serial.print ("Odotetaan vastausta");
while (! client.available ()) {
viive (50); //
Serial.print (".");
}
/ * jos tietoja on saatavilla, vastaanota ja tulosta päätelaitteeseen */
while (client.available ()) {
char c = asiakas.luku ();
Serial.write (c);
}
/ * jos palvelimen yhteys katkeaa, pysäytä asiakas */
jos (! client.connected ()) {
Sarja.println ();
Serial.println ("Palvelin irrotettu"); javascript:;
client.stop ();
}
}
Serial.println ("////////////////////// LOPPU //////////////////// ");
viive (3000);
}
}
Vaihe 4: LÄHTÖ
Tämä on pylväsdiagrammi anturista luetuista arvoista Thingsai, io -pilvialustalla,
Vaihe 5: Kaavio
Tämä on graafinen esitys anturin arvoista. Yllä olevasta kaaviosta voimme analysoida anturin käyttöä. Kiitos