"Kembali Ke Dasar Elektronika Digital ... "

  • IC Timer 555 yang Multifungsi

    IC timer 555 adalah sirkuit terpadu (chip) yang digunakan dalam berbagai pembangkit timer, pulsa dan aplikasi osilator. Komponen ini digunakan secara luas, berkat kemudahan dalam penggunaan, harga rendah dan stabilitas yang baik

  • Animasi LED Dengan IC 4017

    IC 4017 adalah IC 16-pin CMOS dekade counter dari seri IC CMOS 4000. Sangat berguna jika ingin membuat animasi lampu atau LED secara sederhana seperti led berjalan, tulisan berjalan , counter/timer dan masih banyak kegunaan lainnya

  • Bermain DOT Matrix - LOVEHURT

    Project Sederhana dengan Dot Matrix dan Attiny2313. Bisa menjadi hadiah buat teman atau pacarmu yang ulang tahun dengan tulisan dan animasi yang dapat dibuat sendiri.

  • JAM DIGITAL 6 DIGIT TANPA MICRO FULL CMOS

    Jika anda pencinta IC TTL datau CMOS maka project jam digital ini akan menunjukkan bahwa tidak ada salahnya balik kembali ke dasar elektronika digital , sebab semuanya BISA dibuat dengan teknologi jadul

  • BIKIN PCB SEDERHANA TAPI GA MURAHAN

    Bikin PCB itu ga susah kok..dengan software EAGLE CAD dan teknik sterika kamu dapat membuat PCB untuk berbagai project elektronika mu ...

Tampilkan postingan dengan label kontrol. Tampilkan semua postingan
Tampilkan postingan dengan label kontrol. Tampilkan semua postingan

Kamis, 15 April 2021

Skills yang dibutuhkan Automation Engineer di era Industry 4.0 (Tulisan seorang kawan - part 1)

 BY HANDY WICAKSONO ST, MT, PHD - Dosen Kontrol & Otomasi UK Petra Surabaya 




Seorang Automation Engineer (AE) harus memiliki knowledge dan skill terkait sensor dan aktuator, instrumentasi dan kontrol, PLC, HMI, SCADA, dan lain – lain. Beberapa skill terkait teknologi informasi juga penting, di antaranya: coding, data communication, network, sampai ke database. Saya pernah menuliskan profesi AE di salah satu post lama.


Saat dunia sudah memasuki tahapan Revolusi Industri 4.0, makin banyak skills lain yang harus ditambahkan sehingga AE siap bersaing di masa mendatang. Skills di beberapa bidang berikut ini (menurut saya) akan menjadi nilai tambah bagi AE untuk siap menghadapi era industri 4.0:


  1. Industrial internet of things
  2. Machine learning
  3. Cloud computing
  4. Computer vision

Pada posting kali ini, akan dibahas 2 topik: Industrial Internet of Things (IIoT) dan machine learning. Saya akan menjelaskan deskripsi singkat, dan bagaimana anda bisa mempersiapkan diri untuk memiliki skill di bidang tersebut.


1. Industrial internet of things

Deskripsi

Sebagai pengantar, pemahaman sederhana Internet of Things (IoT) ialah kondisi dimana berbagai peralatan (umumnya sensor dan aktuator) saling terhubung satu dengan yang lain melalui internet. Penerapan IoT secara spesifik di industri/pabrik disebut dengan IIoT. Berikut ini contoh arsitektur IIoT yang terdiri dari 3 bagian: edge (meliputi PLC atau kontroler lain, HMI, sensor, aktuator), network, dan cloud.


IIoT Architecture

Sumber: https://en.wikipedia.org/wiki/Industrial_internet_of_things


Selama ini dunia automasi industri menerapkan Automation Hierarchy (lihat gambar di bawah), sehingga untuk melakukan komunikasi antara peralatan di salah satu level dengan level lainnya harus mengikuti hirarki tersebut. Misalnya jika suatu software SCADA ingin mendapatkan nilai sensor, maka software tersebut harus “meminta” data tersebut ke PLC, dan PLC akan “memberikan” data dari sensor yang terhubung ke PLC. Hal ini tentunya membuat sistem secara umum berjalan lebih lambat dan kurang fleksibel.


