Minggu, 24 Maret 2019

part 2: membuat arduino memiliki protokol modbus TCP


assalamualaikum,
sobat arduino

lanjut share lagi.


bagaimana membuat arduino yang bisa komunikasi dengan software scada ataupun software yang memiliki protocol modbus TCP.?

siapkan alat dan bahan:
alat:
1. laptop/pc
2. software arduino IDE
3. software modscan

bahan:
1. arduino uno
2. ethernet shield R3 (disini menggunakan yang R3 karena kalo konek ke router gak ruwet0
3. kabel ethernet straight
4. kabel data
5. library Modbus TCP

untuk set IP dan mac addres dilakukan di koding

langkah-langkah:
1. tancapkan arduino dengan ethernet shield
2. sambungkan kabel data dari arduino ke pc
3. sambungkan kabel ethernet dari ethernet shield ke laptop
4. upload koding dibawah ini:
#include <SPI.h>
#include <Ethernet.h>

#include "Mudbus.h"

Mudbus Mb;
//Function codes 1(read coils), 3(read registers), 5(write coil), 6(write register)
//signed int Mb.R[0 to 125] and bool Mb.C[0 to 128] MB_N_R MB_N_C
//Port 502 (defined in Mudbus.h) MB_PORT , kalo mau ganti port edit di library

void setup()
{
  uint8_t mac[]     = { 0x90, 0xA2, 0xDA, 0x00, 0x51, 0x06 };// jika membuat arduino banyak dalam 1 jaringan, mac addres silahkan di edit
  uint8_t ip[]      = { 192, 168, 1, 8 };// ip arduino jangan sama dengan Ip laptop/pc
  uint8_t gateway[] = { 192, 168, 1, 1 };
  uint8_t subnet[]  = { 255, 255, 255, 0 };
  Ethernet.begin(mac, ip, gateway, subnet);
  //Avoid pins 4,10,11,12,13 when using ethernet shield

  delay(5000);
  Serial.begin(9600);
  
  pinMode(7, INPUT_PULLUP);
  pinMode(8, OUTPUT); 
}

void loop()
{
  Mb.Run();
  
  //Analog inputs 0-1023 = holding register addres mulai dari 40000-40002
  Mb.R[0] = analogRead(A0); //pin A0 to Mb.R[0]
  Mb.R[1] = analogRead(A1);
  Mb.R[2] = analogRead(A2);
  
  //Analog outputs 0-255 = holding register addres mulai dari 40006
  analogWrite(6, Mb.R[6]); //pin ~6 from Mb.R[6]

  //Digital inputs = coil status addres mulai dari 00007, kalo mau kontrol kasih ON
  Mb.C[7] = digitalRead(7); //pin 7 to Mb.C[7]

  //Digital outputs = coil status addres mulai dari 00008
  digitalWrite(8, Mb.C[8]); //pin 8 from Mb.C[8]
}

5. setelah selesai upload, cek koneksi dengan buka command promt, ketik: ping 192.168.1.8 (ip arduino di koding)

6. jalankan software modscan
connection -connect - connect using- remote tcp ip/server
masukkan ip arduino dan port standart modbus  502

7. cek sesuai addres IO

bila ada yang kurang jelas bisa kontak SIMOR 081555305255

selamat berkarya dengan arduino, semoga menjadi ladang rezeki.


salam,
SIMOR

Jumat, 22 Maret 2019

apa itu Blynk? Modbus apa bisa di Blynk kan???


BLYNK adalah platform untuk aplikasi OS Mobile (iOS dan Android) yang bertujuan untuk kendali module Arduino, Raspberry Pi, ESP8266, WEMOS D1, dan module sejenisnya melalui Internet.
Aplikasi ini merupakan wadah kreatifitas untuk membuat antarmuka grafis untuk proyek yang akan diimplementasikan hanya dengan metode drag and drop widget.
Penggunaannya sangat mudah untuk mengatur semuanya dan dapat dikerjakan dalam waktu kurang dari 5 menit. Blynk tidak terikat pada papan atau module tertentu. Dari platform aplikasi inilah dapat mengontrol apapun dari jarak jauh, dimanapun kita berada dan waktu kapanpun. Dengan catatan terhubung dengan internet dengan koneksi yang stabil dan inilah yang dinamakan dengan sistem Internet of Things (IOT).

Bagaimana cara menggunakan BLYNK?

Pada kesempatan kali ini saya menggunakan platform dari aplikasi ANDROID, langkah-langkah awal penggunaannya yaitu :
  1. Download dan install aplikasi melalui “PlayStore
  2. Buka aplikasi, dan silahkan sign up new account atau login menggunakan “Facebook
  3. Buat new project, dan pilihlah salah satu module yang akan Anda gunakan maupun aksesoris module yang berfungsi sebagai sarana terhubung ke Internet.
  4. Setelah itu drag and drop rancangan proyek Anda
  5. Kemudian klik Blynk untuk mengirimkan Token Auth melalui email
  6. Dan terakhir cek inbox email Anda dan temukan Auth Token yang dimana ini akan digunakan untuk program yang di downloadkan ke module
Setelah pada smart phone selesai, beralih ke software ide arduino yang akan digunakan dalam memprogram serta mendownloadkan program ke module, langkah – langkahnya yaitu :
  1. Download file .zip rilis terbaru
  2. Unzip itu file tersebut yang didalam terdapat file library
  3. Peletakan Library pada OS
    1. Mac : (home directory)/Documents/Arduino/libraries
    2. PC (Windows) : My Documents -> Arduino -> libraries
    3. Linux : (home directory)/sketchbook/libraries


bagaimana koneksi blynk dengan peralatan yang mempunyai  protocol modbus??

SIMOR sudah mencoba dan mengimplementasikan. adapun yang sudah jadi korban SIMOR seperti :

  • power meter schneider PM2120, PM800
  • smart relay zelio
  • Plc LS  xbc dr32H
  • server scada survalent
  • dll





dengan Blynk ini sangat membantu sekali untuk membuat sistem monitoring peratalan-peralatan yang ada dilapangan dari jarak jauh. tanpa menggunakan ip publik. investasinya pun nggak mahal. server sudah pakai servercloud blynk, tinggal beli energy saja.

blynk adalah solusi untuk meng-IoT-kan yang cepat, praktis, dan efisien.



*sumber:https://www.nyebarilmu.com/mengenal-aplikasi-blynk-untuk-fungsi-iot/

mengambil data Temperatur dan kelembapan DHT11 via Modbus dengan arduino yang cepat dan simple



lanjutan dari artikel sebelumnya tentang cara membuat arduino Modbus RTU kali ini saya akan berbagi lagi bagaimana mengambil data sensor tempetratur dan kelembapan dari sensor DHT11 via Modbus dengan arduino.

langsung aja
download library dibawah ini
DHT

masukan ke folder library

tulis sketch dibawah ini:

#include <ModbusRtu.h>
#define ID   1 //slave ID modbus RTU
#include "DHT.h"
#define DHTPIN 21  //pin 21 arduino mega
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);


Modbus slave(ID, 0, 0); // this is slave ID and RS-232 or USB-FTDI
// jumlah register addres modbus RTU
uint16_t au16data[11];
int8_t state = 0;

void setup() {
  io_setup(); // I/O settings
  dht.begin();
  // start communication
  slave.begin( 19200 );

}


void loop() {

   state = slave.poll( au16data, 11 );
   io_poll();

}


void io_setup() {
  // define i/o

}

/**
 *  Link between the Arduino pins and the Modbus array
 */
void io_poll() {

  //read DHT11
   float h = dht.readHumidity();
   float t = dht.readTemperature();

  au16data[0] = h;
  au16data[1] = t;


  // diagnose communication
  au16data[8] = slave.getInCnt();
  au16data[9] = slave.getOutCnt();
  au16data[10] = slave.getErrCnt();
}

rakit hardware seperti gambar dibawah:



upload ke arduino


jalankan modscan

cek via modscan

addres 1 dan 2 itu adalah datanya
1 itu kelembapan
2 itu temperature


selamat berkarya dengan Modbus.


bila ada yang kurang jelas bisa hubungi via WA SIMOR (081555305255)

Rabu, 06 Maret 2019

membuat arduino memiliki protocol modbus RTU yang simpel, praktis dan efisien




assalamu'alaikum
Modbuser


sudah lama gak update artikel, puaks akan mencoba meluangkan waktu sebentar untuk menuliskan tentang cara membuat arduino memiliki protocol modbus RTU yang simpel, praktis dan efisien.
hanya butuh waktu 1menit.

adapun yang dibutuhkan :
1. board arduino uno (terserah mau pakai arduino apa)
2. kabel data
3. pc/laptop (kalo gak punya pinjam di warnet terdekat)

software:

library modbus

langsung aja kita menuju tahap 
1. colokin kabel data to arduino dan PC
2. masukkan library C:\Program Files (x86)\Arduino\libraries
3. run software arduino IDE
4. ketik sketch dibwah ini:
#include <ModbusRtu.h>
#define ID   1 //slave ID modbus RTU

Modbus slave(ID, 0, 0); // this is slave ID and RS-232 or USB-FTDI
// jumlah register addres modbus RTU
uint16_t au16data[9];
int8_t state = 0;

void setup() {
  io_setup(); // I/O settings

  // start communication
  slave.begin( 19200 );
 
}


void loop() {
  
   state = slave.poll( au16data, 9 );

 
    io_poll();

/**
 * pin maping:
 * 2 - digital input
 * 3 - digital input
 * 4 - digital input
 * 5 - digital input
 * 6 - digital output
 * 7 - digital output
 * 8 - digital output
 * 9 - digital output
 * 10 - analog output
 * 11 - analog output
 * 14 - analog input
 * 15 - analog input
 *
 * pin 13 is reserved to show a successful query
 */
void io_setup() {
  // define i/o
  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);
  pinMode(4, INPUT_PULLUP);
  pinMode(5, INPUT_PULLUP);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  digitalWrite(6, LOW );
  digitalWrite(7, LOW );
  digitalWrite(8, LOW );
  digitalWrite(9, LOW );
  analogWrite(10, 0 );
  analogWrite(11, 0 );
}

/**
 *  Link between the Arduino pins and the Modbus array
 */
void io_poll() {
  // get digital inputs -> au16data[0]
  bitWrite( au16data[0], 0, digitalRead( 2 ));
  bitWrite( au16data[0], 1, digitalRead( 3 ));
  bitWrite( au16data[0], 2, digitalRead( 4 ));
  bitWrite( au16data[0], 3, digitalRead( 5 ));

  // set digital outputs -> au16data[1]
  digitalWrite( 6, bitRead( au16data[1], 0 ));
  digitalWrite( 7, bitRead( au16data[1], 1 ));
  digitalWrite( 8, bitRead( au16data[1], 2 ));
  digitalWrite( 9, bitRead( au16data[1], 3 ));

  // set analog outputs
  analogWrite( 10, au16data[2] );
  analogWrite( 11, au16data[3] );

  // read analog inputs
  au16data[4] = analogRead( 0 );
  au16data[5] = analogRead( 1 );

  // diagnose communication
  au16data[6] = slave.getInCnt();
  au16data[7] = slave.getOutCnt();
  au16data[8] = slave.getErrCnt();
}

5. run software modscan: untuk mengecek apakah arduino sudah ada protocol modbusnya

dikoding tadi addresnya dibikin 9. maka di modscan untuk lenghtnya gak boleh lebih dari 9.
dan juga perhatikan modbus point type; itu ikut holding register. jika lenghtnya di isi 10 apa yang terjadi?



device ID juga samakan dengan koding, isi angka 1. jika di isi angka 2 apa yang terjadi???




experiment ini di sponsori oleh SIMOR sebagai medianya:



selamat berinovasi dengan modbus.

wassalam


fuad hasan
(SIMOR)

Uji sensor ultrasonic waterproof A01NYUB dengan ESP32

  apa itu sensor ultrasonic ?? Sensor jarak ultrasonik menentukan jarak ke target dengan mengukur selang waktu antara pengiriman dan penerim...