Jumat, 19 Oktober 2018

Kontrol BLDC Hoverboard motor dengan Arduino

Hallo, sobat Arduino Indonesia, bagaimana kabar hari ini? :)
pada postingan kali ini kita akan membahas bagaimana cara mengontrol BLDS Hoverboard motor dengan menggunakan driver motor BLDC-8015A

Hardware yang digunakan:
- Arduino Nano.
- BLDC-8015A.

Software:
- Arduino IDE.

BLDC Hoverboard Wheel (U,V,W dan HU,HV,HW)

BLDC Motor ini dilengkapi dengan 3 kabel power yaitu: U, V, W dan juga terdapat Hall sensor dengan kabel HU, HV, HW.

berikut ini penampakan dari Driver motor yang akan kita gunakan:

BLDC Motor Driver

Sobat bisa membelinya di BLDC Driver motor Aliexpress, Silahkan untuk membaca datasheet dari official websitenya untuk mengetahui apakah dapat berkerja dengan sistem yang akan sobat buat.

Oke, langsung saja kita lanjutkan pada rangkaian koneksi dari driver motor ke Arduino.

Diagram by: Muchammad Sobrun Ibnu Atfal
Berikut program pada Arduino IDE:

#define Pin13LED         13 

int speedInput  = 5;
int brake       = 6;
int enableInput = 7;
int dir         = 8;

int maxpwm = 255;
int minpwm = -255;

void setup() {
  // put your setup code here, to run once:
pinMode(speedInput, OUTPUT);
pinMode(brake, OUTPUT);
pinMode(enableInput, OUTPUT);
pinMode(dir, OUTPUT);

pinMode(Pin13LED, OUTPUT);
}

void sobsegway(int a)
{
digitalWrite(enableInput, LOW);

if (a > maxpwm){
   a = maxpwm;
  }
else if(a < minpwm){
   a = minpwm;
  }

if( a < 0 )
  {
    int c = a*-1;
    analogWrite(speedInput,c);
    digitalWrite(dir,LOW);     
  }
  else
  {
    analogWrite(speedInput,a);
    digitalWrite(dir,HIGH);   
  }

  digitalWrite(brake,HIGH);
}


void loop() {
  sobsegway(100); // maju kecepatan 100
  delay(1000);    // delay 1 second
  sobsegway(-100);// mundur kecepatan 100
  delay(1000);    // delay 1 second
}

Dengan memanfaatkan salah satu pin hall sensor pada motor yang dikoneksikan dengan pin interrupt Arduino, kita dapat melihat berapa kecepatan motor saat motor berputar.

Kamis, 18 Oktober 2018

Komunikasi Serial RS485, Dari PC ke Arduino.

Hallo sobat Arduino Indonesia, pada postingan kali ini kita akan membangun sebuah komunikasi serial RS485 antara PC ke Arduino dengan menggunakan modul RS485 TTL Converter. Menurut datasheet panjang kabel yang bisa kita gunakan menggunakan komunikasi ini bisa mencapai 1,200m. namun sejauh ini yang sudah pernah dicoba hanya sepanjang 1m.

Hardware yang kita gunakan antara lain:
1. Arduino NANO 4 buah sebagai slave.
2. Modul MAX485 4 buah.
3. USB to RS485 1 buah.
4. PC/Notebook sebagai master.

Software:
- Arduino IDE (saya menggunakan versi 1.8.3)

Berikut rangkaian schematicnya:


Oke, sekarang langsung saja ke program:

#include <SoftwareSerial.h> 

#define SSerialRX        10  //Pin R1 pada RS485 TTL Converter 
#define SSerialTX        11  //Pin D1 pada RS485 TTL Converter 
#define SSerialTxControl 3   //Pin DE dan RE pada RS485 TTL Converter

#define RS485Transmit    HIGH 
#define RS485Receive     LOW  

String inputString = "";
boolean stringComplete = false;

SoftwareSerial RS485Serial(SSerialRX, SSerialTX);

void setup() {
// put your setup code here, to run once:
pinMode(SSerialTxControl, OUTPUT);
digitalWrite(SSerialTxControl, RS485Receive);
RS485Serial.begin(115200);   //setting baudrate
inputString.reserve(200);
}

