Minggu, 24 Maret 2019

Install PIXY 2 Arduino

Hallo sobat arduino, Pixy 2 ini sebenarnya sudah ada sejak tahun 2018 tapi saya baru sempat untuk mencobanya, karena yang pixy original yang dulu sudah pernah saya posting disini sudah bisa banyak membantu untuk kegiatan image processing dengan arduino.

Pixy 2 unboxing

Yang perlu di persiapkan adalah, 
- pixymon versi 2 bisa di download disini (download)
- pixy2 firmware (download)
- Arduino library pixy2 (download)

Setelah didownload semua, 
Install program pixymon v2

Install pixymon V2


Install complete

Jalankan pixymon dan install firmware, yang sebelumnya sudah di download

Pixy v2 siap digunakan.

Untuk membaca program dengan arduino install terlebih dahulu library pixy 2

Salam Arduino Indonesia


Rabu, 20 Maret 2019

membaca data IMU gy-25 dengan Arduino

Hallo Sobat Arduino, GY-25 merupakan IMU sensor dengan output yang berupa pitch, yaw, roll. Bedanya dengan IMU seri yang lainnya adalah gy25 mempunyai pemrosesan data tersendiri sehingga output langsung YPR, dan tidak memerlukan filter-filter lagi.


Pinout:
Pin1 VCC Power + (3v-5v)
Pin 2 RX Receiving data from serial
Pin 3 TX Serial data transmission
Pin 4 GND Power Ground
Pin 5 RST Internal use, no connection, vacant
Pin 6 B0 Internal use, no connection, vacant
Pin 7 SCL I2C clock
Pin 8 SDA I2C data

Spesifikasi:
Measuring range -180 ° 1 °
Resolution 0.01 °
measurement accuracy 1
Repeatability 1
Frequency response 100 HZ (115200bps)
Operating Voltage 35 V
Working current 15mA
Operating temperature -20 ° 8 °
Storage temperature -40 ° 1 °
size 11.5mm × 15.5mm

Komunikasi Serial UART
Baud rate: 115200 bps Parity bit: N Data bits: 8 Stop bits: 1 (DEFAULT)
Baud rate: 9600 bps Parity bit: N Data bits: 8 Stop bits: 1

ada beberapa perintah serial untuk melakukan konfigurasi dan pembacaan data dari sensor
  1. 0xA5 + 0x51: query mode, kirim data sensor ketika ada permintaan
  2. 0xA5 + 0x52: Automatic mode, kirim data sensor secara realtime dalam bentuk biner
  3. 0xA5 + 0x53: Automatic mode, kirim data sensor secara realtime dalam bentuk ASCII
  4. 0xA5 + 0x54: correction mode, Kalibrasi roll pitch. tahan beberapa detik sebelum melakukan kalibrasi
  5. 0xA5 + 0x55: correction mode, kalibrasi kompas. Kompas akan diset ke 0 ketika perintah ini dikirim
Untuk konfigurasi rangkaian, saat percobaan ini menggunakan arduino Mega, dengan memanfaatkan serial 3 di arduino mega

Susunan pin 
Mega - gy 25
5v  ---- vcc
gnd ---- gnd
TX3 --- RX
RX3 ---- TX

untuk coding programnya

void setup(){
 Serial.begin(115200); // Aktif Serial monitor
 Serial3.begin(115200); // Aktif Serial GY25
Serial.println("kalibrasi");
 delay(3000);

 // Kalibrasi Tilt
 Serial3.write(0xA5);
 Serial3.write(0x54);

 delay(1000);
 Serial.println("kalibrasi Tilt done");

 // Kalibrasi Heading
 Serial3.write(0xA5);
 Serial3.write(0x55);

 delay(100);
 Serial.println("kalibrasi Heading done");
 // Output ASCII
 Serial3.write(0xA5);
 Serial3.write(0x53);

 delay(100);
}

void loop(){
 // Baca data realtime
 Serial.println(Serial3.readStringUntil('\n'));
}

Hasil di serial monitor

Catatan :
Sensor akan kalibrasi ketika power di hidupkan, kurang lebih 3000ms, dan harus dalam keadaan diam (tidak bergerak).

Minggu, 13 Januari 2019

Menjalankan Servo tanpa menggunakan delay (servo milis)

Hallo sobat Arduino Indonesia. Servo merupakan salah satu jenis aktuator yang ada kontrol baliknya (loop) berupa potensiometer untuk mendapatkan putaran sesnuai dengan derajat yang dimasukkan.

Jenis Servo di bagi menjadi 2, servo continues (360 derajat) dan non contiunes (180 derajat).

pada kesempatan kali ini sobat akan belajar bagaimana mengendalikan motor servo tapi tidak menggunakan delay, artinya ada beberapa alasan kenapa perintah delay tidak digunakan dalamsuatu pemrograman. Salah satunya adalah jika ingin multitasking maka akan sulit untuk menentukan, karena delay tidak bisa di ganggu kecuali dengan perintah interupt.

Oke langsung saja,
bahan yang di butuhkan
  • Arduino Nano
  • Servo
  • Kabel Jumper
Cara Instalasi
Sambungkan Kabel Kuning/Orange ke pin 9
Kabel merah ke 5v
kabel  hitam ke GND


Program


#include<Servo.h>
Servo myServo;
int servoPin =  9;

int pos;

void setup() {
// put your setup code here, to run once:
 
  Serial.begin(9600); //default comm speed between arduino and serial monitor. no need to change.
  Serial.println("Servo with milis");  // so we know what sketch is running
  myServo.attach(servoPin);
}

void loop() {
  // put your main code here, to run repeatedly:
 
  currentMillis = millis();   // capture the latest value of millis()
  moveservo(70,110,500,500);

}

void moveservo(int pos1, int pos2, int interval1, int interval2) {

  if (pos == pos1) {
    if ((unsigned long) currentMillis - previousMillis >= interval1) {
      pos = pos2;
      myServo.write(pos);
      // and save the time when we made the change
      previousMillis += interval1;
      }
  }
  else { 
      if ((unsigned long) currentMillis - previousMillis >= interval2) {
      pos = pos1;
      myServo.write(pos);
      // and save the time when we made the change
      previousMillis += interval2;
    }
  }
Selamat Belajar Arduino, Salam Arduino Indonesia