By | 06/04/2020

Helo temen-temen anakkendali.com

Pada kesempatan kali ini saya akan membagikan hasil kerja ringan selama ini untuk membuat Tutorial IoT, Menghubungkan Aplikasi Android, Website dan Mikrokontroler.

Langkah demi langkah sudah kita pelajari bersama, dari mulai mendesain aplikasi android, kemudian membuat website sederhana sekaligus untuk dijadikan server tempat penyimpanan data yang di peroleh dari mikrokontroler.

silahkan pelajari dan baca artikel sebelumnya juga supaya kalian tidak hanya tau jadi tentang proyek ini.

dan sekarang kita akan mencoba menghubungkan aplikasi android, website dengan mikrokontroler.

untuk menghubungkan ketiganya paling tidak kita harus belajar tiga jenis bahasa pemograman, yaitu Arduino, PHP, dan pemograman android.

untuk pemograman android itu sendiri karena saya menggunakan aplikasi kodular untuk membangun aplikasinya sehingga bahasa pemograman yang saya pelajari hanya bahasa program puzzle. karena itu saya hanya perlu drag and drop program dengan mengikuti algoritma yang sudah di fikirkan sebelumnya.

Rangkaian Skematik

untuk rangkaianya, saya tidak mengambarkan secara menyeluruh, karena saya hanya menggunakan empat buah Relay, tiga buah sensor analog, dan dua buah mikrokontroler

mikrokontroler yang saya gunakan adalah IC Atmega328 beserta IC ESP8266 ESP12F

empat buah relay dan tiga buah sensor analog dihubungkan ke IC Atmega 328, sedangkan untuk komunikasi internetnya saya menghubungkan IC Atmega328 dengan IC ESP8266 ESP12F.

jika kalian mengininkan file mentah PCB untuk dikembangkan ataupun untuk di cetak, silahkan berdonasi sebesar Rp. 25.000 melalui OVO, Jenius ataupun Bank Transfer BRI, untuk info lebih lengkap silahkan kunjungi WA saya dengan cara klik tombol WA yang berada di bawah pojok kanan halaman website ini.

Program

Program Arduino

program arduino berikut tidak lah lengkap, hanya program utamanya saja yang saya share, yang lainya seperti interface LCD, kalibrasi maupun perhitungan konversi nilai sensor tidak saya bagikan, jika kalian ingin mendapatkan program Arduino full projek hidroponik atau monitoring dan kontrol nutrisi hidroponik dengan menggunakan tiga buah sensor, silahkan berdonasi sebesar Rp. 550.000 melalui OVO, Jenius, ataupun transfer Bank BRI.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
SoftwareSerial SerialBT (2, 3);
SoftwareSerial SerialESP (8, 7);
#include <EEPROM.h>

#include "inisialisasi.h"

int sampling_suhu = 50, sampling_ph = 60, sampling_tds = 10;
int index1, index2, index3, index4, index5;
boolean nutrisi, peltier, ph_up, ph_down;
boolean session, isiWifi = 0;
String dataBT, dataESP;

String ssid, pass;
String sendAlldata;

// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 20, 4);