void serialEvent() {
  while (RS485Serial.available()) {
    char inChar = (char)RS485Serial.read();
    inputString += inChar;
    if (inChar == '\n') {
      stringComplete = true;
      digitalWrite(SSerialTxControl, RS485Transmit);
    }
  }
}

void loop() {
// put your main code here, to run repeatedly:
if (RS485Serial.available()> 0 ){
    inputString = RS485Serial.readString();
    String Start = inputString.substring(0,10);
    
    digitalWrite(SSerialTxControl, RS485Transmit);
    RS485Serial.println("OK");
    RS485Serial.print("Data : ");
    RS485Serial.println(Start);
    digitalWrite(SSerialTxControl, RS485Receive);  
    }}

Berikut ini merupakan hasil dari Serial Monitor pada Arduino IDE:




Senin, 08 Oktober 2018

DIY Bluetooth HID dari bluetooth HC05/HC06

hallo sobat arduino, pada kesempatan kali ini saya akan berbagi bagaimana caranya menjadikan bluetooth HC05/HC06 menjadi bluetooth HID (Human Interface Device). Sebenarnya sih sudah ada kalau beli langsung Bluetooth HID, tapi harganya bisa 20x lipat dari harga bluetooth HC05/HC06. jadi tinggal pilih mana, mau update atau mau beli langsung.

Oke langsung saja, pertama yang perlu disiapkan adalah
Langkah instalasi software
  • install bluesite
  • copy dan replace file usbisp.dll (dari csr-spi-ftdi-0.5.1\csr-spi-ftdi-0.5.1\lib-win32) ke dalam instalan bluesite, di folder (Program Files (x86)\CSR\BlueSuite 2.6.6) 
  • buka file zadig-2.4.exe dan sambungkan kabel downloader ke ftdi yang sudah di siapkan

  • replace driver dengan libusbK
  •  Jalankan blueflash
  • klik stop processor


  •  klik dump untuk mendapatkan firmware aslinya bluetooth yang akan dirubah, kemudian simpan file dump.xpv di hardisk
  • Start prosesor kembali 
  • Jalankan PSTOOL
  • pilih seperti di bawah ini

  • klik ok

  • Klik file -> dump dan simpan file dump.psr di folder yang sudah di tentukan.


  • buka file dump.psr yang sudah di create sebelumnya,
  • bikin new file  update.psr. kemudian copykan file berikut ini dari dump ke update (tiap-tiap bluetooth mempunyai alamat yang berbeda-beda)
    • // PSKEY_BDADDR
    • // PSKEY_ANA_FTRIM
    • // PSKEY_ANA_FREQ

  •  Buka kembali blueflash, kemudian klik stop prosesor, dan klik choose file, pilih rn-42.xpv dan klik download



  • Setelah complete, silahkan klik start prosesor kembali, kemudian buka pstool.
  • pada tahap ini adalah merubah adress bluetooth bawaannya software rn-42 dengan address sebelumnya yang sudah di amankan  terlebih dahulu.
  • klik file -> merge dan pilih update.psr, klik open.
  • klik entry-read entry

  • Alamat bluetooth akan berubah seperti sebelumnya

  • selamat anda berhasil merubah bluetooth biasa menjadi bluetooth HID
sambunkan hasil bluetooth HID dengan arduino
dengan konfigurasi
tx bluetooth ke pin 8
rx bluetooth ke pin 9
vcc ke 5v
gnd ke gnd

dan program berikut ini

/*nolineending
 * $$$
 * newline
 * SF,1
 * S~,6
 * SN,nama bluetooth
 * SH,0230
 * R,1 -->reboot
 */

#include <SoftwareSerial.h>

//#define RX_PIN 10
//#define TX_PIN 9

#define RX_PIN 8
#define TX_PIN 9

SoftwareSerial swSer(RX_PIN,TX_PIN);

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

void loop() {
  // put your main code here, to run repeatedly:
while(swSer.available()>0)
{
  Serial.write(swSer.read());
}
while(Serial.available()>0)
{
  swSer.write(Serial.read());
}
}
buka serial monior dan ketikkan berikut ini

$$$ --> cmd
SF,1 -->AOK
S~,6 -->AOK
SN,nama bluetooth-->AOK
SH,0230-->AOK
R,1 -->reboot



