Translate

NodeMCU ESP8266 WIFI 12E Monitoring Sensor Temperature, Shake dan Pulse Multiple ADC Menggunakan WEBSERVER dan Multiplexer IC 4051 dan Arduino IDE

NodeMCU ESP8266 WIFI 12E Monitoring Sensor Temperature, Shake dan Pulse Multiple ADC Menggunakan WEBSERVER dan Multiplexer IC 4051 dan Arduino IDE 


          Pada kesempatan yang berbahagia kali ini saya akan menjelaskan mengenai bagaimana caranya agar me-monitoring 3 buah sensor menggunakan nodemcu esp8266, yang mana nodemcu ini hanya memiliki satu buah adc dengan range 10 bit. maka dari itu saya menggunakan sebuah IC multiplexer 4051 untuk kendali switchnya. sensor yang dipakai yaitu sensor suhu LM35, sensor shake dan sensor pulse. alat ini diaplikasi untuk monitoring suatu keadaan dimana ada suhu, getaran dan benda yang masuk sehingga sensor pulse akan mendeteksi. alat ini menggunakan webserver sehngga komunikasinya menggunakan wifi router sebagai set point. untuk lebih jelasnya berikut adalah skema dan programnya. untuk tutorial cara masukkan library bisa lihat di datasheetnya.   



a. NodeMCU ESP8266 12E WIFI





b. Router WIFI





c. Sensor Suhu LM35





d. Sensor Shake / Getaran





e. Sensor Pulse High/Low





f. Multiplexer IC 4051





g. Program Arduino IDE

#include <ESP8266WiFi.h>

#define LED0     D0       
#define LED1     D1       
#define LED2     D2       

const int AnalogIn  = A0;
float suhu = 0;
float bpm = 0;
float resp = 0;

const char* ssid = "EVERCOSS WIFI";
const char* password = "123456789";

//int ledPin = D0;
WiFiServer server(80);

void setup() {

  pinMode(LED0 , OUTPUT);
  pinMode(LED1 , OUTPUT);
  pinMode(LED2 , OUTPUT);
      
  Serial.begin(115200);
  delay(10);

//  pinMode(ledPin, OUTPUT);
//  digitalWrite(ledPin, LOW);

  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

  // Start the server
  server.begin();
  Serial.println("Server started");

  // Print the IP address
  Serial.print("Use this URL to connect: ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");

}

void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }

  // Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }

  // Read the first line of the request
  String request = client.readStringUntil('\r');
  Serial.println(request);
  client.flush();

  // Match the request

digitalWrite(LED0, LOW);                        
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
 
suhu = analogRead(AnalogIn);
suhu = suhu * (3.3 / 1023.0);
suhu = suhu * 100.0;

Serial.print("suhu = ");
Serial.println(suhu);
  
delay(500);                        

digitalWrite(LED0, HIGH);                        
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
 
bpm = analogRead(AnalogIn);
Serial.print("bpm = ");
Serial.println(bpm);
  
delay(500);                        


digitalWrite(LED0, LOW);                        
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
 
resp = analogRead(AnalogIn);
Serial.print("Respirasi = ");
Serial.println(resp);
  
delay(500);                        
              

// Set ledPin according to the request
//digitalWrite(ledPin, value);

  // Return the response
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println("Refresh: 1");
  client.println(""); //  do not forget this one
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
   
  client.println("<center>");
  client.println("<h1>");
  client.println("Monitoring Kondisi Tubuh");
  client.println("</h1>");
   
  client.println("<h3>");
   
  client.println("Suhu = ");
  client.println(suhu);
  client.println(" C");
  client.println("<br>");
  
  client.println("Bpm = ");
  client.println(bpm);
  client.println("<br>");
 
  client.println("Respirasi = ");
  client.println(resp);
  client.println("<br>");
 
  client.println("</h3>");  
  client.println("</center>");
  client.println("</html>");

  delay(1);
  Serial.println("Client disonnected");
  Serial.println("");

}





h. Gambar Hasilnya





i. VIDEO HASILNYA