void setup()
{
  lcd.begin();
  // initialize the LCD
  Serial.begin(9600);
  SerialESP.begin(9600);
  //  SerialBT.begin(9600);

  //------------------------------------------------//
  pinMode (vcc_ph, OUTPUT);
  pinMode (vcc_tds, OUTPUT);

  //------------------------------------------------//
  pinMode (9, OUTPUT);
  pinMode (10, OUTPUT);
  pinMode (4, OUTPUT);
  pinMode (5, OUTPUT);

  digitalWrite (9, 1);
  digitalWrite (10, 1);
  digitalWrite (4, 1);
  digitalWrite (5, 1);
  //------------------------------------------------//
  /*


    salam();
    session = EEPROM.read(addr_session_bt) ;
    Serial.println(session);
    while (session == 1) {
    first_use();
    Serial.println("Belum Konek");
    baca_bt();
    if (dataBT.length() > 0) {
      Serial.println (dataBT);
      if (dataBT == "BT") {
        Serial.println ("Anda Memilih Komunikasi Bluetooth");
        msg_shoice(selBT);
        EEPROM.write (addr_session_bt, 1);
        EEPROM.write (addr_bt_or_ESP, selBT);
        break;
      }
      else if (dataBT == "ESP") {
        Serial.println("Anda Memilih Komunikasi WIFI");
        msg_shoice(selESP);
        EEPROM.write (addr_session_bt, 1);
        EEPROM.write (addr_bt_or_ESP, selESP);
        break;
      }
      dataBT = "";
    }
    }
    Serial.println("Step 2");
    int pilihan = EEPROM.read(addr_bt_or_ESP);
    if ( pilihan == selESP) {
    boolean isiWifi = EEPROM.read(addr_seting_wifi);
    Serial.println(isiWifi);
    while (isiWifi == 0) {
      baca_bt();
      if (dataBT.length() > 0) {
        Serial.println (dataBT);

        index1 = dataBT.indexOf('|');
        index2 = dataBT.indexOf('|', index1 + 1);
        index3 = dataBT.indexOf('|', index2 + 1);

        ssid = dataBT.substring(index1 + 1, index2);
        pass = dataBT.substring(index2 + 1, index3);

        SerialESP.print("|");
        SerialESP.print(ssid);
        SerialESP.print("|");
        SerialESP.print(pass);
        dataBT = "";
        EEPROM.write(addr_seting_wifi, 0);;
        break;
      }
    }
    isiWifi = EEPROM.read(addr_seting_wifi);
    if (isiWifi == 0) {
      Serial.println("Selesai Seting Wifi");
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Connecting... !!!");
      delay(3000);
    }
    }
    else if (EEPROM.read(addr_bt_or_ESP) == selBT) {

    }
  */
}

unsigned long waktulama = 0;
void loop()
{
  baca_ESP();
  //baca_ESP();
}

void baca_bt() {
  while (SerialBT.available() > 0) {
    delay(10);
    char c = SerialBT.read();
    dataBT += c;
  }
}
void baca_ESP() {
  while (SerialESP.available() > 0) {
    delay(10);
    char c = SerialESP.read();
    dataESP += c;
  }

  if (dataESP.length() > 0) {
    Serial.println(dataESP);

    index1 = dataESP.indexOf ('|');
    index2 = dataESP.indexOf ('|', index1 + 1);
    index3 = dataESP.indexOf ('|', index2 + 1);
    index4 = dataESP.indexOf ('|', index3 + 1);
    index5 = dataESP.indexOf ('|', index4 + 1);

    nutrisi = dataESP.substring(index1 + 1, index2).toInt();
    peltier = dataESP.substring(index2 + 1, index3).toInt();
    ph_up = dataESP.substring(index3 + 1, index4).toInt();
    ph_down = dataESP.substring(index4 + 1, index5).toInt();
    //    sendESP_alldata();
    digitalWrite (9, !nutrisi);
    digitalWrite (10, !peltier);
    digitalWrite (4, !ph_up);
    digitalWrite (5, !ph_down);

    sendESP_alldata();
    dataESP = "";
  }
}

Program ESP8266

berikut adalah program ESP8266 untuk mengirimkan data ke webserver dan menyimpanya di dalam database MySQL

#include <SoftwareSerial.h>
SoftwareSerial SerialESP (D5, D6);

#include <ArduinoJson.h>
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <ESP8266WebServer.h>
#include <ESP8266HTTPClient.h>

// Set these to run example.
#define WIFI_SSID "Smart-PF"
#define WIFI_PASSWORD "anamganteng"

String alldata;
int index1, index2, index3, index4, index5, index6, index7, index8, index9;
int  motor_ph, motor_tds, motor_pel, motor_m_pel;
float act_suhu, act_tds, act_ph;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  WiFi.mode(WIFI_OFF);
  delay(1000);
  WiFi.mode(WIFI_STA);
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.print("connecting");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  Serial.println();
  Serial.print("connected: ");
  Serial.println(WiFi.localIP());
  SerialESP.write("A");
}

