Cara Mendaftarkan Blog di Search Console — Guru Tutorial

Cara Mendaftarkan Blog di Search Console – Search Console ini dahulu namanya adalah Webmaster Tools, jadi hanya berubah nama saja dan secara tampilan dan fitur di dalamnya tidak ada perubahan. Mendaftarkan blog di search console bertujuan agar blog kita mudah terindeks oleh Google, serta mengetahui kesalahan-kesalahan lain di blog kita mulai dari struktur HTML blog dan…

via Cara Mendaftarkan Blog di Search Console — Guru Tutorial

JATI DIRI BANGSA WAJO — Guru Tutorial

Hampir tak ada negeri yang tidak didatangi orang Wajo. Sampai ke ujung duniapun asalkan ada peluang bisnis dan iklim yang menjamin kebebasan berusaha. Orang Wajo akan datang.Perumpamaan itu tak lain untuk menunjukkan betapa sifat kewiraswastaan (interpreneurship) telah mendarah daging pada setiap pribadi orang Wajo.Sifat ini dituntun pesan leluhur : aja mumaelo natunai sekke, naburuki labo…

via JATI DIRI BANGSA WAJO — Guru Tutorial

Arduino Leonardo ENC28J60 Ethernet Shield

Pada tutorial kali ini akan dibahas mengenai koneksi ethernet ke arduino menggunakan modul ethernet ENC28J60. Perlu dicatat bahwa tutorial ini menggunakan arduino leonardo sehingga koneksi pin antara arduino dan modul ethernet akan berbeda jika menggunakan arduino uno atau yang lainnya.

  • Hubungkan pin pada arduino leonardo dengan shield ENC28J60 seperti pada tabel berikut ini:
Arduino ENC28J60 Shield
3.3v VCC
GND GND
10 CS
MOSI (ICSP) SI
MISO (ICSP) SO
SCK (ICSP) SCK
  • Clone library Ethercard dari github:
# cd /usr/share/arduino/libraries
# git clone https://github.com/jcw/ethercard.git Ethercard
  • Selanjutnya, Anda perlu melakukan patching library ethercard jika Anda menggunakan avr-libc versi 1.8.0. Anda dapat menggunakan sed atau menggunakan file diff seperti ini:
# wget https://gist.github.com/john-117/bfa55e15d2b291a1da21/raw/b8b821aa3cdeea922d9fbce37767d924cd9870fa/ethercard.diff
# patch -p0 < ethercard.diff
  • Untuk mencoba apakah library ethercard, Anda dapat menggunakan salah satu contoh yang disertakan pada library ethercard misalnya RBBB web server. Berikut ini adalah source codenya:
// This is a demo of the RBBB running as webserver with the Ether Card
// 2010-05-28 <jc@wippler.nl> http://opensource.org/licenses/mit-license.php

#include <EtherCard.h>

// ethernet interface mac address, must be unique on the LAN
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
static byte myip[] = { 10,10,10,200 };

byte Ethernet::buffer[500];
BufferFiller bfill;

void setup () {
  if (ether.begin(sizeof Ethernet::buffer, mymac, 10) == 0)
    Serial.println( "Failed to access Ethernet controller");
  ether.staticSetup(myip);
}

static word homePage() {
  long t = millis() / 1000;
  word h = t / 3600;
  byte m = (t / 60) % 60;
  byte s = t % 60;
  bfill = ether.tcpOffset();
  bfill.emit_p(PSTR(
    "HTTP/1.0 200 OK\r\n"
    "Content-Type: text/html\r\n"
    "Pragma: no-cache\r\n"
    "\r\n"
    "<meta http-equiv='refresh' content='1'/>"
    "<title>RBBB server</title>"
    "<h1>$D$D:$D$D:$D$D</h1>"),
      h/10, h%10, m/10, m%10, s/10, s%10);
  return bfill.position();
}

void loop () {
  word len = ether.packetReceive();
  word pos = ether.packetLoop(len);

  if (pos)  // check if valid tcp data is received
    ether.httpServerReply(homePage()); // send web page data
}
  • Pada contoh di atas, IP yang digunakan adalah 10.10.10.200. Hubungkan komputer ke ethernet shield ENC28J60 dan atur alamat IP komputer Anda, misalnya menggunakan IP 10.10.10.1.
  • Untuk menguji koneksi, Anda dapat melakukan ping seperti ini:
% ping -c 3 10.10.10.200
PING 10.10.10.200 (10.10.10.200) 56(84) bytes of data.
64 bytes from 10.10.10.200: icmp_seq=1 ttl=64 time=1.32 ms
64 bytes from 10.10.10.200: icmp_seq=2 ttl=64 time=1.30 ms
64 bytes from 10.10.10.200: icmp_seq=3 ttl=64 time=1.39 ms

--- 10.10.10.200 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 1.306/1.339/1.390/0.055 ms
  • Anda juga dapat membuka browser dan memasukkan alamat IP sesuai dengan yang telah diatur pada source code yaitu 10.10.10.200. Tampilannya kurang lebih seperti ini.
  • Sekian tutorial kali ini, semoga bermanfaat.

Arduino I2C LCD Backpack

Pada tutorial kali ini akan dibahas mengenai cara menggunakan I2C LCD backpack dan arduino. Adapun I2C LCD backpack ini bertujuan untuk mengurangi jumlah pin yang digunakan pada koneksi antara arduino (atau microcontroller lainnya) dengan character LCD.

  • Untuk mempermudah, kita akan menggunakan library New LiquidCrystal. Pertama, unduh dan ekstrak library tersebut pada sub direktori dimana library arduino berada.
# cd /usr/share/arduino/libraries/
# mv LiquidCrystal LiquidCrystalOld
# wget https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads/LiquidCrystal_V1.2.1.zip
# unzip LiquidCrystal_V1.2.1.zip
# rm -rf __MACOSX
  • Perlu diperhatikan, bahwa pada langkah di atas, kita mengganti nama direktori library LiquidCrystal yang lama agar tidak bentrok dengan library yang baru. Serta kita tidak membutuhkan sub direktori __MACOSX, sehingga kita dapat menghapusnya.
  • Selanjutnya, hubungkan arduino dengan I2C LCD backpack. Pada tutorial ini, digunakan arduino leonardo atau arduino UNO R3, dimana pin I2C berada pada bagian ujung digital pin sehingga mudah dikenali (Pin dengan tulisan SDA dan SCL). Untuk arduino UNO sebelum R3, pin I2C berada pada pin analog A4 (SDA) dan A5 (SCL). Untuk memudahkan, berikut ini adalah tabel koneksi antara I2C LCD backpack:
I2C LCD Backpack Arduino UNO Arduino UNO R3 / Leonardo
GND GND GND
VCC 5v 5v
SDA A4 SDA
SCL A5 SCL
  • Setelah menghubungkan arduino dan I2C LCD backpack, Anda perlu mengetahui alamat I2C LCD backpack. Gunakan sketch I2C scanner berikut ini untuk mengetahui alamat tersebut (sketch ini dapat ditemukan di situs playground arduino):
// --------------------------------------
// i2c_scanner
//
// Version 1
//    This program (or code that looks like it)
//    can be found in many places.
//    For example on the Arduino.cc forum.
//    The original author is not know.
// Version 2, Juni 2012, Using Arduino 1.0.1
//     Adapted to be as simple as possible by Arduino.cc user Krodal
// Version 3, Feb 26  2013
//    V3 by louarnold
// Version 4, March 3, 2013, Using Arduino 1.0.3
//    by Arduino.cc user Krodal.
//    Changes by louarnold removed.
//    Scanning addresses changed from 0...127 to 1...119,
//    according to the i2c scanner by Nick Gammon
//    http://www.gammon.com.au/forum/?id=10896
// Version 5, March 28, 2013
//    As version 4, but address scans now to 127.
//    A sensor seems to use address 120.
//
//
// This sketch tests the standard 7-bit addresses
// Devices with higher bit address might not be seen properly.
//
#include <Wire.h>

void setup()
{
  Wire.begin();

  Serial.begin(9600);
  Serial.println("\nI2C Scanner");
}

void loop()
{
  byte error, address;
  int nDevices;

  Serial.println("Scanning...");

  nDevices = 0;
  for(address = 1; address < 127; address++ )
  {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");

      nDevices++;
    }
    else if (error==4)
    {
      Serial.print("Unknow error at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address,HEX);
    }
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");

  delay(5000);           // wait 5 seconds for next scan
}
  • Lakukan kompilasi dan upload sketch di atas. Setelah proses upload ke arduino selesai, lanjutkan dengan menjalankan arduino serial monitor. Pada log serial monitor akan nampak output seperti ini:
Scanning...
I2C device found at address 0x27  !
done
  • Dari informasi di atas, diketahui bahwa alamat I2C LCD backpack berada pada 0x27. Dari informasi tersebut, kita dapat melanjutkan dengan menjalankan contoh sketch yang terdapat pada blog sainsmart berikut ini yang akan menampilkan dua baris kalimatHello World pada character LCD yang telah dipasangi I2C LCD backpack:
/**
 * Example Arduino sketch for SainSmart I2C LCD2004 adapter for HD44780 LCD screens
 * Readily found on eBay or http://www.sainsmart.com/
 * The LCD2004 module appears to be identical to one marketed by YwRobot
 *
 * Address pins 0,1 & 2 are all permenantly tied high so the address is fixed at 0x27
 *
 * Written for and tested with Arduino 1.0
 * This example uses F Malpartida's NewLiquidCrystal library. Obtain from:
 * https://bitbucket.org/fmalpartida/new-liquidcrystal
 *
 * Edward Comer
 * LICENSE: GNU General Public License, version 3 (GPL-3.0)
 *
 * NOTE: Tested on Arduino NANO whose I2C pins are A4==SDA, A5==SCL
 */
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#include <NewPing.h>

// definisi untuk I2C LCD Backpack
#define I2C_ADDR       0x27
#define BACKLIGHT_PIN  3
#define BACKLIGHT_POL  POSITIVE
#define EN_PIN         2
#define RW_PIN         1
#define RS_PIN         0
#define D4_PIN         4
#define D5_PIN         5
#define D6_PIN         6
#define D7_PIN         7

LiquidCrystal_I2C lcd(I2C_ADDR, EN_PIN, RW_PIN, RS_PIN, D4_PIN, D5_PIN, D6_PIN, D7_PIN, BACKLIGHT_PIN, BACKLIGHT_POL);

void setup()
{
  lcd.begin(16,2);      // menggunakan lcd 16 kolom dan 2 baris
  lcd.home();           // set kursor ke awal (baris 0, kolom 0)
  lcd.print("Hello");   // tulis kata "Hello"
  lcd.setCursor(0, 1);  // pindahkan kursor ke baris 1, kolom 0
  lcd.print("World");   // tulis kata "World"
}

void loop()
{
}
  • Selanjutnya, Anda tinggal melakukan upload sketch tersebut ke Arduino dan character LCD akan menampilkan kalimat Hello World.
  • Kelebihan dari penggunaan library New LiquidCrystal adalah sifatnya fleksibel dan memungkinkan Anda untuk menggunakan beberapa fungsi inisialisasi I2C LCD backpack sesuai dengan kebutuhan.
  • Demikian tutorial singkat ini, semoga bermanfaat.
  • Untuk mempermudah, kita akan menggunakan library New LiquidCrystal. Pertama, unduh dan ekstrak library tersebut pada sub direktori dimana library arduino berada.
# cd /usr/share/arduino/libraries/
# mv LiquidCrystal LiquidCrystalOld
# wget https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads/LiquidCrystal_V1.2.1.zip
# unzip LiquidCrystal_V1.2.1.zip
# rm -rf __MACOSX
  • Perlu diperhatikan, bahwa pada langkah di atas, kita mengganti nama direktori library LiquidCrystal yang lama agar tidak bentrok dengan library yang baru. Serta kita tidak membutuhkan sub direktori __MACOSX, sehingga kita dapat menghapusnya.
  • Selanjutnya, hubungkan arduino dengan I2C LCD backpack. Pada tutorial ini, digunakan arduino leonardo atau arduino UNO R3, dimana pin I2C berada pada bagian ujung digital pin sehingga mudah dikenali (Pin dengan tulisan SDA dan SCL). Untuk arduino UNO sebelum R3, pin I2C berada pada pin analog A4 (SDA) dan A5 (SCL). Untuk memudahkan, berikut ini adalah tabel koneksi antara I2C LCD backpack:
I2C LCD Backpack Arduino UNO Arduino UNO R3 / Leonardo
GND GND GND
VCC 5v 5v
SDA A4 SDA
SCL A5 SCL
  • Setelah menghubungkan arduino dan I2C LCD backpack, Anda perlu mengetahui alamat I2C LCD backpack. Gunakan sketch I2C scanner berikut ini untuk mengetahui alamat tersebut (sketch ini dapat ditemukan di situs playground arduino):
// --------------------------------------
// i2c_scanner
//
// Version 1
//    This program (or code that looks like it)
//    can be found in many places.
//    For example on the Arduino.cc forum.
//    The original author is not know.
// Version 2, Juni 2012, Using Arduino 1.0.1
//     Adapted to be as simple as possible by Arduino.cc user Krodal
// Version 3, Feb 26  2013
//    V3 by louarnold
// Version 4, March 3, 2013, Using Arduino 1.0.3
//    by Arduino.cc user Krodal.
//    Changes by louarnold removed.
//    Scanning addresses changed from 0...127 to 1...119,
//    according to the i2c scanner by Nick Gammon
//    http://www.gammon.com.au/forum/?id=10896
// Version 5, March 28, 2013
//    As version 4, but address scans now to 127.
//    A sensor seems to use address 120.
//
//
// This sketch tests the standard 7-bit addresses
// Devices with higher bit address might not be seen properly.
//
#include <Wire.h>

void setup()
{
  Wire.begin();

  Serial.begin(9600);
  Serial.println("\nI2C Scanner");
}

void loop()
{
  byte error, address;
  int nDevices;

  Serial.println("Scanning...");

  nDevices = 0;
  for(address = 1; address < 127; address++ )
  {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");

      nDevices++;
    }
    else if (error==4)
    {
      Serial.print("Unknow error at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address,HEX);
    }
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");

  delay(5000);           // wait 5 seconds for next scan
}
  • Lakukan kompilasi dan upload sketch di atas. Setelah proses upload ke arduino selesai, lanjutkan dengan menjalankan arduino serial monitor. Pada log serial monitor akan nampak output seperti ini:
Scanning...
I2C device found at address 0x27  !
done
  • Dari informasi di atas, diketahui bahwa alamat I2C LCD backpack berada pada 0x27. Dari informasi tersebut, kita dapat melanjutkan dengan menjalankan contoh sketch yang terdapat pada blog sainsmart berikut ini yang akan menampilkan dua baris kalimatHello World pada character LCD yang telah dipasangi I2C LCD backpack:
/**
 * Example Arduino sketch for SainSmart I2C LCD2004 adapter for HD44780 LCD screens
 * Readily found on eBay or http://www.sainsmart.com/
 * The LCD2004 module appears to be identical to one marketed by YwRobot
 *
 * Address pins 0,1 & 2 are all permenantly tied high so the address is fixed at 0x27
 *
 * Written for and tested with Arduino 1.0
 * This example uses F Malpartida's NewLiquidCrystal library. Obtain from:
 * https://bitbucket.org/fmalpartida/new-liquidcrystal
 *
 * Edward Comer
 * LICENSE: GNU General Public License, version 3 (GPL-3.0)
 *
 * NOTE: Tested on Arduino NANO whose I2C pins are A4==SDA, A5==SCL
 */
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#include <NewPing.h>

// definisi untuk I2C LCD Backpack
#define I2C_ADDR       0x27
#define BACKLIGHT_PIN  3
#define BACKLIGHT_POL  POSITIVE
#define EN_PIN         2
#define RW_PIN         1
#define RS_PIN         0
#define D4_PIN         4
#define D5_PIN         5
#define D6_PIN         6
#define D7_PIN         7

LiquidCrystal_I2C lcd(I2C_ADDR, EN_PIN, RW_PIN, RS_PIN, D4_PIN, D5_PIN, D6_PIN, D7_PIN, BACKLIGHT_PIN, BACKLIGHT_POL);

void setup()
{
  lcd.begin(16,2);      // menggunakan lcd 16 kolom dan 2 baris
  lcd.home();           // set kursor ke awal (baris 0, kolom 0)
  lcd.print("Hello");   // tulis kata "Hello"
  lcd.setCursor(0, 1);  // pindahkan kursor ke baris 1, kolom 0
  lcd.print("World");   // tulis kata "World"
}

void loop()
{
}
  • Selanjutnya, Anda tinggal melakukan upload sketch tersebut ke Arduino dan character LCD akan menampilkan kalimat Hello World.
  • Kelebihan dari penggunaan library New LiquidCrystal adalah sifatnya fleksibel dan memungkinkan Anda untuk menggunakan beberapa fungsi inisialisasi I2C LCD backpack sesuai dengan kebutuhan.
  • Demikian tutorial singkat ini, semoga bermanfaat.

Ino Command Line Toolkit Untuk Arduino

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 commandlinedan tutorial ini hanya sebagai pelengkap saja.

  • 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

  • Ino tool
  • Ino command line toolkit for working with Arduino har

Arduino Infrared Decoder

Pada tutorial kali ini akan dibahas mengenai cara sederhana untuk men-decode remote infrared menggunakan arduino, serta contoh penggunaannya.

  • Berikut ini adalah daftar perangkat yang digunakan pada tutorial ini:
    • Arduino Leonardo
    • Sensor infrared (TSSOP17xx)
    • Remote infrared TV Toshiba (CT-90336)
    • Servo TowerPro SG-90 (Opsional)
  • Adapun pinout dari sensor infrared yang digunakan adalah sebagai berikut:
 GND -----.___
 Vs  -----|___)
 Out -----'
  • Langkah selanjutnya adalah menghubungkan arduino dengan sensor infrared dengan konfigurasi seperti ini:
Arduino Sensor Infrared
GND GND
5v Vs
Pin 2 Out
  • Selanjutnya kita akan melakukan decode terhadap sinyal infrared yang dikirimkan oleh remote. Untuk mempermudah, kita akan menggunakan sketch yang terdapat pada blog tronixstuff:
// example 32.1 - IR receiver code repeater
// http://tronixstuff.com/tutorials > chapter 32
// based on code by Ken Shirriff - http://arcfn.com

#include <IRremote.h>    // use the library
int receiver = 11;       // pin 1 of IR receiver to Arduino digital pin 11
IRrecv irrecv(receiver); // create instance of 'irrecv'
decode_results results;
void setup()
{
  Serial.begin(9600);    // for serial monitor output
  irrecv.enableIRIn();   // Start the receiver
}

void loop()
{
  if (irrecv.decode(&results))          // have we received an IR signal?
  {
    Serial.println(results.value, HEX); // display it on serial monitor in hexadecimal
    irrecv.resume();                    // receive the next value
  }                                     // Your loop can do other things while waiting for an IR command
}
  • Setelah sketch di atas diupload ke arduino, selanjutnya jalankan serial monitor pada IDE arduino dan tekan tombol pada remote infrared, maka akan terlihat kode yang dikirimkan oleh setiap tombol yang ditekan. Misalnya untuk remote TV Toshiba yang digunakan, tombol panah kiri mengirimkan kode yang nilai hexadesimalnya 0x2FD42BD dan tombol panah kanan mengirimkan kode yang nilai hexadesimalnya 0x2FD02FD.
  • Selanjutnya, kita dapat menggunakan remote infrared tersebut untuk mengendalikan hal lain, misalnya memanfaatkan remote infrared untuk mengendalikan servo.
  • Tutorial ini menggunakan servo TowerPro SG-90 dan berikut ini adalah koneksi yang digunakan ke arduino:
Arduino Servo TowerPro SG-90
GND GND (Kabel Warna Cokelat)
5v 5v (Kabel Warna Merah)
Pin 9 Signal (Kabel Warna Kuning)
  • Setelah menghubungkan servo dengan arduino, selanjutnya upload sketch yang berikut ini ke arduino:
#include <Servo.h>
#include <IRremote.h>

int pos = 0;
int RECV_PIN = 2;
int SERV_PIN = 9;

Servo srv;
IRrecv irx(RECV_PIN);
decode_results results;

void setup()
{
  irx.enableIRIn(); // Start the receiver
  srv.attach(9);    // Attach servo to pin 9
}

void loop() {
  if (irx.decode(&results)) {
    if (results.value == 0x2FD42BD) {
      pos += 10;
      if (pos > 90) { pos = 90; }
      srv.write(pos);
      delay(200);
    }
    else if (results.value == 0x2FD02FD) {
      pos -= 10;
      if (pos < 0) { pos = 0; }
      srv.write(pos);
      delay(200);
    }
    irx.resume(); // Receive the next value
  }
}
  • Setelah sketch tersebut diupload, Anda dapat menggunakan tombol panah kiri dan panah kanan pada remote infrared untuk mengendalikan servo ke arah kiri dan kanan. Perlu diingat, bahwa servo SG-90 ini pergerakannya terbatas yaitu 180 derajat (walaupun sebenarnya Anda dapat melakukan hardware hacking agar servo SG-90 dapat bergerak sejauh 360 derajat).
  • Sekian tutorial singkat kali ini, semoga bermanfaat.

Referensi