NodeMCU ESP8266 WIFI 12E Control Led Menggunakan Webserver dan ARDUINO IDE

NodeMCU ESP8266 WIFI 12E Control Led Menggunakan Webserver dan ARDUINO IDE


           Pada kesempatan yang berbahagia kali ini saya akan menjelaskan mengenai bagaimana cara mengakses NodeMCU ESP8266 WIFI 12E dengan menggunakan software Arduino IDE untuk mengontrol ON-OFF LED, memang pada contoh hanya menggunakan LED tapi untuk aplikasinya bisa diganti dengan menggunakan device lain seperti Relay atau Optocoupler sehingga bisa mengendalikan tegangan AC maupun DC dengan arus besar, aplikasi alat ini bisa digunakan untuk kendali lampu rumah didalam smart home, kendali pintu otomatis dan lainnya. untuk lebih jelasnya berikut adalah skema dan programnya.



a. NodeMCU ESP8266 WIFI 12E





b. Router WIFI





c. Program Arduino IDE

 #include <ESP8266WiFi.h>

const char* ssid = "EVERCOSS ROUTER";
const char* password = "12345";

int ledPin = D0; // GPIO13
WiFiServer server(80);

void setup() {
  Serial.begin(115200);
  delay(10);

  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);

  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

  // Start the server
  server.begin();
  Serial.println("Server started");

  // Print the IP address
  Serial.print("Use this URL to connect: ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");

}

void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }

  // Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }

  // Read the first line of the request
  String request = client.readStringUntil('\r');
  Serial.println(request);
  client.flush();

  // Match the request

  int value = LOW;
  if (request.indexOf("/LED=ON") != -1)  {
    digitalWrite(ledPin, LOW);
    value = HIGH;
  }
  if (request.indexOf("/LED=OFF") != -1)  {
    digitalWrite(ledPin, HIGH);
    value = LOW;
  }

// Set ledPin according to the request
//digitalWrite(ledPin, value);

  // Return the response
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  do not forget this one
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");

  client.print("Led pin is now: ");

  if(value == HIGH) {
    client.print("On");
  } else {
    client.print("Off");
  }
  client.println("<br><br>");
  client.println("<a href=\"/LED=ON\"\"><button>Turn On </button></a>");
  client.println("<a href=\"/LED=OFF\"\"><button>Turn Off </button></a><br />"); 
  client.println("</html>");

  delay(1);
  Serial.println("Client disonnected");
  Serial.println("");

}




d. Gambar Hasilnya






e. VIDEO HASILNYA









Membuat Sensor EMG ( Electromyography ) Muscle Sensor / Sensor OTOT Untuk Human Hand Robot / Tangan Robot Menggunakan CV AVR ( Code Vision AVR )

Membuat Sensor EMG ( Electromyography ) Muscle Sensor / Sensor OTOT Untuk Human Hand Robot / Tangan Robot Menggunakan CV AVR ( Code Vision AVR )


        Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara menggunakan sebuah sensor OTOT ( EMG ) untuk menggerakkan tangan robot, jadi alat ini berfungsi untuk menggerakkan tangan robot menggunakan intensitas ketegangan / kontraksi dari otor tangan, alat ini menggunakan microcontroller ATMega8535 dengan bahasa CV AVR. prinsip kerja tangan robot ini sangatlah mudah yaitu hanya berpedoman dari koordinat servo yang akan menggerakkan jari--jari tangan. untuk lebih jelasnya berikut program dan skemanya.



a. Minimum System ATMega

 



b. Sensor EMG / OTOT






c. Program CV AVR ( Code Vision AVR )

/*****************************************************
This program was produced by the
CodeWizardAVR V2.04.4a Advanced
Automatic Program Generator
© Copyright 1998-2009 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :
Version :
Date    : 3/4/2016
Author  : NeVaDa
Company :
Comments: anak jalanan yang ingin alay


Chip type               : ATmega8535
Program type            : Application
AVR Core Clock frequency: 8.000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 128
*****************************************************/

#include <mega8535.h>

