Teknik Elektro LinksThermostat, Panel Bel, Board Mikro, Driver Relay.

Mencicipi LittleWire-1.3 – Firmware Multifungsi Untuk ATtiny85

LittleWire adalah sebuah proyek berbasis mikrokontroler ATtiny85 yang digagas oleh Ihsan Kehribar.

littlewiresch

Proyek ini sangat menarik perhatian saya karena firmware LittleWire-1.3 sangatlah istimewa – LittleWire memiliki banyak fitur/fungsi dalam satu program yakni antara lain:

  • usbtinyisp compatible AVR programmer
  • 4 channel GPIO
  • ADC with 10 bit resolution
  • 2 parallel hardware PWM outputs
  • SPI interface
  • I2C interface
  • 1-Wire interface
  • WS2812 RGB LED interface
  • Multiple device support

Ihsan Kehribar menyediakan library bahasa C yang siap digunakan untuk bermain (ngobrol) dengan ATtiny85 yang telah ditanami firmware LittleWire. Sebelumnya Ihsan menyediakan library untuk C, C++, C# dan Processing, tapi akhirnya hanya C saja yang didukung karena keterbatasan  waktu. Ihsan juga menyediakan contoh-contoh program yang siap dicoba dan tentunya dipelajari untuk selanjutnya dikembangkan.

Untuk mencicipi firmware LittleWire-1.3 ini, saya menggunakan board Digispark ATtiny85. Nah, langsung saja kita bereksperimen. Pertama-tama download file proyek LittleWire dari github.

Download LittleWire-1.3

File proyek LittleWire yang terdiri dari rancangan hardware, software bahasa C dan firmware AVR-GCC dapat diunduh melalui link berikut ini:

Little-Wire-master.zip

Ekstraksi

Setelah download selesai, selanjutnya bisa kita ekstrak menggunakan program unzip sebagai berikut:

$ unzip Little-Wire-master.zip

Kompilasi Firmware

Setelah ekstraksi selesai, masuk ke direktori firmware dan jalankan perintah make hex untuk membuat file hex firmware LittleWire sebagai berikut:

$ cd Little-Wire-master
$ ls
$ cd firmware
$ make hex
$ ls

littlewire

Upload Firmware

Nampak pada screenshot di atas bahwa file main.hex telah berhasil dibuat. Selanjutnya upload file tersebut ke board Digispark ATtiny85 dengan perintah:

$ sudo micronucleus main.hex --run

Pengujian

Sekarang waktunya pengujian. Dari berbagai fitur yang ditawarkan LittleWire di atas, saya akan mencoba dua contoh program saja, yakni: blink yang mewakili fungsi GPIO dan adc yang mewakili fungsi input analog (ADC).

Catatan. Adapun fitur usbtinyisp, saya telah mencoba tapi masih gagal mengenali chip. Namun demikian, AVRDUDE telah mengenali board Digispark ATtiny85 dengan firmware LittleWire sebagai programmer USBTINY. Entah apa masalahnya. Saya juga sudah mencoba memodifikasi speed clocknya tapi masih belum berhasil. :(

blink.c

Program ini memerintahkan kepada LittleWire untuk menyalakan dan mematikan LED pada board Digispark ATtiny85 yang terhubung ke PB1 (P1). Berikut cuplikan kode programnya.

#define LED PIN1
#define DELAY 500
pinMode(lw, LED, OUTPUT);

/* Main loop! */
for(;;)
{
  printf("Blink!\n");
  digitalWrite(lw, LED, HIGH);
  delay(DELAY);
  printf("...\n");
  digitalWrite(lw, LED, LOW);
  delay(DELAY);
	
  if(lwStatus<0)
  {
    printf("> lwStatus: %d\n",lwStatus);
    printf("> Connection error: ");
    printf("%s\n",littleWire_errorName());
    return 0;
  }
}
return 0;

 

Mirip Arduino, ya? :D

Tapi ingat, program blink.c bukan program untuk mikrokontroler lho ya… blink.c adalah program komputer. Jadi, blink.c dikompilasi dengan GCC, bukan AVR-GCC.

Nah, dengan menganggap saat ini kita sedang berada dalam direktori firmware, maka berikut adalah langkah-langkah kompilasi contoh-contoh program pada direktori software/examples.

$ cd ../software
$ make
$ ls

Jika proses berjalan lancar maka akan tercipta file-file aplikasi antara lain: blink, adc, button, onewire, servo, dan lain-lain.

Untuk mencoba blink, ketik perintah:

$ sudo ./blink

maka Anda akan melihat LED pada board Digispark berkedip-kedip dengan durasi nyala/mati 500ms.

Satu kata dari saya adalah… WOW! :D

Sungguh menginspirasi. :)

ADC (adc.c)

Untuk mencoba ADC, saya menggunakan IC sensor suhu LM35DZ. Sederhana saja, cuma perlu menghubungkan kaki keluaran LM35DZ ke PB2 (P2) sebagai berikut:

digisparklm35

Adapun skematiknya adalah sebagai berikut. (Catatan: pada foto, antara VCC dan pin1 LM35 terdapat diode 1N4148 sebagai proteksi tegangan terbalik).

lm35

Selanjutnya, panggil program adc dengan perintah:

$ sudo ./adc

maka akan ditampilkan nilai pembacaan ADC, nilai konversi tegangan dalam milivolt dan nilai suhu seperti ditunjukkan screenshot berikut ini.

lm35log

Sangat menggoda, bukan? :D

Nah, berikut adalah potongan kode programnya.

// -- Select ADC reference voltage
// Those definetly needs calibration for precision measurement. 
//analog_init(lw,VREF_VCC);
analog_init(lw,VREF_1100mV);
// analog_init(lw,VREF_2560mV;	

while(1)
{
  adcValue=analogRead(lw, ADC_PIN2);
  printf("> Value: %X\tVoltage: %f milivolts\tTemperature: %f C\n", adcValue,(float)((adcValue*(1100))/1024.0), (float)((adcValue*(100))/1024.0));
	
  if(lwStatus<0)
  {
    printf("> lwStatus: %d\n",lwStatus);
    printf("> Connection error!\n");
    return 0;
  }
  delay(500);
}

 

Sekian dulu cicip-cicip LittleWire nya. Selanjutnya saya akan mempelajarinya lebih lanjut supaya bisa bikin board sejenis dengan mikrokontroler yang lebih besar seperti ATmega328.

Selamat belajar.

:)

 

No Comments

Add a Comment

Your email address will not be published. Required fields are marked *