• Tidak ada hasil yang ditemukan

LAMPIRAN. 1. Wiring Datalogger ke Mesin Berikut ini adalah gambar wiring diagram pemasangan datalogger ke mesin forming PT Kepuh Kencana Arum.

N/A
N/A
Protected

Academic year: 2021

Membagikan "LAMPIRAN. 1. Wiring Datalogger ke Mesin Berikut ini adalah gambar wiring diagram pemasangan datalogger ke mesin forming PT Kepuh Kencana Arum."

Copied!
23
0
0

Teks penuh

(1)

72

LAMPIRAN

1.

Wiring

Datalogger

ke Mesin

Berikut ini adalah gambar

wiring

diagram pemasangan

datalogger

ke mesin

forming

PT Kepuh Kencana Arum.

Gambar 1.

Wiring

datalogger ke mesin

Gambar 1 diatas merupakan

wiring

atau pengkabelan dari datalogger ke mesin

produksi sehingga arduino dapat membaca mesin secara keseluruhan, mulai dari

pembacaan

rotary encoder

, mode manual otomatis, dan juga dapat mengetahui mesin

forming

tersebut dalam keadaan hidup atau mati.

2.

Langkah Instalasi Alat

Langkah-langkah yang harus diperhatikan saat memasang datalogger ke mesin

forming

adalah sebagai berikut:

1.

Testing

mesin untuk mengetahui pin pada

wiring

PLC yang digunakan untuk

tombol FOR pada mesin dan sensor potong mesin.

2.

Matikan mesin, pastikan mesin dalam keadaan mati.

3.

Upload code arduino, pastikan waktu sudah tepat dan code berjalan sesuai

dengan proses mesin.

(2)

73

4.

Upload code nodemcu dan pastikan wi-fi dapat terhubung dengan nodemcu.

5.

Sambungkan kabel dari datalogger ke mesin sesuai dengan gambar 1 diatas.

6.

Hidupkan datalogger, kemudian jangan lupa colokkan adaptor.

3.

Koding Arduino

#include <SPI.h> #include <SD.h>

#include <SoftwareSerial.h> #include "Wire.h"

char MESIN_NO[10] = "UNGCNK02"; //nama mesin dan lokasi

untuk sd card // Variable SDCard

const int chipSelect = 8; File filePotongan;

// Variable Encoder

volatile int encoderValue = 0; volatile int potongan = 0; #define pinEncoder1 3 #define pinEncoder2 4

(3)

74

byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;

byte pinSwitchPemotong = 6; int SensorVal = 7; int Tbl_FOR = 5; int bacaflag; byte kondisi; int keterangan; int Hit_TmblFor=0; long prevTime; int Bhn=0; // Variabel Serial SoftwareSerial mySerial(9, 10); // RX, TX byte dataNodeMCU[20]; void setup() {

// put your setup code here, to run once: Serial.begin(115200);

mySerial.begin(115200); Wire.begin();

(4)

75 // Inisialisasi Encoder pinMode(pinEncoder1, INPUT_PULLUP); pinMode(pinEncoder2, INPUT_PULLUP); pinMode(pinSwitchPemotong, INPUT); pinMode(SensorVal, INPUT); pinMode(Tbl_FOR, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(pinEncoder1), encoder, FALLING);

if (!SD.begin(chipSelect)) // Inisialisasi SDCard { Serial.print("gagal"); } else { Serial.print("sukses"); } // SD.remove("24-8-18.TXT"); // Untuk set waktu RTC

(5)

76

bacaJumlahPotongan(); // memanggil

bacajumlahpotongan untuk mengetahui jumlah potongan terakhir }