#include <delay.h>
#include <stdio.h>

#define servo_1 PORTB.0
#define servo_2 PORTB.1
#define servo_3 PORTB.2
#define servo_4 PORTB.3
#define servo_5 PORTB.4

#define PB_ok    PIND.6
#define PB_plus  PIND.4
#define PB_minus PIND.5
#define PB_start PIND.3
 #define on 0
#define off 1

// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>

#define ADC_VREF_TYPE 0x40

// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
char buff[32];
int j=0,a=0,servo1=0,servo2=0,servo3=0,servo4=0,servo5=0,x_plus=0;

//SETTING SARVO
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
if(j>312)
{
j=0;}
else {j++;  }
//delay_us(500);}

if(j<servo1)
{
servo_1=1;
}//delay_us(1500);
else{
servo_1=0;
}

if(j<servo2)
{
servo_2=1;
}//delay_us(1500);
else{
servo_2=0;
}

if(j<servo3)
{
servo_3=1;
}//delay_us(1500);
else{
servo_3=0;
}

if(j<servo4)
{
servo_4=1;
}//delay_us(1500);
else{
servo_4=0;
}

if(j<servo5)
{
servo_5=1;
}//delay_us(1500);
else{
servo_5=0;
}



}                                             

//POSISI SERVO NETRAL
void servo_netral1()
{
servo1=23;
}
void servo_netral2()
{
servo2=68;
}void servo_netral3()
{
servo3=68;
}void servo_netral4()
{
servo4=68;
}
void servo_netral5()
{
servo5=68;  
}


//POSISI SERVO NEGATIF(CW 90)
void servo_neg1()
{
servo1=40;
}
void servo_neg2()
{
servo2=35;
}
void servo_neg3()
{
servo3=35;
}
void servo_neg4()
{
servo4=35;
}

void servo_neg5()
{
servo5=35;
//servo2=40;
}

void genggam()
{
servo_neg1();
servo_neg2();
servo_neg3();
servo_neg4();
servo_neg5();

}

void lepas()
{
servo_netral1();
servo_netral2();
servo_netral3();
servo_netral4();
servo_netral5();

}


// CODING RUNNING
void test()
{
a=read_adc(0);

     
      if(a<110)
      {
      lcd_clear();
      lcd_gotoxy(0,1);
      lcd_putsf("lepas");
      lepas();
      }
      if(a>110 && a <130)
      {
      lcd_clear();
      lcd_gotoxy(0,1);
      lcd_putsf("ibu jari");
      servo_neg1();
      //servo_netral2();
      }
     
      if(a>130 && a <170)
      {
      lcd_clear();
      lcd_gotoxy(0,1);
      lcd_putsf("ibu+telunjuk");
      servo_neg1();
      delay_ms(70);
      servo_neg2();
      servo_netral3();
      servo_netral4();
     
      }                     
      if(a>170 && a <210)
      {
      lcd_clear();
      lcd_gotoxy(0,1);
      lcd_putsf("ibu+telu+teng");
      servo_neg1();
      delay_ms(70);
      servo_neg2();
      delay_ms(70);
      servo_neg3();  
     
      servo_netral4();
      servo_netral5();
                }    
      if(a>210 && a <240)
      {
      lcd_clear();
      lcd_gotoxy(0,1);
      lcd_putsf("ibu+4");
      servo_neg1();
      delay_ms(70);
      servo_neg2();
      delay_ms(70);
      servo_neg3();
      delay_ms(70);
      servo_neg4();

     servo_netral5();
      //servo_netral(4);
      
      }
      if(a>240 && a <300)
      {
      lcd_clear();
      lcd_gotoxy(0,1);
      lcd_putsf("5 jari");
      servo_neg1();
      delay_ms(100);
      servo_neg2();
      delay_ms(100);
      servo_neg3();
      delay_ms(100);
      servo_neg4();
      delay_ms(100);
      servo_neg5();
      }                 
      if(a>310)
      {
      lcd_clear();
      lcd_gotoxy(0,1);
      lcd_putsf("genggam");
      genggam();
      }
       } 


