belajar led blinking factory io nodemcu

software factory io sangat bagus sekali untuk belajar logika pemrograman. biasanya terhubung ke sebuah PLC. agar nodemcu bisa juga terhubung ke factory io cukup membuat library protocol modbus TCP

buka factory io. kemudian buat rancangan seperti gambar dibawah ini

terdapat 3 buah komponen

  • box (electric switchboard)
  • tiang box (column)
  • led indicator blue

kemudian setting driver yang dipakai

kemudian klik connect, jika berhasil maka. led hijau akan menyala. artinya arduino dan factory io sudah bisa berkomunikasi.

untuk ip nodemcu dan komputer (software factory io) dibuat 1 class.

misal arduino 192.168.0.50

komputer 192.168.0.10

untuk program nodemcu library yang dibutuhkan hanya library mudbus_wifi.h

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include "Mudbus_wifi.h"
#include <Ticker.h>

kemudian setting ip address arduino dibuat 1 class dengan komputer


IPAddress staticIP(192, 168, 0, 50); //ESP static ip
IPAddress gateway(192, 168, 0, 1);   //IP Address of your WiFi Router (Gateway)
IPAddress subnet(255, 255, 255, 0);  //Subnet mask
IPAddress dns(8, 8, 8, 8);  //DNS

const char* ssid = "KCM Markas Besar";
const char* password = "semerulima";

untuk coil yang dipakai hanya 1 buah. dialamat 8, alamat yang dipakai mesti sama dengan aplikasi.

Mudbus_wifi Mb;
#define led Mb.C[8] 

setelah dilakukan pengaturan tinggal membuat coil tersebut on dan off dengan interval 1 detik. disini saya menggunakan interrupt timer.

void loop() 
{  
     if(status_timer1==1)
    {
      status_timer1=0;
      if(status_led==0){led=1;status_led=1;}
      else{led=0;status_led=0;}
    }
    Mb.Run();
}

untuk program complete nya bisa di copy seperti dibawah ini

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include "Mudbus_wifi.h"
#include <Ticker.h>

Ticker timer;
Mudbus_wifi Mb;
#define led Mb.C[8] 


IPAddress staticIP(192, 168, 0, 50); //ESP static ip
IPAddress gateway(192, 168, 0, 1);   //IP Address of your WiFi Router (Gateway)
IPAddress subnet(255, 255, 255, 0);  //Subnet mask
IPAddress dns(8, 8, 8, 8);  //DNS

const char* ssid = "KCM Markas Besar";
const char* password = "semerulima";



unsigned char status_timer1,status_led;

void ICACHE_RAM_ATTR onTime() {
  status_timer1=1;
  timer1_write(5000000);
}

//=============================================================
void setup() {

  Serial.begin(9600); 
  pinMode(2,OUTPUT);
  digitalWrite(2, HIGH);
  WiFi.config(staticIP, subnet, gateway, dns);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println();

  Serial.println("WiFi connected");
  Serial.println("IP address: "); Serial.println(WiFi.localIP());

  Mb.begin();
  delay(5000);  //Time to open the terminal
  
  timer1_attachInterrupt(onTime); // Add ISR Function
  timer1_enable(TIM_DIV16, TIM_EDGE, TIM_SINGLE);
  timer1_write(5000000);
}
//==================================================================
void loop() 
{  
     if(status_timer1==1)
    {
      status_timer1=0;
      if(status_led==0){led=1;status_led=1;}
      else{led=0;status_led=0;}
    }
    Mb.Run();
}

hardware yang dipakai pada percobaan ini

video simulasi

untuk pemesanan alat bisa hubungi dhani 085228292473

atau kunjungi www.keiciptamandiri.com

start stop conveyor arduino factory io

part yang dipakai

mapping coil

mapping coil pada arduino


#define tombol_start Mb.C[0]
#define tombol_stop Mb.C[1]

#define led Mb.C[8]
#define led_start Mb.C[9]
#define led_stop Mb.C[10]
#define conveyor Mb.C[11]

cara baca tombol start stop

untuk tombol start ketika ditekan aktif high

untuk tombol stop ketika ditekan aktik low

 if(tombol_start==1)status_running=1;
    else if(tombol_stop==0)status_running=0;

    if(status_running==1){led_start=1;led_stop=0;conveyor=1;}
    else {led_start=0;led_stop=1;conveyor=0;}

program complete arduino

#include <SPI.h>
#include <Ethernet.h>
#include "Mudbus.h"

#define relay1 32
#define relay2 34

#define sensor1 5
#define sensor2 4
#define ddr_sensor  DDRE
#define port_sensor  PORTE
#define pin_sensor  PINE

unsigned char status_running;
Mudbus Mb;



#define tombol_start Mb.C[0]
#define tombol_stop Mb.C[1]

#define led Mb.C[8]
#define led_start Mb.C[9]
#define led_stop Mb.C[10]
#define conveyor Mb.C[11]


