Senin, 25 September 2017

Menambahkan board atmega16 di Arduino IDE

Halo sobat arduino Indonesia, di postingan sebelumnya tentang memprogram ATMEGA16 dengan arduino, kami menambah board atmega16 dengan cara menambah di boardmanager menggunakan gelatino,  tetapi setelah kami mencoba komunikasi i2c dengn ATMEGA 16 dengan library wire.h, terjadi error



Nah setelah nyari solusi sana sini, kami menjumpai artikel yang layak di share, sobat bisa lihat versi aslinya di sini http://openhardware.ro/using-atmega16-with-arduino-ide/ , dan kami akan share dengan versi bahasa Indonesia.

Pada intinya tutorial tersebut menjelaskan bahwa akan menambahkan board baru atmega16 di arduino tanpa lewat boardmanager, adapun langkahnya sebagai berikut :

  • Buka file 'boards.txt' , lokasi file boards.txt ini adalah di  arduino folder …[arduino folder]\hardware\arduino\avr\boards.txt.
  • Tambahkan pada baris paling akhir tulisan seperti di bawah ini

##############################################################
ATmega16-8.name=ATmega16-External 8Mhz
ATmega16-8.upload.tool=avrdude
ATmega16-8.build.mcu=atmega16
ATmega16-8.build.f_cpu=8000000L
ATmega16-8.build.core=arduino:arduino
ATmega16-8.build.variant=ATmega16
ATmega16-8.upload.maximum_size=16000
##############################################################
ATmega16-16.name=ATmega16-External 16Mhz
ATmega16-16.upload.tool=avrdude
ATmega16-16.build.mcu=atmega16
ATmega16-16.build.f_cpu=16000000L
ATmega16-16.build.core=arduino:arduino
ATmega16-16.build.variant=ATmega16
ATmega16-16.upload.maximum_size=16000
##############################################################

  • Setelah  itu, buat folder Atmega16 di dalam folder [arduino folder]\hardware\arduino\avr\variants
  • download file pins_arduino.h
  • copy file pins_arduino.h  yang sudah di download ke dalam folder tersebut.
  • Sekarang cek hasilnya di tools - board 
 
  • Setelah semuanya terdeteksi, terakhir rubah di file HardwareSerial.cpp atau bisa di lihat di folder [arduino folder]\hardware\arduino\avr\cores\arduino\HardwareSerial.cpp
  • cari coding seperti di bawah ini
#if defined(__AVR_ATmega8__)
  config |= 0x80; // select UCSRC register (shared with UBRRH)
#endif
 
  • Rubah dengan koding di bawah ini dan simpan

#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega32__) || defined(__AVR_ATmega16__)
  config |= 0x80; // select UCSRC register (shared with UBRRH)
#endif

Install Boatloader Arduino di ATMEGA 16

Hai sobat arduino Indonesia, kemarin kami mencoba untuk menjadikan atmega 16 biar bisa di program menggunakan Arduino IDE, kenapa kami memprogram dengan arduino, ya karena sudah familier dengan arduino, jadinya akan lebih muda kalau atmega 16 yang kami punya di jadikan arduino.

Oke langkah pertama adalah menambahkan board gelatino di arduino IDE, caranya bagaimana. tenang sobat, berikut cara-caranya

  • sobat masuk ke preferences (File - Preferences), akan muncul seperti gambar berikut ini :
 
  • Klik Install

  • jika sudah selesai, coba cek di tools - board, maka akan muncul seperti dibawah ini
 
Langkah ke dua
Siapkan atmega 16 bisa yang DIP atau SMD, untuk kali ini kami pake yang DIP. dengan susunan sebagai berikut
  • Arduino Pin 13 ke ATMega16 Pin 8 (or SCK of another microcontroller) 
  • Arduino Pin 12 ke ATMega16 Pin 7 (or MISO of another microcontroller) 
  • Arduino Pin 11 ke ATMega16 Pin 6 (or MOSI of another microcontroller) 
  • Arduino Pin 10 ke ATMega16 Pin 9 (or RESET of another microcontroller) 
  • Arduino 5+ to ATMega16 Pin 10 (or Vcc of another microcontroller) 
  • Arduino Gnd to ATMega 16 Pin 11 (or Gnd of another microcontroller)
