Label

Tampilkan postingan dengan label hardware. Tampilkan semua postingan
Tampilkan postingan dengan label hardware. Tampilkan semua postingan

Sabtu, 07 Februari 2015

Game flappybird dengan arduino joystick shield dan nokia 5110 lcd display.

Masih ingat dengan game flappybird yang sempat booming pada perangkat android?
kali ini kita akan membuat game yang membuat ketagihan tersebut dengan arduino.
Cukup menggunakan board arduino uno maupun leonardo, joystick shield, serta nokia 5110 lcd display module.
Dengan menggunakan arduino joystick shield yang sudah terdapat slot untuk memasang nokia 5110 lcd display sehingga memudahkan kita untuk memasang layar dan tidak diperlukan pengkabelan lagi.
oke, langsung saja untuk kode pemrogramannya silahkan download file di bawah ini:

DOWNLOAD

Di dalam file tersebut juga sudah saya sertakan arduino library yang mendukung.
Jangan lupa untuk merubah  switch pada arduino joystick shield ke 3.3 volt.
Berikut ini beberapa gambar(maaf kalo jelek) dan video hasil percobaan.
Lets Have fun!.






Rabu, 21 Januari 2015

2 Axis CNC Plotter dari CDROM Bekas

Proyek kali ini adalah proyek sudah lama saya buat, bahkan alatnya pun sudah saya bongkar. Karena rencananya akan mengupgrade cnc yang sudah dibuat tapi sampai sekarang belum kesampaian.
Sebetulnya saya berencana membuat cnc plotter 3 axis namun karena dari 4 buah cdrom bekas yang saya bongkar stepper motor yang bisa digunakan ternyata hanya 2 buah.
Sebagai drivernya untuk menjalankan motor stepper menggunakan EasyDriver  chip A3967. Sedangkan untuk softwarenya menggunakan GRBL sebagai G-code interpreter.
Jangan lupa untuk menggunakan heatsink sebagai pendingin chip A3967 karena saat bekerja chip lumayan panas.
Berikut ini bebrapa gambar dan video dokumentasi yang masih tersisa.



video saat potter bekerja

Selasa, 13 Januari 2015

Installasi Android pada Banana PI + Bonus

Installasi sistem operasi android pada banana pi hampir sama caranya dengan tutorial sebelumnya yaitu Menginstall Sistem Operasi Pada Banana Pi (Linux Based) hanya saja program untuk memburn sistem operasi ke SDcard yang berbeda.
Jika pada tutorial sebelumnya kita menggunakan Win32DiskImager maka kali ini kita menggunakan program PhoenixCard.
program PhoenixCard bisa didownload disini:
PhoenixCard
sedangkan sistem operasi android  bisa didownload disini:
Android
Untuk tutorial penginstalannya silahkan perhatikan berikut:
Untuk langkah pertama ikuti langkah 1 dan 2 pada tutorial sebelumnya.
Buka program phoenix card, pilih drive SDcard yang akan digunakan (1), pilih sistem operasi android yang sudah didownload pada komputer (2), kemudian pada write mode pilih startup! (3).
Kemudian klik tombol burn. Tunggu sampai proses burn selesai.
Selesai! sekarang Banana pi siap dijadikan sebuah media player maupun console game emulator.


Banana pi yang sudah terinstal android bisa digunakan sebagai console game emulator.
Caranya dengan menginstal program emulator di android dan mendownload game yang sesuai.
Setelah itu menghubungkan banana pi dengan usb gamepad. Dijamin main game akan terasa lebih seru, apalagi bisa memainkannya melalui layar televisi biasa.

Bonus:


Senin, 15 Desember 2014

Menginstall Sistem Operasi Pada Banana Pi (Linux Based)

