2213100341 anas set laporan fp

Upload: anas

Post on 08-Jul-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/19/2019 2213100341 Anas SET Laporan FP

    1/30

    LAPORAN PROYEK AKHIR

    SISTEM ELEKTRONIKA TERTANAM

    Alat Ukur Tinggi Gedung Meggunakan Sensor BMP180

    Oleh :

    Anas Maulidi Utama (2213100341)

    JURUSAN TEKNIK ELEKTRO

    FAKULTAS TEKNOLOGI INDUSTRI

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER

    SURABAYA

    2016 

  • 8/19/2019 2213100341 Anas SET Laporan FP

    2/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

    A.  TOPIK PROYEK AKHIR

    “Alat Ukur Tinggi Gedung Meggunakan Sensor BMP180” 

    B.  PENDAHULUAN

    Mengetahui berapa tinggi suatu gedung bertingkat, pohon, atau tiang bendera

    mungkin adalah hal yang tidak penting bagi orang-orang. Namun, bagi suatu

     pekerjaan atau aktivitas tertentu, tinggi tersebut adalah informasi yang sangat

    membantu.

    Tinggi gedung bertingkat akan bermanfaat bagi tukang cat yang mengecat

    tembok gedung. Dengan tinggi gedung sang tukang bisa menghitung luas tembok

    yang akan dicat, sehingga tukang tersebut bisa memperkirakan berapa ember cat

    yang dibutuhkan agar pembelian cat menjadi lebih hemat.

    Selain itu, bagi seorang penebang pohon yang tidak bisa menghitung tinggi

     pohon, jika penebang tidak tahu tinggi pohon bisa berakibat pada lingkungan sekitar,

    seperti rumah di dekat pohon bisa tertimpa pohon. Namun, jika si penebang tahu

    tinggi pohon tersebut, si penebang bisa mengukur jangkauan tumbangnya pohon dan

     bisa mengarahkan arah tumbang pohon agar lingkungan sekitarnya aman.Terakhir, seseorang membeli tali untuk tiang bendera, namun tidak tahu tinggi

    tiang tersebut, sehingga tali yang dibeli terlalu pendek atau terlalu panjang. Untuk

    membeli tali yang tepat, orang tersebut membutuhkan tinggi tiang untuk mengetahui

     berapa panjang tali yang dibutuhkan.

    Dari tiga contoh kasus diatas mengetahui tinggi gedung yang akan dicat untuk

    menghitung berapa ember yang dibutuhkan, mengetahui tinggi pohon yang akan di

    tebang untuk memperkirakan jangkauan jatuhnya pohon tersebut, dan mengetahui

    tinggi tiang bendera untuk mengukur panjang tali. Kegiatan tersebut perlu

    mengetahui tinggi objek yang akan mereka hadapi, akan tetapi mereka tidak bisa

    mengukur tinggi tersebut karena tidak mungkin mengukur tinggi dengan meteran

    dari bawah sampai atas.

    Salah satu metode pengukuran tinggi objek yang tidak mungkin diukur dengan

    menggunakan alat ukur panjang yang umum adalah dengan menggunakan perbedaan

    tekanan antara titik bawah dan titik atas objek. Hal ini dikarenakan di dalam teori

    fisika, terdapat hubungan antara tekanan udara dan ketinggian tempat. Secara

  • 8/19/2019 2213100341 Anas SET Laporan FP

    3/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

    sederhana, di dalam suatu fluida homogen, hubungan antara tekanan dan kedalaman

    zat cair adalah

     Hal ini juga berlaku pada tekanan udara di mana tekanan udara memiliki hubungan

    tertentu dengan ketinggian tempat. Namun, rumus di atas tidak bias dipakai karena

    zat yang terkandung di dalam udara lebih heterogen dan lebih kompleks. Sehingga,

     bisa digunakan hubungan empiris antara tekanan dan ketinggian udara yang salah

    satu persamaannya adalah sebagai berikut:

    ( )

     

    h : ketinggian di atas permukaan laut (mdpl)

    P : tekanan yang terukur

    P0  : tekanan di atas permukaan laut (asumsi: 101325 Pa)

    C.  RUMUSAN MASALAH

    Pada proyek ini, pengukuran tinggi gedung akan diukur melalui pengukuran

    tekanan antara dasar objek dan bagian atas objek. Pengukuran tekanan dilakukan

    dengan menggunakan dua buah BMP180, dua buah mikrokontroler, dua buah LCD

    16x2, dan modul RF 433 MHz. Suplai yang digunakan pada proyek kali ini berasa

    dari dua buah power bank .

    D.  DESKRIPSI PROYEK

    Proyek akhir ini bertujuan untuk menghasilkan alat pengukur tinggi objek

    yang murah dan  portable sehingga mudah digunakan oleh orang-orang. Proyek inimenggunakan dua mikrokontroler ATMega16, dua sensor barometer BMP180,

    modul RF 433 MHz, dua LCD 16x2, dan modul USB to TTL.

  • 8/19/2019 2213100341 Anas SET Laporan FP

    4/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

    Gambar 1 Cara Kerja Sistem 

    Cara kerja sistem ini ditunjukkan seperti diagram blok di atas. Transmitter  

    akan diletakkan di lantai dasar, sedangkan receiver   akan diletakkan di lantai atas

    yang ingin diukur ketinggiannya. Pada bagian transmitter , proses-proses yang

    dilakukan adalah sebagai berikut:

    1.  Tekanan dari BMP180 yang ada di transmitter   dibaca oleh Mikrokontroler

    ATMega16 melalui i2c.

    2.  Suhu dan tekanan yang terukur akan ditampilkan di LCD 16x2.

    3.  Tekanan yang terukur tadi akan ditransmisikan melalui modul Tx RF 433

    MHz dengan protokol khusus untuk menghindari kesalahan data yang diterima

    receiver .

    Sedangkan pada bagian receiver , proses-proses yang dilakukan adalah sebagai berikut:

    1.  Data dari transmitter   akan diterima akan diambil melalui modul Rx RF 433

    MHz.

    2.  Data tersebut akan dicek di Mikrokontroler ATMega 16 yang ada di receiver  

    apakah sudah benar atau tidak dengan mengecek menggunakan protokol yang

    dikirimkan transmitter .

    3.  Tekanan dari BMP180 yang ada di receiver   akan dibaca oleh ATMega 16

    melalui i2c.

  • 8/19/2019 2213100341 Anas SET Laporan FP

    5/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

    4.  Tekanan-tekanan yang diperoleh, baik yang diperoleh dari Rx RF 433 MHz

    maupun pembacaan BMP180, akan dikonversikan menjadi tinggi terhadap

     permukaan laut menggunkan rumus:

    ()

    5.  Dari tinggi yang diperoleh dari tekanan BMP180 dan dari penerimaan data Rx

    RFF 433 MHz, diperoleh tinggi gedung. Secara matematis dapat dituliskan:

     E.

     

    PERANCANGAN HARDWARE  

    Sebelum masuk ke perancangan hardware, divais-divais yang akan digunakan

    di dalam proyek ini adalah sebagai berikut:

      BMP 180

    Gambar 2 BMP180 

    BMP 180 merupakan sensor tekanan yang di dalamnya juga tersedia

     pengukurann suhu. Untuk membaca hasil pengukuran tekanan dan suhu dari

    BMP harus dilakukan melalu i2c yang langkah-langkahnya terdapat di dalam

    datasheet  BMP180.  Mikrokontroler ATMega16

    Gambar 3 ATMega16 

  • 8/19/2019 2213100341 Anas SET Laporan FP

    6/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

    ATMega16 merupakan salah satu mikrokontroler keluaran ATMEL.

    Mikrokontoler ini memiliki 40 pin yang di dalamnya juga sudah terdapat

     beberapa fitur, di antaranya:

      8 pin Analaog to Digital Converter (ADC)

      I2C

      Serial Communication

      32 pin input/output digital

      Internal clock hingga 8 MHz

      Timer/Counter serta PWM Generator

     

    LCD 16x2

    Gambar 4 LCD 16x2

    LCD merupakan salah satu interface yang berupa output display untuk

     pengguna. 16x memiliki makna LCD ini memiliki dua baris dengan jumlah

    karakter maksimal yang dapat ditampilkan adalah 16 karakter.

      Modul RF 433 MHz

    Gambar 5 Modul RF433MHz 

    Modul ini merupakan modul untuk modulasi data ke sinyal pembawa dengan

    menggunakan metode ASK sehingga data dari transmitter   ke receiver   bias

    dikirimkan secara nirkabel.

  • 8/19/2019 2213100341 Anas SET Laporan FP

    7/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

    Pada bagian transmitter ,  port-port   mikrokontroler yang akan dipakai adalah

    sebagai berikut:

      PORTB 0,1,2,3 sebagai port  data untuk LCD

      PORTB 5 sebagai pin E untuk LCD

      PORTB 6 sebagai pin R/W untuk LCD

      PORTB 7 sebagai pin RS untuk LCD

      PORTC 1 sebagai SCL untuk i2c BMP180

      PORTC 0 sebagai SDA untuk i2c BMP180

     

    PORTD 1 sebagai tx untuk mengirim data melalui RF433MHz

    Pada bagian receiver ,  port-port   mikrokontroler yang dipakai adalah sebagai

     berikut:

      PORTB 0,1,2,3 sebagai port  data untuk LCD

      PORTB 5 sebagai pin E untuk LCD

      PORTB 6 sebagai pin R/W untuk LCD

      PORTB 7 sebagai pin RS untuk LCD

     PORTC 1 sebagai SCL untuk i2c BMP180

      PORTC 0 sebagai SDA untuk i2c BMP180

      PORTD 0 sebagai rx untuk menerima data melalui RF433MHz

    F.  PEMBUATAN SOFTWARE

    Agar sistem bisa bekerja sesuai keinginan, program yang diisikan ke dalam

    mikrokontroler yang digunakan harus tepat. Dalam proyek ini, CodeVision AVR

    digunakan dalam membuat program tersebut. Untuk list program keseluruahan, baik

    transmitter  maupun receiver , terlampir di akhir laporan ini.

  • 8/19/2019 2213100341 Anas SET Laporan FP

    8/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

    G.  REALISASI PROYEK AKHIR

    Gambar 6 Transmitter  

    Gambar 7 Receiver  

  • 8/19/2019 2213100341 Anas SET Laporan FP

    9/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

    Dari gambar 2 dan gambar 3 masing-masing merupakan realisasi transmitter  

    dan receiver   proyek ini. Pada bagian receiver , LCD 16x2, BMP180, dan Rx

    RF433MHz dibuatkan sebuah  shield   agar bisa diletakkan di atas mikrokontroler

    ATMega16 sehingga lebih mudah untuk dibawa.

    Salah satu pengujian yang telah dilakukan adalah pengukuran ketinggian

    antara lantai 2 dan lantai 3 Gedung B Jurusan Teknik Elektro ITS Surabaya. Dan

    dari data yang ditampilkan di LCD pada Receiver  didapatkan ketinggian sekitar 4.68

    meter. Tampilan terlihat seperti pada gambar 4 di bawah ini.

    Gambar 8 Hasil Pengujian Pengukuran Ketinggian

    H.  KESIMPULAN DAN SARAN 

    Kesimpulan

    1.  Alat ini lebih praktis digunakan dalam melakukan pengukuran tinggi gedung

    atau bangunan jika dibandingkan alat ukur tinggi gedung lain seperti theodolit .

    2.  Masalah terbesar terdapat pada modul transmitter   karena jika banyak orang

    yang mnggunakan frekuensi 433 MHz, data yang diterima sering mengalami

    error.

    Saran

    1. Dibutuhkan power yang besar dan antenna yang tepat di bagian transmitter  agar

     jarak transmitter  dan receiver  bisa lebih jauh.

  • 8/19/2019 2213100341 Anas SET Laporan FP

    10/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

    I.  LAMPIRAN

    Bagian-bagian Transmitter :

    1.   Power Bank  sebagai supplai Mikrokontroler, LCD, dan BMP180

    2. 

    Mikrokontroler ATMega 16 sebagai tempat pemrosesan data

    3.  Tx RF433MHz sebagai media pengirim data ke Receiver  tanpa melalui kabel

    4.  LCD 16x2 sebagai penampil data tekanan dan suhu

    5. 

    BMP180 sebagai sensor tekanan dan suhu

  • 8/19/2019 2213100341 Anas SET Laporan FP

    11/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

    Bagian-bagian receiver :

    1. 

     Power Bank  sebagai supplai Mikrokontroler, LCD, dan BMP180

    2.  Tx RF433MHz sebagai media pengirim data ke Receiver  tanpa melalui kabel

    3.  LCD 16x2 sebagai penampil data tekanan dan suhu

    4. 

    BMP180 sebagai sensor tekanan dan suhu

    5.  Mikrokontroler ATMega 16 sebagai tempat pemrosesan data

  • 8/19/2019 2213100341 Anas SET Laporan FP

    12/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

    List Program

    Transmitter

    /*****************************************************This program was produced by the

    CodeWizardAVR V2.05.0 Professional

    Automatic Program Generator

    © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.

    http://www.hpinfotech.com

    Project :

    Version :

    Date : 10/01/2016

    Author :

    Company :

    Comments:

    Chip type : ATmega16

    Program type : Application

    AVR Core Clock frequency: 8,000000 MHz

    Memory model : Small

    External RAM size : 0

    Data Stack size : 256

    *****************************************************/

    #include

    #include

    #include

    #include

    #include

    // I2C Bus functions

    #asm

    .equ __i2c_port=0x15 ;PORTC

    .equ __sda_bit=0

    .equ __scl_bit=1

    #endasm

    #include

    // Alphanumeric LCD Module functions

    #include

    // Standard Input/Output functions

    #include

    // Declare your global variables here

  • 8/19/2019 2213100341 Anas SET Laporan FP

    13/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

    #include

    #define BMP180_FILTERPRESSURE 1 //avarage filter for pressure

    #define BMP180_AUTOUPDATETEMP 1#define BMP180_MODE 0

    #define BMP180_UNITPAOFFSET 0 //define a unit offset (pa)

    #define BMP180_UNITMOFFSET 0 //define a unit offset (m)

    // Declare your global variables here

    float suhu;

    char buffsuhu[16];

    long tekanan;

    char bufftekanan[16];

    float ketinggian;

    char buffketinggian[16];

    int bmp180_regac1, bmp180_regac2, bmp180_regac3, bmp180_regb1,

     bmp180_regb2, bmp180_regmb, bmp180_regmc, bmp180_regmd;

    unsigned int bmp180_regac4, bmp180_regac5, bmp180_regac6;

    long bmp180_rawtemperature, bmp180_rawpressure;

    void bmp180_writemem(unsigned char reg, unsigned char value) {

    i2c_start();

    i2c_write(0xEE);

    i2c_write(reg);i2c_write(value);

    i2c_stop();

    }

    void bmp180_readmem(unsigned char reg, unsigned char buff[], unsigned char

     bytes) {

    unsigned char i =0;

    i2c_start();

    i2c_write(0xEE);

    i2c_write(reg);

    i2c_start();i2c_write(0xEF);

    for(i=0; i

  • 8/19/2019 2213100341 Anas SET Laporan FP

    14/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

    memset(buff, 0, sizeof(buff));

     bmp180_readmem(0xAA, buff, 2);

     bmp180_regac1 = ((int)buff[0]

  • 8/19/2019 2213100341 Anas SET Laporan FP

    15/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

     bmp180_getrawtemperature();

     bmp180_writemem(0xF4, 0x34+(BMP180_MODE > 11;

    x2 = (bmp180_regac2 * b6) >> 11;

    x3 = x1 + x2;

     b3 = (((((long)bmp180_regac1) * 4 + x3) > 2;

    x1 = (bmp180_regac3 * b6) >> 13;

    x2 = (bmp180_regb1 * ((b6 * b6) >> 12)) >> 16;

    x3 = ((x1 + x2) + 2) >> 2;

     b4 = (bmp180_regac4 * (unsigned long int)(x3 + 32768)) >> 15;

     b7 = ((unsigned long int)up - b3) * (50000 >> BMP180_MODE);

     p = b7 < 0x80000000 ? (b7 8) * (p >> 8);

    x1 = (x1 * 3038) >> 16;

    x2 = (-7357 * p) >> 16;

     bmp180_rawpressure = p + ((x1 + x2 + 3791) >> 4);}

    float bmp180_gettemperature() {

    float temperature;

     bmp180_getrawtemperature();

    temperature = ((bmp180_rawtemperature + 8)>>4);

    temperature = temperature /10;

    return temperature;

    }

    long int bmp180_getpressure() { bmp180_getrawpressure();

    return bmp180_rawpressure + BMP180_UNITPAOFFSET;

    }

    float bmp180_getaltitude() {

    return ((1 - pow(bmp180_getpressure()/(float)101325, 0.1903 )) /

    0.0000225577) + BMP180_UNITMOFFSET;

    }

    void bmp180_init() {

     bmp180_getcalibration(); //get calibration data bmp180_getrawtemperature(); //update raw temperature, at least the first time

  • 8/19/2019 2213100341 Anas SET Laporan FP

    16/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

    }

    void datatx(unsigned char data)

    {while ( !( UCSRA & (116) & 0b11111111);

    //buffer[2]=1;

     buffer[2]=(unsigned char)((data>>8) & 0b11111111);

    //buffer[4]='

  • 8/19/2019 2213100341 Anas SET Laporan FP

    17/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

    // 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=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

    PORTD=0x00;

    DDRD=0x00;

    // 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: Timer1 Stopped

    // Mode: Normal top=0xFFFF// 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=0xFF

  • 8/19/2019 2213100341 Anas SET Laporan FP

    18/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

    // 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

    // Communication Parameters: 8 Data, 1 Stop, No Parity

    // USART Receiver: Off

    // USART Transmitter: On

    // USART Mode: Asynchronous

    // USART Baud Rate: 9600

    UCSRA=0x00;

    UCSRB=0x08;

    UCSRC=0x86;UBRRH=0x00;

    UBRRL=0x33;

    // Analog Comparator initialization

    // Analog Comparator: Off

    // Analog Comparator Input Capture by Timer/Counter 1: Off

    ACSR=0x80;

    SFIOR=0x00;

    // ADC initialization

    // ADC disabledADCSRA=0x00;

    // SPI initialization

    // SPI disabled

    SPCR=0x00;

    // TWI initialization

    // TWI disabled

    TWCR=0x00;

    // I2C Bus initializationi2c_init();

  • 8/19/2019 2213100341 Anas SET Laporan FP

    19/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

    // Alphanumeric LCD initialization

    // Connections specified in the

    // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:// RS - PORTB Bit 7

    // RD - PORTB Bit 6

    // EN - PORTB Bit 5

    // D4 - PORTB Bit 3

    // D5 - PORTB Bit 2

    // D6 - PORTB Bit 1

    // D7 - PORTB Bit 0

    // Characters/line: 16

    lcd_init(16);

    lcd_gotoxy(0,0);

    lcd_puts("BBB");

     bmp180_init();

    while (1)

    {

    // Place your code here

    suhu=bmp180_gettemperature();tekanan=bmp180_getpressure();

    ketinggian=bmp180_getaltitude();

    ftoa(suhu,1,buffsuhu);

    ltoa(tekanan,bufftekanan);

    ftoa(ketinggian,2,buffketinggian);

    sendPressure(tekanan,suhu);

    //datatx(113);

    lcd_gotoxy(0,0);

    lcd_putsf("T:");lcd_puts(buffsuhu);lcd_putchar((char)223);lcd_putsf("C");lcd_gotoxy(0,1);

    lcd_putsf("P:");lcd_puts(bufftekanan);lcd_putsf("Pa ");

    delay_ms(500);

    //lcd_gotoxy(0,0);

    //lcd_puts("AAAAA");

    }

    }

  • 8/19/2019 2213100341 Anas SET Laporan FP

    20/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

    Receiver

    /*****************************************************

    This program was produced by theCodeWizardAVR V2.05.0 Professional

    Automatic Program Generator

    © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.

    http://www.hpinfotech.com

    Project :

    Version :

    Date : 11/01/2016

    Author :

    Company :

    Comments:

    Chip type : ATmega16

    Program type : Application

    AVR Core Clock frequency: 8,000000 MHz

    Memory model : Small

    External RAM size : 0

    Data Stack size : 256

    *****************************************************/

    #include #include

    #include

    #include

    #include

    #include

    // I2C Bus functions#asm

    .equ __i2c_port=0x15 ;PORTC

    .equ __sda_bit=0

    .equ __scl_bit=1

    #endasm

    #include

    // Alphanumeric LCD Module functions

    #include

    #ifndef RXB8

    #define RXB8 1

    #endif

    #ifndef TXB8#define TXB8 0

  • 8/19/2019 2213100341 Anas SET Laporan FP

    21/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

    #endif

    #ifndef UPE

    #define UPE 2#endif

    #ifndef DOR

    #define DOR 3

    #endif

    #ifndef FE

    #define FE 4

    #endif

    #ifndef UDRE

    #define UDRE 5

    #endif

    #ifndef RXC

    #define RXC 7

    #endif

    #define FRAMING_ERROR (1

  • 8/19/2019 2213100341 Anas SET Laporan FP

    22/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

    {

    // datarx[z]=UDR;

    // z++;

    // if(z>19){z=0;}char jumlah;

    if(penanda==0)

    {

    if(UDR==']') penanda=1;

    else penanda=0;

    }

    else if(penanda==1)

    {

    switch(datake){

    case 0: datanya[datake]=UDR;datake++;break;

    case 1: datanya[datake]=UDR;datake++;break;

    case 2: datanya[datake]=UDR;datake++;break;

    case 3: datanya[datake]=UDR;datake++;break;

    case 4: datanya[datake]=UDR;datake++;break;

    case 5: datanya[datake]=UDR;

     penanda=0;

    datake=0;

     jumlah=(int)(datanya[0]+datanya[1]+datanya[2]+datanya[3]+datanya[4])%256;

    if(datanya[5]==jumlah)

    {konversi_tekanan_ke_long();

    }

     break;

    }

    }

    }

    void getAnotherPressure()

    {

    int temp[3];

    temp[0]=datanya[0];

    temp[1]=datanya[1];temp[2]=datanya[2];

    for(iter=0;iter

  • 8/19/2019 2213100341 Anas SET Laporan FP

    23/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

    }

    }

    datanya[0]=Pr[0];

    if(Pr[1]==1){

    datanya[1]=Pr[2];

    if(Pr[3]=='

  • 8/19/2019 2213100341 Anas SET Laporan FP

    24/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

    i2c_write(0xEF);

    for(i=0; i

  • 8/19/2019 2213100341 Anas SET Laporan FP

    25/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

    //calculate raw temperature

    x1 = ((long)ut - bmp180_regac6) * bmp180_regac5 >> 15;

    x2 = ((long)bmp180_regmc 11;

    x2 = (bmp180_regac2 * b6) >> 11;x3 = x1 + x2;

     b3 = (((((long)bmp180_regac1) * 4 + x3) > 2;

    x1 = (bmp180_regac3 * b6) >> 13;

    x2 = (bmp180_regb1 * ((b6 * b6) >> 12)) >> 16;

    x3 = ((x1 + x2) + 2) >> 2;

     b4 = (bmp180_regac4 * (unsigned long int)(x3 + 32768)) >> 15;

     b7 = ((unsigned long int)up - b3) * (50000 >> BMP180_MODE);

     p = b7 < 0x80000000 ? (b7 8) * (p >> 8);

    x1 = (x1 * 3038) >> 16;

    x2 = (-7357 * p) >> 16; bmp180_rawpressure = p + ((x1 + x2 + 3791) >> 4);

    }

    float bmp180_gettemperature() {

    float temperature;

     bmp180_getrawtemperature();

    temperature = ((bmp180_rawtemperature + 8)>>4);

    temperature = temperature /10;

    return temperature;

    }

    long int bmp180_getpressure() {

  • 8/19/2019 2213100341 Anas SET Laporan FP

    26/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

     bmp180_getrawpressure();

    return bmp180_rawpressure + BMP180_UNITPAOFFSET;

    }

    float bmp180_getaltitude() {

    return ((1 - pow(bmp180_getpressure()/(float)101325, 0.1903 )) /

    0.0000225577) + BMP180_UNITMOFFSET;

    }

    void bmp180_init() {

     bmp180_getcalibration(); //get calibration data

     bmp180_getrawtemperature(); //update raw temperature, at least the first time

    }

    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

    char buffer[50];

    char buffP0[16];

    char buffT0[16];

    float T0a;float suhu;

    char buffsuhu[16];

    long tekanan, suhub;

    char bufftekanan[16];;

    float deltah;

    char deltahv[16];

    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=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

  • 8/19/2019 2213100341 Anas SET Laporan FP

    27/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

    // 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

    PORTD=0x00;

    DDRD=0x00;

    // 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: Timer1 Stopped

    // Mode: Normal top=0xFFFF

    // 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=0xFF

    // OC2 output: Disconnected

    ASSR=0x00;

    TCCR2=0x00;

    TCNT2=0x00;

    OCR2=0x00;

    // External Interrupt(s) initialization

  • 8/19/2019 2213100341 Anas SET Laporan FP

    28/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

    // INT0: Off

    // INT1: Off

    // INT2: Off

    MCUCR=0x00;MCUCSR=0x00;

    // Timer(s)/Counter(s) Interrupt(s) initialization

    TIMSK=0x00;

    // USART initialization

    // Communication Parameters: 8 Data, 1 Stop, No Parity

    // USART Receiver: On

    // USART Transmitter: On

    // USART Mode: Asynchronous

    // USART Baud Rate: 9600

    UCSRA=0x00;

    UCSRB=0x98;

    UCSRC=0x86;

    UBRRH=0x00;

    UBRRL=0x33;

    // Analog Comparator initialization

    // Analog Comparator: Off

    // Analog Comparator Input Capture by Timer/Counter 1: Off

    ACSR=0x80;SFIOR=0x00;

    // ADC initialization

    // ADC disabled

    ADCSRA=0x00;

    // SPI initialization

    // SPI disabled

    SPCR=0x00;

    // TWI initialization// TWI disabled

    TWCR=0x00;

    // I2C Bus initialization

    i2c_init();

    // Alphanumeric LCD initialization

    // Connections specified in the

    // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:

    // RS - PORTB Bit 7

    // RD - PORTB Bit 6// EN - PORTB Bit 5

  • 8/19/2019 2213100341 Anas SET Laporan FP

    29/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

    // D4 - PORTB Bit 3

    // D5 - PORTB Bit 2

    // D6 - PORTB Bit 1

    // D7 - PORTB Bit 0// Characters/line: 16

    lcd_init(16);

     bmp180_init();

    lcd_clear();

    #asm("sei")

    lcd_gotoxy(0,0);

    lcd_putsf("Pengukur Tinggi");

    lcd_gotoxy(0,1);

    lcd_putsf("Gedung");

    delay_ms(1500);

    lcd_clear();

    while (1)

    {

    // Place your code here

    T0b=(long)T0;

    T0a=(float)T0 / 100;

    tekanan=bmp180_getpressure();

    suhu=bmp180_gettemperature();

    suhub=(long)(suhu * 100);if(PINA.0==0 && P0!=0){

    deltap=tekanan-P0;

    lcd_clear();

    lcd_gotoxy(0,0);

    lcd_putsf("Calibrating...");

    delay_ms(5000);

    lcd_clear();

    }

    deltah=((1 - pow(tekanan/(float)101325, 0.1903 )) / 0.0000225577)-((1 -

     pow(P0/(float)101325, 0.1903 )) / 0.0000225577);

    ftoa(deltah, 2, deltahv);ftoa(suhu,2,buffsuhu);

    ftoa(T0a,2,buffT0);

    ltoa(tekanan,bufftekanan);

    ltoa(P0, buffP0);

    lcd_gotoxy(0,0);

    lcd_putsf("T:");lcd_puts(buffsuhu);lcd_putchar((char)223);lcd_putsf("C ");

    lcd_gotoxy(0,1);

    lcd_putsf("P:");lcd_puts(bufftekanan);lcd_putsf("Pa ");

    delay_ms(1500);

    lcd_gotoxy(0,0);

  • 8/19/2019 2213100341 Anas SET Laporan FP

    30/30

    Bidang Studi Elektronika

    Jurusan Teknik Elektro

    Fakultas Teknologi Industri

    INSTITUT TEKNOLOGI SEPULUH NOPEMBER SUR B Y

    lcd_putsf("T:");lcd_puts(buffT0);lcd_putchar((char)223);lcd_putsf("C ");

    lcd_gotoxy(0,1);

    lcd_putsf("P:");lcd_puts(buffP0);lcd_putsf("Pa ");

    delay_ms(1500);

    lcd_gotoxy(0,0);

    lcd_putsf("Tinggi: ");

    lcd_gotoxy(0,1);

    lcd_puts(deltahv);lcd_putsf("m ");

    delay_ms(1500);

    sprintf(buffer,"%6li:%4li:%6li:%4li:0",P0,T0b,tekanan,suhub);

    delay_ms(100);

     puts(buffer);

    delay_ms(100);

    // sprintf(bufftekanan,"%6li",tekanan);

    // lcd_gotoxy(0,1);

    // lcd_putsf("P2:");lcd_puts(bufftekanan);//lcd_putsf("Pa ");

    // //getAnotherPressure();

    // sprintf(buffP0,"%6li",P0);

    // lcd_gotoxy(0,0);

    // lcd_putsf("P1:");lcd_puts(buffP0);//lcd_putsf("Pa ");

    //

    // deltah=((1 - pow(tekanan/(float)101325, 0.1903 )) / 0.0000225577)-((1 -

     pow(P0/(float)101325, 0.1903 )) / 0.0000225577);// ftoa(deltah,2,deltahv);

    // lcd_gotoxy(11,0);

    // lcd_puts(deltahv);//lcd_putsf("Pa ");

    }

    }