void loop() {

readDS3231time(&second, &minute, &hour, &dayOfWeek,

&dayOfMonth, &month, &year); //baca waktu rtc

//membaca mesin hidup/mati

if(digitalRead(SensorVal)==HIGH) { kondisi = 0; keterangan = 5; Serial.print("mesin mati"); encoderValue = 0; Hit_TmblFor = 0; potongan = 0; komunikasi(); while(digitalRead(SensorVal)==HIGH) { delayMicroseconds(1); }

(6)

77 } else { kondisi = 1; keterangan = 1; Serial.print("mesin hidup"); }

//membaca mesin aktif dan trialcutting if(Bhn==HIGH && kondisi==1){

keterangan=1; //Active }

else if(Bhn==LOW && kondisi==1){ keterangan=3; //Trial Cut } //pembacaan potong if(digitalRead(pinSwitchPemotong)== LOW) { potong(); while(digitalRead(pinSwitchPemotong) == LOW) { delayMicroseconds(1); }

(7)

78 }

//memanggil void ottoman untuk mengetahui mode otomatis dan manual

otoman();

//mengatur delay waktu

if((millis()-prevTime)>300000) { Serial.print(bacaflag);

Serial.println("Otomatis kirim karena mesin IDLE"); if(Bhn==HIGH){ keterangan=2; //idle bhn ON } else { keterangan=4; } if(bacaflag==0){ komunikasi(); bacaflag = 1; } } } void otoman() {

(8)

79 if(digitalRead(Tbl_FOR)==LOW) { while(digitalRead(Tbl_FOR)==LOW) { delayMicroseconds(1); } Hit_TmblFor = Hit_TmblFor+1; } if(Hit_TmblFor>1) { //Manual Bhn=LOW; // Serial.println("FOR LOW"); } else { //Otomatis Bhn=HIGH; // Serial.println("FOR HIGH"); } } //pembacaan rotary void encoder() { int BufX1=digitalRead(pinEncoder1); int BufX2=digitalRead(pinEncoder2);

(9)

80 if(BufX1==LOW&&BufX2==LOW) { encoderValue++; } else if(BufX1==LOW&&BufX2==HIGH) { encoderValue--; } } void potong() { potongan++; simpanJumlahPotongan(potongan); simpanDataPotongan(); komunikasi(); encoderValue = 0; Hit_TmblFor = 0; prevTime = millis(); bacaflag = 0; Serial.println("SUdah potong"); }

(10)

81 void simpanDataPotongan()

{

String sekarang = String(dayOfMonth, DEC); sekarang += "-";

sekarang += String(month, DEC); sekarang += "-";

sekarang += String(year, DEC); sekarang += ".txt";

filePotongan = SD.open(sekarang, FILE_WRITE); if(filePotongan) { filePotongan.print(MESIN_NO); filePotongan.print(" "); filePotongan.print(potongan); filePotongan.print(" "); filePotongan.print(dayOfMonth); filePotongan.print("-"); filePotongan.print(month); filePotongan.print("-"); filePotongan.print(year); filePotongan.print(" ");

(11)

82 filePotongan.print(hour); filePotongan.print(":"); filePotongan.print(minute); filePotongan.print(":"); filePotongan.print(second); filePotongan.print(" "); filePotongan.print(encoderValue); filePotongan.print(" "); filePotongan.print(kondisi); filePotongan.print(" "); filePotongan.println(keterangan); filePotongan.close(); } } void bacaJumlahPotongan() { filePotongan = SD.open("index.txt"); if(filePotongan) { Serial.print("baca potongan: "); potongan = filePotongan.parseInt(); Serial.println(potongan);

(12)

83 filePotongan.close(); } } void simpanJumlahPotongan(int jml) { if(SD.exists("index.txt")) { SD.remove("index.txt"); }

filePotongan = SD.open("index.txt", FILE_WRITE); if(filePotongan) { filePotongan.println(jml); filePotongan.close(); } }

//komunikasi serial ke nodemcu void komunikasi()

{

byte potongan_a = (potongan&0xff00)>>8; byte potongan_b = (potongan&0x00ff);

(13)

84 long putaran_temp = encoderValue; boolean putaran_min = false; if(putaran_temp<0) { putaran_min = true; putaran_temp = putaran_temp*-1; } else { putaran_min = false; }

byte putaran_a = (putaran_temp&0xff0000)>>16; byte putaran_b = (putaran_temp&0x00ff00)>>8; byte putaran_c = (putaran_temp&0x0000ff);

if(putaran_min) {

putaran_a = putaran_a | 0x80; }

(14)

85 dataNodeMCU[1] = potongan_a; dataNodeMCU[2] = potongan_b; dataNodeMCU[3] = putaran_a; dataNodeMCU[4] = putaran_b; dataNodeMCU[5] = putaran_c; dataNodeMCU[6] = dayOfMonth; dataNodeMCU[7] = month; dataNodeMCU[8] = year; dataNodeMCU[9] = hour; dataNodeMCU[10] = minute; dataNodeMCU[11] = second; dataNodeMCU[12] = kondisi; dataNodeMCU[13] = keterangan; byte total = 0; for(int i=1;i<14;i++) { total+=dataNodeMCU[i]; }

byte checksum = ~total;

(15)

86 mySerial.write(dataNodeMCU, 15); }

#define DS3231_I2C_ADDRESS 0x68 byte decToBcd(byte val)

{

return( (val/10*16) + (val%10) ); }

// Convert binary coded decimal to normal decimal numbers byte bcdToDec(byte val)

{

return( (val/16*10) + (val%16) ); }

void setDS3231time(byte second, byte minute, byte hour, byte dayOfWeek, byte

dayOfMonth, byte month, byte year) {

// sets time and date data to DS3231

Wire.beginTransmission(DS3231_I2C_ADDRESS);

Wire.write(0); // set next input to start at the seconds register

(16)

87

Wire.write(decToBcd(second)); // set seconds Wire.write(decToBcd(minute)); // set minutes Wire.write(decToBcd(hour)); // set hours

Wire.write(decToBcd(dayOfWeek)); // set day of week (1=Sunday, 7=Saturday)

Wire.write(decToBcd(dayOfMonth)); // set date (1 to 31) Wire.write(decToBcd(month)); // set month

Wire.write(decToBcd(year)); // set year (0 to 99) Wire.endTransmission();

}

void readDS3231time(byte *second, byte *minute, byte *hour, byte *dayOfWeek, byte *dayOfMonth, byte *month, byte *year) {

Wire.beginTransmission(DS3231_I2C_ADDRESS);

Wire.write(0); // set DS3231 register pointer to 00h Wire.endTransmission();

Wire.requestFrom(DS3231_I2C_ADDRESS, 7);

// request seven bytes of data from DS3231 starting from register 00h

*second = bcdToDec(Wire.read() & 0x7f); *minute = bcdToDec(Wire.read());

*hour = bcdToDec(Wire.read() & 0x3f); *dayOfWeek = bcdToDec(Wire.read());

(17)

88 *dayOfMonth = bcdToDec(Wire.read()); *month = bcdToDec(Wire.read()); *year = bcdToDec(Wire.read()); }

4.

Koding Nodemcu

#include <SoftwareSerial.h> #include <ESP8266WiFi.h> #include<ESP8266HTTPClient.h> #define BAUD_RATE 115200 // Variabel Komunikasi Serial

SoftwareSerial swSer(14, 12, false, 256); //RX, TX byte dataArduino[20]; // Data Arduino int potongan = 0; long putaran = 0; int tanggal = 0; int bulan = 0; int tahun = 0; int jam = 0; int menit = 0; int detik = 0; int kondisi = 0; int keterangan = 0; long tahun_skrg; String time_ready;

(18)

89 // Variable WIFI

const char* ssid = "kka-scanner"; const char* password = "kepuh12345"; void setup() { Serial.begin(BAUD_RATE); swSer.begin(BAUD_RATE); pinMode(D2, OUTPUT); pinMode(D7, OUTPUT); pinMode(D8, OUTPUT); digitalWrite(D2, HIGH); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); digitalWrite(D7, HIGH); delay(100); digitalWrite(D7, LOW); delay(100); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); Serial.print("Netmask: "); Serial.println(WiFi.subnetMask());

(19)

90 Serial.print("Gateway: "); Serial.println(WiFi.gatewayIP()); } void loop() { komunikasi(); delay(1); if(WiFi.status() != WL_CONNECTED){ WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); digitalWrite(D7, HIGH); delay(100); digitalWrite(D7, LOW); delay(100); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); Serial.print("Netmask: "); Serial.println(WiFi.subnetMask()); Serial.print("Gateway: "); Serial.println(WiFi.gatewayIP()); }