//CODDING TEST LENGAN
void test2()
{
a=read_adc(0);

     
      if(a<110)
      {
      lcd_clear();
      lcd_gotoxy(0,1);
      lcd_putsf("lepas");
      lepas();
      }
      if(a>110 && a <130)
      {
      lcd_clear();
      lcd_gotoxy(0,1);
      lcd_putsf("ibu jari");
      servo_neg1();
      //servo_netral2();
      }
     
      if(a>130 && a <170)
      {
      lcd_clear();
      lcd_gotoxy(0,1);
      lcd_putsf("ibu+telunjuk");
      servo_neg1();
      delay_ms(70);
      servo_neg2();
      //servo_netral3();
      //servo_netral4();
     
      }                     
      if(a>170 && a <210)
      {
      lcd_clear();
      lcd_gotoxy(0,1);
      lcd_putsf("ibu+telu+teng");
      servo_neg1();
      delay_ms(70);
      servo_neg2();
      delay_ms(70);
      servo_neg3();  
     
      //servo_netral4();
      //servo_netral5();
                }    
      if(a>210 && a <240)
      {
      lcd_clear();
      lcd_gotoxy(0,1);
      lcd_putsf("ibu+4");
      servo_neg1();
      delay_ms(70);
      servo_neg2();
      delay_ms(70);
      servo_neg3();
      delay_ms(70);
      servo_neg4();

     //servo_netral5();
      //servo_netral(4);
      
      }
      if(a>240 && a <300)
      {
      lcd_clear();
      lcd_gotoxy(0,1);
      lcd_putsf("5 jari");
      servo_neg1();
      delay_ms(100);
      servo_neg2();
      delay_ms(100);
      servo_neg3();
      delay_ms(100);
      servo_neg4();
      delay_ms(100);
      servo_neg5();
      }                 
      if(a>310)
      {
      lcd_clear();
      lcd_gotoxy(0,1);
      lcd_putsf("genggam");
      genggam();
      }
      } 

//COODING KALIBRASI SENSOR
void kalibrasi()

{
a=read_adc(0);
      lcd_gotoxy(0,0);
      sprintf(buff,"nilai=%4d",a); 
      lcd_puts(buff);
      delay_ms(300);
     
      if(a<110)
      {
      lcd_clear();
      lcd_gotoxy(0,1);
      lcd_putsf("lepas");
      //lepas();
      }
      if(a>110 && a <130)
      {
      lcd_clear();
      lcd_gotoxy(0,1);
      lcd_putsf("ibu jari");
      //servo_neg1();
      //servo_netral2();
      }
     
      if(a>130 && a <170)
      {
      lcd_clear();
      lcd_gotoxy(0,1);
      lcd_putsf("ibu+telunjuk");
      //servo_neg1();
      delay_ms(70);

      }                     
      if(a>170 && a <210)
      {
      lcd_clear();
      lcd_gotoxy(0,1);
      lcd_putsf("ibu+telu+teng");

      if(a>210 && a <240)
      {
      lcd_clear();
      lcd_gotoxy(0,1);
      lcd_putsf("ibu+4");

      }
      if(a>240 && a <300)
      {
      lcd_clear();
      lcd_gotoxy(0,1);
      lcd_putsf("5 jari");

  }                 
      if(a>310)
      {
      lcd_clear();
      lcd_gotoxy(0,1);
      lcd_putsf("genggam");
  
      }
       }    
       }

//CODDING TAMPILAN MENU     
void menu()
{
PORTD.7=0;
//lcd_clear();
lcd_gotoxy(0,0);
sprintf(buff,"menu = %2d",x_plus);
lcd_puts(buff);

if(PB_plus==on)
{
x_plus++; delay_ms(200);
delay_ms(10);
}

else if(PB_minus==on)
{
x_plus--; delay_ms(200);
delay_ms(10);
}

else if(x_plus==1)
{
//lcd_clear();
lcd_gotoxy(0,1);
lcd_putsf("1. Running     ");

if(PB_ok==on)
{
lcd_clear();
while(PB_start=off)
{
test();
PORTD.7=1;}
}
}

else if(x_plus==2)
{
//lcd_clear();
lcd_gotoxy(0,1);
lcd_putsf("2.Kalibrasi sens");

if(PB_ok==on)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("Kalibrasi Sense");
delay_ms(2000);
lcd_clear();     
while(PB_start=off)
{
kalibrasi();
PORTD.7=0;

}
}
}

