Ino Command Line Toolkit Untuk Arduino

From Indonesian Research And Development Center
Jump to: navigation, search

Pendahuluan

Ino adalah command-line toolkit untuk arduino yang fungsinya hampir sama dengan IDE arduino, namun seperti dengan namanya, Ino dijalankan melaui command-line. Sebagai catatan, IDE arduino sejak versi 1.5.2 sudah mendukung instruksi melalui commandline dan tutorial ini hanya sebagai pelengkap saja.


Langkah-langkah

  • Gunakan perintah berikut ini untuk melakukan proses instalasi menggunakan python pip:
# pip install ino
  • Jika ingin melakukan instalasi secara manual, gunakan perintah berikut ini:
# git clone git://github.com/amperka/ino.git
# make install
  • Gunakan opsi --help untuk melihat perintah yang dapat digunakan pada Ino seperti ini:
% ino --help
usage: ino [-h] {build,clean,init,list-models,preproc,serial,upload} ...

Ino is a command-line toolkit for working with Arduino hardware.

It is intended to replace Arduino IDE UI for those who prefer to work in
terminal or want to integrate Arduino development in a 3rd party IDE.

Ino can build sketches, libraries, upload firmwares, establish
serial-communication. For this it is split in a bunch of subcommands, like git
or mercurial do. The full list is provided below. You may run any of them with
--help to get further help. E.g.:

    ino build --help

positional arguments:
  {build,clean,init,list-models,preproc,serial,upload}
    build               Build firmware from the current directory project
    clean               Remove intermediate compilation files completely
    init                Setup a new project in the current directory
    list-models         List supported Arduino board models
    preproc             Transform a sketch file into valid C++ source
    serial              Open a serial monitor
    upload              Upload built firmware to the device

optional arguments:
  -h, --help            show this help message and exit
  • Opsi yang lebih spesifik untuk setiap perintah pada Ino dapat dilihat dengan menambahkan kata --help pada perintah yang dimaksud. Contohnya seperti ini:
% ino init --help
usage: ino init [-h] [-t TEMPLATE]

Setup a new project in the current directory.

The directory must be empty.

optional arguments:
  -h, --help            show this help message and exit
  -t TEMPLATE, --template TEMPLATE
                        Project template to use

Available project templates:

       blink: Simple LED blink on pin 13
       empty: [DEFAULT] A project with empty setup() and loop()
  • Untuk melihat jenis target yang didukung oleh Ino, gunakan perintah list-models seperti ini:
% ino list-models
Searching for Board description file (boards.txt) ... /usr/share/arduino/hardware/arduino/boards.txt
         uno: [DEFAULT] Arduino Uno
   atmega328: Arduino Duemilanove w/ ATmega328
   diecimila: Arduino Diecimila or Duemilanove w/ ATmega168
     nano328: Arduino Nano w/ ATmega328
        nano: Arduino Nano w/ ATmega168
    mega2560: Arduino Mega 2560 or Mega ADK
        mega: Arduino Mega (ATmega1280)
    leonardo: Arduino Leonardo
     mini328: Arduino Mini w/ ATmega328
        mini: Arduino Mini w/ ATmega168
    ethernet: Arduino Ethernet
         fio: Arduino Fio
       bt328: Arduino BT w/ ATmega328
          bt: Arduino BT w/ ATmega168
  lilypad328: LilyPad Arduino w/ ATmega328
     lilypad: LilyPad Arduino w/ ATmega168
    pro5v328: Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328
       pro5v: Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega168
      pro328: Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega328
     bppro5v: Arduino Pro Mini (5V, 16 MHz) w/ ATmega328 (BusPirate)
         pro: Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega168
   atmega168: Arduino NG or older w/ ATmega168
     atmega8: Arduino NG or older w/ ATmega8
  • Setelah proses instalasi selesai, Anda dapat langsung melanjutkan dengan membuat project. Untuk membuat project, Anda terlebih dahulu membuat direktori untuk project tersebut dan dilanjutkan dengan inisialisasi menggunakan ino seperti ini:
% mkdir testapp && cd testapp && ino init
Searching for Board description file (boards.txt) ... /usr/share/arduino/hardware/arduino/boards.txt

  • Pada direktori project yang telah dibuat terdapat dua buah subdirektori yaitu lib dan src, dimana sub direktori src adalah tempat sketch berada.
  • Selanjutnya Anda dapat mengedit sketch kosong yang merupakan hasil dari perintah init, misalnya Anda ingin membuat sketch blink sederhana untuk arduino leonardo seperti ini:
% cat src/sketch.ino
#include <avr/io.h>
#include <util/delay.h>

