Motion Detector Using Thingsai.io Iot Cloud Platform
by kavya_vaskoty in Circuits > Electronics
515 Views, 3 Favorites, 0 Comments
Motion Detector Using Thingsai.io Iot Cloud Platform
![1.jpg](/proxy/?url=https://content.instructables.com/FRY/62DN/JQQYPZOT/FRY62DNJQQYPZOT.jpg&filename=1.jpg)
In this tutorial i am going to explain about motion detection by using a PIR sensor and Esp32 along with a IOT cloud platform Thingai.io
Components
![28747595-19a41090-7471-11e7-826c-42c28ea7ae6e.jpeg](/proxy/?url=https://content.instructables.com/FKN/ZECG/JR0YKLK7/FKNZECGJR0YKLK7.jpg&filename=28747595-19a41090-7471-11e7-826c-42c28ea7ae6e.jpeg)
![hc-sr501-pir-passive-infrared-sensor-motion-sensor-arduino-arelectronics-1709-23-F528300_1.jpg](/proxy/?url=https://content.instructables.com/FGT/FQ2I/JR0YKLK8/FGTFQ2IJR0YKLK8.jpg&filename=hc-sr501-pir-passive-infrared-sensor-motion-sensor-arduino-arelectronics-1709-23-F528300_1.jpg)
HARDWARE COMPONENTS;
1.esp32 Development Board
2.PIR Sensor
3. Jumper Wires
SOFTWARE :
1.Arduino IDE
2. Thingsai.io account
CONNECTIONS
![kit10.jpg](/proxy/?url=https://content.instructables.com/FWN/RAZR/JR0YLMCD/FWNRAZRJR0YLMCD.jpg&filename=kit10.jpg)
The connections are quiet simple.
PIR PINS------------ESP32 PINS
VCC-------------------3V3 on esp32
GND------------------GND on esp32
OUT-------------------D22 on esp32
CODING
Paste this code into your Arduino IDE with some updation, your Motion sensor will give the output flawlessly.
#include<WiFi.h>
#include<WiFiMulti.h>
#include<WiFiClientSecure,h>
int count=0,i,m,j,k;
int t,t1,t2,t3;
int pin = 22;
//////////////////////////////////////// ALL DECLARATIONS for 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"; //this is to convert timestamp
const int httpPort = 80;
const int httpsPort = 443;
const char* server = "api.thingsai.io"; // Server URL
char timestamp[10];
WiFiMulti WiFiMulti;
// Use WiFiClient class to create TCP connections
WiFiClient client;
/////////////////////////////////////// TIMESTAMP CALCULATION function///////////////////////////////////////
int GiveMeTimestamp()
{
unsigned long timeout = millis();
// WiFiClient client;
while (client.available() == 0)
{
if (millis() - timeout > 50000)
{
client.stop();
return 0;
}
}
while (client.available())
{
String line = client.readStringUntil('\r'); //indexOf() is a funtion to search for smthng , it returns -1 if not found
int pos = line.indexOf("\"timestamp\""); //search for "\"timestamp\"" from beginning of response got and copy all data after that , it'll be your timestamp
if (pos >= 0)
{
int j = 0;
for(j=0;j<10;j++)
{
timestamp[j] = line[pos + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
void setup()
{
Serial.begin(115200);
delay(10);
pinMode(pin,INPUT);
// We start by connecting to a WiFi network
WiFiMulti.addAP("wifi_name", "Wifi_password");
Serial.println();
Serial.println();
Serial.print("Wait for WiFi... ");
while(WiFiMulti.run() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
delay(500);
}
void loop()
{
int analogValue = analogRead(outputpin);
{
/////////////////////////////////////// SEND THE QUERY AND RECEIVE THE RESPONSE///////////////////////
{
bool isDetected = digitalRead(pin);
if(isDetected){
Serial.println("Presence detected");
}
delay(500);
}
Serial.print("connecting to ");
Serial.println(host); //defined upside :- host = devapi2.thethingscloud.com or 139.59.26.117
///////////////////////////////////// TIMESTAMP CODE SNIPPET /////////////////////////
Serial.println("inside get timestamp\n");
if (!client.connect(time_server, httpPort))
{
return; //*-*-*-*-*-*-*-*-*-*
}
client.println("GET /api/timestamp HTTP/1.1"); //Whats this part doing, i didnt get
client.println("Host: baas.thethingscloud.com");
client.println("Cache-Control: no-cache");
client.println("Postman-Token: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
client.println();
GiveMeTimestamp(); //it'll call the function which will get the timestamp response from the server
Serial.println("timestamp receieved");
Serial.println(timestamp);
Serial.println("inside ThingsCloudPost");
String PostValue = "{\"device_id\": 61121695839, \"slave_id\": 2";
PostValue = PostValue + ",\"dts\":" +timestamp;
PostValue = PostValue +",\"data\":{\"PIR\":" + pin +"}"+"}";
Serial.println(PostValue);
/* create an instance of WiFiClientSecure */
WiFiClientSecure client;
Serial.println("Connect to server via port 443");
if (!client.connect(server, 443)){
Serial.println("Connection failed!");
} else {
Serial.println("Connected to server!");
/* create HTTP request */
client.println("POST /devices/deviceData HTTP/1.1");
client.println("Host: api.thingsai.io");
//client.println("Connection: close");
client.println("Content-Type: application/json");
client.println("cache-control: no-cache");
client.println("Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2PNTkXs9PKy6_m9tdW5AG7ajfVlY");
client.print("Content-Length: ");
client.println(PostValue.length());
client.println();
client.println(PostValue);
//////////////////////////////////POSTING the data on to the cloud is done and now get the response form cloud server//////////////////
Serial.print("Waiting for response ");
while (!client.available()){
delay(50); //
Serial.print(".");
}
/* if data is available then receive and print to Terminal */
while (client.available()) {
char c = client.read();
Serial.write(c);
}
/* if the server disconnected, stop the client */
if (!client.connected()) {
Serial.println();
Serial.println("Server disconnected");javascript:;
client.stop();
}
}
Serial.println("////////////////////// THE END /////////////////////");
delay(3000);
}
}
OUTPUT
![2a.png](/proxy/?url=https://content.instructables.com/FQM/7KAY/JR0YKLV7/FQM7KAYJR0YKLV7.png&filename=2a.png)
This is the bar graph representation of the values read from the sensor in the thingsai,io cloud platform,
Graph
![2b.png](/proxy/?url=https://content.instructables.com/FAY/67I3/JR0YKLX5/FAY67I3JR0YKLX5.png&filename=2b.png)
This is the graphical representation of the values from the sensor. From the above graph we can analyze the application of the sensor. Thank You
Here's a Video of Breif Explanation
![Motion Detector Using esp32 and Thingsai.io cloud platform](/proxy/?url=https://content.instructables.com/FSX/DOVW/JR0YLNXP/FSXDOVWJR0YLNXP.jpg&filename=Motion Detector Using esp32 and Thingsai.io cloud platform)