Showing posts sorted by relevance for query serial-in-arduino. Sort by date Show all posts
Showing posts sorted by relevance for query serial-in-arduino. Sort by date Show all posts

Thursday 12 May 2016

MENGATASI MASALAH ARDUINO IDE stk500_getsync(): not in sync: resp=0x00

[1] Driver USB to UART Tidak Terpasang
    Permasalahan diatas merupakan salah satu kasus yang paling sering terjadi, terutama sekali pagi pengguna yang masih pemula ,Hal ini disebabkan karena jenis koneksi yang digunakan untuk berkomunikasi antara komputer dengan mikrokontroler ternyata berbeda-beda, hal ini pun terjadi pada papan Arduino yang menggunkan Chip FTDI atau USB to UART/ Serial.

    lain halnya Jika anda memiliki papan Arduino R3 yang menggunakan konverter USB to Serial berupa chip Atmega16U2 maka biasanya tidak terjadi masalah komunikasi diatas. Hal ini karena firmware Atmega16U2 yang digunakan sebagai media komunikasi (USB Serial Converter) akan mampu menciptakan Virtual COM Port dengan driver standar USB COM sehingga tidak membutuhkan driver eksternal, 
Gambar 1. Arduino Uno dengan Chip Atmega16U2

    Bagi anda pengguna Windows 8, ternyata driver Arduino (Arduino IDE Versi 1.0.5) belum tersertifikasi sehingga pada beberapa jenis papan Arduino masih saja mengalami kegagalan Upload. Untuk menyelesaikan masalah tersebut silahkan Unduh Arduino IDE 1.0.6 yang sudah diperbaiki Signatur Driver-nya 
Arduino Chip FTDI FT232

   Pada beberapa jenis papan Arduino masih ada yang menggunakan komunikasi USB to UART menggunakan chip FTDI atau FT232. Misal Arduino Nano, atau Arduino Pro Micro yang membutuhkan tambahan perangkat USB to UART yang biasanya direkomendasikan menggunakan FTDI Friend. Jenis komunikasi serial USB to UART yang menggunakan chip FTDI (biasanya FT232) memerlukan driver eksternal yang harus dipasang pada sistem operasi kita secara manual. Kita harus mengunduh driver-nya sendiri dan kemudian memasangnya pada komputer kita. Unduh driver FTDI FT232 disini.

     Komunikasi serial selain menggunakan FT232 ternyata baru-baru ini beredar papan Arduino murah dengan komunikasi serial menggunakan chip CH340. Chip jenis ini juga sama memerlukan driver eksternal untuk menciptakan Virtual COM Port yang berfungsi sebagai jalur komunkasi serial. Unduh driver CH340 dari situs resminya disini atau disini bagi pengguna Linux dan Mac.

Gambar 3. Arduino Uno dengan Chip CH340

    Chip CH340 adalah jenis USB to UART yang belum lama digunakan. Chip CH340 lebih murah dari pada FT232 sehingga papan Arduino yang menggunakan chip China ini harganya lebih murah. Papan Arduino yang menggunakan Chip CH340 terkenal dengan nama produk DCcduino.

    Jika kita berhasil memasang driver USB to UART pada komputer tapi ternyata masih muncul masalah avrdude: stk500_getsync(): not in sync: resp=0x00 maka kesalahan mungkin ada pada penjelasan berikutnya.

[2] Kesalahan Board dan Serial Port
     Permasalahan ini adalah hal biasa, baik bagi pemula atau pun yang sudah profesional. Bagi pemula biasanya terjadi karena masih bingung dalam mengenali Arduino, tapi bagi profesional biasanya karena terlupa atau kurang teliti. Memiliki beberapa tipe papan Arduino kadang membuat proses pemindahan tipe papan Arduino menjadi terlupakan dan munculah kegagalan komunikasi. Solusinya mudah saja, setelah selesai menulis kode Arduino dan sebelum melakukan compile serta upload kode pastikan bahwa pemilihan papan Arduino pada perangkat lunak sudah sesuai dengan tipe papan Arduino yang akan menjadi target. Jika anda menggunakan Arduino Uno sebagai target, pastikan bahwa Arduino IDE juga di set pada Arduino Uno. Untuk menyesuaikan papan Arduino dengan Arduino IDE maka klik menu Tools > Board > Pilih sesuai dengan tipe Papan Arduino yang anda miliki.

setelah itu pastikan tipe papan Arduino antara perangkat lunak dengan perangkat keras sudah sesuai, maka selanjutnya memastikan jalur komunikasi serial yang digunakan antara komputer (Arduino IDE) dengan papan Arduino. Periksalah USB Serial Port (COM) yang digunakan oleh papan Arduino pada Device Manager di komputer anda.

Setelah yakin tipe dan jalur komunikasi sudah benar, maka selanjutnya pastikanlah Serial Port antara Device Manager dengan Arduino IDE sudah sesuai. Jika jalur komunikasi yang digunakan pada Device Manager adalah COM3 maka pastikan Arduino IDE juga menggunakan COM3. Klik menu Tools > Serial Port > Pilih COM yang digunakan sesuai dengan yang ada pada Device Manager.

Jika sinkronisasi antara komputer dengan papan Arduino sudah benar tapi ternyata masih muncul masalah avrdude: stk500_getsync(): not in sync: resp=0x00 maka kesalahan mungkin ada pada penjelasan berikutnya.

[3] Penggunaan Pin 0 (RX)
  Permasalahan ini memang jarang terjadi. Hal ini karena pin 0 (RX) yang tersedia pada Arduino jarang sekali digunakan. jadi ada baiknya anda jangan menghubungkan rangkaian ataupun module tambahan pada saat hendak mengUpload program.

[4] Arduino IDE Korup
Permasalahan ini jarang sekali terjadi namun untuk mengetahui program Arduino korup atau tidaknya anda bisa mengeceknya dengan menggunakan board Arduino lainya.

atau anda juga bisa mengecek papan Arduino anda dengan PC lainya jika di dapati Papan Arduino anda bekerja dengan baik ada kemungkinan softwere Arduino IDE anda korup atau komputer tidak dalam keadaan baik.

Jika setelah papan Arduino dicoba pada komputer lain tapi ternyata masih muncul masalah avrdude: stk500_getsync(): not in sync: resp=0x00 maka kita akan masuk ke tahap selanjutnya yakni pengecekan boardloader

[5] Bootloader Rusak atau Hilang
   Akhirnya sampai juga pada tahap ini. Permasalahan pada bootloader merupakan permasalahan yang tidak terlalu rumit terkecuali bagi para pemula. untuk mengetahui boadloader dalam keadaan baik atau rusak anda cukup melihat led pada pin 13 jika pertama kali dinyalakan LED akan berkedip sekali secara cepat, jika tidak berkedip ada kemungkinan boodloader hilang atau IC dalam keadaan rusak, cara mengetahuinya hubungkan USBasp pada pin ISP IC ATMega16au lalu gunakanlah softwere AVR Dudes untuk mendetect jika terbaca maka ic dalam keadaan baik jika tidak itu berarti ic dalam keadaan rusak, jika IC dalam keadaan baik maka tanamkanlah kembali boodloader pada IC tersebut.

jika yang satu  ini jugak tidak bisa maka ceklah boodloader pada IC targetnya, atau mikro utamanya, cara pengecekanya sama dengan cara pengecekan boodloader pada IC USB To UART yakni dengan menghubungkan USBasp ke ISP targetnya lalu klik tombol detect pada AVR Dudes jika sudah terdetect maka IC dalam keadaan baik dan burn boodloader IC targetnya.

Sunday 8 December 2013

EEPROM MEMORY

Udah seminggu kagak posting nih.. Rada kangen juga nih. Kali ini, saya akan mem-posting simulasi EEPROM MEMORY dengan cara menyimpan alamat dan data dari IDE ke dalam Arduino. Tujuan dari simulasi ini adalah untuk melakukan pembacaan data dari MEMORI EEPROM dan dapat melakukan penyimpanan DATA pada MEMORI EEPROM. Alat yang kita gunakan pada simulasi ini yaitu Laptop/PC, Arduino Uno, dan Kabel USB tipe B. Program ini menggunakan KOMUNIKASI SERIAL menggunakan SERIAL TERMINAL 1 atau aplikasi yang lainnya. Pada program ini USER dapat memerintah perintah BACA dan TULIS, DARI atau KE MEMORI EEPROM. Mari simak langkah-langkah di bawah ini :
  • Ayo ketik sintaks coding program ini di Arduino IDE anda yang telah terinstall di Laptop/PC sobat semua ...