else if(x_plus==3)
{
//lcd_clear();
lcd_gotoxy(0,1);
lcd_putsf("3.TES LENGAN");

if(PB_ok==on)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("TES LENGAN");
delay_ms(2000);
lcd_clear();     
while(PB_start=off)
{
test2();
PORTD.7=0;


}
}
}


else if(x_plus>4)
{x_plus=1;}
else if(x_plus<1)
{x_plus=1;}
}     


// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=T State6=T State5=T State4=0 State3=0 State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0x1F;

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=P State6=P State5=P State4=P State3=P State2=P State1=P State0=P
PORTD=0xFF;
DDRD=0x80;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 8000.000 kHz
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x01;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// ADC initialization
// ADC Clock frequency: 1000.000 kHz
// ADC Voltage Reference: AVCC pin
// ADC High Speed Mode: Off
// ADC Auto Trigger Source: None
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x83;
SFIOR&=0xEF;

// LCD module initialization
#asm("sei");
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf("BISMILLAH");
delay_ms(1000);
lcd_clear();
lepas();
while (1)
      {
      menu();
     
     
//      genggam();
//      delay_ms(2000);
//      lepas();
//      delay_ms(2000);
      // Place your code here
   //  test();
//      a=read_adc(0);
//      lcd_gotoxy(0,0);
//      sprintf(buff,"nilai=%4d",a); 
//      lcd_puts(buff);
//      delay_ms(300);
    };
}





d. Foto Pengujian Alat








 

Membuat Alat Monitoring Kirim - Terima SMS Tegangan AC 220v menggunakan SMS GATEWAY ARDUINO SIM800L

Membuat Alat Monitoring Kirim - Terima SMS Tegangan AC 220v menggunakan SMS GATEWAY ARDUINO SIM800L


         Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat alat yang digunakan untuk monitoring tegangan AC satu fasa menggunakan sensor ZMPT101B. alai ini memiliki fitur yaitu bisa mengirimkan sms kepada siapa saja yang mengirimkan pesan ke nomer handphone yang ada pada SIM800L, format text pengirimannya yaitu "Monitor" atau "monitor", jika terdeteksi ada text yang masuk dan berformat seperti itu maka alat akan mengirimkan balik ke nomer yang mengirimkan dengan isi pesannya yaitu nilai tegangan yang sekarang sedang terdeteksi sensor.  untuk lebih Jelasnya berikut adalah program dan skemanya.



a. Arduino Mega





b. Sensor Tegangan AC ZMPT101B





c. Buck Converter





d. Modul SMS SIM800L





e. Program Arduino IDE

//VCC Modul SIM800L adalah 4 volt
//Hubungkan RX dan TX ke Arduino Mega pin 50 dan 51
//Download Library di Link berikut
//http://www.4shared.com/rar/Vxz4_UEace/ITEADLIB_Arduino_MEGA_SIMCom_m.html

#include "SIM900.h"
#include <SoftwareSerial.h>

#include <stdlib.h>
#include "sms.h"
SMSGSM sms;

#include "Wire.h"
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

char string[160];
int numdata;
boolean started=false;
char smsbuffer[160];
char n[20];
char strsms[5];

unsigned long start_times[300];
unsigned long stop_times[300];
unsigned long values[300];

// Define various ADC prescaler
const unsigned char PS_16 = (1 << ADPS2);
const unsigned char PS_32 = (1 << ADPS2) | (1 << ADPS0);
const unsigned char PS_64 = (1 << ADPS2) | (1 << ADPS1);
const unsigned char PS_128 = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);

int a = 0;
int zero = 1;