Sebelum menginstall sistem operasi pada banana pi ada beberapahal yang harus diperhatikan.
Pertama, gunakan sumber daya sebesar 5V dengan arus sebesar 2A. Karena menurut pengalaman saya, jika kuat arus kurang dari 1 ampere maka banana pi tidak mau booting.
Kedua, gunakan kartu memori SDcard dengan kapasitas minimal 8GB class10.
Kemudian kita harus mendownload software yang dibutuhkan yaitu,
1. SDformatter
link download: klik disini
2. Win32DiskImager
link download: klik disini
3. Sistem operasi untuk banana pi
link download: klik disini
Untuk tutorial penginstalannya silahkan perhatikan langkah-langkah di bawah ini:
1. Buka SDformatter, pilih SDcard yang akan diformat.
2. Klik tombol format.
3.Buka program Win32DiskImager, pilih sistrem operasi yang akan diinstall.
4.Pilih drive SDcard yang akan diinstal, hati-hati karena jika salah memilih drive misalnya ada flashdisk atau eksternal hardisk yang terhubung, maka drive yang terpilih datanya akan terhapus.
5.Klik tombol write. Tunggu sampai proses selesai dan Finish!. Jangan lupa eject SDCard yang sudah terinstall sistem operasi.
langkah selanjutnya adalah memasang SDcard pada banana pi.

*catatan: Jika banana pi sudah berhasil booting dan banana pi mati sendiri, (misalnya saat kita memasang alat tambahan dan banana pi tiba-tiba mati) jika banana pi gagal booting ulang. Cabut SDcard dari banana pi, nyalakan banana pi tanpa SD card, stelah itu matikan, kemudian nyalakan lagi dengan SDcard.


Sabtu, 13 Desember 2014

Banana Pi, Computer mini multifungsi





Banana pi, adalah "single board computer" atau komputer mini dengan ukuran sebesar kartu kredit. Jika anda terbiasa bermain-main dengan raspberry pi maka anda akan sadar bahwa bahwa banana pi terkesan meniru layout dari pendahulunya tersebut. Juga terlihat dari namanya yang sama-sama menggunakan nama buah-buahan.
Namun walaupun begitu, banana pi memiliki beberapa kelebihan dibanding raspberry pi, misalnya kemampuan processor yang lebih powerfull, memory yang lebih besar, serta telah disediakan ir receiver.
Banyak sistem operasi yang didukung oleh banana pi, pada dasarnya semua sistem operasi linux didukung oleh banana pi. Misalnya Lubuntu, Android, Debian, Bananian, Berryboot, OpenSuse, Scratch, Fedora, Gentoo, Open MediaVault, OpenWRT, juga mendukung sistem BSD.
Penggunaannya juga bisa untuk bermacam-macam, misalnya komputer murah, otomatisasi rumah, robotik, multimedia, untuk emulator permainan ,dan lain-lain.


Spesifikasi lengkap Banana Pi

Hardware Specification of Banana PI

Soc Allwinner® A20(sun 7i)
CPU ARM® Cortex™-A7 Dual-Core1GHz (ARM v7 instruction set)
GPU Mali400MP2 Complies with OpenGL ES 2.0/1.1 (hardware acceleration support)
SDRAM 1GB DDR3 (shared with GPU)
Power 5V @ 2A via MicroUSB (DC in Only) and/or MicroUSB (OTG)
PMU AXP209

 

Features

Low-level perpherials 40 Pins Header,
28×GPIO, some of which can be used for specific functions including UART, I2C, SPI, PWM, CAN, I2S, SPDIF, LRADC, ADC, LINE-IN,FM-IN,HP-IN.
On board Network 10/100/1000Mbps ethernet (Realtek RTL8211E/D)
Wifi Module Optional
Bluetooth Optional
On board Storage MicroSD (TF) card,SATA 2.0
Display Supports multi-channel HD display:
HDMI 1.4 (Type A - full)
LVDS/RGB/CPU display interface (DSI) for raw LCD panels
Composite video (PAL and NTSC) (via 3.5 mm TRRS jack shared with audio out)
11 HDMI resolutions from 640×480 to 1920×1080 plus various PAL and NTSC standards
Video HD H.264 2160p video decoding
Mutil-format FHD video decoding, including Mpeg1/2, Mpeg4, H.263, H.264, etc H.264 high profile 1080p@30fps or 720p@60fps encoding
Audio outputs HDMI,analog audio (via 3.5 mm TRRS jack shared with composite video out),I2S audio (also potentially for audio input)
Camera Parallel 8-bit camera interface
Audio input On board micphone
USB 2 USB 2.0 host, 1 USB 2.0 OTG (all direct from A20 chip)
Buttons Reset button
Power button
U-boot button
Leds Power status led (red)
Ethernet status led (blue)
User defined led (green)
Other IR reciever

 

