Assalamu'alaikum,
modul Adrini adalah modul yang sangat simpel sekali dan power full. sudah include wifi. dan mempunyai IO banyak antara lain :
- 4 Digital input
- 5 Digital Output
- 1 analog input range tegangan 0-3,3v
modul ini menggunakan mikrokontroller sangat familier dikalangan anak jaman now.
yaitu Nodemcu versi AMICA.
kali ini saya diberi kesempatan untuk mengoprek dengan memberi protocol modbus.
dengan memberi protocol modbus. saya bisa komunikasikan modul adrini ini dengan software scada maupun aplikasi di HP yang mempunyai protocol modbus.
sebelum menggunakan ini ada satu syarat yg dipenuhi agar bisa beroperasi yaitu power supply 12V
langsung saja. saya mengoprek dengan via hp dan pc.
untuk yang via HP saya menggunakan apk Virtuino Modbus yang bisa di download di playstore
untuk yang via PC saya menggunakan software analiser protocol modbus yaitu modscan32
download dulu library buat modbusin adrini
permisi download library
adapun kodingnya:
#include <ESP8266WiFi.h>
#include <ModbusTCPSlave.h>
#include <Ticker.h>
//Settings IP Nodemcu
byte ip[] = { 172, 22, 0, 113 };
byte gateway[] = { 172, 22, 0, 1 };
byte subnet[] = { 255, 255, 255, 0 };
ModbusTCPSlave Mb;
Ticker Stop;
const int DO1 = 16; //D0
const int DO2 = 5; //D1
const int DO3 = 4; //D3
const int DO4 = 0; //D4
const int DO5 = 2; //D4
const int push1 = 14;// D5
const int push2 = 12;// D6
const int push3 = 13;//D7
const int push4 = 15;//D8
const int analogInPin = A0;
void monitoring() {
///Digital Inputs
Mb.MBHoldingRegister[0]=digitalRead(push1);//
Mb.MBHoldingRegister[1]=digitalRead(push2);//
Mb.MBHoldingRegister[2]=digitalRead(push3);//
int DI4 = digitalRead(push4);
if (DI4 == 1){
Mb.MBHoldingRegister[3]=0;//
}
else {
Mb.MBHoldingRegister[3]=1;
}
///Digital Outputs
digitalWrite(DO1,Mb.MBHoldingRegister[4] );
digitalWrite(DO2,Mb.MBHoldingRegister[5] );
digitalWrite(DO3,Mb.MBHoldingRegister[6] );
digitalWrite(DO4,Mb.MBHoldingRegister[7] );
digitalWrite(DO5,Mb.MBHoldingRegister[8] );
////Analog Input
Mb.MBHoldingRegister[9] = analogRead(analogInPin);
}
void setup()
{
pinMode(DO1, OUTPUT);
pinMode(DO2, OUTPUT);
pinMode(DO3, OUTPUT);
pinMode(DO4, OUTPUT);
pinMode(DO5, OUTPUT);
pinMode(push1, INPUT_PULLUP);
pinMode(push2, INPUT_PULLUP);
pinMode(push3, INPUT_PULLUP);
pinMode(push4, INPUT_PULLUP);
Serial.begin(115200);
Mb.begin("namawifi", "password e wifi", ip, gateway, subnet);
delay(100);
digitalWrite(DO1, LOW);
digitalWrite(DO2, LOW);
digitalWrite(DO3, LOW);
digitalWrite(DO4, LOW);
digitalWrite(DO5, LOW);
}
void loop()
{
Mb.Run();
Stop.attach_ms(35,monitoring);
}
jika sudah konek ke wifi maka led tidak nyala.
namun ketika nodemcu sudah konek ke modbus. maka nyalanya akan lambat.
berikut hasil dari via virtuino dan modscan
NB: untuk DO5 tidak bisa digunakan karena pin dari nodemcu digunakan untuk led indikasi wifi
sekian dulu oprek dari CEO SIMOR. semoga bermanfaat.
bila ada pertanyaan silahkan kontak SIMOR
wassalamu'alaikum
Fuad Hasan