Inhoudsopgave:
Video: Bewegingsdetector met behulp van Thingsai.io Iot Cloud Platform - Ajarnpa
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
In deze tutorial ga ik uitleggen over bewegingsdetectie met behulp van een PIR-sensor en Esp32 samen met een IOT-cloudplatform Thingai.io
Stap 1: Componenten
HARDWARE ONDERDELEN;
1.esp32 Ontwikkelingsbord
2. PIR-sensor
3. Doorverbindingsdraden
SOFTWARE:
1. Arduino IDE
2. Thingsai.io-account
Stap 2: VERBINDINGEN
De aansluitingen zijn stil eenvoudig.
PIR PINS ------------ ESP32 PINS
VCC-------------------3V3 op esp32
GND ------------------ GND op esp32
UIT ------------------- D22 op esp32
Stap 3: CODEREN
Plak deze code in je Arduino IDE met wat update, je bewegingssensor geeft de uitvoer foutloos.
#erbij betrekken
#erbij betrekken
#erbij betrekken
int telling=0, i, m, j, k;
int t, t1, t2, t3;
int-pin = 22;
//////////////////////////////////////// ALLE VERKLARINGEN voor CLOUD ////// ////////////////////////
const char* host = "api.thingsai.io"; // OF host = devapi2.thethingscloud.com
const char* post_url = "/devices/deviceData"; // OF /api/v2/thingscloud2/_table/data_ac
const char* time_server = "baas.thethingscloud.com"; //dit is om de tijdstempel te converteren
const int httpPort = 80;
const int httpsPort = 443;
const char* server = "api.thingsai.io"; // Server-URL
char tijdstempel [10];
WiFiMulti WiFiMulti;
// Gebruik de WiFiClient-klasse om TCP-verbindingen te maken
WiFiClient-client;
/////////////////////////////////////// TIMESTAMP BEREKENING functie//////// ///////////////////////////////
int GiveMeTimestamp()
{
niet-ondertekende lange time-out = millis();
// WiFiClient-client;
while (client.available() == 0)
{
if (millis() - time-out > 50000)
{
klant.stop();
retourneer 0;
}
}
terwijl (client.available())
{
String line = client.readStringUntil('\r'); //indexOf() is een functie om te zoeken naar smthng, het retourneert -1 indien niet gevonden
int pos = line.indexOf("\"tijdstempel\""); // zoek naar "\"timestamp\"" vanaf het begin van het antwoord kreeg en kopieer daarna alle gegevens, dit is uw tijdstempel
als (pos >= 0)
{
intj = 0;
voor(j=0;j<10;j++)
{
tijdstempel [j] = regel [pos + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
ongeldige setup()
{
Serieel.begin(115200);
vertraging(10);
pinMode (pin, INGANG);
// We beginnen door verbinding te maken met een wifi-netwerk
WiFiMulti.addAP("wifi_name", "Wifi_password");
Serieel.println();
Serieel.println();
Serial.print("Wacht op wifi… ");
while(WiFiMulti.run() != WL_CONNECTED) {
Serieel.print(".");
vertraging (500);
}
Serieel.println("");
Serial.println("WiFi verbonden");
Serial.println("IP-adres: ");
Serial.println(WiFi.localIP());
vertraging (500);
}
lege lus()
{
int analogValue = analogRead (outputpin);
{
/////////////////////////////////////// STUUR DE QUERY EN ONTVANG DE ANTWOORD//// ///////////////////
{
bool is gedetecteerd = digitalRead (pin);
als (is gedetecteerd){
Serial.println("Aanwezigheid gedetecteerd");
}
vertraging (500);
}
Serial.print("verbinden met ");
Serieel.println(host); // gedefinieerde bovenkant: - host = devapi2.thethingscloud.com of 139.59.26.117
///////////////////////////////////// TIJDSTEMPEL CODESNIPPET ////////// ///////////////
Serial.println("inside get timestamp\n");
if (!client.connect(time_server, {
opbrengst; //*-*-*-*-*-*-*-*-*-*
}
client.println ("GET /api/timestamp HTTP/1.1"); // Wat doet dit deel, ik heb het niet begrepen
client.println("Host: baas.thethingscloud.com");
client.println("Cache-Control: no-cache");
client.println ("Postbode-token: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
klant.println();
GeefMeTijdstempel(); // het zal de functie aanroepen die de tijdstempelreactie van de server zal krijgen
Serial.println("tijdstempel ontvangen");
Serial.println (tijdstempel);
Serial.println ("inside ThingsCloudPost");
String PostValue = "{"device_id\": 61121695839, \"slave_id\": 2";
PostValue = PostValue + ", \"dts\":" +tijdstempel;
PostValue = PostValue +", \"data\":{"PIR\":" + pin +"}"+"}";
Serial.println(PostValue);
/* maak een instantie van WiFiClientSecure */
WiFiClientSecure-client;
Serial.println("Verbind met server via poort 443");
if (!client.connect(server, 443)){
Serial.println("Verbinding mislukt!");
} anders {
Serial.println("Verbonden met server!");
/* HTTP-verzoek maken */
client.println( POST /devices/deviceData
client.println("Host: api.thingsai.io");
//client.println ("Verbinding: sluiten");
client.println ("Inhoudstype: applicatie/json");
client.println("cache-control: no-cache");
client.println("Autorisatie: Drager eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2PNTk6");
client.print ("Inhoudslengte: ");
client.println(PostValue.length());
klant.println();
cliënt.println(PostValue);
//////////////////////////////////Het plaatsen van de gegevens in de cloud is voltooid en ontvang nu het reactieformulier cloud server//////////////////
Serial.print("Wachten op antwoord ");
while (!client.available()){
vertraging (50); //
Serieel.print(".");
}
/* als gegevens beschikbaar zijn, ontvangen en afdrukken naar Terminal */
while (client.available()) {
char c = cliënt.lezen();
Serieel.schrijven(c);
}
/* als de server de verbinding heeft verbroken, stop de client */
if (!client.connected()) {
Serieel.println();
Serial.println("Server verbroken");javascript:;
klant.stop();
}
}
Serial.println("////////////////////// HET EINDE ///////////////////// ");
vertraging (3000);
}
}
Stap 4: UITGANG
Dit is de staafgrafiekweergave van de waarden die worden afgelezen van de sensor in het thingsai, io cloudplatform,
Stap 5: Grafiek
Dit is de grafische weergave van de waarden van de sensor. Uit de bovenstaande grafiek kunnen we de toepassing van de sensor analyseren. Bedankt