Sumber: https://iot-analytics.com/industrial-internet-disrupt-smart-factory/

Di sinilah Industrial Internet of Things (IIOT) melakukan perubahan besar, karena setiap peralatan (things) dapat terhubung dengan peralatan di level manapun melalui internet. Boleh dikatakan tidak ada lagi hirarki di sini. Akibatnya, sistem bekerja dengan lebih cepat dan fleksibel. Hal ini tentunya bukan tanpa kekurangan, diantaranya sistem IIOT masih belum teruji di lapangan dan munculnya masalah security karena sistem menjadi terbuka via internet.


Bagaimana mempersiapkan diri?

Anda bisa mulai dengan mempelajari konsep internet of things secara umum. Sangat banyak sumber yang bagus di internet (video, artikel) yang membahas IoT. Setelah itu, anda bisa mulai masuk ke IIoT, yaitu penerapan IoT di industri/pabrik. Saat ini hampir semua vendor otomasi terkemuka (misal: Siemens, Schneider, AB, dll) telah memiliki produk yang terkait dengan IIoT.


Selain konsep, anda juga bisa mencoba mempraktekkan langsung. Salah satu tool yang menurut saya paling mudah (dan gratis) untuk dipelajari ialah NodeRed. Jika anda memiliki PLC fisik dan IoT gateway (misal RaspberryPi atau Siemens IOT 2040), kemungkinan besar PLC anda bisa terhubung dengan IIoT memanfaatkan NodeRed. Saya telah menulis beberapa artikel tentang koneksi NodeRed dan PLC Siemens S71200 (bagian 1, bagian 2).


FYI, dalam beberapa semester ini cukup banyak mahasiswa di Teknik Elektro, UK Petra (dan pasti di kampus lain juga) yang menggunakan platform ini.


2. Machine Learning

Deskripsi

Machine learning ialah mekanisme cerdas yang diterapkan pada suatu agent (bisa berupa software, robot, dll) sehingga ia dapat belajar sendiri dari pengalamannya, dan menjadi makin pintar dalam mengambil keputusan. Machine learning ialah bagian dari bidang artificial intelligence (AI) yang saat ini sedang sangat populer di berbagai bidang. Mulai dari self-autonomous car sampai situs perjodohan, semua menggunakan teknologi machine learning.


Di dunia automasi industri, machine learning (atau AI secara umum) juga mulai banyak diterapkan. Salah satu bidang penerapannya ialah predictive maintenance, di mana sistem akan menentukan kapan suatu peralatan harus diperbaiki atau diganti. Umumnya peralatan akan diganti menurut jadwal yang sudah dibuat, hanya kondisi peralatan yang berbeda – beda (misal: ada yang memiliki cacat bawaan, namun ada yang tidak), membuat pergantian alat yang terlalu cepat (atau terlalu lambat) dapat merugikan perusahaan. Machine learning dapat membuat prediksi optimal tentang hal ini.


sumber: https://bit.ly/32gt6BC


Contoh penerapan lain ialah dalam proses penentuan varian dan jumlah produk yang harus diproduksi suatu pabrik. Sistem dengan machine learning dapat memberi rekomendasi varian produk (dan berapa jumlah produk) yang harus dibuat pada periode waktu tertentu sehingga produk tersebut laku dengan baik. Sering kali pabrik membuat berbagai varian produk yang kurang laku di pasaran sehingga merugikan pabrik itu sendiri.


Selain itu juga ada penerapan machine learning untuk mendeteksi kerusakan barang dengan computer vision. Hal ini akan saya bahas secara khusus pada posting berikutnya.


Bagaimana mempersiapkan diri?


Saat ini sangat banyak media belajar machine learning yang bisa Anda temukan, salah satu sumber terbaik menurut saya ialah belajar dari kuliah online “Machine Learning” yang disampaikan Andrew Ng di Coursera. Cara penyampaian Andrew Ng sederhana dan mudah dipahami (tentunya dalam bahasa Inggris).


Sebagai tool untuk praktek, Anda bisa menggunakan bahasa pemrograman Python, dan menambahkan library machine learning seperti Scikit-Learn yang semuanya bersifat gratis. Ada banyak sumber lain yang membahas penerapan machine learning dengan library tersebut. Setelah itu anda bisa berpindah mempelajari library untuk big data ataupun deep learning.


Bagaimana menghubungkan algoritma machine learning dengan kontroler seperti PLC? Dalam hal ini NodeRed kembali bisa membantu, karena ada node yang dapat mengakomodasi ML library seperti ScikitLearn maupun Tensorflow. Sebagai catatan, saya belum pernah mencoba node ini secara langsung.


Demikian posting kali ini, 2 topik lain akan saya bahas pada posting mendatang. Terima kasih, semoga bermanfaat!

Share:

Selasa, 21 Juli 2020

Cara Mudah Belajar MODBUS - Komunikasi Industri Jaman dulu [part 2] Membedah Isi Pesan Modbus




Pada bagian kedua kita akan membedah standar protokol modbus melalui pembedahan perintah yang dikirim dan terima dari master menuju slave. Dari software sniffer serial port  yg menyadap komunikasi serial pada komunikasi antara PC sebagai master modbus dan arduino sebagai modbus slave, didapatkan pola pengiriman data seperti ini saat menghidupkan LED:

05 05 00 00 FF 00 8D BE

Kode diatas berupa Hexa jadi kalau dipisah-pisah berdasarkan standar pada beberapa tulisan yang saya baca di beberapa artikel di internet adalah seperti berikut:

05     =  Alamat device id slave
05     =  Perintah force coil / function 05
00 00  = 2 byte alamat address memori (mulai 0)
FF 00  = 2 byte force coil ON
8D BE  = Checksum / CRC 16 modbus

Ada pola khusus yaitu alamat address register dan data perintah berupa 2 byte. Register / alamat memory modbus selalu dimulai dari nol walaupun sejatinya alamat yang dituju merupakan register yg diawali angka 1, contoh kita akan megakses register 40001, tetap saja perintah nya akses ke reg 0 karena sudah diwakili oleh byte perintah function sebagai penanda jenis register yg akan diakses. Check sum ini didapat dengan rumus tertentu dan daripada pusing langsung aja gunakan website https://www.scadacore.com/tools/programming-calculators/online-checksum-calculator/ untuk menjadi crosscheck. Pada terminal realterm sudah terdapat penghitung checksum otomatis sehingga sangat gampang.



Jadi untuk mematikan led perintahnya adalah :


05 05 00 00 00 00 CC 4E

Untuk mengecek checksumnya (CC 4E) dapat menggunakan website yang telah saya berikan sebelumnya. Untuk mengecek penekanan tombol perintahnya adalah :


05 02 00 00 00 01 B8 4E

05     =  Alamat device id slave
02     =  Perintah baca input digital / function 02
00 00  = 2 byte alamat address memori (mulai 0)
00 01  = 2 byte panjang data yg diharapkan
B8 4E  = Checksum / CRC 16 modbus



Jawaban yg diterima untuk kondisi tombol dilepas / LOW :

05 02 01 00 A0 B8

Untuk kondisi tombol ditekan / HIGH
05 02 01 01 61 78

Dimana yang berwarna merah artinya  bisa dilihat pada website  parsing data RTU berikut  http://rapidscada.net/modbus/ModbusParser.aspx


Untuk membaca DHT11 dilakukan dengan function 04 dan 3 buah data akan diminta ke modbus yaitu  suhu didepan koma, suhu di belakang koma dan terakhir angka kelembaban. Perintahnya sebagai berikut :

05 04 00 00 00 03 B1 8F

05     =  Alamat device id slave
04     =  Perintah baca input analog/ function 04
00 00  = 2 byte alamat address memori (mulai 0)
00 03  = 2 byte panjang data yg diharapkan (3 buah data)
B1 8F  = Checksum / CRC 16 modbus

sedangkan replynya seperti ini formatnya : 

05 04 06 00 1D 00 4F 00 5F CF BE

05     =  Alamat device id slave
04     =  Perintah baca input analog/ function 04
06     = 6 byte data berikut akan muncul (format 2 byte per data) 
00 1D  = 2 byte pertama adalah 001D = 29
00 4F  = 2 byte kedua adalah 004F =  79
00 5F  = 2 byte ketiga adalah 005F = 95
CF BE  = Checksum / CRC 16 modbus

Jadi hasil pembacaan dari DHT 11 adalah 29,79 derajat Celcius dengan kelembaban 95%. Untuk lebih jelasnya bisa dilihat pada video https://www.youtube.com/watch?v=cOmQoyfORtg&t=34m30s



Share:

Cara Mudah Belajar MODBUS - Komunikasi Industri Jaman dulu [part 1] Membuat Arduino Modbus Slave




Seri tulisan saya kali ini akan membahas tentang protokol komunikasi pada industri yang masih de facto menjadi standar disana. Standar MODBUS yang diperkenalkan oleh modicom (kemudian menjadi schneider) pada tahun 1979 sebagai sistem kendali pada mesin industri dimana saat itu kontrol dari pusat PLC (Programmable Logic Unit) dihubungkan menuju RTU (remote terminal unit) melalui komunikasi serial RS 232/485. Untuk memudahkan pemahaman kali ini saya  akan menekankan praktek langsung menggunakan mikrokontroller arduino.





Salah satu contoh alat berbasis modbus yang lagi naik daun adalah PZEM dimana saat musim pengiritan energi sangat dibutuhkan kontrol pengaturan daya listrik melalui monitoring yang akurat. Terdapat satu blog pada internet karya mas asep kurniawan (semesin dot com) membahas penggunaan alat ini tanpa menggunakan library pzem pada sketch arduino. Secara sederhana pembacaan datanya digambarkan seperti ini :

courtesy semesin dot com

Pola pikir orang jaman dulu saat mendesain protokol modbus menggunakan pola ADDRESS-DATA, jadi sebuah lokasi alamat memori memiliki data yang dapat dibaca atau ditulis dan dari perubahan register ini maka akan mendapatkan kondisi yang diharapkan. Alamat address yang standar modbus sebagai berikut :


Object typeAccessSizeAddress Space
CoilRead-write1 bit00001 - 09999
Discrete inputRead-only1 bit10001 - 19999
Input registerRead-only16 bits30001 - 39999
Holding registerRead-write16 bits40001 - 49999

Coil merupakan istilah output relay, Discrete input merupakan istilah untuk switch, Input register merupakan data sensor analog dan Holding register sebagai alamat memory umum yang dapat digunakan menampung parameter/variabel. Ada istilah lainnya yang perlu diketahui yaitu function code yang menjelaskan perintah yang dikirim akan mengerjakan apa.

FUNCTION CODE VALUE TYPE
01 (0x01) Read Coil Status
02 (0x02) Read Input Status
03 (0x03) Read Holding Registers
04 (0x04) Read Input Registers
05 (0x05) Force Single Coil
06 (0x06) Preset Single Register
15 (0x0F) Force Multiple Coils
16 (0x10) Preset Multiple Registers

Yang sering digunakan pada alat berbasis modbus adalah  fungsi 02, 03, 04 dan 05.





Karena di tempat saya tidak memiliki alat berbasis modbus maka pada praktek part 1 ini kita akan membuat alat seperti pada skematik diatas tujuannya menjadikan arduino dengan I/O berupa dht11, led dan tombol menjadi berbasis modbus. Script nya seperti dibawah ini :


//Library modbus slave: https://code.google.com/archive/p/arduino-modbus-slave/downloads
#include <modbus.h>
#include <modbusDevice.h>
#include <modbusRegBank.h>
#include <modbusSlave.h>
#include "DHT.h"
/*
Cara Mudah Menjadikan arduino menjadi alat modbus
Alamat device ID 5 pada 9600 baud.
*/


#define LED 2
#define TOMBOL 3
#define dhtPin 4
#define DHTTYPE DHT11
DHT dht(dhtPin, DHTTYPE);

unsigned long previousMillis = 0;
const long interval = 5000; 

//Setup register bank
//semua data ditulis dan disimpan disini
modbusDevice regBank;
//mode slave
modbusSlave slave;

void setup()
{   
  pinMode(LED, OUTPUT);
  pinMode(TOMBOL, INPUT);
//menentukan device ID.  
  regBank.setId(5);
  dht.begin();
/*
modbus registers format seperti berikut
00001-09999  Digital Outputs, master dapat menulis dan membaca data
10001-19999  Digital Inputs, master hanya bisa baca data
30001-39999  Analog Inputs,  master hanya bisa membaca nilai pada register
40001-49999  Analog Outputs, master dapat tulis baca register

*/

//tambahkan alamat LED pada register bank
  regBank.add(1); //LED
  

//Tombol sebagai Input registers 10001
  regBank.add(10001);  //TOMBOL
 

//Analog Input registers 30001-30003 untuk DHT11
  regBank.add(30001);  //DHT11 - suhu puluhan
  regBank.add(30002);  //DHT11 - suhu desimal
  regBank.add(30003);  //DHT11 - kelembaban
  
//Coba simpan register umum 40001-40015 
  regBank.add(40001);  // w
  regBank.add(40002);  // w
  regBank.add(40003);  // w
  regBank.add(40004);  // .
  regBank.add(40005);  // a
  regBank.add(40006);  // i
  regBank.add(40007);  // s
  regBank.add(40008);  // i
  regBank.add(40009);  // 5
  regBank.add(40010);  // 5
  regBank.add(40011);  // 5
  regBank.add(40012);  // .
  regBank.add(40013);  // c
  regBank.add(40014);  // o
  regBank.add(40015);  // m


/*
protocol handler yang akan menulis dan membaca
register data.  
*/
  slave._device = &regBank;  

// Serial pada 9600
  slave.setBaud(9600);   
//isi register umum diawal
  regBank.set(40001,'w');
  regBank.set(40002,'w');
  regBank.set(40003,'w');
  regBank.set(40004,'.');
  regBank.set(40005,'a');
  regBank.set(40006,'i');
  regBank.set(40007,'s');
  regBank.set(40008,'i');
  regBank.set(40009,'5');
  regBank.set(40010,'5');
  regBank.set(40011,'5');
  regBank.set(40012,'.');
  regBank.set(40013,'c');
  regBank.set(40014,'o');
  regBank.set(40015,'m');
}

//fungsi memecah angka dibelakang koma dht11
int ExtractDecimalPart(float Value, int numberOfDecimals)
{
  float temp = Value - (long)(Value); 
  long p = 1;
  for (int i=0; i< numberOfDecimals; i++) p*=10;
  long DecimalPart = p * temp;
  return DecimalPart;
}

void loop()
{
//Melihat data register 1 dan lempar ke LED
  digitalWrite(LED,regBank.get(1));  

//Membaca input tombol dan lempar ke register 10001
  regBank.set(10001, digitalRead(TOMBOL));

//membaca dht11 tiap 5 detik
  unsigned long currentMillis = millis();
 
  if(currentMillis - previousMillis >= interval) {
    // save the last time you read the sensor 
    previousMillis = currentMillis;   
 
    int h = dht.readHumidity();
    float t= dht.readTemperature();
    int t1 = t;
    int t2 = ExtractDecimalPart(t,2); //pecah desimal

    regBank.set(30001,1000); // tulis suhu depan koma 
    regBank.set(30002,1000); // tulis suhu belakang koma
    regBank.set(30003,1000); // tulis kelembaban


    }

   
// loop terus sebagai slave    
  slave.run();  

 
}

Pergunakan software monitoring modbus yang banyak ada di internet  untuk melakukan pengecekan apakah alat yang kita buat sudah terbukti menggunakan modbus, yang saya gunakan adalah radzio modbus. 



Dengan menggunakan USB to Serial langsung ke PC maka telah terbukti device modbus arduino dengan ID 5 dapat dibaca datanya dan dilakukan kontrol LED terhadapnya.  Kita juga bisa mengetest data apa sih yang dikirimkan secara serial dan format yang benar melalui terminal real term yang akan dibahas pada video selanjutnya, dan selengkapnya bisa dilihat pada video berikut :


Share:

Kamis, 30 Mei 2013

SMS Kontrol: Mengirim Perintah ke Micro-AVR Via SMS



Posting ini adalah kelanjutan dari posting terdahulu, kirim SMS via attiny intro disini dan lanjut disini, kali ini kita akan bahas mengenai mode "penerima sms" , dimana micro AVR akan menerima SMS dan melakukan keputusan atau proses berdasarkan parsing teks sms yg dikirim.

Kelemahan mode serial UART yg sebelumnya adalah bisa mengirim(banyak teks) dan menerima hanya 1 teks sebagai triger interupt.

...Bagaimana jika Teks yg ingin diparsing berupa beberapa karakter? semisal "LED1ON" ?..

Ternyata jika kita cek satu persatu per-karakter sms yg diterima maka akan muncul masalah "sms terpotong" atau timing yg kacau....Untuk itu dibutuhkan mode "FIFO" atau "circular buffering" dimana teks yg diterima oleh micro melalui UART/serial akan disimpan dalam buffer memory barulah kemudian akan diolah/parsing untuk keperluan kontrol.

Setelah mencoba beberapa library , yang paling pas adalah pfleury uart library penjelasan disini dan download disini. Silahkan baca terlebih dahulu dan ternyata cukup mudah dan simple.

Selanjutnya kita ingat dulu AT command dari modem yg kita gunakan yaitu Wavecom. Beberapa command yg penting adalah :

AT+IFC=0,0 : Agar mode serial control = none

ATE0 : Agar karakter yg dikirim tidak di echo/kembalikan
AT+CMGF=1 : mode sms "teks"

dan yang baru adalah :

AT+CNMI=2,2 : mode SMS terima langsung tampil teksnya

jika sms diterima dengan mode diatas, maka ketika sms diterima akan muncul seperti ini di modem :


+CMT :"+628155555555","11/10/01,12 :30 :00+00",
pesan sms disini
dan dari teks sms yg diterima kemudian diolah oleh micro (parsing) untuk melakukan keputusan yg diinginkan.

Lanjut kita ke proyek sebenarnya, kali ini kita menggunakan micro ATMEGA 8515 dengan circuit seperti berikut (micro lain menyesuaikan aja):


(klik untuk memperbesar skematik)

*) modem wavecom memiliki mode komunikasi serial yg "cross" jadi jangan lupa untuk melakukan cros TX & RX (pin 2 vs pin 3 dari DB9)

selanjutnya kita akan bahas scriptnya

-Inisialisasi

kita akan menggunakan library uartnya si pleury, dengan mengcopy "uart.h" serta "uart.c" ke folder avr studio dan menambah source uart.c dan include uart.h


#define F_CPU 7372800UL //xtal yg digunakan biar error 0%
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h> 

#include "uart.h"  //pastikan sudah tersedia di folder program

//definisi baudrate RS232

#define UART_BAUD_RATE 9600 


char buffer[10];  //definisi buffer teks
int indexbuf=0;

cara menambahkan uart.c :



- Inisialisasi I/O port dan modem wavecom



int main(void)
{  

   DDRA  |= (1<<PA6)|(1<<PA7); //port yg digunakan PA6 & PA7
    
  unsigned int c;
  uint8_t a;

   //inisialisai UART dari library pfleury

    uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) ); 
    sei(); // mode receive interupt

   
    uart_puts_P("ATE0\r");   // biar tidak memenuhi buffer
   _delay_ms(500);
    uart_puts_P("AT+CMGF=1\r"); //mode smsteks
   _delay_ms(500);
    uart_puts_P("AT+CNMI=2,2\r"); // mode langsung baca sms
sebelumnya agar diingat untuk mengedit uart.h dibagian dibawah ini, sesuaikan dengan panjang sms teks yg diterima
Code:
/** Size of the circular receive buffer, must be power of 2 */
#ifndef UART_RX_BUFFER_SIZE
#define UART_RX_BUFFER_SIZE 64
#endif
/** Size of the circular transmit buffer, must be power of 2 */
#ifndef UART_TX_BUFFER_SIZE
#define UART_TX_BUFFER_SIZE 64
#endif

- Parsing SMS

Kita lanjut dengan Parsing SMS yg masuk, dimana akan meng-ON/OFF Led di port A6 & A7. Untuk mepermudah parsing, kita gunakan trigger karakter khusus sehingga dapat menandai SMS yg akan diparsing ( kali ini menggunakan " $ ")


PORTA &= ~_BV(PA6) & ~_BV(PA7);


   while(1)

   {   


        c = uart_getc();
        if ( c & UART_NO_DATA ) // jika ga ada data masuk
        {

        }
        else
        {
 
         if( c == '$') indexbuf=0;  //jika triger $, maka mulai parsing (index aray buffer = 0 )
  
     

   buffer[indexbuf] = c; //masukkan teks sms ke buffer

   indexbuf++; //index array ditambah 
    

        }
    
   // Jika yg diterima sms "$LED1ON", maka Led di PA6 akan hidup
    if( buffer[0]=='$' &&  buffer[1]=='L' &&buffer[2]=='E' &&
     buffer[3]=='D' && buffer[4]=='1' &&
        buffer[4]=='O' &&  buffer[5]=='N')

       { PORTA |= _BV(PA6); 
    
      for(a=0;a<10;a++) buffer[a]=0; // bersihkan buffer
    
    
    }

   // Jika yg diterima sms "$LED2ON", maka Led di PA7 akan hidup
    if( buffer[0]=='$' &&  buffer[1]=='L' &&buffer[2]=='E' &&
     buffer[3]=='D' && buffer[4]=='2' &&
        buffer[4]=='O' &&  buffer[5]=='N')

       { PORTA |= _BV(PA7); 
    
      for(a=0;a<10;a++) buffer[a]=0; // bersihkan buffer
    
    
    }

   // Jika yg diterima sms "$LED1OFF", maka Led di PA6 akan mati
    if( buffer[0]=='$' &&  buffer[1]=='L' &&buffer[2]=='E' &&
     buffer[3]=='D' && buffer[4]=='1' && 
             buffer[5]=='O' &&  buffer[6]=='F' &&  buffer[7]=='F')

       { PORTA &= ~_BV(PA6); 
    
      for(a=0;a<10;a++) buffer[a]=0; // bersihkan buffer
    
    
    }

   // Jika yg diterima sms "$LED2OFF", maka Led di PA7 akan mati
    if( buffer[0]=='$' &&  buffer[1]=='L' &&buffer[2]=='E' &&
     buffer[3]=='D' && buffer[4]=='2' && 
             buffer[5]=='O' &&  buffer[6]=='F' &&  buffer[7]=='F')


       { PORTA &= ~_BV(PA7); 
    
      for(a=0;a<10;a++) buffer[a]=0;// bersihkan buffer
    
    
    }
  
 }

   


}


Cara parsing pada script diatas masih menggunakan logika sederhana seperti penjelasan berikut :

1. Format SMS dimulai dengan karakter '$', sehingga parsing akan menunggu karakter ini muncul lalu kemudian diarahkan menuju posisi array buffer 0
2. Tiap array buffer kemudian di cek satu per satu sampai menemukan format kata sesuai keinginan, seperti contoh yg digunakan berupa kata $LED1ON :

  if( buffer[0]=='$' &&  buffer[1]=='L' &&buffer[2]=='E' &&
      buffer[3]=='D' && buffer[4]=='1' &&
      buffer[4]=='O' &&  buffer[5]=='N')


       { PORTA |= _BV(PA6); 
                  }

3. Diakhiri dengan pembersihan isi buffer agar bisa digunakan selanjutnya.



Kontrol micro via sms ini memiliki banyak kemungkinan aplikasi sesuai kreativitas diantaranya :

1. Menghidupkan Lampu otomatis via SMS
2. Membaca data suhu atau kondisi on/off setelah sms dikirim (tanpa harus menerima report terus menerus seperti contoh sebelumnya)
3. Trigger BO** .....duhhh jangan yaaa....INGAT ! Pisau didapur bisa bikin masakan enak, tapi ditangan orang tidak bertanggung jawab maka pisau dapur bisa menjadi alat pembunuh...


SELAMAT MENCOBA
Share:

Senin, 01 Oktober 2012

DTMF - lebih lanjut dengan BCD to Decimal decoder

74LS154.jpg (500×500)
Untuk menghasilkan output yang lebih spesifik terhadap tombol maka diperlukan IC tambahan berupa decoder BCD ( kode desimal dalam biner ) yang akan mengeluarkan 1 output sesuai input binner yg di berikan. Output dari decoder 8870 adalah 4 bit binner dan selanjutnya dapat langsung di berikan ke input decoder BCD. Untuk 10 output ic yang digunakan adalah 74LS145 sedangkan untuk 16 output digunakan ic 74LS154.


(klik untuk memperbesar)


Dari truth table didapatkan bahwa output dari Q0 - Q9 adalah aktif LOW, dan memiliki susunan yang berbeda dengan truth table dari IC 8870. Angka 0 dari ic 8870 diterjemahkan sebagai angka desimal 10 (biner 1010) sehingga Q0 tidak akan pernah mengeluarkan output , sedangkan angka 1 yang diterjemahkan sebagai binary BCD "0001" akan mengaktifkan output Q1. Jadi maksimum output dengan  74LS145 adalah 9, sedangkan untuk 74LS154 dapat menghasilkan output yang lebih.

Kondisi output secara default dari ic 8870 adalah ter "kunci" atau LATCH pada posisi tombol terakhir yg diinputkan. Jadi jika ingin mendapatkan output yang TOGGLE atau momentary/ sementara semisal jika digunakan pada penekanan remote maka diperlukan suatu mekanisme seperti pada rangkaian skematik selengkapnya berikut :

(klik untuk memperbesar)

Dari rangkaian diatas, kita akan memanfaatkan output dari ic 8870 di pin 15 (StD) yang akan aktif high ketika ada input DTMF dan kembali low ketika tidak ada input. Pin 15 ini akan mengatur transistor NPN untuk ON atau OFF sehingga ketika tidak ada input maka sumber tegangan relay akan diputus . Saklar S1 merupakan saklar yang dapat digunakan untuk memilih mode LATCH atau TOGGLE. 



Ada yang tertarik membeli yang atas ? Box diatas merupakan remote jarak jauh via HP yang dipesen oleh rekan dari Kep. Riau dan digunakan untuk melakukan remote terhadap tombol receiver TV KABEL. Berbagai macam aplikasi lain juga dapat menggunakan alat ini. Jika tertarik silahkan kontak pemilik blog deh ....

SELAMAT MENCOBA





KONTAK :

HP: 085733889569 , 087882045949
Mail : ahocool@gmail.com
ym :ahokleng
fb: www.facebook.com/nyoman.yudi
twiter: @ahocool
lokasi: SURABAYA
PIN : 321477A8
Share:

Kontak Penulis



12179018.png (60×60)
+628155737755

HP: 081331339072
Mail : ahocool@gmail.com

Site View

Categories

555 (7) 7 segmen (3) adc (4) amplifier (2) analog (10) android (11) antares (3) arduino (14) artikel (1) attiny (1) attiny2313 (17) blog (1) bluetooth (1) cmos (2) crypto (2) dasar (40) display (3) esp8266 (3) gcc (1) iklan (1) infrared (2) Input Output (3) iot (16) jam (6) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (14) komputer (3) komunikasi (1) kontrol (5) lain-lain (8) lcd (2) led (13) led matrix (6) line tracer (1) lm35 (1) memory (1) metal detector (4) microcontroller (55) mikrokontroller (7) mikrotik (5) ninmedia (2) ntp (1) paket belajar (19) palang pintu otomatis (1) parabola (46) pcb (2) praktek (2) project (33) proyek (1) python (1) radio (3) raspberry pi (4) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (1) sharing (3) signage (1) sinyal (1) sms (6) software (18) solusi (1) tachometer (2) telepon (7) televisi (95) television (17) transistor (1) troubleshoot (3) tulisan (71) tutorial (80) tvri (2) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika