SMK Binawiyata Sragen

  • This is default featured slide 1 title

    Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

  • This is default featured slide 2 title

    Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

  • This is default featured slide 3 title

    Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

  • This is default featured slide 4 title

    Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

  • This is default featured slide 5 title

    Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

Tampilkan postingan dengan label Arduino. Tampilkan semua postingan
Tampilkan postingan dengan label Arduino. Tampilkan semua postingan

Arduino & Audio

Dalam artikel ini kita akan bermain dengan suara bersama Arduino mulai dari menggunakan fungsi tone() untuk membangkitkan nada hingga proyek kompleks yang sanggup membuat Arduino memainkan musik polyphonic dan mengucapkan kalimat yang diberikan dari masukan berupa teks. Untuk itu artikel ini akan dibagi menjadi beberapa bagian bersambung.
Mari kita mulai dari yang paling sederhana… membangkitkan nada dengan frekuensi tertentu.
Sebelum memulai dengan kode program, mari kita buat perangkat kerasnya terlebih dahulu. Yang perlu kita persiapkan:
  • Arduino Uno
  • Speaker 8 ohm
  • Resistor 100 ohm
  • Papan Rancang  Purnarupa (Prototype Design Board), atau dikenal dengan istilah Breadboard
Hubungkan komponen-komponen elektronika yang sudah Anda siapkan seperti ilustrasi di bawah ini (credit: gambar dibuat dengan Fritzing dan retouch menggunakan Adobe Photoshop):
Resistor yang dihubungkan secara seri ini berguna untuk membatasi penggunaan arus.
Dalam banyak tutorial tentang topik ini, penggunaan komponen tambahan seperti resistor di atas jarang dibahas, kita cuma diarahkan untuk merangkainya seperti itu tanpa mengerti alasannya. Dalam seri artikel ini, kita akan mempelajari sedikit lebih jauh alasan dibalik penggunaan suatu komponen.
Resistor ini disebut sebagai resistor pembatas arus (current limiting resistor). Sesuai petunjuk pada manual penggunaan Arduino, jumlah arus yang boleh ditarik dari satu pin hanyalah sebesar maksimum 50 mA. Sesuai hukum Ohm, dengan tegangan operasional sebesar 5V (setara 5000 mV) diperlukan hambatan beban (load resistance) sebesar  5000 mV / 50 mA = 100 Ω. Karena speaker yang kita gunakan mempunyai impedansi (impedance, nilai hambatan) sebesar 8 Ω, secara teori kita bisa menggunakan resistor 92 Ω dalam rangkaian ini. Walaupun demikian kita memilih untuk menggunakan resistor 100 Ω karena dua alasan: (1) 50 mA adalah batasan maksimum, sebaiknya kita jangan terlalu memaksakan nilai maksimum ini, dan (2) resistor 100Ω banyak tersedia dan mudah didapat dibanding resistor 92 Ω.
Setelah selesai menghubungkan komponen-komponen tersebut, mari kita mulai membuat programnya. Bukalah aplikasi Arduino IDE, lalu masukkan kode berikut ini:
void setup() {
  pinMode( 8, OUTPUT );
  pinMode( 13, OUTPUT );
}

void loop() {
  // matikan LED
  digitalWrite( 13, LOW );
  // mainkan nada di pin#8 dg. frekuensi 261Hz selama 500 ms
  tone( 8, 261 );
  delay( 500 );
  // nyalakan LED
  digitalWrite( 13, HIGH );
  // mainkan nada di pin#8 dg. frekuensi 392Hz selama 500 ms
  tone( 8, 392 );
  delay( 500 );
}

