Tech
Forums
Jobs
Books
Events
Interviews
Live
More
Learn
Training
Career
Members
Videos
News
Blogs
Contribute
Article
Blog
Video
Ebook
Interview Question
Collapse
Feed
Dashboard
Wallet
Learn
Achievements
Network
Rewards
SharpGPT
Premium
Contribute
Article
Blog
Video
Ebook
Interview Question
Register
Login
Temperature Monitoring With Arduino MKR1000 And ARTIK Cloud
WhatsApp
Salman Faris
4y
15.6k
0
1
100
Article
Introduction
This project sets up an Arduino MKR1000 board, which reads the temperature data and sends those data to Artik Cloud. The project consists of three steps, i.e. setting up Arduino MKR1000 to read the temperature values, create temperature device types and temperate devices in Artik Cloud. The last step is to send the data to Artik Cloud and you can monitor the temperature changes from the Artik dashboard.
Setup Arduino MKR1000 board and the temperature sensor
Download
Arduino IDE
or use
Arduino Web editor.
Upload the code, given below, to check the MKR1000 and temperature sensor.
// Simple sensor test programme
int
sensorPin = A0;
// select the input pin for the sensor
int
sensorValue = 0;
// variable to store the value coming from the sensor
float
temperature = 0.0;
float
voltage = 0.0;
void
setup() {
Serial.begin(9600);
analogReadResolution(10);
}
void
loop() {
// read the value from the sensor:
sensorValue = analogRead(sensorPin);
Serial.print(
"sensorValue = "
);
Serial.print(sensorValue);
voltage = sensorValue * (3300 / 1024);
// in milliVolt
Serial.print(
" voltage = "
);
Serial.print(voltage);
temperature = (voltage - 500) / 10;
Serial.print(
" temperature(C) = "
);
Serial.println(temperature);
delay(100);
}
Connection
TMP +v to MKR1000 - VCC
TMP GND to MKR1000 - GND
TMP SIG to MKR1000 - A0
You will see the serial monitor, as given below-
This means our temperature sensor and Arduino MKR1000 works perfectly.
Setup Artik Cloud
Now, the time to connect to the Cloud (Samsung Artik Cloud) has come.
Go to Developer dashboard to create a device type.
Sign in to
Developer Dashboard.
Click the "+ Create Device Type".
Name the device type "Arduino Temperature Sensor" and give it a unique name "
my.device.arduino.temperature
".
Click "Create Device Type" to create the device type.
Now, create a new Manifest for the new device type by following-
Click "Arduino Temperature Sensor" in the left column.
Click "Manifest" and then "+ New Manifest".
Enter Temperature as the Field Name and "Double" as Data Type.
Click "Manifest" and then "+ New Manifest".
Click "Save" and then "Next: Actions".
Leave Actions as default and click "Save New Manifest".
Go to
MY ARTIK Cloud
to create a new Arduino Temperature Sensor device.
Sign in to
MY ARTIK Cloud
.
Click to connect a new device. Select the "Arduino Temperature Sensor" device type.
Click "Connect Device..."
Click the Settings icon of the newly created device. In the pop-up, click "GENERATE DEVICE TOKEN…".
Copy the device ID and device.
A token will come on this screen. You will use this in the code.
Click the Settings icon of the newly created device. In the pop-up, click "GENERATE DEVICE TOKEN…".
Now the Artk part is set.
Sending Temperature Readings to ARTIK Cloud
Paste your DEVICE ID, given below-
String deviceId =
"your deviceId"
;
paste you DEVICE Token, given below-
String deviceToken =
"your deviceToken"
;
Paste Your Wi-Fi name, given below-
char
ssid[] =
"Your wifi name"
;
Paste Your Wi-Fi password, given below-
char
pass[] =
"Your wifi Password"
;
When everything is set, upload your code-
#include < WiFi101.h >
#include < ArduinoJson.h >
#include < ArduinoHttpClient.h >
#include < SPI.h >
// ARTIK Cloud REST endpoint
char
server[] =
"api.artik.cloud"
;
int
port = 443;
// We're using HTTPS
// Device ID tokens
String deviceToken =
"Your deviceToken"
;
String deviceId =
"Your deviceId"
;
// Your wifi network
char
ssid[] =
"Your wifi name"
;
char
pass[] =
"Your wifi Password"
;
float
temperature = 0.0;
boolean
onFire =
false
;
char
buf[200];
// buffer to store the JSON to be sent to the ARTIK cloud
const
int
LED = 6;
int
ledState = 0;
WiFiSSLClient wifi;
HttpClient client = HttpClient(wifi, server, port);
int
status = WL_IDLE_STATUS;
void
setup() {
pinMode(LED, OUTPUT);
Serial.begin(9600);
while
(status != WL_CONNECTED) {
// Keep trying until connected
Serial.print(
"Attempting to connect to Network named: "
);
Serial.println(ssid);
// Connect to WPA/WPA2 network:
status = WiFi.begin(ssid, pass);
}
}
void
loop() {
Serial.println(
"loop"
);
ledToggle();
Serial.println(
"making POST request"
);
String contentType =
"application/json"
;
String AuthorizationData =
"Bearer "
+ deviceToken;
//Device Token
temperature = ((analogRead(A0) * (3300 / 1024)) - 500) / 10;
// in milliVolt
onFire =
false
;
int
len = loadBuffer(temperature, onFire);
Serial.println(
"Sending data "
+ String(temperature));
// push the data to the ARTIK Cloud
client.beginRequest();
client.post(
"/v1.1/messages"
);
//, contentType, buf
client.sendHeader(
"Authorization"
, AuthorizationData);
client.sendHeader(
"Content-Type"
,
"application/json"
);
client.sendHeader(
"Content-Length"
, len);
client.endRequest();
client.print(buf);
// read the status code and body of the response
int
statusCode = client.responseStatusCode();
String response = client.responseBody();
Serial.print(
"Status code: "
);
Serial.println(statusCode);
Serial.print(
"Response: "
);
Serial.println(response);
Serial.println(
"Wait a bit"
);
delay(30000);
// delay 5 min
}
int
loadBuffer(
float
temp,
boolean
onFire) {
StaticJsonBuffer < 200 > jsonBuffer;
// reserve spot in memory
JsonObject & root = jsonBuffer.createObject();
// create root objects
root[
"sdid"
] = deviceId;
root[
"type"
] =
"message"
;
JsonObject & dataPair = root.createNestedObject(
"data"
);
// create nested objects
dataPair[
"Temperature"
] = temp;
dataPair[
"onFire"
] = onFire;
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;
}
}
Open serial monitor.
Now, sign in to
My ARTIK Cloud.
Click Arduino Temperature Sensor. Click "+/- CHARTS" and check the Temp field to visualize a chart.
Arduino
Artik
IoT
Samsung
Up Next
Ebook Download
View all
Raspberry Pi -Sensorial Symphony of Connectivity
Read by 693 people
Download Now!
Learn
View all
Membership not found