void setup()
{
  lcd.begin(16, 2);
  lcd.clear();
  lcd.noCursor();
 
  Serial.begin(9600);
 
  // set up the ADC
  ADCSRA &= ~PS_128;  // remove bits set by Arduino library

  // you can choose a prescaler from above.
  // PS_16, PS_32, PS_64 or PS_128
  ADCSRA |= PS_128;    // set our own prescaler to 64


  Serial.println("GSM Shield testing.");

  if (gsm.begin(2400)){
    Serial.println("\nstatus=READY");
    started=true; 
  }
  else Serial.println("\nstatus=IDLE");

 
if(started) {
          //Enable this two lines if you want to send an SMS.
          if (sms.SendSMS("085729996666", "Ready"))
          Serial.println("\nSMS sent OK");
     }

};

void loop()
{

 
    //tegangan AC =============================
  unsigned int i;
  unsigned int z;
  z = 0;
   
  // capture the values to memory
  for(i=0;i<300;i++) {
    start_times[i] = micros();
    values[i] = analogRead(A0);             
 
  if (values[i] >= z) {
  z = values[i]; 
  }
    stop_times[i] = micros();
  }

 float vkal = (z -512.6)/0.493;
 vkal = vkal - 290;

 if(vkal < 0){
 vkal = 0;
 }

 sprintf(string,"Tegangan: %s Volt", dtostrf(vkal, 8, 5, strsms));
 
 if(gsm.begin(9600)){
  started=true;
 }
 int pos=0;
 if(started){
  pos=sms.IsSMSPresent(SMS_ALL);
  if(pos){
    sms.GetSMS(pos,n,smsbuffer,100);
   
    if(!strcmp(smsbuffer,"monitor")){
      sms.SendSMS(n,string);
    }
    if(!strcmp(smsbuffer,"Monitor")){
      sms.SendSMS(n,string);
    }
  
    delsms();
  }
 }
  delay(100);


  lcd.setCursor(0, 0);
  lcd.print("adc= ");
  lcd.print(z);

  lcd.setCursor(0, 1);
  lcd.print("v= ");
  lcd.print(vkal);
  lcd.print(" v");
 
  z = 0;
     
};

void delsms()
{
  for (int i=0; i<10; i++)
  { 
      int pos=sms.IsSMSPresent(SMS_ALL);
      if (pos!=0)
      {
        if (sms.DeleteSMS(pos)==1){}else{}
      }
  }
}





f. Gambar Hasilnya





g. VIDEO HASILNYA











 

Jual Jam Digital Dengan Tambahan Fitur Custom Sesuai Permintaan

Jual Jam Digital Dengan Fitur Custom Sesuai Permintaan


       Kami menjual sebuah produk terbaru kami yaitu jam digital dengan 4 buah 7segment berbagai ukuran dan juga menggunakan RTC dan microcontroller, tidak hanya itu saja kami juga menyediakan modul pelatihan pembuatan jam digital dari dasar hingga mahir membuat jam digital, modulnya tentu saja adalah seperti pada video dibawah. kami menjual jam digital dengan spesifikasi yang bisa membuat Customer bahagia yaitu seperti berikut.

1. Ukuran bentuk dan lebar PCB bisa sesuai pesanan
2. Ukuran 7segment sesuai permintaan
3. Mikrokontroller yang dipakai sesuai selera customer
4. Program kami berikan 
5. Skema juga kami berikan
6. Terdapat buku panduan
7. Bahasa pemprograman yang digunakan adalah Bascom AVR atau CV AVR
8. Bisa ditambah Fitur lain sesuai pesanan dari customer
9. Bisa dihubungkan ke Android maupun PC secara nirkable atau wireless
10. Harga dijamin terjangkau




Foto Alat dan Videonya

1. Foto alat





2. Foto Alat





3. Video Demo Alat











Jasa Programming PLC, TRAINER PLC, JUAL BELI PLC, UPGRADE MESIN PLC, Pemasangan dan Perakitan PLC / HMI