#include <EEPROM.h> boolean exitProgram = 0;
void setup() {
Serial.begin(9600);
Serial.println("=========  EEPROM
Access Via
Serial
==== ====");
Serial.println("Type this command
to execute
EEPROM opera tion");
Serial.println("write : For write
data to EEPROM");
Serial.println("read
: For read
data
from
EEPROM");
Serial.println("clear
: For
clear all
data
in EEPROM");
Serial.println("exit
: For
exit
from
program");
}
void loop() { int command;
while(!exitProgram) { do {
Serial.print("Type Command >> "); while(Serial.available()==0);command = readCommandFromSerial();

switch(command) {
case 1 : Serial.println("Write EEPROM Selected"); writeEEPROM();
break;
case 2 : Serial.println("Read EEPROM Selected"); readEEPROM();
break;
case 3 : Serial.println("Clear EEPROM Selected"); clearEEPROM();
Serial.println("Clear EEPROM Finished"); break;
case 4 : Serial.println("Exit From Program"); exitProgram = 1;
break;
default : Serial.println("Wrong Command, Please Ty pe Again !"); break;
}
}
while(command == 0);
}
}
int readCommandFromSerial() { char stringFromSerial[10]; char data;
nt command;
int countData = 0; for(int i=0;i<10;i++) {
stringFromSerial[i]=0;
}
while(true) { if(Serial.available()) {
data = Serial.read(); Serial.write(data); if(data=='\n') {
break;
}
else { if(data!='\r') {
stringFromSerial[countData] = data; countData++;
}
}
}
}
if(strcmp(stringFromSerial,"write")==0){ command = 1;
}
else if(strcmp(stringFromSerial,"read")==0){ command = 2;
}
else if(strcmp(stringFromSerial,"clear")==0){ command = 3;
}
else if(strcmp(stringFromSerial,"exit")==0){ command = 4;
}
else{
command = 0;
}
return command;
}
int readValFromSerial() { char stringFromSerial[10]; char data;
int val;
int countData = 0; for(int i=0;i<10;i++) {
stringFromSerial[i]=0;
}
while(true) { if(Serial.available()) {
data = Serial.read(); Serial.write(data); if(data=='\n') {
break;
}
else { if(data!='\r') {
stringFromSerial[countData] = data; countData++;
}
}
}
}
sscanf(stringFromSerial,"%d",&val); return val;
}
void clearEEPROM() { for(int i=0;i<512;i++) {
EEPROM.write(i,0);
}
}
void writeEEPROM() { int address;
do {
Serial.print("Address : "); address = readValFromSerial(); if(address>512) {
Serial.println("Addres maximal is 512 !, Please type again !");
}
}
while(address>512); int data;
do {
Serial.print("Data : "); data = readValFromSerial(); if(data>512) {
Serial.println("Data maximal is 512 !, Please type ag ain !");
}
}
while(data>512); EEPROM.write(address,data); Serial.println("EEPROM Write Success !");
}
void readEEPROM() {

int address; do {
Serial.print("Address : "); address = readValFromSerial(); if(address>512) {
Serial.println("Addres maximal is 512 !, Please type again !");
}
}
while(address>512);
int data = EEPROM.read(address); Serial.print("Data in Address "); Serial.print(address,DEC); Serial.print(" : "); Serial.println(data,DEC);
}
  • Jangan Lupa melakukan COMPILE dan UPLOAD, untuk menjalankan program tersebut di Ardunino.
 
  • Bukalah Serial Monitor untuk mengketik (menulis) data dari IDE yang akan di tujukan pada Arduino Uno menggunakan MEMORY EEPROM.
 
  • Ketikkan Write untuk menulis alamat EEPROM, Setelah itu matikan atau lepas Power Supply Arduino Uno dan tutup Serial monitor.
 
  • Sambungkan lagi Power Supply Arduino dan bukalah Serial Monitor, dan ketikan Read (Baca) untuk melihat apakah data yang telah kita simpan tadi, masih tersimpan di EEPROM Arduino atau tidak. 
 
  • Jika TERSIMPAN maka tampilannya akan sepertin ini.
 
 
EEPROM pada Arduino Uno ini menggunakan AT-MEGA 328, dimana pada AT-MEGA 328 memiliki karakteristik kapasitas EEPROM-nya bisa mencapai 512 byte dan 8 bit, dan memiliki data SRAM sampai dengan 512 byte. Dia juga mampu bekerja pada tegangan 2,7 VDC - 5,5 VDC.
Penampakan AT-MEGA 328
Fungsi EEPROM pada Arduino adalah sebagai penyimpan data dari IDE ke atau menuju dari Arduino. Jadi, ketika Supply Arduino di matikan dan di hidupkan kembali maka data yang telah di simpan pada EEPROM masih TERSIMPAN, kecuali ada Perintah CLEAR sebelumnya. Jika, ada Perintah CLEAR maka data yang telah di tulis (disimpan) tadi akan terhapus.

Mengapa sih DATA yang di simpan pada EEPROM maksimal harus 512 byte? Karena, batas memory pada EEPROM pada Arduino adalah 512 Byte. Arduino uno menggunakan mikroprosesor dengan tipe ATMEGA328 dan memiliki kapasitas EEPROM sampai dengan 512 byte dan 8 bit dan memiliki data SRAM internal 512 byte.

Mengapa sih ALAMAT pada EEPROM hanya di batasi sampai dengan 512 byte? Karena, ATmega 328 juga mempunyai 2 KB SRAM dan 1 KB EEPROM (yang dapat dibaca dan ditulis (RW/read and written) dengan EEPROM library) dan batas alamat memory dari EEPROM hanya antara 0(nol)- sampai dengan 512 saja.