(20)

91 }

void kirim_data() {

Serial.println("Kirim data diproses..."); if(WiFi.status()==WL_CONNECTED)

{

time_ready = String(tahun_skrg);

time_ready = time_ready + String('-');

if(bulan < 10) {

time_ready = time_ready + String('0'); }

time_ready = time_ready + String(bulan); time_ready = time_ready + String('-'); if(tanggal < 10)

{

time_ready = time_ready + String('0'); }

time_ready = time_ready + String(tanggal); time_ready = time_ready + String('T');

if(jam < 10) {

time_ready = time_ready + String('0'); }

time_ready = time_ready + String(jam); time_ready = time_ready + String(':'); if(menit < 10)

(21)

92 {

time_ready = time_ready + String('0'); }

time_ready = time_ready + String(menit); time_ready = time_ready + String(':'); if(detik < 10)

{

time_ready = time_ready + String('0'); }

time_ready = time_ready + String(detik); String ID_mesin="ungcnk02";

String KirimDataURL = "timestamp=" + time_ready + "&length=" + String(putaran) + "&kondisi_mesin=" + String(kondisi) + "&proses=" + String(keterangan) + "&id_mesin=" + ID_mesin ;

//kirim ke web pusat // String url =

"http://kepuhweb.web.id/api/transaksi/insert?" + KirimDataURL;

//kirim ke host local String url = "http://192.168.6.87/api/transaksi/insert?" + KirimDataURL; Serial.println(url); digitalWrite(D8,HIGH); delay(500); HTTPClient http; http.begin(url); http.addHeader("Content-Type", "application/x-www-form-urlencoded");

(22)

93 if(httpResponseCode>0){

String response = http.getString(); //Get the response to the request

digitalWrite(D8,LOW);

Serial.println(httpResponseCode); //Print return code Serial.println(response); //Print request answer }else{

Serial.print("Error on sending POST: "); Serial.println(httpResponseCode);

String response = http.getString(); //Get the response to the request

Serial.println(response); } Serial.println(" "); } } void komunikasi() { if(swSer.available()>0) { Serial.println(swSer.available()); dataArduino[0] = swSer.read(); if(dataArduino[0] == 254) { while(swSer.available()<14); byte total = 0; for(int i=1;i<14;i++) { dataArduino[i] = swSer.read();

(23)

94 total += dataArduino[i]; }

byte checksum = ~total;

dataArduino[14] = swSer.read(); if(checksum == dataArduino[14]) {

potongan = (dataArduino[1]<<8)+dataArduino[2]; byte tanda = (dataArduino[3]>>7);

dataArduino[3] = dataArduino[3] & 0x7F; putaran = (dataArduino[3]<<16)+(dataArduino[4]<<8)+dataArduino[5]; if(tanda==1) { putaran=putaran*-1; } tanggal = dataArduino[6]; bulan = dataArduino[7]; tahun = dataArduino[8]; tahun_skrg = tahun + 2000; jam = dataArduino[9]; menit = dataArduino[10]; detik = dataArduino[11]; kondisi = dataArduino[12]; keterangan = dataArduino[13]; kirim_data(); } } } }