Kalau yang sudah punya rangkaian minimum system bisa langsung di sambungkan antara  minimum system ATMEGA dengan arduino, kalau belum bisa di buat dulu minimum system menggunakan projectboard. Kebetulan kami ada minimum system jadi langsung di sambungkan.

Langkah ke tiga
  • Upload skecth arduino ISP, bisa di buka di example arduino.
  • setelah berhasil upload di arduino, sekarang setting di tools - pilih programmer (programmer as ISP)
  • pilih board arduino gelatino w/ atmega 16
  • terakhir burn boatloader. tunggu sampai tulisan done boatloader
Langkah ke 4
  •  cek apakah bisa kita masukkan program arduino, buka blink, klik sketch - upload using programmer

Selasa, 12 September 2017

Belajar IOT Smarthome dengan Arduino

Smart Home atau Rumah pintar merupakan jaman sekarang untuk melakukan / mengendalikan segala elektroni yang dari rumah dari manapun.

Pada kesempatan kali ini Sobat Arduino bisa mengikuti pelatihan, workshop singkat selama dua hari (8 jam) untuk membuat aplikasi IOT Smart Home.

Nah sebelum memuai pelatihan berikut QnA yang sering ditanyakan  oleh calon peserta

1. Saya belum bisa programming sama sekali apakah bisa?
Ok, dulunya saya dulunya juga sangat awam dalam programming, tetapi sekarang bisa, hanya butuh kemauan untuk belajar dan mendapat bimbingan yang tepat untuk memulainya.





2. Apakah saya sudah mendapat peralatan untuk workshop / pelatihan?
Ya, dalam 1 paket anda akan mendapatkan peralatan / modul yang siap pakai dan boleh dibawah pulang.



3. Apa persyaratan dan apa yang harus saya bawa?
- untuk persyaratan tidak ada persyaratan yang khusus, hanya niat dan kemauan untuk belajar.
- Membawa Laptop / Notebook
- Handphone Android

4. Untuk peserta luar kota bagaimana,
Di dekat tempat pelatihan ada apartemen yang bisa di sewa harian, nanti kami bantu untuk mencarikan tempat tinggal, atau jika mau bisa tidur seadanya di basecamp kami tempat workshop

5. Kapan pelatihan di mulai?
Pelatihan di mulai minimal ada 2 orang. Hari bisa milih mulai senin - minggu

6. Dimana lokasi pelatihan ?
lokasi di workshop Sekolah Robot Indonesia di Marina Emas Timur V no 45 Surabaya

7. Ok saya tertarik ikut
Baiklah, email langsung ke sekolahrobot@gmail.com atau WA di 0811301088 kami akan mengirimkan langsung modul untuk dipelajari, agar nanti ketika pertemuan tatap muka lebih banyak untuk praktikumnya



Minggu, 07 Mei 2017

Program Arduino untuk motor brushless

Hallo sobat Arduino Indonesia, banyak yang request tentang bagaimana caranya bikin program buat motor brushless. tempo hari sih ada juga yang minta tolong buat bikin skateboard elektrik, cuman sayang gak sempat dokumentasikan penuh, hanya foto part partnya aja, nanti saya upload di paling akhir ya.

oke konsep aslinya skateboard elektrik sama dengan tutorial berikut ini,
yang perlu di siapkan


  1. Potensiometer 
  2. arduino UNO (clone)
  3. ESC
  4. Brushless Motor
  5. Batere dan konektor
  6. kabel jumper
Susunan kabel bisa di lihat pada fritzin berikut ini,

 Tiga kaki pada potensiometer masuk ke ground, vcc dan A0 (kaki tengah poternsiometer), 3 kabel data esc yang di gunakan hanya 2 kabel, yang hitam ke GND dam yang kuning/orange/putih ke pin 9

