Translate

Membuat Alat Kendali Led Dengan Tombol dan 7Segment

Membuat Alat Kendali Led Dengan Tombol dan 7Segment


             Kali ini saya akan mendemonstrasikan mengenai simulasi alat yang berhubungan dengan kendali, alat yang dibuat kali ini prinsip kerjanya yaitu terdapat 8 buah tombol yang mana masing2 tombol jika ditekan akan menghidupkan / mematikan led dan menghidupkan 7segment, jika led 1 menyala maka 7segment akan menunjukkan angka 1, jika led 1 mati maka akan menunjukkan angka 2, begitu seterusnya, aplikasi dari alat ini adalah untuk kendali lampu ruangan atau kendali device lainnya. Untuk lebih jelasnya berikut program dan skemanya.



 a. Minimum System





b. Program Bascom AVR

$regfile = "m32def.dat"
$crystal = 12000000

Ddrd.2 = 1
Ddrd.3 = 1
Ddrd.4 = 1

Ddrc.4 = 1
Ddrc.5 = 1
Ddrc.6 = 1
Ddrc.7 = 1

Ddra = &B00000000

Porta = &B11111111

Dataout Alias Portd.3
Clock Alias Portd.2

Dim Datas As Byte
Dim X As Integer
X = 0

Portd.4 = 1

Do

If Pina.0 = 0 Then
X = 1
Portc.4 = 1
Goto Kirim
Elseif Pina.1 = 0 Then
X = 2
Portc.4 = 0
Goto Kirim
Elseif Pina.2 = 0 Then
X = 3
Portc.5 = 1
Goto Kirim
Elseif Pina.3 = 0 Then
X = 4
Portc.5 = 0
Goto Kirim
Elseif Pina.4 = 0 Then
X = 5
Portc.6 = 1
Goto Kirim
Elseif Pina.5 = 0 Then
X = 6
Portc.6 = 0
Goto Kirim
Elseif Pina.6 = 0 Then
X = 7
Portc.7 = 1
Goto Kirim
Elseif Pina.7 = 0 Then
X = 8
Portc.7 = 0
Goto Kirim
End If

Loop

Kirim:
Reset Clock
Set Clock
Datas = Lookup(x , Data7seg)
Shiftout Dataout , Clock , Datas , 0 , 8 , 1
Reset Clock
Waitms 10
Return

Data7seg:
Data &B11000000                                             '0
Data &B11111001                                             '1
Data &B10100100                                             '2
Data &B10110000                                             '3
Data &B10011001                                             '4
Data &B10010010                                             '5
Data &B10000010                                             '6
Data &B11111000                                             '7
Data &B10000000                                             '8
Data &B10010000




c. VIDEO HASILNYA








  

Membuat Rangkaian Alat Buck Converter dan Boost Converter

Membuat Rangkaian Alat Buck Converter dan Boost Converter


          Kali ini saya akan membahas mengenai bagaimana cara membuat rangkaian buck dan boost converter, sebelumnya apa buck converter itu ? yaitu sebuah rangkaian yang digunakan untuk menurunkan tegangan dengan efisiensi daya yang bagus dari pada mengunakan IC regulator misal IC regulator step down 7805 atau lm317, kemudian sebaliknya, boost converter adalah sebuah rangkaian yang digunakan untuk menaikkan tegangan dari tegangan sumber, misal dari tegangan 5 volt menjadi tegangan 12 volt atau 20 volt tergantung dari duty cycle yang dipakai, untuk lebih jelasnya berikut adalah penjelasan program dan skemanya.

Mosfet IRF540
Dioda MUR1560
Optocopler TLP250



a. Minimum System ATMega8





 b. Rangkaian Buck Converter







c. Rangkaian Boost Converter







d. Dioda MUR1560





e. Program Arduino IDE

#include <PWM.h>

//use pin 11 on the Mega instead, otherwise there is a frequency cap at 40 KHz
int led = 9;                // the pin that the PWM is attached to
int brightness = 0;         // duty cycle
int fadeAmount = 125;    
int32_t frequency = 40000; //frequency (in Hz)

void setup()
{
 
  //initialize all timers except for 0, to save time keeping functions
  InitTimersSafe();
  Serial.begin(9600);
  //sets the frequency for the specified pin
  bool success = SetPinFrequencySafe(led, frequency);
 
  //if the pin frequency was set successfully, turn pin 13 on
  if(success) {
    pinMode(13, OUTPUT);
    digitalWrite(13, HIGH);   
  }
}

void loop()
{
  int sensorValue = analogRead(A0);
 
  if (sensorValue > 255)
 {
  sensorValue = 255;
 }

 //float teg = sensorValue * (4.7 / 1023.0);

  //use this functions instead of analogWrite on 'initialized' pins
  pwmWrite(led, brightness);
 
  //merubah duty cycle sesuai nilai ADC
  brightness = sensorValue;
       
}




f. Program Bascom AVR

'====================
'PWM dengan Frequency 40 Khz
'====================

$regfile = "m8535.dat"
$crystal = 16000000

Config Lcdpin = Pin , Rs = Portc.7 , E = Portc.5 , Db4 = Portc.3
Config Lcdpin = Pin , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0
Config Lcd = 16 * 2


Config Adc = Free , Prescaler = 64 , Reference = Avcc

Config Timer1 = Pwm , Pwm = 8 , Compare B Pwm = Clear Up , Prescale = 1
Const Inisial = &HFFB0

Cls
Cursor Off

Dim Dataadc As Word
Dim Adcpotensio As Word
Dim Adcarusinput As Word
Dim Adcarusoutput As Word

Dim V1 As Single
Dim V2 As Single
Dim A1 As Single
Dim A2 As Single
Dim X As Integer
X = 2

Ddrc.2 = 1
Portc.2 = 0


On Timer1 Timer1_isr

Tcnt1l = Low(inisial)
Tcnt1h = High(inisial)

Enable Timer1
Enable Interrupts

Start Adc

Do

Loop





Timer1_isr:

   Tcnt1l = Low(inisial)
   Tcnt1h = High(inisial)

Dataadc = Getadc(x)

If X = 2 Then
Adcpotensio = Dataadc
End If

If X = 3 Then
Adcarusinput = Dataadc
End If

If X = 4 Then
Adcarusoutput = Dataadc
End If


V1 = Adcarusinput * 5
V1 = V1 / 1023

A1 = V1 - 2.5
A1 = A1 / 0.1


V2 = Adcarusoutput * 5
V2 = V2 / 1023

A2 = V2 - 2.5
A2 = A2 / 0.1

Upperline
Lcd "Du= " ; Adcpotensio
Lowerline
Lcd "Ai=" ; Fusing(a1 , "#.##") ; " " ; "Ao=" ; Fusing(a2 , "#.##")
'Lcd Adcarusinput ; "  " ; Adcarusoutput

 'output di PORTD.4 = OC1B
Pwm1b = Adcpotensio

Incr X

If X > 4 Then
X = 2
End If

Return





g. Program Code Vision AVR

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

Project :
Version :
Date    : 7/20/2016
Author  : tyery08
Company : embeeminded.blogspot.com
Comments:


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

#include <mega16.h>
#include <stdlib.h>
#include <delay.h>
#include <math.h>
// Standard Input/Output functions
#include <stdio.h>

// Alphanumeric LCD functions
#include <alcd.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;
}

// Declare your global variables here
// Declare your global variables here
unsigned char buffer[32];
unsigned int inADC17, inADC24, outADC, arusout;
unsigned int dutyc;
float ainx, aoutx, voutx, vin, ain, arusin, aout, vin1, dayain, dayain1, slope;
float dc17, dc24, ft17, ft24, ftOut, deltavin, deltadaya;  

float dayain;
 
char temp[10];
char temp1[10];
char temp2[10];
char temp3[10];
char temp4[10];