Rabu, 12 September 2018

Cara membedakan FTDI Asli dengan FTDI Palsu

hallo sobat arduino, post kali ini tidak ada hubungannya sama arduino, tapi sering kali dijumpai masalah seperti ini. Kadang kalau kita menggunakan windows original arduino kita tidak bisa di download, gara-gara ftdi nya bermasalah. nah to the point aja, permasalahannya adalah ftdi yang kalian gunakan adalah fake alias palsu.

oke berikut cara paling muda untuk membedakan fake atau asli lewat software,

langkah langkahnya
  • colokin kabel usb ke ftdi downloader atau arduino built  ftdi sebagai bootloader
  • buka device manager 

  • nampak pada gambar tersebut USB Serial port pada com 6
  • Masuk Device Manager > Ports > USB Serial Port (COMx) > (Right Click) >  Properties > Details > Device Instance Path , Serial Number FTDI setelah tanda “+”  PID . contoh screenshoot di bawah ini adalah 00000000A

  • FTDI diatas adalah fake karena FTDI mempunyai alamat yang unix (berbeda2).
  • Sekarang saya coba ke FTDI lainnya

  • FTDI yang kedua beralamatkan A9M9DV3R, setelah saya browsing tidak menemukan adanya fake pada FTDI ini, berarti FTDI yang saya gunakan ke 2 adalah asli
Semoga bermanfaat, selamat belajar arduino

Minggu, 19 Agustus 2018

Membuat enkripsi sederhana dengan data Arduino

Hallo sobat Arduino Indonesia, tujuan dari posting kali ini adalah membuat data yang kita simpan di arduino menjadi data yang aneh (ternkripsi). sederhana sih, tinggal merubah misal A menjadi M dan sebaliknya. oke langsung saja kita coba


int inByte = 0;           
void setup() {
  Serial.begin(9600);
  while (!Serial) {
         ;  // wait for serial port to connect
         }
  establishContact();  // wait for incoming data
  } /* setup */


void loop() {
  // Contoh:   ABC -> NOP -> ABC
  if (Serial.available() > 0)        // if you have data input
         {
         inByte = Serial.read();        // read one byte of input
         // A to M get converted to N to Z

         if (inByte >= 'A' && inByte <= 'M')
            {
            inByte += 13;
            } /* if upper case A-M */

         // N to Z get converted to A to M
         else if (inByte >= 'N' && inByte <= 'Z')
            {
            inByte -= 13;
            } /* if upper case N-Z */
         // Lower case a to m get converted to n to z
         else if (inByte >= 'a' && inByte <= 'm')
            {
            inByte += 13;
            } /* if lower case a-m */
         // Lower case n to z get converted to a to m
         else if (inByte >= 'n' && inByte <= 'z')
            {
            inByte -= 13;
            } /* if lower case n-z */
         Serial.write(inByte);   // write the encrypted character back
         }

}


void establishContact()
   {

   // write 'A' repeatedly until you receive data from the host

   while (Serial.available() <= 0)
          {
          Serial.print('W');   // write 'A' to the host
          delay(1000);           // this delay is optional
          } // while Serial.available() <= 0

   Serial.println();
   } // establishContact()

cek di serial monitor dan coba tuliskan sesuatu disana dan klik enter

Salam Arduino Indonesia

Selasa, 29 Mei 2018

Update ESC Firmware dengan menggunakan arduino

Hai sobat Arduino Indonesia, pada kesempatan kali ini saya akan berbagi bagaimana memnfaatkan arduino untuk update firmare ESC. Pada kali ini saya menggunakan ESC yang programable, yaitu Emax BLHeli 30A.

Oke langsung saja yang perlu disiapin

  1. ESC Emax BLHEli 30A
  2. Arduino nano + shield
  3. Batere 3sel