void main()
{
  bitSet(DDRC, 7);

  while(1) {
    bitSet(PINC, 7);
    _delay_ms(1000);
  }
}
  • Langkah berikutnya adalah menjalankan Ino dengan perintah build dengan menyertakan opsi -m diikuti dengan jenis target yang akan digunakan, misalnya untuk leonardo perintahnya adalah sebagai berikut:
% ino build -m leonardo --cxxflags="-ffreestanding"
Searching for Board description file (boards.txt) ... /usr/share/arduino/hardware/arduino/boards.txt
Searching for Arduino lib version file (version.txt) ... /usr/share/arduino/lib/version.txt
Detecting Arduino software version ...  1.0.5 (1.0.5)
Searching for Arduino core library ... /usr/share/arduino/hardware/arduino/cores/arduino
Searching for Arduino standard libraries ... /usr/share/arduino/libraries
Searching for Arduino variants directory ... /usr/share/arduino/hardware/arduino/variants
Searching for make ... /usr/bin/make
Searching for avr-gcc ... /usr/lib64/ccache/avr-gcc
Searching for avr-g++ ... /usr/lib64/ccache/avr-g++
Searching for avr-ar ... /usr/bin/avr-ar
Searching for avr-objcopy ... /usr/bin/avr-objcopy
src/sketch.ino
Searching for Board description file (boards.txt) ... /usr/share/arduino/hardware/arduino/boards.txt
Searching for Arduino lib version file (version.txt) ... /usr/share/arduino/lib/version.txt
Detecting Arduino software version ...  1.0.5 (1.0.5)
Scanning dependencies of src
Scanning dependencies of arduino
src/sketch.cpp
arduino/wiring_analog.c
arduino/avr-libc/malloc.c
arduino/avr-libc/realloc.c
arduino/WInterrupts.c
arduino/wiring_shift.c
arduino/wiring_pulse.c
arduino/wiring.c
arduino/wiring_digital.c
arduino/HID.cpp
arduino/Tone.cpp
arduino/USBCore.cpp
arduino/HardwareSerial.cpp
arduino/Stream.cpp
arduino/CDC.cpp
arduino/Print.cpp
arduino/WString.cpp
arduino/new.cpp
arduino/main.cpp
arduino/WMath.cpp
arduino/IPAddress.cpp
Linking libarduino.a
Linking firmware.elf
Converting to firmware.hex
  • Pada perintah di atas bisa terlihat tambahan opsi --cxxflags="-ffreestanding". Opsi tersebut digunakan untuk menghindari terjadinya error akibat fungsi utama (main) pada sketch yang telah dibuat bersifat void atau tidak memiliki nilai kembalian (return value).
  • Setelah proses build berhasil, hasilnya akan berada pada sub direktori .build. Untuk memeriksa hasil akhirnya, Anda dapat menggunakan aplikasi avr-size seperti ini:
% avr-size .build/leonardo/firmware.elf
   text    data     bss     dec     hex filename
    226       0       0     226      e2 .build/leonardo/firmware.elf
  • Bisa terlihat bahwa file yang dihasilkan cukup kecil yaitu 226 byte. Dan selanjutnya adalah melakukan upload ke board arduino (pada tutorial ini menggunakan leonardo). Karena versi Ino yang digunakan pada tutorial ini masih memiliki kekurangan dalam hal upload firmware untuk board leonardo, maka Anda dapat melakukannya secara manual yaitu dengan menekan tombol reset pada board leonardo untuk mengaktifkan bootloader lalu menggunakan avrdude untuk upload dengan perintah seperti ini:
% avrdude -patmega32u4 -cavr109 -P/dev/ttyACM0 -b57600 -D -Uflash:w:.build/leonardo/firmware.hex:i

Connecting to programmer: .
Found programmer: Id = "CATERIN"; type = S
    Software Version = 1.0; No Hardware Version given.
Programmer supports auto addr increment.
Programmer supports buffered memory access with buffersize=128 bytes.

Programmer supports the following devices:
    Device code: 0x44

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9587
avrdude: reading input file ".build/leonardo/firmware.hex"
avrdude: writing flash (226 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 226 bytes of flash written
avrdude: verifying flash memory against .build/leonardo/firmware.hex:
avrdude: load data flash data from input file .build/leonardo/firmware.hex:
avrdude: input file .build/leonardo/firmware.hex contains 226 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 226 bytes of flash verified

avrdude: safemode: Fuses OK

avrdude done.  Thank you.
  • Sebenarnya Anda dapat mengaktifkan bootloader arduino leonardo tanpa menekan tombol reset, yaitu dengan membuka koneksi serial dengan baudrate 1200 lalu menutupnya.


Referensi