Selasa, 29 Oktober 2019

MODUL ADRINI DI Modusin?? eh Modbusin. Why Not????


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);
  
}

setelah selesai di upload. led bulitin di nodemcu nyala kedip cepat itu menandakan belum konek ke wifi.
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

4 komentar:

  1. Bang, ada skematik dari papan kontrolnya?

    BalasHapus
  2. Sudah dicoba & berhasil ��..syang di pin DO5 nya jadi gak terpakai

    BalasHapus
    Balasan
    1. makasih cak...

      tpi ada manfaatnya.. ada led buat indikasi dia konek modbus dan tidaknya

      Hapus

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...