void loop() {
  // put your main code here, to run repeatedly:
  //  read_data_arduino();
  read_respons_monitoring("2323df");
  read_data_arduino();
  delay(2000);
}

void read_data_arduino() {
  while (SerialESP.available() > 0) {
    delay(10);
    char c = SerialESP.read();
    alldata += c;
  }
  if (alldata.length () > 0) {
    Serial.println(alldata);

    index1 = alldata.indexOf ('|');
    index2 = alldata.indexOf ('|', index1 + 1);
    index3 = alldata.indexOf ('|', index2 + 1);
    index4 = alldata.indexOf ('|', index3 + 1);

    act_suhu = alldata.substring(index1 + 1, index2).toFloat();
    act_ph = alldata.substring(index2 + 1, index3).toFloat();
    act_tds = alldata.substring(index3 + 1, index4).toFloat();
    
    Serial.println(act_suhu);
    Serial.println(act_ph);
    Serial.println(act_tds);

    update_monitoring("2323df", act_ph, act_suhu, act_tds);

//    read_respons_monitoring("2323df");
    alldata = "";
  }
}

void read_respons_monitoring(String id) {
  StaticJsonBuffer<200> jsonBuffer;

  String postData = (String)"idalat=" + id;
  HTTPClient http;
  http.begin("http://api-iot.anakkendali.com/read-data.php?");
  http.addHeader("Content-Type", "application/x-www-form-urlencoded");

  auto httpCode = http.POST(postData);
  String payload = http.getString();

  Serial.println(postData);
  Serial.println(payload);
  JsonObject& root = jsonBuffer.parseObject(payload);
  if (!root.success()) {
    Serial.println("parseObject() failed");
    return;
  }
  int nutrisi = root["nutrisi"];
  int peltier = root["peltier"];
  int ph_up = root["ph_up"];
  int ph_down = root["ph_down"];

  SerialESP.print("|");
  SerialESP.print(nutrisi);
  SerialESP.print("|");
  SerialESP.print(peltier);
  SerialESP.print("|");
  SerialESP.print(ph_up);
  SerialESP.print("|");
  SerialESP.print(ph_down);
  
  http.end();
}

void update_monitoring(String id, float ph, float suhu, float tds) {

  String postData = (String)"idalat=" + id + "&ph=" + ph + "&suhu=" + suhu + "&tds=" + tds;
  HTTPClient http;
  http.begin("http://api-iot.anakkendali.com/update-data.php?");
  http.addHeader("Content-Type", "application/x-www-form-urlencoded");

  auto httpCode = http.POST(postData);
  String payload = http.getString();

  Serial.println(postData);
  Serial.println(payload);
  
  http.end();
}

Program Aplikasi Android

Cara Penggunaan

Silahkan menghubungi aplikasi website iot.anakkendali.com pada tautan berikut :

https://iot.anakkendali.com/

kemudian login dengan menggunakan akun berikut :

username : anakkendali
password : anakkendali

tambah id alat sesuai dengan program pada ESP8266, sehingga alat kalian bisa terhubung dengan website anakkendali.com dan juga aplikasi android yang saya berikan nama ESPDEV

untuk aplikasi Android ESPDEV yang sudah jadi, dapat di download melalui link berikut :

DOWNLOAD APLIKASI ANDROID (.APK)

jika kalian ingin mengembangkan aplikasi android ini, kalian cukup berdonasi Rp. 20.000 rupiah melalui akun OVO, Jenius atau transfer bank BRI.
untuk info lebih lanjut silahkan hubungi saya melalui WA yang berada di pojok kanan bawah halaman website ini.

untuk melihat hasil dari project ini, silahkan tonton video berikut ini !

Mungkin cukup sekian artikel tentang cara menghubungkan Aplikasi Android, Server Website Database dan Mikrokontroler. jika ada yang di tanyakan silahkan berkomentar di bawah untuk berdiskusi

Leave a Reply

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