Interface definition

Sizes 92 mm × 60mm
Weight 45g


sumber: http://www.lemaker.org/

Kamis, 23 Oktober 2014

Desktop Running Text



Teinspirasi dari banner running text yang biasa terdapat di depan toko.
Kali ini kita akan membuat desktop running text, yaitu banner running text portable yang bisa dijadikan hiasan di atas meja. Menggunakan board arduino dan i2c 1602 lcd tutorial kali ini mirip dengan tutorial sebelumnya Program i2c display pada arduino uno, mega 2560, dan leonardo
 dengan sedikit modifikasi pada kode pemrogramannnya.
Berikut ini adalah kode yang digunakan:

/* STARobotic.com Example Software Sketch
20 character 4 line I2C Display
Backpack Interface labelled "LCM1602 IIC  A0 A1 A2"STARobotic.com */
/*-----( Import needed libraries )-----*/
#include <Wire.h>  // Comes with Arduino IDE
// Get the LCD I2C Library here:
// https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
// Move any other LCD libraries to another folder or delete them
// See Library "Docs" folder for possible commands etc.
#include <LiquidCrystal_I2C.h>
/*-----( Declare Constants )-----*/
//none
/*-----( Declare objects )-----*/
// set the LCD address to 0x27 for a 20 chars 4 line display
// Set the pins on the I2C chip used for LCD connections:
//                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x20, 4, 5, 6, 0, 1, 2, 3, 7, NEGATIVE);  // Set the LCD I2C address
/*-----( Declare Variables )-----*/
//none
void setup()   /*----( SETUP: RUNS ONCE )----*/
{
  lcd.begin(16,2);         // initialize the lcd for 16 chars 4 lines
}
void loop()
 {
  int i;
  lcd.setCursor(0, 0);
  lcd.print(" starobotic.com      starobotic.com ");
  lcd.setCursor(0, 1);
  lcd.print("* arduino * shield * sensor * module *");
  for (i = 0 ; i < 16; i ++) {
      lcd.scrollDisplayLeft();
      delay(600);
  }
}

/* ( THE END ) */ 


Silahkan copykan kode diatas pada arduino ide dan upload pada board arduino.
dan berikut ini adalah proses pembuatan desktop running text.

test program


pembuatan box



 
pengecatan dan  perakitan
finish



video desktop running text:

Selasa, 25 Februari 2014

USB Wireless Gamepad Robot Control


 100_8989 100_8990
Jika pada tutorial sebelumnya kita membuat robot yang berjalan secara otomatis (Membuat Robot Rover Self avoiding), kali ini kita akan membuat robot yang dikendalikan menggunakan usb wireless gamepad. Alat dan bahan untuk membuat robot remote control inipun sama dengan Membuat Robot Rover Self avoiding yaitu: arduino, arduino l293d motor shield, serta usb host shield untuk menghubungkan usb wireless gamepad dengan arduino.
Untuk dapat menggunakan usb host shield, anda perlu menambahkan usb host shield library pada arduino IDE. Anda dapat mendownload usb host shield library dengan mengklik link si bawah ini:
USB Host Library
Sedangkan program robotnya anda dapat mendownloadnya pada link berikut:
Robot Remote Control
Berikut ini video robot yang telah berhasil dibuat:

Senin, 24 Februari 2014

Program i2c display pada arduino uno, mega 2560, dan leonardo


Pada tutorial ini saya akan menunjukkan cara menghubungkan lcd display yang menggunakan interface i2c dengan arduino. Sebelum itu kita perlu memperhatikan i2c backpack pada lcd yang akan kita pergunakan, karena ternyata ada berbagai jenis i2c backpack yang beredar di pasaran dan setiap jenisnya menggunakan library yang berbeda. Lcd yang saya gunakan memiliki kode GY-IICLCD pada bagian backpack. Untuk library yang digunakan nanti akan saya sertakan link downloadnya pada bagian akhir postingan.
connect:

100_8987i2c display        Arduino uno                 
vcc---------------------- 5V
scl----------------------- A5
sda---------------------- A4
gnd--------------------- GND



100_8985
i2c display        Arduino leonardo                  
vcc---------------------- 5V
scl----------------------- pin3
sda---------------------- pin2
gnd---------------------- GND



100_8988i2c display        Arduino mega 2560                 
vcc---------------------- 5V
scl----------------------- pin20
sda---------------------- pin21
gnd---------------------- GND



Example program yang digunakan:

/* STARobotic.com Example Software Sketch
20 character 4 line I2C Display
Backpack Interface labelled "LCM1602 IIC  A0 A1 A2"
STARobotic.com */
/*-----( Import needed libraries )-----*/
#include <Wire.h>  // Comes with Arduino IDE
// Get the LCD I2C Library here:
//
https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
// Move any other LCD libraries to another folder or delete them
// See Library "Docs" folder for possible commands etc.
#include <LiquidCrystal_I2C.h>

/*-----( Declare Constants )-----*/
//none
/*-----( Declare objects )-----*/
// set the LCD address to 0x27 for a 20 chars 4 line display
// Set the pins on the I2C chip used for LCD connections:
//                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x20, 4, 5, 6, 0, 1, 2, 3, 7, NEGATIVE);  // Set the LCD I2C address

/*-----( Declare Variables )-----*/
//none

void setup()   /*----( SETUP: RUNS ONCE )----*/
{
  Serial.begin(9600);  // Used to type in characters

  lcd.begin(16,2);         // initialize the lcd for 16 chars 4 lines
// NOTE: Cursor Position: CHAR, LINE) start at 0 
  lcd.setCursor(0,0);
  lcd.print("Hello, world!");
  delay(1000);
  lcd.setCursor(1,1);
  lcd.print("  STARobotic  ");
  delay(1000); 
  lcd.setCursor(0,0);
  lcd.print("1602 Display");
  lcd.setCursor(0,1);
  delay(5000);
// Wait and then tell user they can start the Serial Monitor and type in characters to
// Display. (Set Serial Monitor option to "No Line Ending")
  lcd.setCursor(0,0); //Start at character 0 on line 0
  lcd.print("Start Serial Mon");
  lcd.setCursor(0,1);
  lcd.print("Type chars 2 lcd");  

}/*--(end setup )---*/
void loop()   /*----( LOOP: RUNS CONSTANTLY )----*/
{
  {
    // when characters arrive over the serial port...
    if (Serial.available()) {
      // wait a bit for the entire message to arrive
      delay(100);
      // clear the screen
      lcd.clear();
      // read all the available characters
      while (Serial.available() > 0) {
        // display each character to the LCD
        lcd.write(Serial.read());
      }
    }
  }

}/* --(end main loop )-- */
/* ( THE END ) */
 
Arduino i2c lcd library, click:
STARobotic












Selasa, 06 Agustus 2013

Skema Arduino Sensor Shield V5.0

 

arduino-sensor-shield-v5.jpg

Arduino sensor shield v5.0 merupakan salah satu shield arduino yang berfungsi untuk menghubungkan board arduino dengan modul elektronik maupun sensor yang akan digunakan.