Jasa Programming PLC, TRAINER PLC, JUAL BELI PLC, UPGRADE MESIN PLC, Pemasangan dan Perakitan PLC / HMI


          Kami Perusahaan I-TECH dibawah naungan CV INDI GLOBAL Surabaya menyediakan Berbagai macam kebutuhan, baik itu untuk industri, universitas, tugas akhir maupun untuk perkantoran, harga ditempat kami sangat terjangkau dan bisa dibandingkan dengan lainnya, Kami menyediakan layanan dan jasa seperti berikut ini :

1. Jasa programming PLC dan HMI
2. Jasa upgrading mesin berbasis PLC dan HMI
3. Supplier PLC dengan harga terjangkau
4. Jasa training atau pelatihan PLC dan HMI
5. Jasa Pemasangan dan perakitan system berbasis PLC dan HMI
6. Troubleshoot / konsultan masalah instalasi dan wiring 



Adapun jenis-jenis PLC yang kami miliki yaitu:


1. PLC SCHNEIDER
  
a. PLC Zelio Smart Relay



b. PLC TWIDO




c. PLC MODICON M221



d. PLC MODICON M340













2. PLC SIEMENS:

a. Smart Relay logo 



b. PLC S7 200



c. PLC S7 300



d. PLC S7 400












 
e. PLC S7 1500














3. OMRON:

a. Smart Relay ZEN

















b. PLC CPM2A














Membuat Alat Monitoring Suhu - Kelembaban dan Kendali Pompa Berbasis SMS Gateway

Membuat Alat Monitoring Suhu - Kelembaban dan Kendali Pompa Berbasis SMS Gateway


           Pada penjelasan kali ini saya akan menerangkan mengenai bagaimana membuat sebuah alat yang berfungsi untuk mengendalikan pompa atau peralatan lain berdasarkan set point yang telah diberikan, alat ini akan mengirimkan sms jika suhu melebihi nilai set point dan kelembaban kurang dari set point, alat ini jika kita SMS ke nomer yang ada di alat dengan tulisan "monitor" maka alat akan mengirimkan pesan balik ke nomer handphone pengirim dengan isinya berupa nilai suhu dan kelembaban. alat ini dilengkapi dengan 4 buah button untuk set nilai batas atas suhu dan batas bawah kelembaban, alat ini sangat cocok untuk monitoring kumbung jamur tiram dan kendali pompa untuk pengkabutan. untuk lebih jelasnya berikut adalah program dan skemanya.
 


a. Arduino Uno





b. Modul SMS SIM800L





c. Rangkain Driver kontroller AC





d. Program Arduino IDE

#include "SIM900.h"
#include <SoftwareSerial.h>
#include "sms.h"
SMSGSM sms;

#include "Wire.h"
#include <LiquidCrystal.h>
LiquidCrystal lcd(A0, A1, A2, A3, A4, A5);
#include "DHT.h"


#define DHTPIN 4     // what digital pin we're connected to
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

const int tbset = 11;
const int tbnext = 9;
const int tbdown = 10;
const int tbup = 12;

int butset = 0;
int butnext = 0;
int butup = 0;
int butdown = 0;
int z = 0;
int zz = 0;

int settemp;
int sethum;
int v;

int batassuhu;
int batashum;
char string[160];
int numdata;
boolean started=false;
char smsbuffer[160];
char n[20];


void setup() {
 
       //Serial connection.
     Serial.begin(9600);
     Serial.println("GSM Shield testing.");
     //Start configuration of shield with baudrate.
     //For http uses is raccomanded to use 4800 or slower.
     if (gsm.begin(2400)) {
          Serial.println("\nstatus=READY");
          started=true;
     } else Serial.println("\nstatus=IDLE");

    // if(started) {
          //Enable this two lines if you want to send an SMS.
    //      if (sms.SendSMS("085726496643", "Arduino SMS"))
          //Serial.println("\nSMS sent OK");
    // }
    
  lcd.begin(16, 2);
  lcd.clear();
  lcd.noCursor();
 
  pinMode(13,OUTPUT);
  pinMode(tbset,INPUT);
  pinMode(tbnext,INPUT);
  pinMode(tbdown,INPUT);
  pinMode(tbup,INPUT);
 
  dht.begin();
 
  digitalWrite(tbset,HIGH);
  digitalWrite(tbnext,HIGH);
  digitalWrite(tbup,HIGH);
  digitalWrite(tbdown,HIGH);
 
  digitalWrite(13,LOW); 
   
}