Langkah selanjutnya,
  • buka pembungkus esc dan solder bagian dalam seperti ini 

  • Ada 3 kabel yaitu orange, merrah dan coklat. sambungkan kabel orange ke pin nomor 12 Arduino, kabel merah ke nomor 11 arduino dan kabel coklat ke GND Arduino
  • Pasang Arduino ke PC dan jalankan aplikasi BLHELISUITE yang sudah di download sebelumnya. 
  • Masuk ke tab Make Interfaces dan ikuti seuai urutan yang ada di sebelah kanan
  • Setelah klik Arduino 4way - interface, akan muncul dialog klik saja OK dan pilih seperti gambar di bawah ini. kemudian klik open, tunggu sampai proses selesai.

  • Pada menu atas pilih nomor 2 (SILABS C2 4way-if)
  •  dan pilih com nya pada bagian bawah sesuai com device manager yang ada di laptop masing masing. kemudian klik connect.

  •  Setelah itu pilih framework yang akan di instal dan klik OK

  • Apabila ingin merubah settingannya silahkan di oprek2 sendiri di bagian berikut ini, jangan lupa ketik write setup untuk merubah hasilnya
  • Selamat mencoba sobat Arduino Indonesia. Salam Arduino


Kamis, 01 Maret 2018

Program sensor ultrasonic Ping Arduino

Hallo Sobat Arduino, karena di  meja penulis ada beberapa sensor jarak ping maka apa salahnya kalau berbagi dengan sobat bagaimana cara memprogram sensor jarak / ultrasonic ping.

oke to the point aja ya, yang diperlukan adalah

1 buah sensor ultrasonic ping
1 buah arduino
1 buah project board
3 buah kabel jumper male to male


Setelah bahan tersedia sekarang tinggal di rangkai seperti berikut

Sensor Ping -  Arduino
gnd              -  GND
5V               -  5V
Sig              -  Pin 7

Tulis code sebagai berikut :

/* Ping))) Sensor

   This sketch reads a PING))) ultrasonic rangefinder and returns the
   distance to the closest object in range. To do this, it sends a pulse
   to the sensor to initiate a reading, then listens for a pulse
   to return.  The length of the returning pulse is proportional to
   the distance of the object from the sensor.

   The circuit:
    * +V connection of the PING))) attached to +5V
    * GND connection of the PING))) attached to ground
    * SIG connection of the PING))) attached to digital pin 7

   http://www.arduino.cc/en/Tutorial/Ping

   created 3 Nov 2008
   by David A. Mellis
   modified 30 Aug 2011
   by Tom Igoe

   This example code is in the public domain.

 */

// this constant won't change.  It's the pin number
// of the sensor's output:
const int pingPin = 7;

void setup() {
  // initialize serial communication:
  Serial.begin(9600);
}

void loop() {
  // establish variables for duration of the ping,
  // and the distance result in inches and centimeters:
  long duration, inches, cm;

  // The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
  // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
  pinMode(pingPin, OUTPUT);
  digitalWrite(pingPin, LOW);
  delayMicroseconds(2);
  digitalWrite(pingPin, HIGH);
  delayMicroseconds(5);
  digitalWrite(pingPin, LOW);

  // The same pin is used to read the signal from the PING))): a HIGH
  // pulse whose duration is the time (in microseconds) from the sending
  // of the ping to the reception of its echo off of an object.
  pinMode(pingPin, INPUT);
  duration = pulseIn(pingPin, HIGH);

  // convert the time into a distance
  inches = microsecondsToInches(duration);
  cm = microsecondsToCentimeters(duration);

  Serial.print(inches);
  Serial.print("in, ");
  Serial.print(cm);
  Serial.print("cm");
  Serial.println();

  delay(100);
}

long microsecondsToInches(long microseconds) {
  // According to Parallax's datasheet for the PING))), there are
  // 73.746 microseconds per inch (i.e. sound travels at 1130 feet per
  // second).  This gives the distance travelled by the ping, outbound
  // and return, so we divide by 2 to get the distance of the obstacle.
  // See: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
  return microseconds / 74 / 2;
}

long microsecondsToCentimeters(long microseconds) {
  // The speed of sound is 340 m/s or 29 microseconds per centimeter.
  // The ping travels out and back, so to find the distance of the
  // object we take half of the distance travelled.
  return microseconds / 29 / 2;
}
atau sobat bisa buka di example - sensor - ping


Setelah upload ke board arduino, sobat buka serial monitor untuk melihat hasilnya

Selamat mencoba,

SALAM ARDUINO INDONESIA