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);
 
 
}


Selasa, 27 Desember 2016

menyiapkan Pixy cam buat Arduino

hallo sobat Arduino,

sebenarnya ini adalah postingan yang sudah lama direncanakan tapi lupa di tulis :).
sekitar bulan januari an lah saya sudah unboxing pixy cam. sudah di buat videonya pula, tapi lupa nulis di website belajar arduino ini. Rencana nya sih waktu itu mau di pake buat simple simple an sensor kamera :) buat line follower.

oke langsung saja ya,
Pixy cam itu dulu awalnya dari  kick starter yang di create oleh "Charmed Labs and Carnegie Mellon". dengan campaign di kickstarter mereka berhasil mendapatkan $274,352. trus sampai sekarang jadi produk yang laris.

Jadi sobat kalau membutuhkan sensor kamera, pixy ini recomended banget lo, tinggal atur object dan mudah di gunakan.

berikut ini video unboxing dan nyobain pixy cam

 

 

Sabtu, 15 Oktober 2016

Program Multiple Ultrasonic Sensor dengan Arduino

Hallo Sobat Arduino Indonesia,

sudah pernah memprogram arduino sensor ultrasonic kan, pada kesempatan ini sedikit share bagaimana kalau cara program arduino dengan menggunakan banyak sensor ultrasonic, Nah kalau sudah bisa memprogram satu sensor ultrasonic pasti juga bisa memprogram untuk banyak sensor.

Kenapa harus banyak sensor ultrasonic?
nah Sobat bisa memanfaatkan banyak sensor misal untuk membuat robot wall follower, membuat robot sumo automatic/ otomatis, atau untuk membuat robot pemadam api.

Oke yang pertama di lakukan adalah inisialisasi pin pin yang akan di gunakan untuk sensor ultrasonic, berhubung kali ini kita ada modul yang memang di desain untuk banyak sensor ultrasonic jadinya tinggal colok colok kabel jumper saja.

Komponen yang dibutuhkan pada percobaan kali ini adalah
  1. Arduino nano clone
  2. sensor ultrasonic hcsr04
  3. shield nano (bikin sendiri) atau ada yang sudah produk jadi shiled nano

untuk pemrograman arduin multi ultrasonic sensor bisa langsung di lihat berikut ini




//ultrasonic 1
int echoPin1 =8;
int initPin1 =9;
int distance1 =0;

//ultrasonic 2
int echoPin2 =6;
int initPin2 =7;
int distance2 =0;

//ultrasonic 3
int echoPin3 =4;
int initPin3 =5;
int distance3 =0;


void setup() {
 
  pinMode(initPin1, OUTPUT);
  pinMode(echoPin1, INPUT);
  pinMode(initPin2, OUTPUT);
  pinMode(echoPin2, INPUT);
  pinMode(initPin3, OUTPUT);
  pinMode(echoPin3, INPUT);

  Serial.begin(9600);
 
}

void loop() {
 
  distance1 = getDistance(initPin1, echoPin1);
  printDistance(1, distance1);
  delay(150);
 
  distance2 = getDistance(initPin2, echoPin2);
  printDistance(2, distance2);
  delay(150);
 
  distance3 = getDistance(initPin3, echoPin3);
  printDistance(3, distance3);
  delay(150);
  Serial.println("");
  delay(500);
 
}

int getDistance (int initPin, int echoPin){

 digitalWrite(initPin, HIGH);
 delayMicroseconds(10);
 digitalWrite(initPin, LOW);
 unsigned long pulseTime = pulseIn(echoPin, HIGH);
 int distance = pulseTime/58;
 return distance;

}

 void printDistance(int id, int dist){
 
     Serial.print(id);
     Serial.print("------>");  
    Serial.print(dist, DEC);
    Serial.println(" cm");
   
 }

video memprogram arduino multi ultrasonic

Salam Arduino Indonesia

Minggu, 09 Oktober 2016

Belajar Arduino Driver Monster Moto shield

Hallo Sobat Arduino Indonesia,

yuk belajar arduino lagi :). oke langsung saja ini karena di W/S Sekolah Robot Indonesia ada shield Driver Monster Moto. yuk kita program untuk menggerakkan motor DC.

oh ya kalau yang beli baru kadang-kadang ada yang harus nyolder dulu, gampang kok sobat. bisa cek di video dibawah ini ya.

Yang dibutuhkan pada percobaan kali ini,
 

Driver Shield Monster Moto ini mempunyai pin yang digunakan adalah pin 7,4,8,9,5,6,2,3.

untuk konfigurasi pin bisa dilihat pada coding program berikut ini


  

/*  MonsterMoto Shield Example Sketch
  date: 5/24/11
  code by: Jim Lindblom
  hardware by: Nate Bernstein
  SparkFun Electronics

 License: CC-SA 3.0, feel free to use this code however you'd like.
 Please improve upon it! Let me know how you've made it better.

 This is really simple example code to get you some basic
 functionality with the MonsterMoto Shield. The MonsterMote uses
 two VNH2SP30 high-current full-bridge motor drivers.

 Use the motorGo(uint8_t motor, uint8_t direct, uint8_t pwm)
 function to get motors going in either CW, CCW, BRAKEVCC, or
 BRAKEGND. Use motorOff(int motor) to turn a specific motor off.

 The motor variable in each function should be either a 0 or a 1.
 pwm in the motorGo function should be a value between 0 and 255.
 */
#define BRAKEVCC 0
#define CW   1
#define CCW  2
#define BRAKEGND 3
#define CS_THRESHOLD 100

/*  VNH2SP30 pin definitions
 xxx[0] controls '1' outputs
 xxx[1] controls '2' outputs */
int inApin[2] = {7, 4};  // INA: Clockwise input
int inBpin[2] = {8, 9}; // INB: Counter-clockwise input
int pwmpin[2] = {5, 6}; // PWM input
int cspin[2] = {2, 3}; // CS: Current sense ANALOG input
int enpin[2] = {0, 1}; // EN: Status of switches output (Analog pin)

int statpin = 13;

void setup()
{
  Serial.begin(9600);
 
  pinMode(statpin, OUTPUT);

  // Initialize digital pins as outputs
  for (int i=0; i<2; i++)
  {
    pinMode(inApin[i], OUTPUT);
    pinMode(inBpin[i], OUTPUT);
    pinMode(pwmpin[i], OUTPUT);
  }
  // Initialize braked
  for (int i=0; i<2; i++)
  {
    digitalWrite(inApin[i], LOW);
    digitalWrite(inBpin[i], LOW);
  }
  // motorGo(0, CW, 1023);
  // motorGo(1, CCW, 1023);
}

void loop()
{
  motorGo(0, CW, 1023);
  motorGo(1, CCW, 1023);
  delay(500);

  motorGo(0, CCW, 1023);
  motorGo(1, CW, 1023);
  delay(500);
 
  if ((analogRead(cspin[0]) < CS_THRESHOLD) && (analogRead(cspin[1]) < CS_THRESHOLD))
    digitalWrite(statpin, HIGH);
}

void motorOff(int motor)
{
  // Initialize braked
  for (int i=0; i<2; i++)
  {
    digitalWrite(inApin[i], LOW);
    digitalWrite(inBpin[i], LOW);
  }
  analogWrite(pwmpin[motor], 0);
}

/* motorGo() will set a motor going in a specific direction
 the motor will continue going in that direction, at that speed
 until told to do otherwise.

 motor: this should be either 0 or 1, will selet which of the two
 motors to be controlled

 direct: Should be between 0 and 3, with the following result
 0: Brake to VCC
 1: Clockwise
 2: CounterClockwise
 3: Brake to GND

 pwm: should be a value between ? and 1023, higher the number, the faster
 it'll go
 */
void motorGo(uint8_t motor, uint8_t direct, uint8_t pwm)
{
  if (motor <= 1)
  {
    if (direct <=4)
    {
      // Set inA[motor]
      if (direct <=1)
        digitalWrite(inApin[motor], HIGH);
      else
        digitalWrite(inApin[motor], LOW);

      // Set inB[motor]
      if ((direct==0)||(direct==2))
        digitalWrite(inBpin[motor], HIGH);
      else
        digitalWrite(inBpin[motor], LOW);

      analogWrite(pwmpin[motor], pwm);
    }
  }
}
Upload ke arduino dan silahkan dicoba Salam Arduino Indonesia

video tutorial Belajar Arduino Driver Monster Moto Shield