void loop() {
  v = 0;
delay(2000);

  int h = dht.readHumidity();
  int t = dht.readTemperature(); 
  int hic = dht.computeHeatIndex(t, h, false);

  lcd.setCursor(0, 0);
  lcd.print("Temp= ");
  lcd.print(t);
  lcd.print(" C");
  lcd.setCursor(13, 0);
  lcd.print(settemp);
 
  lcd.setCursor(0, 1);
  lcd.print("hum= ");
  lcd.print(h);
  lcd.print(" %");
  lcd.setCursor(13, 1);
  lcd.print(sethum);
 
  butset = digitalRead(tbset);
 
  if(butset == LOW){
  delay(500);
    lcd.clear();
    settingsuhu();
 
  }
 
 
  if((t < settemp)&&(z == 1)){
  z = 0;
    digitalWrite(13,LOW); 
  }
 
  if((h < sethum)&&(zz == 1)){
    digitalWrite(13,LOW); 
  zz = 0;
  }
 
  if((t > settemp)&&(settemp > 0)&&(z == 0)){
      if (sms.SendSMS("085726496000", "Suhu Melebihi Batas")) 
      digitalWrite(13,HIGH);    
      z = 1;
     }
 
  if((h < sethum)&&(sethum > 0)&&(zz == 0)){
       if (sms.SendSMS("085726496000", "Kelembaban Melebihi Batas"))
       digitalWrite(13,HIGH);    
      zz = 1;
     }
 
  sprintf(string,"Temperature: %d     Humidity: %d ", t, h );
 
 if(gsm.begin(9600)){
  started=true;
 }
 int pos=0;
 if(started){
  pos=sms.IsSMSPresent(SMS_ALL);
  if(pos){
    sms.GetSMS(pos,n,smsbuffer,100);
   
    if(!strcmp(smsbuffer,"monitor")){
      sms.SendSMS(n,string);
    }

  
    delsms();
  }
 }
  delay(100);
 
 
 
 
 
 
}



void delsms()
{
  for (int i=0; i<10; i++)
  { 
      int pos=sms.IsSMSPresent(SMS_ALL);
      if (pos!=0)
      {
        if (sms.DeleteSMS(pos)==1){}else{}
      }
  }
}


void settingsuhu(){

lcd.setCursor(0, 0);
lcd.print("  SETTING TEMP  ");
lcd.setCursor(0, 1);
lcd.print("TEMP= ");
lcd.print(batassuhu);

butup = digitalRead(tbup);
butdown = digitalRead(tbdown);
butnext = digitalRead(tbnext);

if(butup == LOW){
delay(200);
  batassuhu++;

}

if(butdown == LOW){
delay(200);
  batassuhu--;

}

if(butnext == LOW){
delay(200);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("LOADING......");
delay(2000);
lcd.clear();

settemp = batassuhu;

 settinghum();

}

if(v == 1){
return;
}

settingsuhu();


}



void settinghum(){

lcd.setCursor(0, 0);
lcd.print("SETTING HUMIDITY");
lcd.setCursor(0, 1);
lcd.print("Hum= ");
lcd.print(batashum);

butup = digitalRead(tbup);
butdown = digitalRead(tbdown);
butnext = digitalRead(tbnext);

if(butup == LOW){
delay(200);
  batashum++;

}

if(butdown == LOW){
delay(200);
  batashum--;

}

if(butnext == LOW){
delay(200);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("LOADING......");
delay(3000);
lcd.clear();

sethum = batashum;

v = 1;
 return;

}

settinghum();

}





e. CONTOH SMS





e. VIDEO ALATNYA