Tag Archives: microcontroller

Last updated by at .

Board TINIWeb: web server

Dalam posting sebelumnya, telah dijelaskan secara dasar gambaran umum dari board ini. Board ini masih memiliki keunggulan mengenai network, selain bahasa pemrogramannya dapat dibuat dengan menggunakan java, C dan assembly. Kemampuan multitasking juga perlu mendapat acungan jempol karena prinsip kerjanya seperti OS Linux.

Persiapan setting firmware

Ada dua bagian firmware yang ada dalam board ini yaitu Slush dan TiniOS. Terakhir pengembangan versinya yang saya miliki adalah slush dan TiniOS versi 1.18. Sungguh beruntung saya masih menyimpannya dengan baik dan masih ada sampai saat ini. Slush merupakan firmware layaknya seperti firmware bootloader saat awal board bekerja. Sedangkan TiniOS merupakan sistem operasi yang mengadopsi seperti halnya linux namun minimalis.

Perangkat lunak yang diperlukan adalah:

  1. MTK merupakan singkatan dari Microcontroller Tool Kit yang dikeluarkan oleh Dallas Semiconductor. Perangkat lunak ini digunakan untuk meng-upload firmware dan konsole user menggunakan antarmuka secara serial RS232. Hal ini berguna jika board diaktifkan pertama kali karena koneksi TCP/IP belum ada, atau untuk mengupgrade firmware. Program MTK dapat anda download disini. Pilih salah satu versi yaitu 2.4.12 atau 2.4.14.
  2. Tini SDK berisi firmware slush dan TiniOS beserta library java ditulis oleh Dallas Semiconductor. Versi ini  harus sesuai dengan versi boardnya yaitu DS80C400 atau versi tini400. Silakan klik disini untuk mendapatkan Tini SDK tersebut.

Upload firmware

Sebagai persiapan awal, anda harus mengupload firmware slush dan tiniOS versi 1.18 ke board TINIWeb. Serial 0 dengan konektor DB9 dengan tanda “Loader Serial 0″ dihubungkan dengan RS232 komputer. Saya sarankan gunakan serial komputer PC, karena saya menggunakan USB to Serial dengan laptop tidak berhasil, entah kenapa. Catu daya yang dibutuhkan adalah 5VDC tidak boleh lebih, dan jumper DTR untuk reset bootloader harus dipasang.

Setelah anda memasang ke serial komputer (PC), biasanya kanal COM1 dan memasang catu daya 5V, jalankan program MTK kemudian setting sebagai berikut:

  1. Configurasi port dengan menggunakan menu: Options => “Configure Serial Port”. Setting kanal serial sesuai dengan kondisi komputer anda, baudrate 115200,8,n,1.
  2. Buka kanal serial dengan menggunakan menu: TINI(R)=>Open ComX……..
  3. Reset board dengan menggunakan menu: TINI(R)=>Reset
Akan muncul tampilan sebagai berikut:

Upload firmware slush_400.tbin dan tini.tbin

Untuk mengupload firmware gunakan menu: File=>Load file. Pilih file slush_400.tbin selanjutnya tini.tbin. File ini ada di direktori tini1.18\bin dari file yang anda download di link diatas, atau anda download disini.

…. bersambung …..

Posted in Hardware, Network | Tagged , , , | Leave a comment

Vinculum VDRIVE2: modul antarmuka USB Host untuk Flashdisk

Dengan adanya modul VDRIVE2 keluaran vinculum, memungkinkan mikrokontroler dapat membaca dan menulis data ke media penyimpan data flashdisk. Didalamnya ada firmware yang mengendalikan hubungan dengan flashdisk, sehingga antarmuka pembacaan dan penulisan data dengan mikrokontroler secara serial atau SPI. Dengan menggunakan modul ini mikrokontroler akan dapat melakukan operasi layaknya jika flashdisk ditancapkan ke komputer. Hanya saja flashdisk harus diformat terlebih dahulu menggunakan komputer dengan format FAT16 sebelum digunakan. Dengan demikian mikrokontroler dapat membuat direktori, menhapus direktori, menulis data dalam file dan lain sebagainya. Dalam sistem mikroprosesor dapat digunakan sebagai media penyimpan data yang dapat diubah-ubah isinya, misalnya sebagai datalogger.