Sambungkan Arduino dengan komputer melalui kabel USB, lalu unggah (upload) kode tersebut ke Arduino. Caranya ada 3, silakan pilih salah satu: (1) tekan tombol Upload (tombol berbentuk lingkaran dengan tanda panah menunjuk ke kanan), (2) melalui menu File → Upload, atau (3) tekan kombinasi tombol Ctrl+U.
Bila kode berhasil diunggah, akan terdengar suara seperti sirine dimana dua buah nada dengan pitch berbeda (yang satu lebih rendah dibanding yang lainnya) akan dimainkan bergantian masing-masing selama setengah detik (500 milliseconds).
Dengan menelaah kode di atas, dengan jelas terlihat bahwa untuk membunyikan nada dengan frekuensi dan durasi tertentu di Arduino sangatlah mudah, yaitu dengan menggunakan fungsi tone().
Fungsi tone() ini menerima 2 atau 3 parameter sebagai masukannya, dengan format sbb.:
tonepinfrekuensidurasi );
Parameter pertama adalah nomor pin yang digunakan untuk keluaran ke speaker. Parameter kedua adalah frekuensi yang ingin dibunyikan dalam Hz (Hertz, getaran per detik). Parameter ketiga adalah durasi dalam milidetik, menyatakan berapa lama nada tersebut akan dibunyikan. Parameter durasi bersifat opsional, artinya boleh tidak diisikan. Bila tidak diisikan, maka nada tersebut akan dibunyikan tanpa batas waktu, untuk mematikannya dengan memanggil fungsi noTonepin ).
Yang perlu diperhatikan saat parameter durasi dinyatakan, fungsi ini akan kembali sesegera mungkin tanpa menunggu durasi tersebut terlewati (nada selesai dimainkan).
Pada kecepatan 16 Hz (Arduino Uno bekerja di kecepatan ini), frekuensi yang dapat dimainkan berkisar antara 31 Hz hingga 8 MHz. Sebagai catatan, frekuensi yang dapat didengar oleh telinga manusia berkisar antara 20 hingga 20 kHz.
Pada contoh kode di ditambahkan kode untuk membuat LED berkelap-kelip selaras pitch nada yang dimainkan, mirip dengan lampu sirine polisi.
Untuk lebih puas bereksperimen dengan fungsi tone() ini, cobalah unggah kode berikut ini…
void setup() {
  Serial.begin( 9600 );
  pinMode( 8, OUTPUT ); 
}
word f = 0;
word d = 0;
boolean koma = false;
void loop() {
  if( Serial.available() ) {
    char c = Serial.read();
    if( c >= '0' && c <= '9' ) {
      if( koma ) d = ( d * 10 ) + ( c - 48 );
      else f = ( f * 10 ) + ( c - 48 );
    }
    else if( c == ',' ) {
      koma = true;
      d = 0;
    }
    else if( c == 10 ) { 
      if( f ) {
        if( d ) tone( 8, f, d );
        else tone( 8, f );
      }
      else noTone( 8 );
      f = 0;
      koma = false;
    }
  }
}

Setelah kode termuat ke Arduino, buka jendela Serial Monitor dengan menekan tombol di bagian sebelah kanan pada baris tombol Arduino IDE (bergambar seperti kaca pembesar dengan dua titik berderet di sampingnya). Pada kolom masukan di Serial Monitor, masukkan angka antara 31 sampai 20.000 lalu tekan ENTER. Arduino akan memainkan nada dengan frekuensi yang Anda masukkan. Menekan ENTER tanpa mengisikan angka akan menghentikan bunyi. Untuk menyetel durasi, masukkan nilai durasi dalam milidetik setelah nilai frekuensi dengan dipisahkan tanda koma.
Catatan: pastikan setelan baudrate pada Serial Monitor (kotak pilihan di sudut kanan bawah) pada kecepatan 9600 baud dan modus masukan Newline (pada kotak pilihan di sebelah kiri pilihan baudrate) sudah terpilih.
Simpanlah sketch ini dengan nama ArduinoAudio (otomatis akan disimpan dalam file ArduinoAudio.ino dalam subfolder ArduinoAudio) dengan mengeksekusi menu File Save As…
Di bagian berikutnya kita akan bermain dengan nada musik (musical notes) dengan membuat simulasi piano. Lanjutkan ke “Arduino & Audio: Musical Notes”…
Share:

Membuat Radio Digital FM Stereo dng Arduino

Membuat Radio penerima FM Stereo dengan arduin. Bagi teman teman yang ingin membuat radio FM digital kali ini saya ingin sharing cara membuat dan bahan bahan yang digunakan untuk membangun radio FM digital Stereo dengan tampilan display LCD 16x2. Nah ndak perlu panjang lebar cerita langsung aja :

Bahan yanh diperlukan antara lain :
1. Modul Arduino UNO R3
2. LCD 16x2 warna terserah anda
3. 2 Push Button untuk seting radio
4. 2 LED indikator Flashing dan Alarm
5. 4 Resistor 1K
6. 2 Resistor 220 Ohm
7. Modul Tuner TEA5767
8. IC24C04 untuk menyimpan data memory
9. Kabel jumper secukupnya

Modul Arduino UNO R3

Modul FM TEA5767
LCD 16x2

Block TEA5767 dengan memori
Rangkaiannya :
Skema belum jadi donk :


Source Kodenya Ini Lho :
// Membuat Jam dan Radio FM TEA5767
// LIKNO01
// Programmer Suparno, S.Pd, M.Pd
// 24/01/2015
#include < avr/io.h>
#include < avr/interrupt.h>
#include < LiquidCrystal.h>
#include < Wire.h>
#include < EEPROM.h>
#define debug 0

byte LedPin=8;
byte LedPin2=9;
byte e1Pin=12;
byte e2Pin=13;

byte jam,menit,detik;
byte Ajam,Amenit,Adetik;
byte flag=1;
int sleep;
byte alarm;  //0-1 alarm ON, 3-alarm OFF

char VARI[20];
int z,zz;
byte bz;

unsigned char frequencyH = 0;
unsigned char frequencyL = 0;

unsigned int frequencyB;
double frequency = 0;
byte bfrequency;
double gfrequency;
byte rdata[7];
byte signal;
int reading;


char *menu[]={" ","SLEEP","MODE_MEMO","MODE_SCAN","MODE_DIAL","ALARM","MEMORY","LEVEL-SCAN","TIME"};
char *menu1[]={" ","DIAL","CH: ","SCAN"};//mymode

byte bmemory;
byte memo;
byte mymenu;
byte mymode;
byte mylevel;
byte flag2;


LiquidCrystal lcd(7,6,5,4,3,2);


void setup(){
  Serial.begin(9600);
  lcd.begin(16, 4);
  Wire.begin();
  pinMode(LedPin, OUTPUT);
  pinMode(LedPin2, OUTPUT);
  pinMode(e1Pin, INPUT);
  pinMode(e2Pin, INPUT);
  //==================================
  lcd.setCursor(-4,2);
  lcd.print("Radio FM Mikro");
  lcd.setCursor(-4,3);
  lcd.print("Prog. : Suparno");
  //==================================
  cli();
  TCCR1A=0;
  TCCR1B=0;
  OCR1A=15624;
  TCCR1B |= (1<  TCCR1B |= (1<  TCCR1B |= (1<  TIMSK1=(1<  sei();
  mymenu=0;
  mymode=2;  //si queremos que cuando se encienda la radio este en modo Dial poner 1
  mylevel=2;
  sleep=0;
  alarm=3;
  memo=0;
  flag2=0;
 
  bfrequency = EEPROM.read(0);
  frequency=875+bfrequency;    //aslinya :875         
  frequency/=10;
  setFrequency(); 
 
}

void loop()
{   

   if(!digitalRead(e1Pin))
        {
         mymenu++;        
         if(mymenu>8)mymenu=0;
         lcd.clear();
         lcd.setCursor(0,0);
         lcd.print(menu[mymenu]);
         if(flag2==1)mymenu=0;
         flag2=0;
         delay(100);
         while(!digitalRead(e1Pin));
        }        
      
  switch(mymenu)
    {     
      case 0:     
        switch(mymode)
           {
            case 1:
                reading = analogRead(0); 
               frequency = ((double)reading * (108.0 - 87.5)) / 1024.0 + 87.5;
                 frequency = ((double)reading * 20.5) / 1024.0 + 87.5;
                frequency = ((int)(frequency * 10)) / 10.0;
               
                setFrequency();
                if(!digitalRead(e2Pin))
                     {
                       if(debug)Serial.println(bfrequency);
                       while(!digitalRead(e2Pin));
                     }
               
            break;
            case 2:
                if(!digitalRead(e2Pin))
                     {
                       memo++;
                       if(memo>19)memo=0;                      
                       bfrequency = EEPROM.read(memo);
                       frequency=875+bfrequency;              
                       frequency/=10;
                       setFrequency();              
                       while(!digitalRead(e2Pin));
                     }                        
            break;
            case 3:
                if(!digitalRead(e2Pin))
                     {
                      menuScan();
                      while(!digitalRead(e2Pin));                                           
                     }             
            break;  
           }
         
        lcd.setCursor(0,0);
        lcd.print(frequency);
        lcd.print(" MHz ");
               
        if(flag)
          {
           flag=0;
           if(alarm==1) { sleep=10; alarm=0;}
          
           if(sleep<1 br="">               {
                digitalWrite(LedPin2,LOW);
                lcd.setCursor(12,0);
                lcd.print("OFF ");
               }
             else
              {              
                if(!digitalRead(LedPin2))
                   {
                    digitalWrite(LedPin2,HIGH);
                    delay(500);
                    setFrequency();
                    delay(500);
                    setFrequency();
                   }
                getDatos();  
                signal=rdata[4] >> 4;
                lcd.setCursor(12,0);
                if(detik & 2)
                  {
                   lcd.print("Pw");  
                   lcd.print(signal);
                   lcd.print("  ");
                   }
                 else
                   {
                    if(rdata[3] & 128)
                        lcd.print("STE ");
                     else
                        lcd.print("MONO");
                   }    
              }
              
           lcd.setCursor(0,1);
           lcd.print(menu1[mymode]);
           if(mymode==2)
             {
               lcd.print(memo);
               lcd.print("  ");
             }
          
           lcd.setCursor(6, 1);
           if(alarm==3)
               lcd.print(" ");
              else
               lcd.print("A");            
          
           digitalWrite(LedPin, !digitalRead(LedPin));   
           sprintf(VARI,"%02d:%02d:%02d",jam,menit,detik);
           if(debug)Serial.println(VARI);
           lcd.setCursor(8, 1);
           lcd.print(VARI);  
 
                    
           }     
      break;        
      case 1:
         lcd.setCursor(0,1);
         lcd.print(sleep);
         lcd.print(" menit ");
         if(!digitalRead(e2Pin))
             {
               if(sleep>11)
                   sleep-=10;
                  else
                   sleep--;
               if(sleep<0 sleep="60;<br">               flag2=1;
               while(!digitalRead(e2Pin));
             }        
      break;     
      case 2:
         if(!digitalRead(e2Pin))
             {
               mymode=2;
               mymenu=0;
               bfrequency = EEPROM.read(memo);                      
               frequency=875+bfrequency;
               frequency/=10;
               setFrequency();             
               while(!digitalRead(e2Pin));
             }         
      break;     
      case 3:        
         if(!digitalRead(e2Pin))
             {
               mymode=3;
               mymenu=0;
               while(!digitalRead(e2Pin));
             }         
      break;
      case 4:
         if(!digitalRead(e2Pin))
             {
               mymode=1;
               mymenu=0;
               while(!digitalRead(e2Pin));              
             }                  
      break;
  
    case 5:
         sprintf(VARI,"%02d:%02d",Ajam,Amenit);         
         lcd.setCursor(0, 1);
         lcd.print(VARI);
          if(!digitalRead(e2Pin))
             {            
              menuAlarm();
              mymenu=0;
              lcd.clear();
               while(!digitalRead(e2Pin));
             }      
      break; 
      case 6:
          if(!digitalRead(e2Pin))
                     {
                      menuMemory();
                      while(!digitalRead(e2Pin));
                      lcd.clear();
                      mymenu=0;                     
                     }       
      break;
      case 7:
         lcd.setCursor(0,1);
         lcd.print(mylevel);   
         if(!digitalRead(e2Pin))
             {                         
               mylevel++; if(mylevel>3)mylevel=1;
               flag2=1;             
               while(!digitalRead(e2Pin));
             }         
      break;   
      case 8:
          sprintf(VARI,"%02d:%02d",jam,menit);         
          lcd.setCursor(0, 1);
          lcd.print(VARI);
          if(!digitalRead(e2Pin))
             {             
              menuTime();
              mymenu=0;
              lcd.clear();
              while(!digitalRead(e2Pin));
             }      
      break;    
     
    }

}

void calculo()
{
     bfrequency=frequency*10-875;
     frequencyB = 4 * (frequency * 1000000 + 225000) / 32768;
     frequencyH = frequencyB >> 8;
     frequencyL = frequencyB & 0XFF;
}

void menuMemory()
{
     lcd.setCursor(0,1);
     lcd.print(memo);
     lcd.setCursor(8,0);
     lcd.print(frequency);
     delay(500);
     while(1)
      {
       if(!digitalRead(e2Pin))
                     {
                       memo++;
                       if(memo>19)memo=0;
                       lcd.setCursor(0,1);
                       lcd.print(memo);
                       lcd.print("  ");                      
                       while(!digitalRead(e2Pin));
                     } 
       if(!digitalRead(e1Pin))
                     {
                       if(debug)Serial.println(memo);
                       if(debug)Serial.println(bfrequency);
                       EEPROM.write(memo,bfrequency );
                       while(!digitalRead(e1Pin));
                       return;
                     }       
      }
}

void menuScan()
{                    
                      delay(100);
                      frequency+=0.1;
                      if(frequency>108)frequency=88.5;
                      calculo();
                      bz=mylevel<<5 br="">                      bz=bz | 0x90;
                      Wire.beginTransmission(0x60);
                      Wire.write(frequencyH+0x40);
                      Wire.write(frequencyL);
                      Wire.write(bz);
                      Wire.write(0x1F);
                      Wire.write((byte)0x00);      
                      Wire.endTransmission();
                      delay(100);                                                                        
                      getDatos();
                      gfrequency=(((rdata[1]&0x3F)<<8 br="" rdata="">                      if(debug)for (int i=1; i<6 br="" i="" rdata="" serial.println="">                      frequency=gfrequency/10000;
                      if(debug)Serial.println(frequency);
                      z=frequency;
                      zz=z+5;     z/=10;   zz/=10;
                      if(debug)Serial.println(z);
                      if(debug)Serial.println(zz);
                      if(zz>z)
                         frequency=zz;
                        else
                         frequency=z;
                      frequency/=10;
                      if(debug)Serial.println(frequency);
                      calculo();
                      delay(100);
                      Wire.beginTransmission(0x60);
                      Wire.write(frequencyH);
                      Wire.write(frequencyL);
                      Wire.write(0xB0);
                      Wire.write(0x1F);
                      Wire.write((byte)0x00);      
                      Wire.endTransmission();
                      delay(100);             
}

void menuAlarm()
{
   while(1)
    {
     lcd.setCursor(0,1);
     lcd.print("Alarm   ");
     if(alarm==3)
         lcd.print("OFF");
        else
         lcd.print("ON ");
     if(!digitalRead(e2Pin))
             {
              if(alarm==3)
                  alarm=0;
                else
                  alarm=3;                             
              while(!digitalRead(e2Pin));
             }
     if(!digitalRead(e1Pin))
            {
              while(!digitalRead(e1Pin));
              break;        
            } 
    }
 
   while(1)
    {
     lcd.setCursor(0,1);
     lcd.print("Hours   ");
     lcd.print(Ajam);
     lcd.print("  ");
     if(!digitalRead(e2Pin))
             {
              Ajam++;
              if(Ajam==24)Ajam=0;
              while(!digitalRead(e2Pin));
             }
     if(!digitalRead(e1Pin))
            {
              while(!digitalRead(e1Pin));
              break;        
            } 
    }
  while(1)
    {
      lcd.setCursor(0,1);
      lcd.print("Minutes ");
      lcd.print(Amenit);
      lcd.print("  ");
      if(!digitalRead(e2Pin))
             {
              Amenit++;
              Adetik=0;
              if(Amenit==60)Amenit=0;
              while(!digitalRead(e2Pin));
             }
      if(!digitalRead(e1Pin))
            {
              while(!digitalRead(e1Pin));
              break;        
            } 
    }   


void menuTime()
{
  while(1)
    {
     lcd.setCursor(0,1);
     lcd.print("Hours   ");
     lcd.print(jam);
     lcd.print("  ");
     if(!digitalRead(e2Pin))
             {
              jam++;
              if(jam==24)jam=0;
              while(!digitalRead(e2Pin));
             }
     if(!digitalRead(e1Pin))
            {
              while(!digitalRead(e1Pin));
              break;        
            } 
    }
  while(1)
    {
      lcd.setCursor(0,1);
      lcd.print("Minutes ");
      lcd.print(menit);
      lcd.print("  ");
      if(!digitalRead(e2Pin))
             {
              menit++;
              detik=0;
              if(menit==60)menit=0;
              while(!digitalRead(e2Pin));
             }
      if(!digitalRead(e1Pin))
            {
              while(!digitalRead(e1Pin));
              break;        
            } 
    }   
}


void setFrequency()
{
calculo();
//delay(100);
Wire.beginTransmission(0x60);
Wire.write(frequencyH);
Wire.write(frequencyL);
Wire.write(0xB0);
Wire.write(0x10);
Wire.write((byte)0x00);
Wire.endTransmission();
//delay(100);
}

void getDatos()
{
  Wire.requestFrom(0x60,5); //reading TEA5767
  if (Wire.available())
    {
      for (int i=1; i<6 br="" i="" rdata="" wire.read="">    }
}

ISR(TIMER1_COMPA_vect) //alarm yake
{
  flag=1;
  detik++;
  if(detik>59)
    {
     detik=0;
     menit++;
     if(sleep>0)sleep--;
     if(menit>59)
         {
          menit=0;
          jam++;
            if(jam>23)
              {              
               detik=0;
               menit=0;
               jam=0;
              }
         }
    }
  if(alarm==0 && detik==0 && menit==Amenit && jam==Ajam)alarm=1;     
}




Share:

01 - Pengenalan Arduino

Bagi pemula belajar arduino uno ver3, belajar dimulai dari mengenal 3 titian tahap :
  1. Mengenal Hardware Arduino
  2. Mengenal Software pemrograman Arduino
  3. Mempelajari bahasa / perintah / intruksi pemrograman
1. Mengenal Harware Arduino

Untuk memahami Arduino, terlebih dahulu kita harus memahami terlebih dahulu apa yang dimaksud dengan physical computing. Physical computing adalah membuat sebuah sistem atau perangkat fisik dengan menggunakan software dan hardware yang sifatnya interaktif yaitu dapat menerima rangsangan dari lingkungan dan merespon balik. Physical computing adalah sebuah konsep untuk memahami hubungan yang manusiawi antara lingkungan yang sifat alaminya adalah analog dengan dunia digital. Pada prakteknya konsep ini diaplikasikan dalam desain-desain alat atau projek-projek yang menggunakan sensor dan microcontroller untuk menerjemahkan input analog ke dalam sistem software untuk mengontrol gerakan alat-alat
elektro-mekanik seperti lampu, motor dan sebagainya.

Arduino dikatakan sebagai sebuah platform dari physical computing yang bersifat open source. Pertama-tama perlu dipahami bahwa kata “platform” di sini adalah sebuah pilihan kata yang tepat. Arduino tidak hanya sekedar sebuah alat pengembangan, tetapi ia adalah kombinasi dari hardware, bahasa pemrograman dan Integrated Development Environment (IDE) yang canggih. IDE adalah sebuah software yang sangat berperan untuk menulis program, meng-compile menjadi kode biner dan meng-upload ke dalam memory microcontroller. Ada banyak projek dan alat-alat dikembangkan oleh akademisi dan profesional dengan menggunakan Arduino, selain itu juga ada banyak modul-modul pendukung (sensor, tampilan, penggerak dan sebagainya) yang dibuat oleh pihak lain untuk bisa disambungkan dengan Arduino. Arduino berevolusi menjadi sebuah platform karena ia menjadi pilihan dan acuan bagi banyak praktisi.  

Arduino dikembangkan oleh sebuah tim yang beranggotakan orang-orang dari berbagai belahan dunia. Anggota inti dari tim ini adalah:
  1. Massimo Banzi Milano, Italy  
  2. David Cuartielles Malmoe, Sweden
  3. Tom Igoe New York, US
  4. Gianluca Martino Torino, Italy
  5. David A. Mellis Boston, MA, USA
Jenis Boar Arduino :
  1. Arduino USB

    Menggunakan USB sebagai antar muka pemrograman atau komunikasi komputer. Contoh:
    • Arduino Uno
    • Arduino Duemilanove
    • Arduino Diecimila
    • Arduino NG Rev. C
    • Arduino NG (Nuova Generazione)
    • Arduino Extreme dan Arduino Extreme v2
    • Arduino USB dan Arduino USB v2.0

  2. Arduino Serial
    Menggunakan RS232 sebagai antar muka pemrograman atau komunikasi komputer.

    Contoh: Arduino Serial dan Arduino Serial v2.0 


  3. Arduino Mega 
  4. Arduino FIO
  5. Arduino LILYPAD
  6. Arduino NANO dan Arduino MINI
KOMPONEN UTAMA BOARD ARDUINO 

Komponen utama di dalam papan Arduino adalah sebuah microcontroller 8 bit dengan merk ATmega yang dibuat oleh perusahaan Atmel Corporation. Berbagai papan Arduino menggunakan tipe ATmega yang berbeda-beda tergantung dari spesifikasinya, sebagai contoh Arduino Uno menggunakan ATmega328 sedangkan Arduino Mega 2560 yang lebih canggih menggunakan ATmega2560.  

Untuk memberikan gambaran mengenai apa saja yang terdapat di dalam sebuah microcontroller, pada gambar berikut ini diperlihatkan contoh diagram blok sederhana dari microcontroller ATmega328 (dipakai pada Arduino Uno).
Blok-blok di atas dijelaskan sebagai berikut:
  • Universal Asynchronous Receiver/Transmitter (UART) adalah antar muka yang digunakan untuk komunikasi serial seperti pada RS-232, RS-422 dan RS-485. 
  • 2KB RAM pada memory kerja bersifat volatile (hilang saat daya dimatikan), digunakan oleh variable-variabel di dalam program. 
  • 32KB RAM flash memory bersifat non-volatile, digunakan untuk menyimpan program  yang dimuat dari komputer. Selain program, flash memory juga menyimpan bootloader. 
  • Bootloader adalah program inisiasi yang ukurannya kecil, dijalankan oleh CPU saat daya
    dihidupkan. Setelah bootloader selesai dijalankan, berikutnya program di dalam RAM
    akan dieksekusi.
  • 1KB EEPROM bersifat non-volatile, digunakan untuk menyimpan data yang tidak boleh hilang saat daya dimatikan. Tidak digunakan pada papan Arduino.
  • Central Processing Unit (CPU), bagian dari microcontroller untuk menjalankan setiap instruksi dari program.
  • Port input/output,  pin-pin untuk menerima data (input) digital atau analog, dan mengeluarkan data (output) digital atau analog.  
BAGIAN-BAGIAN PAPAN ARDUINO  
Dengan mengambil contoh sebuah papan Arduino tipe USB, bagian-bagiannya dapat dijelaskan sebagai berikut.
14 pin input/output digital (0-13)
Berfungsi sebagai input atau output, dapat diatur oleh program. Khusus untuk 6 buah pin 3, 5, 6, 9, 10 dan 11, dapat juga berfungsi sebagai pin analog output dimana tegangan output-nya dapat diatur. Nilai sebuah pin output analog dapat diprogram antara 0 – 255, dimana hal itu mewakili nilai tegangan 0 – 5V.
USB  Berfungsi untuk:
  • Memuat program dari komputer ke dalam papan
  • Komunikasi serial antara papan dan komputer
  • Memberi daya listrik kepada papan
Sambungan SV1
Sambungan atau jumper untuk memilih sumber daya papan, apakah dari sumber eksternal atau menggunakan USB. Sambungan ini tidak diperlukan lagi pada papan Arduino versi terakhir Q1 – Kristal (quartz crystal oscillator) 
 Jika microcontroller dianggap sebagai sebuah otak, maka kristal adalah jantung-nya karena komponen ini menghasilkan detak-detak yang dikirim kepada microcontroller agar melakukan sebuah operasi untuk setiap detak-nya. Kristal ini dipilih yang berdetak 16 juta kali per detik (16MHz).
Tombol Reset S1 
Untuk me-reset papan sehingga program akan mulai lagi dari awal. Perhatikan bahwa tombol reset ini bukan untuk menghapus program atau mengosongkan microcontroller.
In-Circuit Serial Programming (ICSP) 
Port ICSP memungkinkan pengguna untuk memprogram microcontroller secara langsung, tanpa melalui bootloader. Umumnya pengguna Arduino tidak melakukan ini sehingga ICSP tidak terlalu dipakai walaupun disediakan.
IC 1 – Microcontroller Atmega 
 Komponen utama dari papan Arduino, di dalamnya terdapat CPU, ROM dan RAM.
X1 – sumber daya eksternal Jika hendak disuplai dengan sumber daya eksternal, papan Arduino dapat diberikan tegangan DC antara 9-12V.
6 pin input analog (0-5) 
Pin ini sangat berguna untuk membaca tegangan yang dihasilkan oleh sensor analog, seperti sensor suhu. Program dapat membaca nilai sebuah pin input antara 0 – 1023, dimana hal itu mewakili nilai tegangan 0 – 5V.
Share:

Jadwal Waktu Sholat

TIME WIB

TV EDUKASI LIVE

Popular Posts

Recent Posts

Pages