Gambar

Gambar 1. Wiring datalogger ke mesin

Referensi

Dokumen terkait

Pengawasan Menggunakan Hasil penelitian ini adalah, Pemerintah metode dalam proses pembinaan dan Daerah Dalam deskriptif dan pengawasan Pemerintah Daerah Pengelolaan pendekatan

Siklus I merupakan tahap awal pelaksanaan pembelajaran membaca nyaring dengan menggunakan metode demonstrasi pada murid kelas II SDN 20 Sungai Kunyit. Pada

Mampu melakukan pemasangan alat bantu kerja pada proses pembubutan kartel, tirus dan ulir segitiga dengan bertanggung jawab.. Mampu melakukan pemasangan benda kerja pada

nda boleh memilih untuk withdraw terus wang dari smartvault anda jika wang anda telahpun dipindahkan dari akaun live trading(sila rujuk proses deposit pada muka. Jika anda

- lakukan renumber pada kontur mayor caranya seperti di atas, pilih edit string renumber range, maka akan muncul tampilan seperti di bawah ini:.. Selanjutnya apply, maka kontur

Keluaran model ISM-VAXO me- nunjukkan kedudukan sub-elemen keterbatasan finansial untuk pengembangan usaha (k-6) dan sub- elemen sistem birokrasi yang belum menjamin

Bendung karet merupakan hasil pengembangan jenis bendung tetap menjadi bendung gerak dengan membuat tubuh bendung dari tabung karet yang

Secara represif, terhadap pengemudi kendaraan angkutan barang umum yang tertangkap tangan melakukan pelanggaran sebagaimana yang dimaksud diatas, maka oleh petugas yang