Sabtu, 01 Desember 2018
INGIN menulis tapi gk tahu apa yang ditulis
kmarin saya oprek zelio konek to simor
sebelum konek to simor saya test pakai modscan, datanya gk mau kluar, message timeout.
saya coba modbus tester, akhirnya bisa reply data kluar.
coba kontrol, ambil data analog.. juga normal tanpa kendala
harus bikin logic dulu d FBD kalo modbus zelio itu
sebelum konek to simor saya test pakai modscan, datanya gk mau kluar, message timeout.
saya coba modbus tester, akhirnya bisa reply data kluar.
coba kontrol, ambil data analog.. juga normal tanpa kendala
harus bikin logic dulu d FBD kalo modbus zelio itu
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
Selasa, 30 Oktober 2018
cara mengambil data Arus micom p127 di arduino
share tentang cara mapping relay proteksi micom di arduino.
yang saya ambil contoh kali ini mengambil data arus R, S dan T.
berikut contoh datasheet dari micom p127
disitu tertulis 30-31 di phasa A itu merupakan bilangan hexa, dirubah dahulu ke bilangan desimal = 48-49.
jadi :
phasa A 48-49
phasa B 50 -51
phasa C 52-53
lakukan polling di arduino :
modbus_construct(&packets[PACKET1], 1, READ_HOLDING_REGISTERS, 48, 6, 0);//
artinya di atas adalah arduino memanggil slave ID 1, function HOLDING REGISTER, start addres 48 , lenghtnya 6, start mapping di void loop arduino dimulai dari regs 0
sekian share kali ini semoga bermanfaat.
jangan lupa meninggalkan comment
bila ada yang kurang jelas silahkan menghubungi 081555305255
yang saya ambil contoh kali ini mengambil data arus R, S dan T.
berikut contoh datasheet dari micom p127
disitu tertulis 30-31 di phasa A itu merupakan bilangan hexa, dirubah dahulu ke bilangan desimal = 48-49.
jadi :
phasa A 48-49
phasa B 50 -51
phasa C 52-53
lakukan polling di arduino :
modbus_construct(&packets[PACKET1], 1, READ_HOLDING_REGISTERS, 48, 6, 0);//
artinya di atas adalah arduino memanggil slave ID 1, function HOLDING REGISTER, start addres 48 , lenghtnya 6, start mapping di void loop arduino dimulai dari regs 0
sekian share kali ini semoga bermanfaat.
jangan lupa meninggalkan comment
bila ada yang kurang jelas silahkan menghubungi 081555305255
Rabu, 10 Oktober 2018
membuat line follower menggunakan nodemcu
langsung aja saya share dari hasil riset pertama kali membuat line follower yang mudah tanpa ribet.
awal mula riset membikin itu berawal dari saya membeli komponen shield motor nodemcu dan board nodemcu amica. kemudian saya belikan 2 buah roda + gearbox. lalu saya bikin kontrol via blynk sudah sukses,
'lanjjut kontrol via aplikasi hp sudah sukses....
akhirnya penasaran membuat line follower. kemudian saya membeli sensor line follower (sensor infrared).
berikut codingnya:
static const uint8_t pwm_A = 5 ;
static const uint8_t pwm_B = 4;
static const uint8_t dir_A = 0;
static const uint8_t dir_B = 2;
int motor_speed = 550;
int durasi = 10;
void setup() {
// put your setup code here, to run once:
pinMode(pwm_A, OUTPUT); // PMW A
pinMode(pwm_B, OUTPUT); // PMW B
pinMode(dir_A, OUTPUT); // DIR A
pinMode(dir_B, OUTPUT); // DIR B
pinMode (14, INPUT);
pinMode (12, INPUT);
}
void loop() {
int lsensor = digitalRead(14);
int rsensor = digitalRead(12);
//MAJU
if((lsensor == LOW)&&(rsensor == LOW)){
analogWrite(pwm_A, motor_speed);
analogWrite(pwm_B, motor_speed);
digitalWrite(dir_A, LOW);
digitalWrite(dir_B, LOW);
}
//BELOK KANAN
else if((lsensor == LOW)&&(rsensor == HIGH)){
analogWrite(pwm_A, motor_speed);
analogWrite(pwm_B, motor_speed);
digitalWrite(dir_A, HIGH);
digitalWrite(dir_B, LOW);
delay(durasi);
}
//BELOK KIRI
else if((lsensor == HIGH)&&(rsensor == LOW)){
analogWrite(pwm_A, motor_speed);
analogWrite(pwm_B, motor_speed);
digitalWrite(dir_A, LOW);
digitalWrite(dir_B, HIGH);
delay(durasi);
}
//STOP
else if((lsensor == HIGH)&&(rsensor == HIGH)){
analogWrite(pwm_A, 0);
analogWrite(pwm_B, 0);
}
}
Selasa, 25 September 2018
membuat mobil remote kontrol dari handphone via wifi
langsung saja, kali ini saya akan share artikel cara membuat mobil remote kontrolvia wifi dengan hp android
pertama siapkan dahulu materialnya:
aplikasi: wifi rc car esp8266
langkah pertama:
1. upload sketch ke nodemcu:
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
const char *ssid = "mobil thomas"; // SSID Name
const char *password = "12345678"; // SSID Password : Between 8 and 32 carateres
IPAddress ip(192, 168, 4, 1); // IP Address
IPAddress netmask(255, 255, 255, 0); // Netmask
const int port = 80; // Port
ESP8266WebServer server(port);
// Motors pins
static const uint8_t pwm_A = 5 ;
static const uint8_t pwm_B = 4;
static const uint8_t dir_A = 0;
static const uint8_t dir_B = 2;
static const uint8_t LAMPU = 13;
// Motor speed = [0-1024]
int motor_speed = 1024;
void stop_motors() {
analogWrite(pwm_A, 0);
analogWrite(pwm_B, 0);
}
void backward() {
analogWrite(pwm_A, motor_speed);
analogWrite(pwm_B, motor_speed);
digitalWrite(dir_A, LOW);
digitalWrite(dir_B, HIGH);
}
void forward() {
analogWrite(pwm_A, motor_speed);
analogWrite(pwm_B, motor_speed);
digitalWrite(dir_A, HIGH);
digitalWrite(dir_B, LOW);
}
void turn_left() {
analogWrite(pwm_A, motor_speed);
analogWrite(pwm_B, motor_speed);
digitalWrite(dir_A, HIGH);
digitalWrite(dir_B, HIGH);
}
void turn_right() {
analogWrite(pwm_A, motor_speed);
analogWrite(pwm_B, motor_speed);
digitalWrite(dir_A, LOW);
digitalWrite(dir_B, LOW);
}
void handleRoot() {
if (server.hasArg("State")) {
String command = server.arg("State");
if (command.equals("F")) {
forward();
server.send(200, "text / plain", "Forward");
}
else if (command.equals("B")) {
backward();
server.send(200, "text / plain", "Backward");
}
else if (command.equals("L")) {
turn_left();
server.send(200, "text / plain", "Turn Left");
}
else if (command.equals("R")) {
turn_right();
server.send(200, "text / plain", "Turn Right");
}
else if (command.equals("S")) {
stop_motors();
server.send(200, "text / plain", "Stop");
}
else if (command.equals("ON")) {
digitalWrite(LAMPU, HIGH);
server.send(200, "text / plain", "Switch on the light");
}
else if (command.equals("OFF")) {
digitalWrite(LAMPU, LOW);
server.send(200, "text / plain", "Switch off the light");
}
}
}
void setup() {
WiFi.mode(WIFI_AP); //Only Access point
WiFi.softAPConfig(ip, ip, netmask);
WiFi.softAP(ssid, password);
// Declaration of motors
pinMode(pwm_A, OUTPUT); // PMW A
pinMode(pwm_B, OUTPUT); // PMW B
pinMode(dir_A, OUTPUT); // DIR A
pinMode(dir_B, OUTPUT); // DIR B
pinMode(LAMPU, OUTPUT); // LAMPU
// Start Server
server.on("/", HTTP_GET, handleRoot);
server.begin();
}
void loop() {
server.handleClient();
}
setelah selesai upload
2. rangkai motor ke shield motor dan tancapkan nodemcu ke shield motor
3. tancapkan kabel powerbank ke nodemcu
4. jalan kan aplikasi
5. konek wifi HP ke wifi nodemcu
readyyyy GOOOOOOOOOOOOOOOOO
pertama siapkan dahulu materialnya:
- mobil" an anak yang gk kepakai
- nodemcu
- shield motor nodemcu
- powerbank
- motor gearbox + roda
aplikasi: wifi rc car esp8266
langkah pertama:
1. upload sketch ke nodemcu:
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
const char *ssid = "mobil thomas"; // SSID Name
const char *password = "12345678"; // SSID Password : Between 8 and 32 carateres
IPAddress ip(192, 168, 4, 1); // IP Address
IPAddress netmask(255, 255, 255, 0); // Netmask
const int port = 80; // Port
ESP8266WebServer server(port);
// Motors pins
static const uint8_t pwm_A = 5 ;
static const uint8_t pwm_B = 4;
static const uint8_t dir_A = 0;
static const uint8_t dir_B = 2;
static const uint8_t LAMPU = 13;
// Motor speed = [0-1024]
int motor_speed = 1024;
void stop_motors() {
analogWrite(pwm_A, 0);
analogWrite(pwm_B, 0);
}
void backward() {
analogWrite(pwm_A, motor_speed);
analogWrite(pwm_B, motor_speed);
digitalWrite(dir_A, LOW);
digitalWrite(dir_B, HIGH);
}
void forward() {
analogWrite(pwm_A, motor_speed);
analogWrite(pwm_B, motor_speed);
digitalWrite(dir_A, HIGH);
digitalWrite(dir_B, LOW);
}
void turn_left() {
analogWrite(pwm_A, motor_speed);
analogWrite(pwm_B, motor_speed);
digitalWrite(dir_A, HIGH);
digitalWrite(dir_B, HIGH);
}
void turn_right() {
analogWrite(pwm_A, motor_speed);
analogWrite(pwm_B, motor_speed);
digitalWrite(dir_A, LOW);
digitalWrite(dir_B, LOW);
}
void handleRoot() {
if (server.hasArg("State")) {
String command = server.arg("State");
if (command.equals("F")) {
forward();
server.send(200, "text / plain", "Forward");
}
else if (command.equals("B")) {
backward();
server.send(200, "text / plain", "Backward");
}
else if (command.equals("L")) {
turn_left();
server.send(200, "text / plain", "Turn Left");
}
else if (command.equals("R")) {
turn_right();
server.send(200, "text / plain", "Turn Right");
}
else if (command.equals("S")) {
stop_motors();
server.send(200, "text / plain", "Stop");
}
else if (command.equals("ON")) {
digitalWrite(LAMPU, HIGH);
server.send(200, "text / plain", "Switch on the light");
}
else if (command.equals("OFF")) {
digitalWrite(LAMPU, LOW);
server.send(200, "text / plain", "Switch off the light");
}
}
}
void setup() {
WiFi.mode(WIFI_AP); //Only Access point
WiFi.softAPConfig(ip, ip, netmask);
WiFi.softAP(ssid, password);
// Declaration of motors
pinMode(pwm_A, OUTPUT); // PMW A
pinMode(pwm_B, OUTPUT); // PMW B
pinMode(dir_A, OUTPUT); // DIR A
pinMode(dir_B, OUTPUT); // DIR B
pinMode(LAMPU, OUTPUT); // LAMPU
// Start Server
server.on("/", HTTP_GET, handleRoot);
server.begin();
}
void loop() {
server.handleClient();
}
setelah selesai upload
2. rangkai motor ke shield motor dan tancapkan nodemcu ke shield motor
3. tancapkan kabel powerbank ke nodemcu
4. jalan kan aplikasi
5. konek wifi HP ke wifi nodemcu
readyyyy GOOOOOOOOOOOOOOOOO
Senin, 17 September 2018
Rabu, 12 September 2018
upgrade car thomas from pull back to IOT
oprek kali ini tentang sebuah mobil pull back atau bahasa jowonya TARIK MUNDUR.
ada mainan anak saya yang sudah rusak.
saya mencoba untuk meng upgrade menjadi mobil yang KECE dan KEKINIAN bisa dikendalikan dari manapun berada.
langsung aja bahan yang dibutuhkan antara lain:
software :
#include <BlynkSimpleEsp8266.h>
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "yourtoken";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "yourwifi";
char pass[] = "yourpassswordwifi";
int PWMA=5;//Right side
int PWMB=4;//Left side
int DA=0;//Right reverse
int DB=2;//Left reverse
void setup(){
// Debug console
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
pinMode(PWMA, OUTPUT);
pinMode(PWMB, OUTPUT);
pinMode(DA, OUTPUT);
pinMode(DB, OUTPUT);
}
void loop(){
Blynk.run();
}
// Handling Joystick data
BLYNK_WRITE(V1){
int x = param[0].asInt();
int y = param[1].asInt();
if(x==-1 && y==0){ //Left Turn
digitalWrite(PWMA, 450);
digitalWrite(DA, HIGH);
digitalWrite(PWMB, 450);
digitalWrite(DB, LOW);
}else if(x==0 && y==-1){ //Backward
digitalWrite(PWMA, HIGH);
digitalWrite(DA, HIGH);
digitalWrite(PWMB, HIGH);
digitalWrite(DB, HIGH);
}else if(x==0 && y==0){ //Stay
digitalWrite(PWMA, LOW);
digitalWrite(DA, LOW);
digitalWrite(PWMB, LOW);
digitalWrite(DB, LOW);
}else if(x==0 && y==1){ //Forward
digitalWrite(PWMA, HIGH);
digitalWrite(DA, LOW);
digitalWrite(PWMB, HIGH);
digitalWrite(DB, LOW);
}else if(x==1 && y==0){ //Right turn
digitalWrite(PWMA, 450);
digitalWrite(DA, LOW);
digitalWrite(PWMB, 450);
digitalWrite(DB, HIGH);
}
}
ada mainan anak saya yang sudah rusak.
saya mencoba untuk meng upgrade menjadi mobil yang KECE dan KEKINIAN bisa dikendalikan dari manapun berada.
langsung aja bahan yang dibutuhkan antara lain:
- nodemcu
- motor + roda
- shield motor
- powerbank
- kabel
software :
- arduino IDE
- blynk (instal di handphone)
desain HMI di aplikasi blink :
upload sketch dibawah ini:
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>#include <BlynkSimpleEsp8266.h>
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "yourtoken";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "yourwifi";
char pass[] = "yourpassswordwifi";
int PWMA=5;//Right side
int PWMB=4;//Left side
int DA=0;//Right reverse
int DB=2;//Left reverse
void setup(){
// Debug console
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
pinMode(PWMA, OUTPUT);
pinMode(PWMB, OUTPUT);
pinMode(DA, OUTPUT);
pinMode(DB, OUTPUT);
}
void loop(){
Blynk.run();
}
// Handling Joystick data
BLYNK_WRITE(V1){
int x = param[0].asInt();
int y = param[1].asInt();
if(x==-1 && y==0){ //Left Turn
digitalWrite(PWMA, 450);
digitalWrite(DA, HIGH);
digitalWrite(PWMB, 450);
digitalWrite(DB, LOW);
}else if(x==0 && y==-1){ //Backward
digitalWrite(PWMA, HIGH);
digitalWrite(DA, HIGH);
digitalWrite(PWMB, HIGH);
digitalWrite(DB, HIGH);
}else if(x==0 && y==0){ //Stay
digitalWrite(PWMA, LOW);
digitalWrite(DA, LOW);
digitalWrite(PWMB, LOW);
digitalWrite(DB, LOW);
}else if(x==0 && y==1){ //Forward
digitalWrite(PWMA, HIGH);
digitalWrite(DA, LOW);
digitalWrite(PWMB, HIGH);
digitalWrite(DB, LOW);
}else if(x==1 && y==0){ //Right turn
digitalWrite(PWMA, 450);
digitalWrite(DA, LOW);
digitalWrite(PWMB, 450);
digitalWrite(DB, HIGH);
}
}
Jumat, 31 Agustus 2018
mySCADA for android (mymobile) with wemos d1 mini
cara menggunakan MySCADA versi android:
instal aplikasi myscada di Hp (download di playstore)
instal software myDesigner
run mydesaigner -> new project-> buat HMI -> project -> project -> download to device
run myscada di HP -> klik pojok atas -> pilihproject -> klik add
saat download project dari pc to hp posisi layar hp seperti di bawah ini
bila belum jelas bisa kontak : 081555305255
Rabu, 29 Agustus 2018
SIMOR WEMOS kontrol lampu
alat yang dibutuhkan:
modbusTCPslave
taruh library di folder libraries
sketch:
#include <ESP8266WiFi.h>
#include <ModbusTCPSlave.h>
#include <Ticker.h>
//Settings IP Nodemcu
byte ip[] = { 192, 168, 1, 10};
byte gateway[] = { 192, 168, 1, 1 };
byte subnet[] = { 255, 255, 255, 0 };
ModbusTCPSlave Mb;
Ticker Stop;
const int ledPin = 5; //D1
void monitoring() {
///Digital Outputs
digitalWrite(ledPin,Mb.MBHoldingRegister[2] );
}
void setup()
{
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
Serial.begin(115200);
Mb.begin("SIMOR", "SIMOR2017", ip, gateway, subnet);
delay(100);
}
void loop()
{
Mb.Run();
Stop.attach_ms(35,monitoring);
}
setelah sukses upload,
instal aplikasi iPLC d hp android anda.
masukkan ip wemos tadi
masukkan addres kontrol (2) holding register, bit 0
- wemos d1 mini
- modul relay
- supply 220 to 5v
- switch hotel
modbusTCPslave
taruh library di folder libraries
sketch:
#include <ESP8266WiFi.h>
#include <ModbusTCPSlave.h>
#include <Ticker.h>
//Settings IP Nodemcu
byte ip[] = { 192, 168, 1, 10};
byte gateway[] = { 192, 168, 1, 1 };
byte subnet[] = { 255, 255, 255, 0 };
ModbusTCPSlave Mb;
Ticker Stop;
const int ledPin = 5; //D1
void monitoring() {
///Digital Outputs
digitalWrite(ledPin,Mb.MBHoldingRegister[2] );
}
void setup()
{
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
Serial.begin(115200);
Mb.begin("SIMOR", "SIMOR2017", ip, gateway, subnet);
delay(100);
}
void loop()
{
Mb.Run();
Stop.attach_ms(35,monitoring);
}
setelah sukses upload,
instal aplikasi iPLC d hp android anda.
masukkan ip wemos tadi
masukkan addres kontrol (2) holding register, bit 0
Selasa, 07 Agustus 2018
simor for substation Gunung sari
monitoring beban dengan sensor arus non invasive
#include <SPI.h>
#include <Ethernet.h>
#include "Mudbus.h"
#include "EmonLib.h" // Include Emon Library
EnergyMonitor emon1; // Create an instance
EnergyMonitor emon2;
EnergyMonitor emon3;
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
void setup()
{
uint8_t mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x51, 0x06 };
uint8_t ip[] = { 192, 168, 0, 10 };
uint8_t gateway[] = { 192, 168, 0, 254 };
uint8_t subnet[] = { 255, 255, 255, 0 };
Ethernet.begin(mac, ip, gateway, subnet);
//Avoid pins 4,10,11,12,13 when using ethernet shield
emon1.current(0, 70);
emon2.current(1, 68);
emon3.current(2, 68);
delay(3000);
Serial.begin(9600);
}
void loop()
{
Mb.Run();
double IrmsR = emon1.calcIrms(1480); // Calculate Irms only
double IrmsS = emon2.calcIrms(1480);
double IrmsT = emon3.calcIrms(1480);
int IR;
int IRt;
IR = IrmsR *80;
if(IR<18){
IRt = IR * 0;
}
else {
IRt = IR * 1;
}
int IS;
int ISt;
IS = IrmsS *80;
if(IS<18){
ISt = IS * 0;
}
else {
ISt = IS * 1;
}
int IT;
int ITt;
IT = IrmsT *80;
if(IT<18){
ITt = IT * 0;
}
else {
ITt = IT * 1;
}
Mb.R[0] = IRt;
Mb.R[1] = ISt;
Mb.R[2] = ITt;
Mb.R[3] = 87;
Mb.R[4] = 7818;
}
Jumat, 03 Agustus 2018
membuat nodemcu sebagai AP
share artikel kali ini tentang koneksi modbus nodemcu, kondisi sebelumnya nodemcu modbus hanya sebagai slave aja koneksinya.
kali ini nodemcunya sebagai Acces point,
jadi ketika ingin koneksi dengan alat yang mau di monitor maupun di kontrol d modbusnya harus koneksi ke wifi dulu
kali ini bisa konek langsung k alat tersebut
syaratnya:
segmen ip di nodemcu ketika sebagai AP 192.168.1.1
maka di nodemcunya harus sama 192.168,1,1
kali ini nodemcunya sebagai Acces point,
jadi ketika ingin koneksi dengan alat yang mau di monitor maupun di kontrol d modbusnya harus koneksi ke wifi dulu
kali ini bisa konek langsung k alat tersebut
syaratnya:
segmen ip di nodemcu ketika sebagai AP 192.168.1.1
maka di nodemcunya harus sama 192.168,1,1
Rabu, 01 Agustus 2018
Kamis, 12 Juli 2018
membuat access point (AP) dari nodemcu
nodemcu ternyata bisa dijadiin acces point (AP). dengan fitur ini bisa membuat jaringan wifi peralatan murah meriah.
langsung aja.
yang diperlukan antara lain:
1. nodemcu
2. kabel data
3. software arduino IDE
syaratnya succes : bikin password minimal 8 angka/huruf
langkah-langkah:
1. sambung nodemcu ke PC/laptop dengan kabel data
2. upload sketch dibawah ini:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
/* configurasi AP */
const char *ssid = "Test AP Modbus";
const char *password = "kududitiru";
IPAddress ip(192, 168, 1, 1);
IPAddress netmask(255, 255, 255, 0);
ESP8266WebServer server(80);
void handleRoot() {
server.send(200, "text/html", "<h1>welcome Puaks technology..... </h1>");
}
void setup() {
delay(1000);
Serial.begin(115200);
WiFi.softAP(ssid, password);
WiFi.softAPConfig(ip, ip, netmask);
server.on("/", handleRoot);
server.begin();
Serial.println("HTTP server started");
}
void loop() {
server.handleClient();
}
3. sambungkan laptop anda ke wifi nodemcu sesuai nama yang di sketch yg d upload tadi.
Rabu, 11 Juli 2018
Kamis, 24 Mei 2018
cara menyetting modul ADAM 4055
untuk merubah setting modul adam 4055
1. pasang power supply dan kabel data rs485
2. jumper terminal init ke terminal (b) GND
1. pasang power supply dan kabel data rs485
2. jumper terminal init ke terminal (b) GND
Senin, 21 Mei 2018
read current, voltage, real power and frequency PM710 with SIMOR (Arduino uno, ethernet shield, and rs485 shield)
pm710 adalah power meter digital yang memiliki protocol modbus rtu dengan port komunikasi RS485. PM ini memiliki 2 type data yaitu float dan integer.
ditempat kerja saya yang sekarang banyak sekali power meter jenis ini. yang mana gatewaynya sering mengalami hang. sehingga data yang tampil di HMI master station tidak update.
akhirnya saya menggunakan sebuah mikrokontroller yang supper canggih yaitu Arduino Uno sebagai gatewaynya dari PM tersebut. pertama kali saya trial ini di kantor dengan PM spare 3 jam oprek tidak ada hasil. akhirnya saya nyerah, saya masukin ke dalam tas kerja dan saya bawa pulang.
sampai di rumah masih penasaran kenapa kok nggak mau di baca, padahal pakai usb to rs485 normal tanpa masalah. langkah pertama:
1. coba mengganti shield rs485, tapi masih belum ada hasil sampai ganti 5x kalo nggak salah
2. ganti mikrokontroller arduino. alhamdulillah ada hasil.
coba tanya" di grup WA modbus arduino arduino yang saya pakai ada kesalahan cetak arduino mega black clone salah serial. tapi saya nggak mau ambil pusing. arduinonya saya lelang dengan harga 2rb.
karena shield rs485 hanya cocok di port serial 0.
hari telah tiba senin tanggal 21 mei 2018. saya mencoba untuk memasang di GI Krian dengan membaca beberapa parameter seperti:
1. tegangan
2. daya
3. arus
4. frekwensi
dengan total 10 power meter.
pada saat mencoba implementasi, ada kesulitan yaitu mengecek ID, baudrate, parity. karena tampilan angkanya kurang sempurna (cek gambar di atas). tapi alhamdulillah ada 1 PM yang angkanya yang agak sempurna dan sudah diketahui ID, parity dan baudratenya.
setelah itu cek arus per masing" feeder. kemudian kabel rs485 yang di panel gateway saya lepas. saya cek satu persatu IDnya. alhamdulillah sudah ketemu semua.
dan sekarang sudah bisa dipantau dari master station 10 power meter tersebut.
register addres pm710
library modbus master
manual modbus master
selamat berinovasi
Jumat, 18 Mei 2018
simor mini
modul simor mini ini adalah modul buat belajar RTU dalam sistem SCADA, modul ini support arduino mega 2560/UNO, dan ethernet shield.
modul ini memiliki:
2 Digital Output (Dry Contact)
2 Digital Input (5-24V)
2 Analog Input (0-5V)
2 Analog Output (pwm 0-255)
1 Port rs485
2 Port I2C
modul ini bisa buat belajar protocol modbus slave maupun master.
dengan sebagai modbus master, bisa melakukan read/write modul modbus slave seperti:
1. Power meter (contoh yang sudah teruji: PM800, PM5110
2. Relay Proteksi (contoh yang sudah di uji: micom p127, vamp40)
3. PLC
RESET VIA MILLIS
int led = 9;
void setup() {
pinMode(led, OUTPUT);
Serial.begin(9600);//initialize the serial port
}
void(* resetFunc) (void) = 0;
void loop() {
static uint32_t prevTime;
uint32_t curTime = millis();
if ( curTime - prevTime >= 1*60*1000UL )
{
prevTime = curTime;
resetFunc();
}
}
Rabu, 09 Mei 2018
cara test rtu menggunakan ASE2000
pertama select protocol dulu
File-> selec protocol
terus properties -> protocol spesific
pilih di exchange list read multiple register buat lihat data di holding register (modbus)
pilih view -> point value untuk melihat nilai dari analog input atau digital input
tekan simulate master
pilih view -> digital control untuk control (modbus - coil status)
saat coba control.. pilih send once bukan simulate master
pilih view -> digital control untuk control (modbus - coil status)
File-> selec protocol
terus properties -> protocol spesific
pilih di exchange list read multiple register buat lihat data di holding register (modbus)
pilih view -> point value untuk melihat nilai dari analog input atau digital input
tekan simulate master
pilih view -> digital control untuk control (modbus - coil status)
saat coba control.. pilih send once bukan simulate master
pilih view -> digital control untuk control (modbus - coil status)
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...