iTCLab : Internet-Based TCLab - PID, AI, and IoT-based Temperature Control Lab Kit. Suitable for researchers, Lecturers, Students, Teachers, and Electronics-Informatics Vocational School Students. This kit can be used for Learning: IoT, System Dynamics, Control, AI, Arduino and Python Programming, etc.

Riset IoT Basic

Administrator | 17 April 2022

Riset IoT Basic


Riset iTCLab : Pemantauan dan Pengendalian Suhu On/Off Basic Via IoT dengan Kit iTCLab



Perangkat yang diperlukan:

  • Aplikasi : IoT MQTT Panel di HP Android
  • Cloud IoT sebagai Broker MQTT : hivemq.com
  • Device : Menggunakan Kit iTCLab




Berikut ini contoh program yang harus diupload ke Kit iTCLab:

/*************************************
 * Program : MONITORING SUHU via IoT
 * Menggunakan Kit iTCLab
 * Oleh : Tim io-t.net
 * Surabaya, 10 April 2022
 * ***********************************/

#include <WiFi.h>
#include <PubSubClient.h>
#include <Arduino.h>
#include <analogWrite.h>

const char* ssid = "wifi"; // Enter your WiFi name
const char* password =  "password_wifi"; // Enter WiFi password

#define mqttServer "broker.hivemq.com"
#define mqttPort 1883

WiFiServer server(80);
WiFiClient espClient;
PubSubClient client(espClient);

String Topic;
String Payload;

#define T1       34
#define T2       35
#define LED      26
#define Q1       32
#define Q2       33

float cel, cel1, degC, degC1;
const float batas_suhu_atas = 58;

void Q1on(){
  //analogWrite(Q1,100);
  analogWrite(Q1, 341, 5000, 10, 0); // analogwrite(pin,period,frequency,resolusi,phase)
}

void Q1off(){
  analogWrite(Q1,0);
}

void Q2on(){
  //analogWrite(Q2,100);
  analogWrite(Q2, 341, 5000, 10, 341); // analogwrite(pin,period,frequency,resolusi,phase)
}

void Q2off(){
  analogWrite(Q2,0);
}

void ledon(){
  analogWrite(LED,255);
}

void ledoff(){
  analogWrite(LED,0);
}

void cektemp(){
  degC = analogRead(T1) * 0.322265625 ;    // use for 3.3v AREF
  cel = degC/10;
  degC1 = analogRead(T2) * 0.322265625 ;    // use for 3.3v AREF
  cel1 = degC1/10;

  Serial.print("Temperature: ");
  Serial.print(cel);   // print the temperature T1 in Celsius
  Serial.print("°C");
  Serial.print("  ~  "); // separator between Celsius and Fahrenheit
  Serial.print(cel1);   // print the temperature T2 in Celsius
  Serial.println("°C");
}

void receivedCallback(char* topic, byte* payload, unsigned int length) {

/* we got '1' -> Q1_on */
  if ((char)payload[0] == '1') {
        Q1on();
        Serial.println("Q1 On");
  } 
  
/* we got '2' -> Q1_off */
  if ((char)payload[0] == '2') {
        Q1off(); 
        Serial.println("Q1 Off");  
  } 

/* we got '3' -> Q2_on */
  if ((char)payload[0] == '3') {
        Q2on();
        Serial.println("Q2 On");
  } 
  
/* we got '4' -> Q2_off */
  if ((char)payload[0] == '4') {
        Q2off(); 
        Serial.println("Q2 Off");  
  } 
}


void setup() {

  // put your setup code here, to run once:
  Serial.begin(115200);
  analogWriteFrequency(5000); // set frequency to 10 KHz for all pins
  analogWriteResolution(LED, 10);
  analogWriteResolution(Q1, 10);
  analogWriteResolution(Q2, 10);
 
  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid); 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
 
  // Connect to Server IoT (CloudMQTT)
  client.setServer(mqttServer, mqttPort);
  client.setCallback(receivedCallback);
 
  while (!client.connected()) {
    Serial.println("Connecting to CLoud IoT ...");
 
//    if (client.connect("ESP32Client", mqttUser, mqttPassword )) {
     if (client.connect("iTCLab Suhu On/Off")) { 

      Serial.println("connected");
      Serial.print("Message received: ");
  
 
    } else {
      Serial.print("failed with state ");
      Serial.print(client.state());
      delay(2000);
    }
    client.subscribe("heater1");
    client.subscribe("heater2");
  }
}
 
void loop() { 
  char suhu1[4];
  char suhu2[4];
  client.loop();

  // put your main code here, to run repeatedly:
  cektemp();
  if (cel > batas_suhu_atas){
    Q1off();
    ledon();
  }
  else {
    Q1on();
    ledoff();
  }
  if (cel1 > batas_suhu_atas){
    Q2off();
    ledon();
  }
  else {
    Q2on();
    ledoff();
  }
  delay (100);

 
  Serial.print("Temperature T1: ");
  Serial.print(cel);
  Serial.print(" Celcius ");
  Serial.println(" send to i-ot.net");
 
  dtostrf(cel, 1, 0, suhu1);
  client.publish("Suhu1",suhu1);
  
  delay (200);

  Serial.print("Temperature T2: ");
  Serial.print(cel1);
  Serial.print(" Celcius ");
  Serial.println(" send to i-ot.net");
 
  dtostrf(cel1, 1, 0, suhu2);
  client.publish("Suhu2",suhu2);
  delay (200);
}
Download Program Monitoring dan Kontrol Suhu Basic via IoT dalam Arduino (silahkan klik-kanan Save link as)di sini : 03-Suhu_IoT_On_Off.ino.



Seting pada HP Android, menggunakan IoT MQTT Panel sebagai berikut:








Jika berhasil konek ke Broker MQTT, maka hasilnya adalah sebagai berikut: