Archive for the ‘Otomasi dan Robotika’ Category


Malang, 30 Mei 2020

Hmmm saya udah rencanakan ini lama. Karena kadang waktu ibu bikin teh pakai water heater dan sanyo nyala jadi njeglek listriknya. Watt cman 1300 watt .

Jadi dikira2 misal biasa masak air jam berapa itu dijadikan reference agar off timernya… Bagus nya sih interlock arus. Kalau ceret listirkmya nyala maka sanyo gk boleh hidup. Tapi ribet. Biaya besar karena harus pakai sensor arus, wireless, arduino dll…

Jadi sementara gini dulu, memanfaat barang2 bekas yg sebenarnya masih bisa dipakai. Contohnya kontaktor tersebut rusak di 1 fasa gk mau kontak. Tapi 2 lainnya masih jalan. Karena 1 fasa gk masalah. Ketiganya saya gabungin jadi 1.

Timer sebenarnya sudah ada relaynya. Dan bisa dipakai langsung sih. Cman arus sanyo kan besar. Jadi timmer cuman saya buat untuk on off kontaktornya saja. Bukan untuk on off sanyo.

Ada 2 lampu. Yang petama nyala misal tangkinya habis. Yang kedua ketika motor jalan. Misal air habis (meski masih sisa 1/4 tangki ) namun ketika jam nya belum nyala ya gk bisa nyala.

Tapi bagaimana kalau butuh banget ? Nunggu jam nyala kan lama ?

Tenang ada tombol manual on off di timmernya


Hari ini ada kunjungan schneider electric. Dan presentasi tetang IoT… Yang saya tanyakan bagaimanakan menambahkan expert knowledge pada sistem analisanya..misal dari vendor mesin kita. Ternyata itu property mereka dan tidak di open… Rahasia dapurnya πŸ˜€


lanjutan dari https://tarecha.wordpress.com/2019/02/22/unboxing-atomic-pi/ unboxing.

ini first bootnya ya

unboxing atomic pi

Posted: 22 Februari 2019 in Otomasi dan Robotika

well ini video unboxing ya… nanti vlog berikutnya coba startup atomic pi


View this post on Instagram

AC Hemat Energi versi mahasiswa

A post shared by Agung Tarecha (@agungtarecha) on


Arduino MKR GSM 1400

Arduino MKR GSM 1400

 

link project https://create.arduino.cc/editor/agung.tarecha/d8337cc3-c228-408d-a4a5-6727c2f11e3c/preview

Assalamu’alaikum Wr. Wb.

jadi… kemarin ada kebutuhan notifikasi ke user agar dapat info secepatnya jika suhu diluar batas normal, dari PLC keluar kontak kering, dry contact dimana sama seperti Environmux yang dry contact yang contact no contact , sambung putus, open close. jadi gimana caranya agar user tahu. kalau pakai bot python ngirim telegram masih ribet. seperti project saya yang weather logger suhu bila diluar range maka kirim email, ada program python yang harus dijalankan dari jadi service. sehingga tergantung. saya bikin sistem pakai arduino mkr gsm 1400 agar simpel dan independen. karena cuman dry contact dari plc. plc nya sendiri kirim tegangan 24 volt yang nanti disambungkan relay, dari relay tersebut disambungkan arduino. kira2 begitu. nanti jam 1 an saya upload video nya deh.

oh ya hal yang beda adalah saya gak pakai arduino ide di windows seperti biasa, sekarang nyoba arduino cloud. tapi sebelum itu kita rangkai dlu yuk.

  1. schematic

    schematic

    schematic

    pinout arduino

    pinout arduino

    soldering

    soldering

    2. Cloud arduino Create

    oke masuk ke https://create.arduino.cc/, ya ini agak berbeda ya, compile nya di cloud, nanti install plugin agar bisa komunikasi serial dengan arduino, kelebihannya adalah kita gk ribet urusan plugin, kalau di desktop harus install plugin kalau gk ada, kalau di cloud sudah tersedia, cman belum coba yang nodemcu sih, kemarin pakai arduino ide download xtensanya dlu 100 mega an. dan juga karena file kita disimpan di cloud jadi gk bingung nyari misal hilang, dan file nya akan sama kalau saya pakai laptop rumah dan komputer pabrik. tingal play. oke let’s start

    masuk dlu ke https://create.arduino.cc/ .
    masuk

    Create Editor

    Create Editor

    lalu login, bikin akunnya dilewati ya. silahkan bikin sendiri dlu, masukkan user password kalau sudah bikin akun. lalu download pluginnya, install,.. saran saya matikan antivirus dulu . install seperti biasa hingga pluginnya jalan

  2. plugin install

    plugin install

plugin jalan

plugin jalan

berikut interfacenya

interface arduino web editor

interface arduino web editor

select board dan portnya

select board dan port

select board dan port

berikut versi video nya

3. code
kira2 seperti ini codingnya, bisa dilihat, saya malas njelasin. intinya kalau input on togle dari off dia akan jalankan perintah kirim sms


#include <MKRGSM.h>


// initialize the library instance
GSM gsmAccess;
GSM_SMS sms;

const byte  input1 = 2;   
const byte  input2 = 3;
const byte  input3 = 4;
const byte  input4 = 5;
const byte led = 6;     //internal led di pin 6, buat indikator contact
const byte ledready = 7; // led merah besar untuk menandakan system ready

boolean lastButtonState1 = 0;   //variable menampung state button yang terakhir agar
boolean lastButtonState2 = 0;   //togle status , tidak on terus atau off terus selama loop
boolean lastButtonState3 = 0;  
boolean lastButtonState4 = 0;  

boolean buttonState1 = 0;       //sama kyk diatas, read status button saat ini
boolean buttonState2 = 0;
boolean buttonState3 = 0;
boolean buttonState4 = 0;


char penerimaSMS1[] = "081232619895";    //daftar nomer telepon 
char penerimaSMS2[] = "085646491192";
char penerimaSMS3[] = "081232619895";
char penerimaSMS4[] = "085646491192";
char penerimaSMS5[] = "081232619895";
char penerimaSMS6[] = "085646491192";

void setup() {
  pinMode(ledready, OUTPUT);
  digitalWrite(ledready, HIGH);       //off kan led tanda ready, aktif low, jika high akan mati
  
    // initialize the button pin as a input:
  pinMode(input1, INPUT);
  pinMode(input2, INPUT);
  pinMode(input3, INPUT);
  pinMode(input4, INPUT);
  pinMode(led, OUTPUT);

  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
  Serial.println("Serial OK");

  // initialize serial communication:

  
  Serial.println("SMS Messages Sender");

  // connection state
  boolean connected = false;

  // Start GSM shield
  // If your SIM has PIN, pass it as a parameter of begin() in quotes
  Serial.print("Connecting Network");
  while (!connected) {
    Serial.print(".");
    if (gsmAccess.begin() == GSM_READY) {
      connected = true;
      Serial.println("Jaringan Konek");
    } else {
      Serial.println("Jaringan Tidak Konek");
      delay(1000);
    }
     
  }

  Serial.println("SYSTEM READY !");
  digitalWrite(ledready, LOW);                  //system ready, led merah dinyalakan
}

void kirimSMS1ON()
{
  char txtMsg[] = "Suhu Channel 1 di luar batas normal";
  sms.beginSMS(penerimaSMS1);
  sms.print(txtMsg);
  sms.endSMS();
  
  sms.beginSMS(penerimaSMS2);
  sms.print(txtMsg);
  sms.endSMS();
  Serial.println("\nKirim SMS alarm Channel 1 COMPLETE!\n");
}

void kirimSMS1OFF()
{
  char txtMsg[] = "Suhu Channel 1 kembali ke batas normal";
  sms.beginSMS(penerimaSMS1);
  sms.print(txtMsg);
  sms.endSMS();
  
  sms.beginSMS(penerimaSMS2);
  sms.print(txtMsg);
  sms.endSMS();
  Serial.println("\nKirim SMS normal Channel 1 COMPLETE!\n");
}

void kirimSMS2ON()
{
  char txtMsg[] = "Suhu Channel 2 di luar batas normal";
  sms.beginSMS(penerimaSMS1);
  sms.print(txtMsg);
  sms.endSMS();
  
  sms.beginSMS(penerimaSMS2);
  sms.print(txtMsg);
  sms.endSMS();
  Serial.println("\nKirim SMS alarm Channel 2 COMPLETE!\n");
}

void kirimSMS2OFF()
{
  char txtMsg[] = "Suhu Channel 2 kembali ke batas normal";
  sms.beginSMS(penerimaSMS1);
  sms.print(txtMsg);
  sms.endSMS();
  
  sms.beginSMS(penerimaSMS2);
  sms.print(txtMsg);
  sms.endSMS();
  Serial.println("\nKirim SMS normal Channel 2 COMPLETE!\n");
}

void kirimSMS3ON()
{
  char txtMsg[] = "Suhu Channel 3 di luar batas normal";
  sms.beginSMS(penerimaSMS1);
  sms.print(txtMsg);
  sms.endSMS();
  
  sms.beginSMS(penerimaSMS2);
  sms.print(txtMsg);
  sms.endSMS();
  Serial.println("\nKirim SMS alarm Channel 3 COMPLETE!\n");
}

void kirimSMS3OFF()
{
  char txtMsg[] = "Suhu Channel 3 kembali ke batas normal";
  sms.beginSMS(penerimaSMS1);
  sms.print(txtMsg);
  sms.endSMS();
  
  sms.beginSMS(penerimaSMS2);
  sms.print(txtMsg);
  sms.endSMS();
  Serial.println("\nKirim SMS normal Channel 3 COMPLETE!\n");
}

void kirimSMS4ON()
{
  char txtMsg[] = "Suhu Channel 4 di luar batas normal";
  sms.beginSMS(penerimaSMS1);
  sms.print(txtMsg);
  sms.endSMS();
  
  sms.beginSMS(penerimaSMS2);
  sms.print(txtMsg);
  sms.endSMS();
  Serial.println("\nKirim SMS alarm Channel 4 COMPLETE!\n");
}

void kirimSMS4OFF()
{
  char txtMsg[] = "Suhu Channel 4 kembali ke batas normal";
  sms.beginSMS(penerimaSMS1);
  sms.print(txtMsg);
  sms.endSMS();
  
  sms.beginSMS(penerimaSMS2);
  sms.print(txtMsg);
  sms.endSMS();
  Serial.println("\nKirim SMS normal Channel 4 COMPLETE!\n");
}


void loop() {
  
  buttonState1 = digitalRead(input1);
  buttonState2 = digitalRead(input2);
  buttonState3 = digitalRead(input3);
  buttonState4 = digitalRead(input4);


  if (buttonState1 != lastButtonState1) {

    if (buttonState1 == HIGH) {
     Serial.println("Input 1 ON");
     digitalWrite(led, HIGH);
     kirimSMS1ON();
    } else {
      
      Serial.println("Input 1 OFF");
      digitalWrite(led, LOW);
      kirimSMS1OFF();
    }
  
    delay(50);
  }
  lastButtonState1 = buttonState1;
  
  if (buttonState2!= lastButtonState2) {

    if (buttonState2 == HIGH) {
     Serial.println("Input 2 ON");
     digitalWrite(led, HIGH);
    kirimSMS2ON();
    } else {

      Serial.println("Input 2 OFF");
      digitalWrite(led, LOW);
      kirimSMS2OFF();
    }
  
    delay(50);
  }
  lastButtonState2 = buttonState2;
  
  if (buttonState3 != lastButtonState3) {

    if (buttonState3 == HIGH) {
     Serial.println("Input 3 ON");
     digitalWrite(led, HIGH);
     kirimSMS3ON();
    } else {

      Serial.println("Input 3 OFF");
      digitalWrite(led, LOW);
      kirimSMS3OFF();
    }
  
    delay(50);
  }
  lastButtonState3 = buttonState3;
  
  if (buttonState4 != lastButtonState4) {

    if (buttonState4 == HIGH) {
     Serial.println("Input 4 ON");
     digitalWrite(led, HIGH);
     kirimSMS4ON();
    } else {

      Serial.println("Input 4 OFF");
      digitalWrite(led, LOW);
      kirimSMS4OFF();
    }
  
    delay(50);
  }
  lastButtonState4 = buttonState4;





}

 

4. trial

Serial monitor

Serial monitor

SMS diterima

SMS diterima

 

hasil trial


Analisa data

Video

Analisa data
alamat server slave di ralat di http://appscenter.aio.co.id/weatherlogger/

alamat master logger di http://weatherlogger.ap.ngrok.io/

Oke saya lanjutkan. remind lagi ini adalah seri berantai dari posting berikut ya

  1. https://tarecha.wordpress.com/2015/10/26/project-raspberry-pi/
  2. https://tarecha.wordpress.com/2017/06/05/project-weather-logger-part-1/
  3. https://tarecha.wordpress.com/2017/06/26/project-weather-logger-part-2-tambahan-sensor-tekanan-udara/
  4. https://tarecha.wordpress.com/2017/07/01/project-weather-logger-part-3-komunikasi-udp/
  5. https://tarecha.wordpress.com/2017/07/15/project-weather-logger-part-4-simpan-di-server-mysql/
  6. https://tarecha.wordpress.com/2017/07/24/project-weather-logger-part-5-view-data-dan-export/
  7. https://tarecha.wordpress.com/2017/07/25/project-weather-logger-part-6-plot-graphic/
  8. https://tarecha.wordpress.com/2017/07/29/project-weather-logger-part-7-ngrok-http-tunneling/
  9. https://tarecha.wordpress.com/2017/08/27/project-weather-logger-part-8-ganti-sensor-bme280/
  10. https://tarecha.wordpress.com/2017/09/03/project-weather-logger-part-9-sync-data/
  11. https://tarecha.wordpress.com/2018/01/13/project-weather-logger-part-10-notifikasi-email-dan-autostart-dan-backup/
  12. https://tarecha.wordpress.com/2018/02/02/project-weather-logger-part-11-bot-twitter/

