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 :
- Download dan install aplikasi melalui “PlayStore“
- Buka aplikasi, dan silahkan sign up new account atau login menggunakan “Facebook“
- Buat new project, dan pilihlah salah satu module yang akan Anda gunakan maupun aksesoris module yang berfungsi sebagai sarana terhubung ke Internet.
- Setelah itu drag and drop rancangan proyek Anda
- Kemudian klik Blynk untuk mengirimkan Token Auth melalui email
- 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 :
- Download file .zip rilis terbaru
- Unzip itu file tersebut yang didalam terdapat file library
- 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
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:
1. arduino IDE
2. modscan
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)
Langganan:
Postingan (Atom)
Cara membuat datalogger blynk di spreadsheet / googlesheet menggunakan akun versi Free
silahkan video di atas. semoga bermanfaat. jika masih kurang jelas bisa kontak saya
-
#define BLYNK_PRINT Serial #include <TimeLib.h> #include <ESP8266WiFi.h> #include <BlynkSimpleEsp8266.h> #include <Wi...
-
Pengertian blynk sudah dijelaskan pada artikel sebelumnya klik apa itu blynk??? Sekarang penjelasan tentang prinsip kerjanya . Blynk ...
-
cara menghitung kebutuhan rectifier untuk suatu supply peralatan. jika rectifier 110VDC dan ingin memasang baterai 12v 100AH. dan beban...