Untuk mempelajari perintah-perintah yang dimengerti oleh modul ini, saya mengujinya dengan menghubungkan secara serial melalui USBtoSerial-TTL yang ditancapkan ke USB komputer. Kemudian dengan menggunakan program Hyperterminal dengan setting baud 9600,8,n,1 tanpa protokol handshaking, saya dapat mempelajari perintah-perintah sebelum diaplikasikan ke mikrokontroler.

Perintah yang diberikan secara serial merupakan perintah seperti dalam DOS (Disk Operating System), namun perintahnya banyak perbedaan. 

Anda tertarik dan membutuhkan modul ini ?

Silakan hubungi saya atau beri komentar, saya memiliki 10 modul untuk dijual kepada yang membutuhkannya.

Untuk mengetahui perintah-perintah dalam bentuk ASCII pada modul ini, silakan dibaca buku yang dapat anda download dibawah ini.

 

Download disini

 

Posted in Electronics, Elektronika, Hardware, Mikrokontroler | Tagged , | Leave a comment

Board TINIWeb: pengantar

Kali ini saya akan menjelaskan sebuah board keluaran Dallas Semiconductor yaitu TINIWeb. TINI merupakan merek dagang dari Dallas Semiconductor dengan kepanjangan Tiny InterNet Interface, sedangkan Web adalah berbasis Web. Sampai saat ini board tidak dikembangkan lagi, dan menurut saya merupakan board yang memiliki fitur yang banyak terutama untuk networking. Jadi sampai saat ini masih memiliki kesaktian untuk mengaplikasikan fitur network terutama berbasis web. Terdapat dua board yaitu: Board Utama dan Board Mikrokontroler.

Board Utama

Board ini terdiri dari sekumpulan konektor antara lain:

  1. Konektor catudaya DC 5V
  2. Konektor antar muka 1wire (antarmuka 1 kawat)
  3. Konektor Ethernet
  4. Konektor DB9 serial
  5. Konektor DB9 serial untuk loader
  6. Konektor untuk board mikrokontroler
  7. Beberapa konektor header untuk: CAN (Controller Area Network), merupakan antarmuka jaringan antar mikrokontroler. 
  8. Konektor header untuk SPI (Serial Parallel Interface)
  9. Serta komponen kosong untuk I/O menggunakan CPLD XILINX, anda dapat menambahkannya dengan menyolder secara langsung pada pad yang disediakan. 

Board Mikrokontroler

Board mikrokontroler ini berisi komponen utama mikrokontroler DS80C400 yang merupakan turunan dari mikrokontroler 8051. Dalam board ini telah dilengkapi dengan Flash EEPROM dan RAM.

Board ini tergolong belum jadul, karena semua fitur sangat lengkap, dilengkapi dengan OS seperti linux, jadi dapat melakukan eksekusi program secara multitasking. OS didalamnya dapat melakukan eksekusi secara paralel layaknya OS linux, dengan program dibuat dengan bahasa java, assembly,  dan C (keil). Koneksi networknya juga menunjang untuk koneksi web, ssh, telnet dan port lainnya tergantung program, karena berbasis TCP/IP.

Saya memiliki pasangan board yaitu board utama dan mikrokontroler sebanyak 12 pasang. Satu pasang saya gunakan untuk eksperimen, jadi tinggal 11 pasang yang menganggur dan siap untuk dijual kepada para pembaca blog saya. Jika berminat berikan comment pada halaman ini, pasti akan saya jawab.

Dalam posting disini, saya hanya memberikan gambaran tentang fitur-fitur yang ada dalam board ini, menurut saya belum ada tandingannya pada kelas yang sama.

Untuk lebih jelasnya mengenai spesifikasi dan fitur board TINI ini, ada baiknya jika anda membaca buku berikut ini sebagai gambaran mengenai board ini.

Download disini

Anda tertarik dengan board TINIWeb ini ?

Silakan berikan komentar, dan pada posting berikutnya akan saya tuliskan aplikasi-aplikasi kecil dari board ini.

Posted in Hardware, Network | Tagged , , , | 2 Comments

Keypad using ADC: a microcontroller application

In this post, I will explain how to design a keypad by using an internal ADC of the microcontroller or microprocessor system.

ADC will be used to determine which any key is pressed in the state. In principle, there is a circuit that can generate a differrent voltages at each place of push button pressing. A simple circuit is by applying a voltage divider circuit using some  series resitors, which can lead to different voltages for each keystrokes.

For example, it is necessary to distinguish the five key functions in the program the microcontroller, the UP, DOWN, RIGHT, LEFT, and SELECT button. There are required 6 pieces of resistor: 2K, 220, 330, 1K, 3k3 and 10K, in order to generate the  rising voltage at ADC of microcontroller by successive key presses: UP, DOWN, LEFT, RIGHT, SELECT.

1. The circuit will work as follow:

  1. If  the “UP” button is pressed, the voltage to ADC will be 0 Volt, because the 2K resistor will be pulled down to ground.
  2. If the “DOWN” button is pressed, the voltage to ADC will be:
  3. If the “LEFT” button is pressed, the voltage to ADC will be:

  4. If the “RIGHT” button is pressed, the voltage to ADC will be:
  5. If the “SELECT” button is pressed, the voltage to ADC will be:
  6. If no button is pressed, the voltage to ADC will be:

2. 10bit ADC conversion

If the output of the voltage divider circuit (“to ADC”) fed to the 10bit ADC input, then any key presses will produce a decimal:

  1. UP button: 0V will be 0 decimal.
  2. DOWN button: 0.7082 Volt will be 145 decimal.
  3. LEFT button: 1.6102 Volt will be 329 decimal.
  4. RIGHT button: 2.4684 Volt will be 505 decimal.
  5. SELECT button: 3.6207 Volt will be 741 decimal.
  6. No Button: 4.4203 Volt  will be 905 decimal.

3. How to programming tricks

In fact every keystrokes are not exactly generate a voltage as described in point 1. Means a range slightly above or below the voltage. Thus, the voltage value of the middle is taken, for example: the “UP” from 0V to 0.7082 / 2 = 0.3541V, the “DOWN” from 0.7082V to 0.7082 + (1.6102-0.7082) / 2 = 1.1592 V, and so on.
More easily calculated from point 2, the decimal after being converted by the ADC.
  1. The button of  “UP” on pressed state when the conversion result of ADC is defined below value of 145/2 or 72 decimal.
  2. The button of  “DOWN” on pressed state when the conversion result of ADC is defined below value of 145+(329-145)/2 or 237 decimal.
  3. The button of  “LEFT” on pressed state when the conversion result of ADC is defined below value of 329+(505-329)/2 or 417  decimal.
  4. The button of  “RIGHT” on pressed state when the conversion result of ADC is defined below value of 505+(741-505)/2 or 623 decimal.
  5. The button of  “SELECT” on pressed state when the conversion result of ADC is defined below value of 741+(905-741)/2 or 823 decimal.
  6. No button on pressed state when the conversion result of ADC is defined below value of 905+(1024-905)/2 or 964 decimal.

C  Programming

/*********************************************************/
// keypad using adc
// created by: Bambang Siswoyo
// Electronic department - University of Brawijaya
/*********************************************************/

int adc_button_table[6] = { 72, 237, 417, 623, 823, 964 };
int NUM_KEYS = 6;
#define UP      0
#define DOWN    1
#define LEFT    2
#define RIGHT   3
#define SELECT  4
#define NOKEY   5

int read_adc()
{
  ............................................
  ... created by youself, how to read the adc
  ............................................
}

int get_key()
{
       int k_num;            // number of key
       int adc_read_val;     // conversion value

       // Convert voltage from voltage devider
       // This function must be adjusted to the microcontroller adc
       adc_read_val = read_adc();
       for (k_num = 0; k_num < NUM_KEYS; k_num++)
	{
	   if (adc_read_val < adc_button_table[k_num])
	      { return k_num }
	}
}

void main()
{ // main program for testing only
  int btn;

  // read key
  btn = get_key();
  // action
  switch(btn)
    {
      case UP:
          //do something when var equals 0
          break;
      case DOWN:
          //do something when var equals 1
          break;
      case LEFT:
          //do something when var equals 2
          break;
      case RIGHT:
          //do something when var equals 3
          break;
      case SELECT:
          //do something when var equals 4
          break;
      case NOKEY:
          //do something when var equals 5
          break;
}
Posted in Electronics | Tagged , , | Leave a comment