Assalamu’alaikum Wr. Wb.

lama gak nulis jadi kangen. ya semakin kesini semakin rumit ya. banyak sekali bahasa pemprograman yang di gunakan, C, python, PHP, dan sekarang matlab. sepertinya saya programmer multi talenta. infrastruktur bisa, elektronika bisa, program bisa. ya kalau jadi programmer ya repot capek di depan komputer terus, tapi kalau hobi oke lah. bagi anda yang tidak mendalami IT sebaiknya jangan baca tulisan ini ya, mubadzir. mending baca Al Qur’an…. sok yes kayak baca tiap hari saja he he.

oke setelah data suhu, tekanan, dan kelembapan didapatkan lalu apa lagi sekarang, ya dianalisa, kalau saya sih kurang faham analisa numerik yang intinya nanti jadi keluar rumus, seperti pada link no 1 diatas waktu matakuliah metode numeri yang intinya jadi keluar rumus. kalau dulu pakai excel. klo gk salah pakai polynom… sekarang coba pakai matlab untuk curve fitting nya menggunakan fourier. apa itu. tentah lah.. saya sendiri juga kurang paham, tapi mari kita implementasikan dulu ya.

1. Sumber data dari database getdata.php

kenapa sih ambil datanya lewat php ? gk langsung nembak mysql server ? ya sepertinya anda butuh baca bab sebelum ini. kalau gk salah di sync data. intinya port 80 gak kan di blok di web hosting makanya pakai php. sebagai API. oke kita buat getdata.php. intinya sama dengan getsync.php bedanya cman sedikit di statement where nya saja. dan tidak perlu naruh jumlah baris yang akan di sync karena tidak dibutuhkan. berikut codenya


<?php include "config.php";
//if (true)
if(isset($_POST['k'])) {
//if (true)
if( $_POST['k'] ==$key)
//jika variabel k sama dengan key makan proses input.
//ini untuk autentikasi meski sebenarnya metode ini sangat mudah dibobol pakai wireshark untuk lihat datanya
{ $sync =$_POST['sync'];
$idnode = $_POST['idnode'];
$startdate = $_POST['startdate'];
$enddate = $_POST['enddate'];
//$idnode = 'N1';
//$startdate = "2018-03-01 00:00";
//$enddate = "2018-03-02 00:00";
//$limit = "2";

$query = "select iddata,idnode,hum,temp,press,waktu from masterdata where idnode='$idnode' and waktu between $startdate and $enddate order by iddata asc";
$data = mysqli_query($conn, $query); if ($data->num_rows==0)
{
echo "i#No new data";
}
else
{
//melempar nilai last id untuk di save csv. karena ini jalan di server lokal maka kemungkinan diskoneknya kecil
//belum coba ke slave server yang tidak ada auto incrementnya
while ($row = mysqli_fetch_array($data, MYSQL_ASSOC))
{
echo $row['iddata'].','.$row['idnode'].','.$row['hum'].','.$row['temp'].','.$row['press'].','.$row['waktu'].'#';

}

}

}
else
{
echo "i#Key Salah#Periksa Key";
}
}
else
{
echo "i#Tidak post#Periksa Post";
}

?>

2. program matlab untuk menarik data

matlab narik data

matlab narik data

3. curve fitting.

buka app. curve fitting. tinggal sumbu x dipasang x. sumbu Y dipasang suhu. hasilnya keluar rumus tersebut. gampang kan ?

intinya ada banyak metode untuk curve fittingnya, nanti keluar equation… fungsinya apa ? ya bisa digunakan untuk peramalan suhu di kemudian hari.

kalau jumlah datanya lebih banyak maka rumusnya juga berbeda karena suhu sendiri fluktuasinya sangat cepat. nanti bisa dikombinasi dengan perubahan tekanan dan kelembapan. apakah ketiga

elemen tersebut saling mempengaruhi ? ya pasti, namun bagaimana cara mengetahui hubungannya ? pakai rumus ini kira2. tapi sederhananya suhu dan kelembapan berbanding terbalik, dan kelembapan dan tekanan berbanding lurus. kalau suhu naik kelembapan turun, tekanan juga turun. kira2 begitu yang saya amati,

Curve Fiting

Curve Fiting Fourier paling mendekati

Curve Fiting Polynom

Curve Fiting Polynom

terima kasih semoga bermanfaat

Wassalamu’alaikum Wr. Wb.