Seat Monitor

Using ARTIK cloud to monitor cabin seat state.

Things used in this project

Hardware components

Arduino MKR1000
Arduino MKR1000
× 1
Realtek Ameba RTL8195 Board
× 1
Piezo Sensor Piezo Sensor
× 1
Seeed Grove – Piezo Vibration Sensor
× 1

Software apps and online services

ARTIK Cloud for IoT
Samsung ARTIK Cloud for IoT


seat sensor


Ameba RTL8195 Board
 Thanks Ameba Basic MQTT example
 I mark some point I stuck

#include <WiFi.h>
#include <PubSubClient.h>
// Update these with values suitable for your network.

char ssid[] = "ssid";     // your network SSID (name)
char pass[] = "pass";  // your network password
int status  = WL_IDLE_STATUS;    // the Wifi radio's status
//must double check when you copy the code
// MQTT - Artik Cloud Server params
char mqttServer[]     = "";
int  mqttPort         = 8883;
char clientId[]       = "seat";
char Device_ID[]   = "Device_ID"; // DEVICE ID
char Device_TOKEN[]   = "Device_TOKEN"; //  DEVICE TOKEN
char publishTopic[]   = "/v1.1/messages/Device_ID";
char subscribeTopic[] = "/v1.1/actions/Device_ID";
char publishPayload[128];

int sensorValue;
int sensorValuetemp;
//must use SSL when MQTT protocol
WiFiSSLClient wifiClient;
PubSubClient client(mqttServer, mqttPort,wifiClient);

void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Attempt to connect
    if (client.connect(clientId, Device_ID, Device_TOKEN)) {
      // Once connected, publish an announcement...
      client.publish(publishTopic, publishPayload);
      // ... and resubscribe
    } else {
      Serial.print("failed, rc=");
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
void publish(void) //publish seat sensor value to cloud
   * smaple field
   * {"seatvalue":1}
   //creat field data make it short or ARTIK cloud not work
  memset(publishPayload, 0, sizeof(publishPayload));
  sprintf(publishPayload, "{\"seatvalue\":%d}",sensorValue);
  printf("\t%s\r\n", publishPayload);
  client.publish(publishTopic, publishPayload);
void setup()

  while (status != WL_CONNECTED) {
    Serial.print("Attempting to connect to SSID: ");
    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:
    status = WiFi.begin(ssid, pass);
    // wait 5 seconds for connection:
  Serial.println("initial sensorValue");
  // Allow the hardware to sort itself out

void loop()
  if (!client.connected()) { //check connect state and reconnect
  for (int i =0; i<10;i++)
  { // delay 1 Mnts
   sensorValue = analogRead(A0); //read sensor value
   if(sensorValue!=sensorValuetemp) //publish when sensorValue change
      sensorValuetemp = sensorValue; //save current sensor value


Source : Seat Monitor

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:

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top