void main(void)
{

// Declare your local variables here
unsigned char i;
// 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=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
PORTB=0x00;
DDRB=0x00;

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

// Port D initialization
// Func7=In Func6=In Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=0 State4=0 State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x30;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 16000.000 kHz
// Mode: Fast PWM top=ICR1
// OC1A output: Inverted
// OC1B output: Inverted
// 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=0xA2;
TCCR1B=0x19;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x01;
ICR1L=0x90;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// 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=0x00;

// USART initialization
// USART disabled
UCSRB=0x00;

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

// ADC initialization
// ADC Clock frequency: 125.000 kHz
// ADC Voltage Reference: AVCC pin
// ADC High Speed Mode: Off
// ADC Auto Trigger Source: Free Running
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0xA7;
SFIOR&=0x0F;

// SPI initialization
// SPI disabled
SPCR=0x00;

// TWI initialization
// TWI disabled
TWCR=0x00;

// Alphanumeric LCD initialization
// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTC Bit 7
// RD - PORTC Bit 6
// EN - PORTC Bit 5
// D4 - PORTC Bit 3
// D5 - PORTC Bit 2
// D6 - PORTC Bit 1
// D7 - PORTC Bit 0
// Characters/line: 16
lcd_init(16);

while (1)
      {
  
      // (optional) 400 adalah nilai maksimal pwm==100%
     
//    OCR1A=in17;
      OCR1B=inADC17;
//    OCR1B=dutyc;         
      delay_ms(200);
      OCR1A=0;
      OCR1B=0;
      delay_ms(1);     
    
    
      inADC17=read_adc(7);
      vin = (inADC17 * 5.0)/1023.0; 
                   
      ftoa(vin,1,temp);    
      lcd_gotoxy (0,0);
      lcd_putsf("V= ");
      lcd_puts(temp);

      arusin=read_adc(4);
     
      ain = (arusin * 5.0)/1023.0;
      ainx = (ain - 2.5)/0.1;
     
      ftoa(ainx,1,temp1);    
      lcd_gotoxy (0,1);
      lcd_putsf("Ai=");
      lcd_puts(temp1);

      arusout=read_adc(6);
     
      aout = (arusout * 5.0)/1023.0;
      aoutx = (aout -2.5)/0.1;
 
//      ftoa(aoutx,1,temp2);    
//      lcd_gotoxy (8,1);
//      lcd_putsf("A0=");
//      lcd_puts(temp2);
     
      ftoa(dayain,1,temp3);    
      lcd_gotoxy (8,1);
      lcd_putsf("P=");
      lcd_puts(temp3);
 
      ftoa(slope,1,temp4);    
      lcd_gotoxy (8,0);
      lcd_putsf("S=");
      lcd_puts(temp4);
 
      dayain = ainx * vin;
     
      deltadaya = dayain - dayain1;
     
      if(deltadaya >0){
     
      deltavin = vin - vin1;
     
      if(deltavin > 0){
      //dutyc = dutyc + 5;     
      }

      if(deltavin < 0){
      //dutyc = dutyc - 5;     
      }
     
      }


      if(deltadaya <0){
     
      deltavin = vin - vin1;
     
      if(deltavin < 0){
      //dutyc = dutyc + 5;     
      }

      if(deltavin > 0){
      //dutyc = dutyc - 5;     
      }
     
      }

    
      //slope = (dayain - dayain1) / (vin - vin1);
     
//      if (slope > 0) {
       //dutyc = dutyc + 5;
//      }
//      if (slope < 0) {
       //dutyc = dutyc - 5;
//      }
     
      dayain1 = dayain;
      vin1 = vin;

    
      }
}




h. Gambar Hasilnya






i. VIDEO HASILNYA












Membuat Alat Penunjuk Arah Suara Menggunakan Sensor Suara dan Motor Stepper

Membuat Alat Penunjuk Arah Suara Menggunakan Sensor Suara dan Motor Stepper


            Kali ini saya akan menjelaskan mengenai bagaimana cara membuat alat yang bisa menunjukan arah suara berasal menggunakan sensor suara module, jadi terdapat 3 buah sensor suara yang mana sensor tersebut akan mewakili tiap2 posisi, jika salah satu sensor mendapatkan adanya suara maka motor stepper akan bergerak menunjukkan arah sumber suara berasal, untuk aplikasi dari alat ini yaitu bisa digunakan sebagai penunjuk sumber suara, atau bisa juga sebagai kendali device menggunakan suara, dan masih banyak lagi aplikasinya. yang perlu diperhatikan yaitu supply 12 volt untuk stepper berikan resistor 1 Kiloohm agar stepper tidak terlalu panas. untuk lebih jelasnya berikut skema dan programnya.



a. Minimum System





b. Motor Stepper






c. Driver Motor L298






d. Sound Sensor






e. Program Bascom AVR

$regfile = "m16def.dat"
$crystal = 12000000

Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2
Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 16 * 2

Config Adc = Single , Prescaler = Auto , Reference = Avcc

Dim Dataadc0 As Word
Dim Dataadc1 As Word
Dim Dataadc2 As Word

'full 360 = 100 step

Cls
Cursor Off

Start Adc

Main:

Dim A As Integer
A = 0

Ddrb.0 = 1
Ddrb.1 = 1
Ddrb.2 = 1
Ddrb.3 = 1

Do

Dataadc0 = Getadc(0)
Dataadc1 = Getadc(1)
Dataadc2 = Getadc(2)

Upperline
Lcd Dataadc0 ; " " ; Dataadc1 ; " " ; Dataadc2

If Dataadc0 >= 520 And Dataadc1 < 520 And Dataadc2 < 520 Then
Goto Sensor1
Cls
Elseif Dataadc0 < 520 And Dataadc1 >= 520 And Dataadc2 < 520 Then
Goto Sensor2
Cls
Elseif Dataadc0 < 520 And Dataadc1 < 520 And Dataadc2 >= 520 Then
Goto Sensor3
Cls
End If

Loop


Sensor1:
Do

Portb = &B0000001
Waitms 3

Portb = &B0000010
Waitms 3

Portb = &B0000100
Waitms 3

Portb = &B0001000
Waitms 3

Incr A

Lowerline
Lcd A

Loop Until A = 25

A = 0

Wait 3

Do

Portb = &B00001000
Waitms 3

Portb = &B00000100
Waitms 3

Portb = &B00000010
Waitms 3

Portb = &B00000001
Waitms 3

Incr A

Lowerline
Lcd A

Loop Until A = 25

A = 0
Goto Main
Return


Sensor2:
Do

Portb = &B0000001
Waitms 3

Portb = &B0000010
Waitms 3

Portb = &B0000100
Waitms 3

Portb = &B0001000
Waitms 3

Incr A

Lowerline
Lcd A

Loop Until A = 50

A = 0

Wait 3

Do

Portb = &B00001000
Waitms 3

Portb = &B00000100
Waitms 3

Portb = &B00000010
Waitms 3

Portb = &B00000001
Waitms 3

Incr A

Lowerline
Lcd A

Loop Until A = 50

A = 0
Goto Main
Return


Sensor3:
Do

Portb = &B0000001
Waitms 3

Portb = &B0000010
Waitms 3

Portb = &B0000100
Waitms 3

Portb = &B0001000
Waitms 3

Incr A

Lowerline
Lcd A

Loop Until A = 75

A = 0

Wait 3

Do

Portb = &B00001000
Waitms 3

Portb = &B00000100
Waitms 3

Portb = &B00000010
Waitms 3

Portb = &B00000001
Waitms 3

Incr A

Lowerline
Lcd A

Loop Until A = 75

A = 0
Goto Main
Return




f. VIDEO HASILNYA










Cara Mengambil Data ADC Menggunakan Android Dari Arduino Melalui WIFI / ETHERNET

Cara Mengambil Data ADC Menggunakan Android Dari Arduino Melalui WIFI / ETHERNET


              Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara mengambil data ADC dari Arduino ke HP Android menggunakan media WIFI atau Ethertnet, Jadi Arduino akan mengirimkan data ke server yaitu di address 198.168.1.88 kemudian HP Android akan mengambil data tersebut untuk ditampilkan di dalam aplikasinya, pada contoh kali ini syarat data yang dikirimkan di server adalah 3 digit dengan diawali dua karakter "##", jika ingin data yang panjang hanya perlu mengubah parameter yang ada di program Androidnya. untuk lebih jelasnya berikut adalah skema dan programnya. 



a. Arduino + Ethernet





b. Program Android






c. Program Arduino IDE

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

byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,88);

EthernetServer server(80);

const int ledpin7 = 7;
const int ledpin8 = 8;
const int ledpin9 = 9;
const int ledpin2 = 2;
String readString;
void setup() {

   pinMode(ledpin7, OUTPUT);
   pinMode(ledpin8, OUTPUT);
   pinMode(ledpin9, OUTPUT);
   pinMode(ledpin2, OUTPUT);
  
  Serial.begin(9600);
   while (!Serial) {
  }

  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}

void loop() {
  int sumbux = analogRead(0);
  int sumbuy = analogRead(1);
  int sumbuz = analogRead(2);

  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
     if (readString.length() < 100) {

          //store characters to string
          readString += c;
          //Serial.print(c);
        }
        if (c == '\n' && currentLineIsBlank) {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");
          client.println("Refresh: 1");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          client.println(" ");
          client.println("<title> Monitor Kemiringan </title> ");     
          client.println("<body bgcolor = #000000>");     
          client.println("<center>");
            client.println("<font color = yellow><center><h1>MONITOR KEMIRINGAN DATARAN<br>BY YANUAR MUKHAMMAD</h1></center><br></font>");
            client.println("<font color = #FFFFFF>");
            client.println("<h2>");
            client.println("Sumbu X = ##");
            client.print(sumbux);
            client.println("<br />");
            client.println("</h2>");      
          client.println("</font>");
           client.println("<a href = \"/?lighton\"\"><input type = 'button' value = 'ON' ></a>");
          client.println("<a href = \"/?lightoff\"\"><input type = 'button' value = 'OFF' ></a> ");
          client.println("</center>");
          client.println("</body>");
          client.println("</html>");
            
          break;       
        }    
        if (c == '\n') {
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          currentLineIsBlank = false;
        }
      }
    }
    delay(1);
    client.stop();
    Serial.println("client disonnected");
  }
          if(readString.indexOf("?lighton") >0)
          {
 
            digitalWrite(ledpin7, HIGH);    
          }
          else{
          if(readString.indexOf("?lightoff") >0)
          {

                digitalWrite(ledpin7, LOW); 
          }
          }
         readString="";
 if (sumbux > 400){
 digitalWrite(ledpin8, HIGH);
 digitalWrite(ledpin9, LOW);
 digitalWrite(ledpin2, LOW);
 } else if (sumbux < 300){
 digitalWrite(ledpin8, LOW);
 digitalWrite(ledpin9, HIGH);
 digitalWrite(ledpin2, LOW);
 }else {
 digitalWrite(ledpin8, LOW);
 digitalWrite(ledpin9, LOW);
 digitalWrite(ledpin2, HIGH);
}
}




d. VIDEO HASILNYA







Membuat Alat Kendali Menggunakan Android dan WIfi / Ethernet

Membuat Alat Kendali Menggunakan Android dan WIfi / Ethernet


            Malam ini saya akan menjelaskan mengenai bagaimana cara membuat alat dengan menggunakan Arduino Ethernet dan Android, jika biasanya kendali device seperti lampu, motor dc, kipas dll menggunakan bluetooth, sekarang diganti menggunakan wifi local bukan online, jadi sistemnya masih sama dengan bluetooth yaitu wireless namun jarak jangkaunya yang berbeda, kalau bluetooth biasanya hanya 1 meter, tapi kalau wifi bisa sampai 10 meter lebih tergantung tipe dan jenis router yang digunakan, prinsip kerjanya alat yang dibuat ini yaitu mengendalikan 4 buah led menggunakan HP Android dan media yang dipakai adalah wifi / jaringan ethernet, untuk lebih jelasnya berikut skema dan programnya.



a. Arduino + Ethernet Shield





b. Program Android







c. Program Arduino IDE

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

byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,88);

EthernetServer server(80);

const int ledpin7 = 7;
const int ledpin8 = 8;
const int ledpin9 = 9;
const int ledpin2 = 2;
String readString;
void setup() {

   pinMode(ledpin7, OUTPUT);
   pinMode(ledpin8, OUTPUT);
   pinMode(ledpin9, OUTPUT);
   pinMode(ledpin2, OUTPUT);
  
  Serial.begin(9600);
   while (!Serial) {
  }

  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}

void loop() {
  int sumbux = analogRead(0);
  int sumbuy = analogRead(1);
  int sumbuz = analogRead(2);

  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
     if (readString.length() < 100) {

          //store characters to string
          readString += c;
          //Serial.print(c);
        }
        if (c == '\n' && currentLineIsBlank) {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");
          client.println("Refresh: 1");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          client.println(" ");
          client.println("<title> Monitor Kemiringan </title> ");     
          client.println("<body bgcolor = #000000>");     
          client.println("<center>");
            client.println("<font color = yellow><center><h1>KENDALI LAMPU VIA ETHERNET ANDROID<br>BY YANUAR MUKHAMMAD</h1></center><br></font>");
           client.println("<a href = \"/?lighton1\"\"><input type = 'button' value = 'ON 1' ></a>");
          client.println("<a href = \"/?lightoff1\"\"><input type = 'button' value = 'OFF 1' ></a> ");
           client.println("<a href = \"/?lighton2\"\"><input type = 'button' value = 'ON 2' ></a>");
          client.println("<a href = \"/?lightoff2\"\"><input type = 'button' value = 'OFF 2' ></a> ");
           client.println("<a href = \"/?lighton3\"\"><input type = 'button' value = 'ON 3' ></a>");
          client.println("<a href = \"/?lightoff3\"\"><input type = 'button' value = 'OFF 3' ></a> ");
           client.println("<a href = \"/?lighton4\"\"><input type = 'button' value = 'ON 4' ></a>");
          client.println("<a href = \"/?lightoff4\"\"><input type = 'button' value = 'OFF 4' ></a> ");
         
          client.println("</center>");
          client.println("</body>");
          client.println("</html>");
            
          break;       
        }    
        if (c == '\n') {
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          currentLineIsBlank = false;
        }
      }
    }
    delay(1);
    client.stop();
    Serial.println("client disonnected");
  }
          if(readString.indexOf("?lighton1") >0)
          {
 
            digitalWrite(ledpin7, HIGH);    
          }
          else{           
          if(readString.indexOf("?lightoff1") >0)
          {

             digitalWrite(ledpin7, LOW); 
          }
          }
         
             if(readString.indexOf("?lighton2") >0)
          {
 
            digitalWrite(ledpin8, HIGH);    
          }
          else{           
          if(readString.indexOf("?lightoff2") >0)
          {

                digitalWrite(ledpin8, LOW); 
          }
          }
          if(readString.indexOf("?lighton3") >0)
          {
 
            digitalWrite(ledpin9, HIGH);    
          }
          else{           
          if(readString.indexOf("?lightoff3") >0)
          {

                digitalWrite(ledpin9, LOW); 
          }
          }
          if(readString.indexOf("?lighton4") >0)
          {
 
            digitalWrite(ledpin2, HIGH);    
          }
          else{           
          if(readString.indexOf("?lightoff4") >0)
          {

              digitalWrite(ledpin2, LOW); 
          }
          }
         
         readString="";
}





d. VIDEO HASILNYA












Cara Mengakses Power Line Carrier Menggunakan Microcontroller

Cara Mengakses Power Line Carrier Menggunakan Microcontroller


         Finally, my ambition project telah usai seiring project ini berakhir, kali ini saya akan menjelaskan mengenai bagaimana cara mengakses modul power line carrier KQ330 menggunakan mikrokontroller dan bahasa bascom avr. Sebelumnya apa itu power line carrier ??, PLC adalah sebuah sistem dimana kita bisa mengirimkan data dari master ke slave dalam satu line menggunakan tegangan 220VAC 50 Hz. jadi ini adalah inovasi terbaru dalam bidang elektronika, jika biasanya menggunakan kabel panjang dalam pengiriman data, sekarang bisa dengan mudah mengirimkan data melalui tegangan AC 220v 50 Hz. Aplikasi dari PLC ini yaitu misal dalam sebuah kantor terdapat lampu yang harus dikontrol melalui kontrol room, maka tidak perlu menggunakan kabel khusus yang terhubung ke kontroller, sambungkan saja kontroller ke PLC lalu PLC ke listrik 220V AC, di TKP terdapat kontroller penerima yang akan mematikan lampu sesuai perintah dari master / transmitter, itu hanya salah satu contoh saja, masih banyak lainnya. Untuk lebih jelasnya berikut skema dan programnya menggunakan bascom AVR.



a. Minimum System






b. Modul Power Line Carrier KQ330 / KQ 132K







c. Mikrokontroller Master - Slave 1 - Slave 2






d.  Program Bascom AVR

'======================
' Program Master / Transmitter
'======================
$regfile = "m8def.dat"
$crystal = 12000000
$baud = 9600

Config Lcdpin = Pin , Rs = Portc.5 , E = Portc.4 , Db4 = Portc.3
Config Lcdpin = Pin , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0
Config Lcd = 16 * 2

Ddrb.0 = 0
Ddrb.1 = 0
Ddrb.2 = 0
Ddrd.7 = 0

Set Portb.0
Set Portb.1
Set Portb.2
Set Portd.7

Cls
Cursor Off

Do

Upperline
Lcd "Transmitter"
Lowerline
Lcd " 1 " ; " 2 " ; " 3 " ; " 4 "