interface yang didukung:

  • IIC interface
  • Servo controller
  • Bluetooth module
  • SD card module
  • APC220 radio frequency
  • RB URF v1.1 ultrasonic sensor
  • 12864 LCD serial dan parallel

Untuk dapat menggunakan sensor shield tersebut, kita perlu memahami skema bagaimana interface-interface tersebut terhubung dengan port-port pada board arduino.

berikut ini adalah gambar skema dari arduino sensor shield v5.0

arduino-sensor-shield

Senin, 05 Agustus 2013

Membuat Robot Rover Self avoiding


self avoiding robot rover
Tutorial kali ini akan dijelaskan tentang bagaimana cara membuat robot jenis rover yang dapat menghindari penghalang secara otomatis.
Bahan-bahan:
  • baterai x8
  • motor gearbox + roda X4
  • 4xAA baterai holder x2
  • saklar
  • kabel
  • arduino uno
  • dual l293d motor shield
  • microservo
  • hc-sr04 ultrasonic sensor

cara merakit:
  • hubungkan servo dengan konektor servo di serv0.
  • rakit 2 motor secara pararel kemudian hubungkan masing_masing pasangan motor dengan M1 dan M3.
  • hubungkan baterai holder dengan saklar, kemudian hubungkan dengan konektor eksternal power pada motor shield. 
  • hubungkan ultrasonic sensor pada motor shield (trig ke a5, echo ke a4, vcc ke 5v, grnd ke ground).
  • download program robot pada arduino uno.
  • satukan motor shield dengan arduino.

kode program:
#include <AFMotor.h>
#include <Servo.h>
#include <Ultrasonic.h>
typedef enum {
  RADAR_LEFT = 0, RADAR_CENTER = 60, RADAR_RIGHT = 120 } RadarDirection;
Servo radarServo;  // create servo object to control a servo
int RADAR_INPUT_PIN = 9;
int RADAR_MOVEMENT_DELAY = 250;
int RADAR_DISTANCE_MINIMAL_IN_CM = 80; // centimeter
int RADAR_DISTANCE_UNKNOWN_IN_CM = 0; // centimeter
int RADAR_DISTANCE_UNDEFINED = -1;
Ultrasonic radarUltrasonic(A5,A4);
AF_DCMotor motorLeft(3, MOTOR12_64KHZ); // create motor #2, 64KHz pwm
AF_DCMotor motorRight(1, MOTOR12_64KHZ); // create motor #1, 64KHz pwm
int MOTOR_SPEED = 200;// 150;
int MOTOR_TURN_SPEED = 200; //250;
int MOTOR_DELAY = 150;
int MOTOR_TURN_DELAY = 500;
int MOTOR_BACKWARD_DELAY = 1000;
struct RobotState {
  int leftMotorDirection;
  int rightMotorDirection;
  int leftMotorSpeed;
  int rightMotorSpeed;
  int motorDelay;
  boolean isBackwardState;
};
struct RadarDistances {
  int left;
  int center;
  int right;
};
RobotState forwardState = {
  FORWARD,FORWARD,MOTOR_SPEED,MOTOR_SPEED,MOTOR_DELAY,false};
RobotState backwardState = {
  BACKWARD,BACKWARD,MOTOR_SPEED,MOTOR_SPEED,MOTOR_BACKWARD_DELAY,true};
RobotState backwardUturnState = {
  FORWARD,BACKWARD,MOTOR_SPEED,MOTOR_SPEED,MOTOR_TURN_DELAY,true};
RobotState turnLeftState = {
  RELEASE,FORWARD,MOTOR_SPEED,MOTOR_TURN_SPEED,MOTOR_TURN_DELAY,false};
RobotState turnRightState = {
  FORWARD,RELEASE,MOTOR_TURN_SPEED,MOTOR_SPEED,MOTOR_TURN_DELAY,false};
RobotState stopState = {
  RELEASE,RELEASE,MOTOR_SPEED,MOTOR_SPEED,MOTOR_BACKWARD_DELAY,false};
RobotState currentState = forwardState;
RadarDistances currentDistances = {
  RADAR_DISTANCE_UNDEFINED,RADAR_DISTANCE_UNDEFINED,RADAR_DISTANCE_UNDEFINED};
RadarDistances lastDistances = {
  RADAR_DISTANCE_UNDEFINED,RADAR_DISTANCE_UNDEFINED,RADAR_DISTANCE_UNDEFINED};
void setup() {
  initTrace();
  initRadar();
  initMotors();
}
void initTrace(){
  Serial.begin(9600);           // set up Serial library at 9600 bps
  Serial.println("My First Robot");
}
void initRadar(){
  radarServo.attach(RADAR_INPUT_PIN);  // attaches the servo on pin RADAR_INPUT_PIN to the servo object
  radarServo.write(RADAR_CENTER);
}
void initMotors(){
  motorLeft.setSpeed(MOTOR_SPEED);     // set the speed to 200/255
  motorRight.setSpeed(MOTOR_SPEED);     // set the speed to 200/255
}
void loop() {
  calculateRobotState();
  makeDistancesSnapshot();
  go();
}
void calculateRobotState(){
  measureDistanceAhead();
  if(
    isCenterDistanceUndefinded() ||
    isNoObstacleInPathAhead())
  {
//    if(isInCorner()){
//      currentState = backwardState; 
//      return;
//    }
    currentState = forwardState; 
    return;
  }
  measureDistanceLeft();
  measureDistanceRight();
  if(greater(currentDistances.left,currentDistances.right)){
    currentState = turnLeftState; 
    return;
  }
  if(greater(currentDistances.right,currentDistances.left)){
    currentState = turnRightState; 
    return;
  }
  if(eq(currentDistances.left,currentDistances.right)){
    currentState = backwardState; 
    return;
  }
  currentState = stopState;
}
void go(){
  Serial.print("Go : { ");
  Serial.print(currentState.leftMotorDirection);
  Serial.print(" , ");
  Serial.print(currentState.rightMotorDirection);
  Serial.println(" }");
  Serial.print("with : { left:");
  Serial.print(currentDistances.left);
  Serial.print(" , center:");
  Serial.print(currentDistances.center);
  Serial.print(" , right:");
  Serial.print(currentDistances.right);
  Serial.println(" }");
  motor();
}
void motor(){
  motorLeft.setSpeed(currentState.leftMotorSpeed);
  motorRight.setSpeed(currentState.rightMotorSpeed);
  motorLeft.run(currentState.leftMotorDirection);
  motorRight.run(currentState.rightMotorDirection);
  if(currentState.isBackwardState){
    delay(currentState.motorDelay);
    motorLeft.setSpeed(backwardUturnState.leftMotorSpeed);
    motorRight.setSpeed(backwardUturnState.rightMotorSpeed);
    motorLeft.run(backwardUturnState.leftMotorDirection);
    motorRight.run(backwardUturnState.rightMotorDirection);
    delay(backwardUturnState.motorDelay);
  }
}
void measureDistanceLeft(){
  moveRadarFastTo(RADAR_LEFT);
  currentDistances.left = internalMeasure();
}
void measureDistanceRight(){
  moveRadarFastTo(RADAR_RIGHT);
  currentDistances.right = internalMeasure();
}
void measureDistanceAhead(){
  moveRadarFastTo(RADAR_CENTER);
  currentDistances.center = internalMeasure();
}
int internalMeasure(){
  long microsec = radarUltrasonic.timing();
  return radarUltrasonic.convert(microsec, Ultrasonic::CM);
}
void moveRadarFastTo(int radarServoPosition){
  radarServo.write(radarServoPosition);              // tell servo to go to position in variable 'pos'
  delay(RADAR_MOVEMENT_DELAY);
}
boolean isCenterDistanceUndefinded(){
  return currentDistances.center == RADAR_DISTANCE_UNKNOWN_IN_CM;
}
boolean isNoObstacleInPathAhead(){
  return currentDistances.center >= RADAR_DISTANCE_MINIMAL_IN_CM;
}
boolean isInCorner(){
  boolean left = eq(currentDistances.left,lastDistances.left);
  boolean center = eq(currentDistances.center,lastDistances.center);
  boolean right = eq(currentDistances.right,lastDistances.right);
  return left && center && right;
}
boolean eq(int a, int b){
  int epsilon = 5;
  int diff = a - b;
  diff = diff < 0 ? (-1)*diff : diff;
  return diff <= epsilon ? true : false;
}
boolean greater(int a, int b){
  int epsilon = 5;
  int diff = a - b;
  if(diff > 0){
    diff = diff - epsilon;
  }
  return diff > 0;
}
void makeDistancesSnapshot(){
  lastDistances.left = currentDistances.left;
  lastDistances.center = currentDistances.center;
  lastDistances.right = currentDistances.right;
}
 
video robot rover 4 roda:

video robot 2 roda:



























Sabtu, 03 Agustus 2013

Arduino L293D Motor Drive Shield

 

arduino dual l293d motor shield

Dual l293d motor shield, merupakan shield arduino yang mudah penggunaannya untuk pembuatan aplikasi robot beroda. Karena shield ini dapat menjalankan 4 buah motor dan dua buah servo sekaligus. Shield ini adalah produk buatan dari adafruit. Namun dipasaran, sudah banyak beredar produk yang serupa (clone) dengan harga yang lebih murah.

Spesifikasi lengkap shield ini adalah sebagai berikut.

-2 konektor untuk 5V Servo.
- Dapat menjalankan 4 motor DC atau 2 stepper motor atau 2 Servo.
- Dapat menjalankan 4 motor bi-directional DC dengan kecepatan pemilihan 8-bit.
- Menjalankan 2 stepper motor (unipolar atau bipolar) dengan single coil atau double coil.
- 4 H-Bridges: per bridge menyediakan 0.6A (1.2A saat puncak) dengan perlindungan termal, dapat menjalankan motor  4.5V sampai 36V DC.
- Tombol reset.
- 2 konektor daya eksternal.
- Kompatibel untuk Uno, Mega Diecimila & Duemilanove.

Untuk file librarynya bisa mendownload di link di bawah ini.

arduino motor shield library

contoh program

1. Motor_shield_test_01

#include <AFMotor.h>

AF_DCMotor motor(2, MOTOR12_64KHZ); // create motor #2, 64KHz pwm

void setup() {
  Serial.begin(9600);           // set up Serial library at 9600 bps
  Serial.println("Motor test!");
  motor.setSpeed(200);     // set the speed to 200/255
}

void loop() {
  Serial.print("tick");
  motor.run(FORWARD);      // turn it on going forward
  delay(1000);

  Serial.print("tock");
  motor.run(BACKWARD);     // the other way
  delay(1000);


  Serial.print("tack");
  motor.run(RELEASE);      // stopped
  delay(1000);
}

 

2. Motor_shield_test_02

#include <AFMotor.h>

AF_DCMotor motor1(1);
AF_DCMotor motor2(2);
AF_DCMotor motor3(3);
AF_DCMotor motor4(4);

void setup()
{
  motor1.setSpeed(100); 
  motor2.setSpeed(100); 
  motor3.setSpeed(100); 
  motor4.setSpeed(100);
}
void loop()
{
  motor1.run(FORWARD); 
  motor2.run(FORWARD); 
  motor3.run(FORWARD); 
  motor4.run(FORWARD);
  ::delay(5000);
  motor1.run(RELEASE);
  motor2.run(RELEASE); 
  motor3.run(RELEASE); 
  motor4.run(RELEASE); 
  ::delay(5000);
}

Sabtu, 04 Mei 2013

Simple Hexapod

 

Hexapod adalah jenis robot berkaki, ia memiliki jumlah kaki sebanyak enam buah. Hexapod bisa dibuat dibuat dengan struktur yang paling sederhana hingga yang paling rumit. Dan kali ini kita akan membuat robot Hexapod sederhana hanya dengan sebuah motor listrik dan juga stick eskrim. Oleh karena itu dalam membuatnya tidak diperlukan biaya yang terlalu mahal.

Pertama-tama kita memerlukan motor listrik yang sudah dilengkapi dengan gearbox dan juga backshaft. Motor listrik jenis ini biasanya digunakan untuk pembuatan robot beroda.

-font-b-Micro-b-font-DC-6V-triaxial-TT-font-b-gear-b-font-font

Selain itu kita memerlukan saklar, kabel dan sumber tenaga berupa power bank. Kita bisa menggunakan baterai biasa untuk menggantikan powerbank. Saya menggunakan powerbank karena pertimbangan biaya operasional yang lebih murah karena bisa diisi ulang. Untuk kerangka robotnya saya hanya menggunakan stick eskrim tusuk gigi dan lem kayu.

Struktur kerangka robot

hexapod schematic system 

Detail robot yang saya buat

IMG_20130503_123750 IMG_20130503_123807

IMG_20130503_123827 PICT0084

PICT0085 PICT0086

PICT0087 PICT0088

 

berikut ini video cara kerja robot

Rabu, 01 Mei 2013

Pengaman Back-EMF

 

Back Electro-Motive Force (Back-EMF) menggambarkan energi yang harus dibuang
ketika medan elektro-magnetik berhenti dari induktor. Hal ini terjadi setiap kali motor
berhenti atau berubahan arah. Jika tegangan tidak dapat keluar melalui dioda pengaman, hal itu dapat merusak transistor yang tidak terlindungi dan mungkin saja bisa merusak pin Arduino yang mengontrolnya.

Oleh karena itu agar Back-EMF tidak merusak arduino. Kita bisa membuat rangkaian pengamannya dengan 4 buah dioda yang disolder pada motor listrik. Langkah membuatnya akan dijelaskan dengan gambar.

gambar rangkaian dioda

 dioda

Hubungkan kaki-kaki dioda, bisa juga disolder

Solder rangkaian pada motor listrik.

Solder kabel sebagai penghubung ke sumber arus. Agar lebih kuat bisa kita gunakan lem bakar/glue gun pada ragkaian.

Selasa, 30 April 2013

Speaker dari Hardisk Bekas

 

Jika di rumah memiliki hardisk rusak, jangan buru-buru dibuang. Kita masih bisa menggunakannya untuk “bermain-main”. Kali ini kita akan murubah sebuah hardisk menjadi sebuah speaker.

Ok, langsung saja kita praktekkan daripada penasaran.

Pertama-tama kita kita perlu membongkar hardisk bekas yang sudah tidak terpakai/rusak. Untuk membukanya kita memerlukan obeng dengan mata obeng berbentuk bintang dengan ukuran T8 dan T7.

letak baut

IMG_20130428_081844

gambar bagian dalam hardisk:

IMG_20130428_082402

Hilangkan bagian yang diberi tanda panah dan juga bagian piringan hardisk. Untuk mengangkat bagian piringan hardisk kita gunakan mata obeng ukuran T7.

 

Angkat magnet agar kita bisa mengambil lengan pembaca. Hati-hati dalam mengangkat magnet karena magnet dalam hardisk sangat-sangat kuat. Kalau tidak hati-hati tangan bisa terjepit.

Setelah itu kita solder bagian lengan pembaca dengan dua buah kabel.

Jika sudah kita tempatkan lengan pembaca dan magnet seperti semula.

IMG_20130428_083338

Terakhir, kita hubungkan kabel dengan amplifier atau dengan arduino seperti pada proyek sebelumnaya (Memainkan Ringtone pada Arduino).

video hasil tutorial