Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

Kamis, 30 Mei 2013

SMS KONTROL: Kirim SMS dengan AVR ATTiny 2313



  


Pada praktek kali ini kita akan memanfaatkan ATtiny 2313 sebagai controller untuk mengirim sms ketika tombol ditekan


Baud rate untuk komunikasi RS232 adalah 9600, sehingga sebelum menggunakan modem (modem yg dipake modem wavecom dengan port rs232) perlu diset baud rate nya 9600 dengan AT command melalui PC dengan software terminal seperti hyperterminal atau putty. Ingat secara default modem wavecom memiliki baudrate 115200 sehingga koneksi awal menggunakan baudrate 115200. Setting juga mode control dari komunikasi serial yang hanya menggunakan 3 kabel (tx rx gnd) sehingga dipilih control mode = none.


AT+IPR=9600<enter>
OK
AT+IFC=0,0<enter>
OK
AT&W<enter>



Rangkaian elektronik nya sebagai berikut : (klik untuk memperjelas)


*) koneksi dari PORT Serial ke Serial DB9 secara cross , 1 vs 3(DB9-Rx) , 2 vs 2(DB9-Tx) , GND=5(DB9)
**) xtal yg digunakan nilainya khusus (7372800), jika menggunakan yg umum (4/8 mhz) atau default 1Mhz maka akan terjadi error 0,2%, tetapi tidak terlalu signifikan jika hanya kirim sms
***) ketika tombol ditekan maka micro akan mengirimkan perintah ke wavecom untuk mengirim sms


secara bertahap kita akan bahas programming dalam GCC-WINAVR-AVRSTUDIO




Inisialisasi Awal

Yang utama dari bagian inisialisasi adalah penulisan clock CPU yang digunakan, sebaiknya membaca datasheet dibagian BAUD RATE dan hubungannya dengan persentase error akibat pembagian clock yang tidak bulat.

#define F_CPU 7372800UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h> 

//definisi baudrate RS232

#define USART_BAUDRATE 9600
#define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1)


Inisialisasi command2 AT COMMAND sebagai variabel constant



//ganti nomer HP 
const char sms[] PROGMEM=  "AT+CMGS=0812345678\r test dari micro";

const char smsend[] PROGMEM= {0x1A}; // ascii dari CTRL+Z

Routine untuk inisialisasi USART


void init_usart(void)
{


   UCSRB |= (1 << RXEN) | (1 << TXEN);   
   UCSRC |= (1 << UCSZ0) | (1 << UCSZ1); 
   UBRRL = BAUD_PRESCALE; 
   UBRRH = (BAUD_PRESCALE >> 8);
   UCSRB |= (1 << RXCIE);  //interupt serial usart

  }


Routine untuk kirim karakter melalui RS232



void USART_Tx(unsigned char data)
{   
    
   while (!(UCSRA & (1<<UDRE)));{} // wait till transmit Data register is empty
    UDR = data; // Send data to the computer
}

void kirim_text(const char *data)
{
   while (pgm_read_byte(data) != 0x00)
     USART_Tx(pgm_read_byte(data++));
}

Routine interupt untuk membaca tombol dan kirim sms



SIGNAL (SIG_INT0)
{

kirim_text(sms);
kirim_text(smsend); 
}
Routine main program


int main(void)
{
   GIMSK |= (1<<INT0) ; // tombol interupt  0
   MCUCR |= (1<<ISC01)| (1<<ISC00); //rising edge interupt

   init_usart(); // inisialisai komunikasi usart
 
   sei(); //hidupkan interupt


while(1)

   {
   }


}

Jika menggunakan clock external / xtal , jangan lupa untuk mengaktifkan clock external dari Attiny di fusebit/CKSEL, pilihlah frek yg high. 




Aplikasi pada contoh praktek kali ini dapat digunakan juga dalam berbagai keperluan, diantaranya:


- Alarm (contoh pintu terbuka langsung kirim sms, sensor menggunakan limit switch)
- Deteksi level tegangan AC jika drop langsung kirim sms (sensor menggunakan komparator)
- Deteksi level air, misal untuk pendeteksi banjir maka otomatis mengirim sms (sensor level air sederhana menggunakan transistor FET)

- dsb

SELAMAT MENCOBA
Share:

0 komentar:

Posting Komentar

Kontak Penulis



12179018.png (60×60)
+628155737755

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (12) antares (8) arduino (26) artikel (11) attiny (3) attiny2313 (19) audio (5) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp8266 (25) euro2020 (13) gcc (1) iklan (1) infrared (2) Input Output (3) iot (58) jam (7) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (17) komputer (3) komunikasi (1) kontrol (8) lain-lain (8) lcd (2) led (14) led matrix (6) line tracer (1) lm35 (1) lora (7) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (1) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (3) ninmedia (5) ntp (1) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (33) proyek (1) python (7) radio (24) raspberry pi (4) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) transistor (2) troubleshoot (3) tulisan (93) tutorial (108) tv digital (6) tvri (2) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika