Home > Projects > Temperature Logger With Arduino And Artik Cloud

Temperature Logger With Arduino And Artik Cloud

Sending temperature from Arduino MKR1000 to Artik Cloud.

Things used in this project

Hardware components

Arduino MKR1000
Arduino MKR1000
× 1

Software apps and online services

ARTIK Cloud for IoT
Samsung ARTIK Cloud for IoT
Arduino IDE
Arduino IDE

Story

At last check this working video:

Schematics

Code

Used to detect temperature in LM35 and send in to ARTIKcloud ,
#include <WiFi101.h>
#include <ArduinoJson.h>
int temp = 9; //temperature pin
int val;

// Web REST API params
char server[] = "api.artik.cloud";  
int port = 443; //(port 443 is default for HTTPS)

String AuthorizationData = "Authorization: Bearer  <YOUR DEVICE TOKEN>";


char buf[200];
int LED = 6;
int ledState = 0;

WiFiSSLClient client;
char ssid[] = "YOUR SSID";      //  your network SSID (name)
char pass[] = "YOUR PASSWORD";
int status = WL_IDLE_STATUS;

void setup() {

  pinMode(LED,OUTPUT);
  pinMode(temp, INPUT); // LM35 pin

  Serial.begin(9600);
  while (status != WL_CONNECTED){
    Serial.println("Attempting to connect to WiFi");
    status = WiFi.begin(ssid,pass);
  }
  Serial.println("connected to WiFi ");
  
}
  
void loop() {
  Serial.println("loop");
  ledToggle();
  client.connect(server, port);
  delay(1000);
  if (!client.connected()) { 
    Serial.println(" error ");
  } else {
      //int t = dht.readTemperature();
      //int h = dht.readHumidity();
      val = analogRead(temp);
float mv = ( val/1024.0)*5000; //FInd temperature
float cel = mv/100;            //convert in to celsius 
float farh = (cel*9)/5 + 32;   //convert in to fahrenheat (optional) 
      Serial.println("Sending data"+String(cel)); // sending data 
      client.println("POST /v1.1/messages HTTP/1.1");
      client.println("Host: api.artik.cloud");
      client.println("Accept: */*");
      client.println("Content-Type: application/json");
      client.println("Connection: close");
      client.println(AuthorizationData);

       // Automated POST data section
       client.print("Content-Length: ");
       client.println(loadBuffer(cel,farh)); // loads buf, returns length
       client.println();
       client.println(buf);
       Serial.println("Data posted");
       client.stop();       
  }
 
  delay(3*60*1000); // setting delay foe 3 minutes 

}

int loadBuffer(int insTemp, int insHumid ) {  
   StaticJsonBuffer<200> jsonBuffer; // reserve spot in memory

   JsonObject& root = jsonBuffer.createObject(); // create root objects
     root["sdid"] = "<YOUR DEVICE ID>"; // FIX 
     root["type"] = "message";

   JsonObject& dataPair = root.createNestedObject("data"); // create nested objects
     dataPair["temp"] = insTemp;  
     dataPair["humid"] = insHumid;

   root.printTo(buf, sizeof(buf)); // JSON-print to buffer

   return (root.measureLength()); // also return length
 }

 void ledToggle(){
  if (ledState == 0){
    digitalWrite(LED,LOW);
    ledState = 1;
  } else {
    digitalWrite(LED,HIGH);
    ledState = 0;
  }
 }

Source : Temperature Logger With Arduino And Artik Cloud


About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:
LinkedinTwitter
Scroll to Top