unsigned char status_timer1=0;
unsigned char status_led=0;
//=============================================================
void setup() {
  uint8_t mac[]     = { 0x90, 0xA2, 0xDA, 0x00, 0x51, 0x06 };
  uint8_t ip[]      = { 192, 168, 1, 254 };
  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);  //Time to open the terminal

   TCCR1A = 0;
  TCCR1B = 0;  
  TCNT1 = 34286;   // preload timer
  TCCR1B |= (1 << CS12);    // 256 prescaler 
  TIMSK1 |= (1 << TOIE1);   // enable timer overflow interrupt
  interrupts();             // enable all interrupts

  status_running=0;
}


//==================================================================
void loop() 
{    
    if(tombol_start==1)status_running=1;
    else if(tombol_stop==0)status_running=0;

    if(status_running==1){led_start=1;led_stop=0;conveyor=1;}
    else {led_start=0;led_stop=1;conveyor=0;}
    
    
    if(status_timer1==1)
    {
      status_timer1=0;
      if(status_led==0){led=1;status_led=1;}
      else{led=0;status_led=0;}
    }
    Mb.Run();
}

ISR(TIMER1_OVF_vect)        // interrupt service routine 
{
  TCNT1 = 34286;   // preload timer
  status_timer1=1;
}

hasil simulasi video

untuk pemesanan alat custom hubungi 08528292473

belajar led blinking factory io

software factory io sangat bagus sekali untuk belajar logika pemrograman. biasanya terhubung ke sebuah PLC. agar arduino bisa juga terhubung ke factory io cukup di tambahkan sebuah modul ethernet dengan menggunakan protocol modbus TCP atau bisa juga menggunakan nodemcu yang penting support modbus tcp.

buka factory io. kemudian buat rancangan seperti gambar dibawah ini

terdapat 3 buah komponen

  • box (electric switchboard)
  • tiang box (column)
  • led indicator blue

kemudian setting driver yang dipakai

kemudian klik configuration

setting ip adress, alamat coil yang digunakan. sesuaikan dengan program pada arduino

kemudian klik connect, jika berhasil maka. led hijau akan menyala. artinya arduino dan factory io sudah bisa berkomunikasi.

untuk ip arduino dan komputer (software factory io) dibuat 1 class.

misal arduino 192.168.1.254

komputer 192.168.1.253

untuk program arduino library yang dibutuhkan hanya library mudbus.h, ethernet.h

#include <SPI.h>
#include <Ethernet.h>
#include "Mudbus.h"

kemudian setting ip address arduino dibuat 1 class dengan komputer

void setup() {
  uint8_t mac[]     = { 0x90, 0xA2, 0xDA, 0x00, 0x51, 0x06 };
  uint8_t ip[]      = { 192, 168, 1, 254 };
  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


}

untuk coil yang dipakai hanya 1 buah. dialamat 8, alamat yang dipakai mesti sama dengan aplikasi.

Mudbus Mb;

#define led Mb.C[8]

setelah dilakukan pengaturan tinggal membuat coil tersebut on dan off dengan interval 1 detik. disini saya menggunakan interrupt timer.

void loop() 
{    
    if(status_timer1==1)
    {
      status_timer1=0;
      if(status_led==0){led=1;status_led=1;}
      else{led=0;status_led=0;}
    }
    Mb.Run();
}

untuk program complete nya bisa di copy seperti dibawah ini

#include <SPI.h>
#include <Ethernet.h>
#include "Mudbus.h"

#define relay1 32
#define relay2 34

#define sensor1 5
#define sensor2 4
#define ddr_sensor  DDRE
#define port_sensor  PORTE
#define pin_sensor  PINE

Mudbus Mb;

#define led Mb.C[8]
unsigned char status_timer1=0;
unsigned char status_led=0;
//=============================================================
void setup() {
  uint8_t mac[]     = { 0x90, 0xA2, 0xDA, 0x00, 0x51, 0x06 };
  uint8_t ip[]      = { 192, 168, 1, 254 };
  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);  //Time to open the terminal

   TCCR1A = 0;
  TCCR1B = 0;  
  TCNT1 = 34286;   // preload timer
  TCCR1B |= (1 << CS12);    // 256 prescaler 
  TIMSK1 |= (1 << TOIE1);   // enable timer overflow interrupt
  interrupts();             // enable all interrupts
}


//==================================================================
void loop() 
{    
    if(status_timer1==1)
    {
      status_timer1=0;
      if(status_led==0){led=1;status_led=1;}
      else{led=0;status_led=0;}
    }
    Mb.Run();
}

ISR(TIMER1_OVF_vect)        // interrupt service routine 
{
  TCNT1 = 34286;   // preload timer
  status_timer1=1;
}

hardware yang dipakai pada percobaan ini

video simulasi

untuk pemesanan alat bisa hubungi dhani 085228292473

atau kunjungi www.keiciptamandiri.com