If Pinb.0 = 0 Then
Cls
Do
Print "1"
Lowerline
Lcd "kirim data 1"
Loop Until Pind.7 = 0

Elseif Pinb.1 = 0 Then
Cls
Do
Print "2"
Lowerline
Lcd "kirim data 2"
Loop Until Pind.7 = 0

Elseif Pinb.2 = 0 Then
Do
Print "3"
Lowerline
Lcd "kirim data 3"
Loop Until Pind.7 = 0

Else
Lowerline
Print "0"
End If

Loop


'=========================
' Program Slave / Receiver 1 dan 2
'=========================
$regfile = "m16def.dat"
$crystal = 12000000
$baud = 9600

Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2
Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 16 * 2

Ddrd.7 = 1
Ddrd.6 = 1
Ddrd.5 = 1
Ddrd.4 = 1

Dim Perintah As String * 1

Cls
Cursor Off
Upperline
Lcd "Receiver 1/2"

Do

Perintah = Waitkey()

Upperline
Lcd "Receiver 1/2"
Lowerline
Lcd "Data = " ; Perintah

Wait 1

Select Case Perintah
Case "0" :
  Portd.7 = 0
  Portd.6 = 0
  Portd.5 = 0
  Portd.4 = 0

Case "1" :
  Portd.7 = 1
  Portd.6 = 0
  Portd.5 = 0
  Portd.4 = 0

Case "2" :
  Portd.7 = 0
  Portd.6 = 1
  Portd.5 = 0
  Portd.4 = 0

Case "3" :
  Portd.7 = 0
  Portd.6 = 0
  Portd.5 = 1
  Portd.4 = 0

Case "0" :
  Portd.7 = 0
  Portd.6 = 0
  Portd.5 = 0
  Portd.4 = 1

End Select
Loop




e. VIDEO HASILNYA








   
 

Cara mengakses Robot ARM (Robot Lengan) Menggunakan Mikrokontroller dan Driver Servo XISC-32

Cara Mengakses Robot ARM ( Robot Lengan ) Menggunakan Mikrokontroller dan Driver Servo XISC-32 / SSC-32


               This is my last ambition project, Selamat malam kawan semua, kali ini saya akan menjelaskan mengenai bagaimana cara mengakses robot lengan atau ARM robot yang mana biasanya robot ini berada di industri seperti halnya robot pemindah barang atau robot pengangkat beban, robot ini memiliki 4 buah servo dengan variasi rotasi yang bagus. Robot ini menggunakan mikrokontroller ATMega32 dan driver servo XISC-32. Yang perlu diperhatikan disini yaitu tegangan dan arus supply, gunakanlah supply 12v 2A atau lebih, supaya servo bisa bergerak lancar, untuk lebih jelasnya berikut skema dan programnya.



 a. Minimum System





 b. Driver Servo XISC-32





 c. Mini Servo





d. UBEC ( Voltage Regulator )






e. Program Bascom AVR

$regfile = "m32def.dat"
$crystal = 8000000
$baud = 9600

' #0 artinya port driver ke 0
' P2000 artinya posisi servo ada di 200 - tambahkan satu 0 dibelakngnya 
' T1000 artinya kecepatan untuk ke posisi tersebut lamanya 1 detik

Do
'kiri
Print " #0 P2000 T1000 "
Wait 1

'angkat
Print " #2 P1450 T300 "
Wait 1

'buka
Print " #3 P500 T1000 "
Wait 1

'maju
Print " #2 P2400 T1000 "
Wait 1

 'bawah
'Print " #1 P1900 T500 "
'Wait 1

'atas
'Print " #1 P2000 T500 "
'Wait 1

'japit
Print " #3 P900 T1000 "
Wait 3

'angkat
Print " #2 P1450 T300 "
Wait 1

'===============================

'kanan
Print " #0 P1000 T1000 "
Wait 1

'maju
Print " #2 P2400 T1000 "
Wait 1

 'bawah
'Print " #1 P1900 T500 "
'Wait 1

'atas
'Print " #1 P2000 T500 "
'Wait 1

'buka
Print " #3 P500 T1000 "
Wait 3

'angkat
Print " #2 P1450 T300 "
Wait 1

'japit
Print " #3 P900 T1000 "
Wait 1

Loop




f. VIDEO HASILNYA