Selasa, 13 November 2018
membuat modbus serial/RTU RS485 yang sangat mudah dan simple
berikut langsung saja saya share koding modbus serial/RTU RS485, semoga bermanfaat.
koding ini mohon tidak diperjual belikan.
/*
Author : Fuad Hasan (CEO SIMOR)
website : puaks.blogspot.com
*/
#include <ModbusRtu.h>
#define ID 1 //slave ID
#define TXEN 2 //pin tx enable RS485
#define PS 0 //port serial 0,1,2,3 (1-3 for mega 2560, uno 0 only)
Modbus slave(ID, PS, TXEN);
uint16_t au16data[9]; // jumlah address yang dibuat
/**
saat uji protocol via modscan setting
baudrate 9600
parity none
slave ID 1
lengt 9
address 1
Holding register
*/
void setup() {
io_setup(); // I/O settings
slave.begin( 9600 ); // baudrate
}
void loop() {
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
* 13 - digital output
* 10 - analog output PWM 0-255
* 11 - analog output PWM 0-255
*/
void io_setup() {
// define i/o
//DIGITAL INPUT
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
//DIGITAL OUTPUT
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(13, OUTPUT);
digitalWrite(7, LOW );
digitalWrite(8, LOW );
digitalWrite(9, LOW );
digitalWrite(13, LOW );
//ANALOG OUTPUT
analogWrite(10, 0 );
analogWrite(11, 0 );
}
/**
* Link between the Arduino pins and the Modbus array
*/
void io_poll() {
// get digital inputs -> au16data[0] HOLDING REGISTER 40001 di modscan, display options BINARY
bitWrite( au16data[0], 0, digitalRead( 3 ));
bitWrite( au16data[0], 1, digitalRead( 4 ));
bitWrite( au16data[0], 2, digitalRead( 5 ));
bitWrite( au16data[0], 3, digitalRead( 6 ));
// set digital outputs -> au16data[1] HOLDING REGISTER 40002 di modscan, display options BINARY
digitalWrite( 7, bitRead( au16data[1], 0 ));
digitalWrite( 8, bitRead( au16data[1], 1 ));
digitalWrite( 9, bitRead( au16data[1], 2 ));
digitalWrite( 13, bitRead( au16data[1], 3 ));
// set analog outputs, HOLDING REGISTER 40003 dan 40004 di modscan, display options unsign desimal
analogWrite( 10, au16data[2] );
analogWrite( 11, au16data[3] );
// read analog inputs, HOLDING REGISTER 40005 dan 40006 di modscan, display options unsign desimal
au16data[4] = analogRead( 0 );
au16data[5] = analogRead( 1 );
// diagnose communication
au16data[6] = slave.getInCnt();
au16data[7] = slave.getOutCnt();
au16data[8] = slave.getErrCnt();
}
library bisa download dibawah ini:
modbus
IOT blynk PM2120 Schneider
Assalamu'alaikum
hari ini saya akan share tentang cara membuat monitoring online berbasis Internet Of Things, riset kali ini saya menggunakan power meter merk schneider PM2120 dapat pinjaman dari warga Bontang yang mempunyai pabrik pupuk kaltim. sebut saja Mr. W.
oprek ini berawal dari ide ketika gimana caranya membangun sistem monitoring tanpa memikirkan server master. akhirnya ketemu aplikasi Blynk yang bisa di download di play store. aplikasi ini Free tetapi hanya menyediakan cuma sedikit energy, kamu juga bisa nambah energy tersebut dengan membeli via playstore pakai pulsa atau kartu kredit.
langsung saja apa saja yang dibutuhkan:
1. arduino mega/uno ( yang dipakai riset kali ini mega , mumpung musim kampanye sapa tahu dapat komisi dari partai)
2. kabel LAN
3. Ethernet shield
4. Kabel data buat upload arduino IDE
5. Shield RS485 kalo gak ada pakai TTL to RS485 (cara penyambungan bisa d lihat di artikel saya sebelumnya)
6. PM2120 (boleh pinjam tetangga sebelah atau pak lurah terdekat)
langkah -langkah:
1. upload koding dibawah ini (koding dibawah hanya contoh pengambilan data tegangan):
{
float VNR;
unsigned long VNR1 = (unsigned long) regs[8]<<16| regs[9];
VNR=*(float*)& VNR1;
Blynk.virtualWrite(V0, VNR);
}
koding riset ini hasil perkawinan example simplemodbusmaster dengan example blynk yang ethernet
2. sambungkan shield rs485 dengan PM2120,
3. pasang ethernet shield, dan shield RS485 di arduino mega.
4. sambungkan kabel lan to laptop (posisi laptop konek dengan wifi, share koneksi wifi di port LAN)
selamat berkreasi. apabila ada yang kurang jelas bisa bertanya pada grup modbus arduino atau WA saya (081555305255)
Wassalam
CEO 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...