untuk pemroraman bisa dilihat berikut :

#include <Servo.h>

Servo esc;
int throttlePin = 0;

void setup()
{
  esc.attach(9);
  Serial.begin(9600);
}

void loop()
{
  int throttle = analogRead(throttlePin);
  Serial.println(throttle);
  throttle = map(throttle, 0, 1023, 0, 179);
  esc.write(throttle);
}


upload ke arduino dan lihat perubahan pada motor brushless nya, semakin tinggi data yang di hasilkan potensiometer, semakin kenceng muter motor brushlessnya.




Selamat belajar arduino sobat arduino

nah ini sobat yang kemarin kita pakai buat skateboard elektrik


Selasa, 25 April 2017

workshop arduino di STTN BATAN Yogyakarta

Hallo sobat Arduino Indonesia, pada kesempatan kali ini mimin mendapat kesempatan untuk berbagi sedikit ilmu tentang arduino. BEM Sekolah Tinggi Teknologi Nuklir BATAN bekerja sama dengan Sekolah Robot Indonesia mengadakan workshop nasional tentang arduino.

Pada kesempatan ini, workshopnya basic banget, mulai dari perkenalan arduino, penggunaan arduino, sampai simulai I/O secara sederhana. Workshop yang di ikuti kurang lebih dari 110 peserta ini berlangsung selama 1 hari mulai dari pukul 08.00 - 15.00.

nah sobat yang penasaran dengan kegiatan workshop Nasional Arduino bisa di lihat foto-foto kegiatan berikut ini ya







Senin, 06 Maret 2017

menambah digit di depan hasil nilai

Hallo Sobat Arduino Indonesia, saya akan share sedikit function bagaimana untuk menampilkan digit di depan nilai integer yang mau di tampilkan.

Contohnya begini misal sobat mempunyai nilai 1,2,3,4,5 terus sobat pingin menampilkan di LCD atau Seven segment 2 digit sehinggal nilainya menjadi 01,02,03,04,05.

Nah dibawah ini contoh kalau sobat ingin menampilkan di Serial print di komputer/leptop.

sobat bisa menggunakan void berikut ini : 

void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
digitPrint(1,2);
}

void digitPrint( int value, int width)
{

char valueStr[6];
  itoa (value, valueStr, 10);
  int len = strlen(valueStr);
  if(len < width){
    len = width-len;
    while(len--)
     Serial.print('0');
  }
 Serial.println(valueStr);  
}

sobat bisa menambahkan misalkan digit ratusan atau ribuan juga bisa, tinggal mengganti width yang di Inginkan

Mudah Bukan, yuk belajar pemrograman arduino bersama Arduino Indonesia

Selasa, 03 Januari 2017

Ball Bot dengan menggunakan sensor kamera pixy cam


Hallo sobat arduino Indonesia, sesuai dengan janji kemarin, hari ini saya akan share bagaimana menggunakan pixy cam untuk membuat robot pendeteksi bola dengan menggunakan sensor kamera. Bagi teman-teman yang akan ikut robot soccer di kontes robot Indonesia mungkin bisa sedikit membantu, tapi ini benar-benar masih basic lo sobat, jadi perlu beberapa improvement.

oke langsung saja sobat, yang perlu di siapkan adalah sebagai berikut



  1. Batere holder dan batere
  2. Shield driver mobo
  3. Arduino Uno
  4. Pixy cam
dan pastinya set mobile robot yang di lengkapi dengan motor DC.

Oke bentuk setelah dipasang di body atau frame



 langkah-langkah sebelum programming arduino yang perlu dilakukan adalah 
  • set pixy terlebih dahulu dengan menggunakan kabel mini usb, dan buka program pixymon
 
  •  cari object yang akan di detect, untuk kali ini kita pake bola warna biru

  • set signature 1 dengan klik warna yang akan di detect
 
  • Karena kita sekarang menggunakan i2c pada pixy cam dengan arduino maka set juga di pixymon ke configure, pilih interface, dan pilih data out port  i2c dan jangan lupa address nya di ingat-ingat, untuk kali ini saya menggunakan 0x55

  •  silahkan close program pixymon
  • sekarang kabel konfigurasi untuk i2c ke shield mobo. pixy mempunyai pin output seperti berikut ini :
 
1 : SPI MISO, UART RX, GPI00
2 : 5V
3 : SPI SCK, DAC OUT, GPI01 
4 : SPI MOSI, UART TX, GPI02
5 : I2C SCL
6 : GND
7 : SPI SS, ADC IN, GPI03
8 : GND
9 : I2C SDA
10 : GND
  • jadi untuk koneksi ke arduino i2c konfigurasinya menggunakan pin 
ARDUINO -------------------  PIXY CAM
      5V                                           pin 2
      GND                                       pin 6
      A4                                           pin 9
      A5                                           pin 5

Oke langsung saja untuk programming arduinonya bisa di ikuti sebagai berikut :

/* pixy cam Sekolahrobot.com */
/* Sekolah Robot Indonesia   */
/* Ball bot, Januari 2017 */



#include <Wire.h>
#include <PixyI2C.h>
uint16_t blocks;
int bin1 = 8;
int bin2 = 9;
int pwmb = 10;
int ain1 = 12;
int ain2 = 13;
int pwma = 11;

PixyI2C pixy(0x55); // alamat pixy i2c

void setup()
{
  Serial.begin(9600);
  Serial.print("Starting...\n");
 
  pixy.init();
  pinMode(bin1,OUTPUT);
  pinMode(bin2,OUTPUT);
  pinMode(pwmb,OUTPUT);
  pinMode(ain1,OUTPUT);
  pinMode(ain2,OUTPUT);
  pinMode(pwma,OUTPUT);
}
void loop()
{

  static int i = 0;
  int j;
  char buf[32];
  blocks = pixy.getBlocks();

  if (blocks)
  {
    i++;
    if (i%50==0)
    {
      if(pixy.blocks[j].x>200)
        {
          Serial.println("Right");
          belokkanan();
        }
       else if(pixy.blocks[j].x<60)
        {
          Serial.println("Left");
          belokkiri();
        }
        else if(pixy.blocks[j].x>=60 && pixy.blocks[j].x<=200)
        {
          Serial.println("Middle");
          maju();
        }
        else{
          Serial.println("No Object Detected");
          berhenti(); 
        }

    }
   
  }
 
}

void maju()
{
  digitalWrite(ain1,HIGH);
  digitalWrite(ain2,LOW);
  analogWrite(pwma,100);
  digitalWrite(bin1,HIGH);
  digitalWrite(bin2,LOW);
  analogWrite(pwmb,100);
}
void mundur(){
  digitalWrite(ain1,LOW);
  digitalWrite(ain2,HIGH);
  analogWrite(pwma,100);
  digitalWrite(bin1,LOW);
  digitalWrite(bin2,HIGH);
  analogWrite(pwmb,100);
}

void belokkanan(){
  digitalWrite(ain1,HIGH);
  digitalWrite(ain2,LOW);
  analogWrite(pwma,100);
  digitalWrite(bin1,LOW);
  digitalWrite(bin2,LOW);
  analogWrite(pwmb,100);
}

void belokkiri(){
  digitalWrite(ain1,LOW);
  digitalWrite(ain2,LOW);
  analogWrite (pwma,100);
  digitalWrite(bin1,HIGH);
  digitalWrite(bin2,LOW);
  analogWrite(pwmb,100);
 
 
}

void berhenti(){
  digitalWrite(ain1,LOW);
  digitalWrite(ain2,LOW);
  analogWrite (pwma,0);
  digitalWrite(bin1,LOW);
  digitalWrite(bin2,LOW);
  analogWrite(pwmb,0);
 
 
}