Sunday, 26 February 2017

Kontrol Rellay Via SMS-menggunakan modul SIM800L Arduino dilengkapi PCB dan codingnya


Dengan alat ini kita dapat mengendalikan alat elektronik jarak jauh, misal lampu teras, lampu kamar, pompa air, dal lain-lain, hanya cukup dengan kirim SMS.

berikut Skemanya :

design PCB nya







Pcb siap di pakai


rangkaian yang telah dirakit siap digunakan










Bagaimana Cara memasukan coding nya ke IC atmega 328 ?

Anda harus mempunyai software arduino IDE, unduh disini jika belum punya ;unduh disini

Anda juga harus mempersiapkan BOARD Arduino UNO R3, dengan IC DIP 328

Masukkan sketch dengan board diatas.
(Pastikan anda sudah menguasai cara memasukkan sketch dgn arduino)
Jika tidak punya board arduino bisa anda gunakan USB asp, baca disini :
http://www.rokhmad.com/2016/04/cara-mengisi-bootloader-pada-ic-atmega.html



Setelah IC atmega 328 anda isi dengan sketch, cabut IC DIP dan pasang pada PCB yang telah dipersiapkan.


Pasang Kabel Tegangan, Ingat untuk SIM 800L membutuhkan tegangan 3,7 volt, anda bisa menggunakan batre HP 3,7 volt atau bisa menggunakan buck dc-dc konverter, yang telah di set tegangannya menjadi 3,7 volt.

Batre HP 3,7 Volt


buck DC-DC konverter, atur tegangan out 3,7 volt dengan memutar trimpot
(harga 10.000 tanpa displai 7 segmen -50.000 dengan display 7 segmen)

Sedangkan untuk sumber atmega 328 menggunakan Adaptor dari charger HP 5V.,

berikut tampilan SMS Controller Relay :














Untuk lebih jelas anda bisa unduh project lengkapnya disini :
DOWNLOAD


PETUNJUK :
  1. COPY PASTE FOLDER :Seeeduino_GPRS-master
  2. ke folder arduino : C:\Program Files\Arduino\libraries\
  3. copy paste sketch, di program arduino.
  4. masukkan sketch dengan menggunakan software arduino IDE & board arduino UNO R3.
  5. Cabut IC atmega 328, pasang pada pcb yang telah di buat.
  6. Pasang SIM Card pada slot SIM 800L, pastikan ada pulsa dan ada signal.
  7. jika lampu berkedip-kedip cepat maka sim800L tidak terhaubung jaringan,
  8. jika kedipnya jarang-jarang, sim800L siap digunakan.
  9. JANGAN TERBALIK MEMSANG SIM800L, TERUTAMA POLATRITASNYA.
  10. Gunakan batre HP 3,7 Volt untuk supply sim800L,
  11. atau bisa menggunakan buck DC-DC converter di setting pada tegangan 3,7 V.




uji coba dengan SMS ke Nomor yang terpasang pada SIM 800 L
kode SMS :

RELAY1 ON --> UNTUK MENYALAKAN RELAY1
RELAY1 OFF --> UNTUK MEMATIKAN RELAY1

RELAY2 ON --> UNTUK MENYALAKAN RELAY2
RELAY2 OFF --> UNTUK MEMATIKAN RELAY2


THX : TO : DANI ARDIANTO (http://www.belajarduino.com/)



Video Youtube :








reff : http://www.rokhmad.com/2016/09/kontrol-rellay-via-sms-menggunakan.html

Program Running led dengan Mode +speed set + codingnya


Kalau kita di jalan raya, kita akan melihat mobil polisi dilengkapi dengan lampu yang menyala kedip-kedip, dengan berbagai variasi.

Kita dengan program mikrokontroller dapat dengan mudah membuat lampu tersebut.
berikut simulasinya :



skematiknya :




Klik codingnya/Projectnya disini


reff : http://www.educasi.ga/2016/02/program-running-led-dengan-mode-speed.html

Membuat Jam Analog Dengan Arduino Uno dan LCD TFT 2.4



Membuat DIY Jam Analog dengan Arduino Uno dan LCD TFT 2,4" Shield "Versi 1"

Ini adalah versi Upgrade dari Tutorial DIY Jam Analog Versi 1

Berikut akan saya Sharing cara membuat DIY Jam Analog menggunakan Arduino Uno dan LCD TFT Shield 2,4" 320x240 pixel


Bahan yang dibutuhkan dalam Project ini :



1 unit Arduino Uno R3 (Ori / Clone gak ada masalah)
1 unit LCD TFT 2,4" 320x240pixel Adafruit / mcufriend

Wiring
-Pasang LCD TFT Shield diatas pin header Arduino Uno

Data Pendukung
Library LCD TFT 2.4" SPFD5408 Rev by dani download disini

Sketch Coding Arduino Analog Clock Ver.2 by dani download disini

Untuk Basic Pengenalan LCD TFT 2,4" Arduino Uno Shield bisa baca disini

Untuk Belajar Syntax Coding LCD TFT 2,4" Arduino Uno Shield bisa baca disini





Pada Jam Analog yang kita Buat ini Tanpa Menggunakan RTC,waktu setup jam mengambil waktu Compile/upload program dari sistem windows sehingga akan kembali reset ke waktu awal apabila Power supply dicabut dari module.

Untuk membuatnya dapat menyimpan waktu anda cukup menambahkan RTC pada module ini dan sedikit melakukan perubahan pada coding pengambilan waktu nya.




Kemudian Edit Sketch berikut :

uint8_t hh = conv2d(__TIME__), mm = conv2d(__TIME__ + 3), ss = conv2d(__TIME__ + 6);

Berikut Video Penampakan Arduino Analog Clock Ver.2 nya :


Yang gagal download Codingnya silahkan Copy Paste Coding di bawah ini ke dalam Arduino IDE :


  1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
#include 

#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4

// Agar warna mudah dimengerti (Human Readable color):
#define TFT_BLACK 0x0000
#define TFT_BLUE 0x001F
#define TFT_RED 0xF800
#define TFT_GREEN 0x07E0
#define TFT_CYAN 0x07FF
#define TFT_MAGENTA 0xF81F
#define TFT_YELLOW 0xFFE0
#define TFT_WHITE 0xFFFF
#define TFT_GREY 0x5AEB

Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

float sx = 0, sy = 1, mx = 1, my = 0, hx = -1, hy = 0; // Saved H, M, S x & y multipliers
float sdeg = 0, mdeg = 0, hdeg = 0;
uint16_t osx = 120, osy = 120, omx = 120, omy = 120, ohx = 120, ohy = 120; // Saved H, M, S x & y coords
int16_t x0 = 0, x1 = 0, yy0 = 0, yy1 = 0, x00 = 0, yy00 = 0;
uint32_t targetTime = 0; // for next 1 second timeout

uint16_t xpos; // x posisi jam
uint8_t conv2d(const char* p) {
uint8_t v = 0;
if ('0' <= *p && *p <= '9')
v = *p - '0';
return 10 * v + *++p - '0';
}
uint8_t hh = conv2d(__TIME__), mm = conv2d(__TIME__ + 3), ss = conv2d(__TIME__ + 6); // mengambil data waktu dari jam Compile-Upload
boolean initial = 1;
char d;
void setup(void) {
tft.reset(); //perlu saat menggunakan lib.SPFD5408_Adafruit_TFTLCD.h
tft.begin(0x9341); //perlu address ini saat menggunakan lib.SPFD5408_Adafruit_TFTLCD.h
tft.setRotation(1);

tft.setTextColor(TFT_WHITE);//warna text
tft.fillScreen(TFT_BLACK);//warna latar

// Draw clock face
xpos = tft.width() / 2; // mencari titik koordinat tengah LCD
tft.drawCircle(xpos, 120, 125, TFT_YELLOW);
tft.fillCircle(xpos, 120, 118, TFT_BLUE); //warna lingkaran luar
tft.fillCircle(xpos, 120, 110, TFT_BLACK); //warna jam bagian dalam
for (int a=95; a<104; a++){
tft.drawCircle(xpos, 120, a, TFT_WHITE);} //warna lingkaran luar II



// Draw 12 lines
for (int i = 0; i < 360; i += 30) {
sx = cos((i - 90) * 0.0174532925);
sy = sin((i - 90) * 0.0174532925);
x0 = sx * 114 + xpos;
yy0 = sy * 114 + 120;
x1 = sx * 100 + xpos;
yy1 = sy * 100 + 120;

tft.drawLine(x0, yy0, x1, yy1, TFT_YELLOW);//garis penanda angka jam
}

// Draw 60 dots
for (int i = 0; i < 360; i += 6) {
sx = cos((i - 90) * 0.0174532925);
sy = sin((i - 90) * 0.0174532925);
x0 = sx * 102 + xpos;
yy0 = sy * 102 + 120;
x00 = sx * 92 + xpos;
yy00 = sy * 92 + 120;
// Draw minute markers
tft.drawPixel(x0, yy0, TFT_GREEN); //titik penanda menit
tft.drawLine(x0, yy0, x00, yy00, TFT_BLACK);//garis penanda menit
tft.drawLine(x0+1, yy0+1, x00+1, yy00+1, TFT_BLACK);//garis penanda menit

// Draw main quadrant dots
if (i == 0 || i == 180) tft.fillCircle(x0, yy0, 2, TFT_WHITE); //penanda 12 dan 6
if (i == 90 || i == 270) tft.fillCircle(x0, yy0, 2, TFT_WHITE); //penanda 3 dan 9
}

tft.fillCircle(xpos, 121, 3, TFT_WHITE);
targetTime = millis() + 1000;
}

void loop() {
if (targetTime < millis()) {
targetTime = millis() + 1000;
ss++; // Advance second
if (ss == 60) {
ss = 0;
mm++; // Advance minute
if (mm > 59) {
mm = 0;
hh++; // Advance hour
if (hh > 23) {
hh = 0;
}
}
}

// Pre-compute hand degrees, x & y coords for a fast screen update
sdeg = ss * 6; // 0-59 -> 0-354
mdeg = mm * 6 + sdeg * 0.01666667; // 0-59 -> 0-360 - includes seconds, but these increments are not used
hdeg = hh * 30 + mdeg * 0.0833333; // 0-11 -> 0-360 - includes minutes and seconds, but these increments are not used
hx = cos((hdeg - 90) * 0.0174532925);
hy = sin((hdeg - 90) * 0.0174532925);
mx = cos((mdeg - 90) * 0.0174532925);
my = sin((mdeg - 90) * 0.0174532925);
sx = cos((sdeg - 90) * 0.0174532925);
sy = sin((sdeg - 90) * 0.0174532925);

if (ss == 0 || initial) {
initial = 0;
// Erase hour and minute hand positions every minute
tft.drawLine(ohx, ohy, xpos, 121, TFT_BLACK);
ohx = hx * 62 + xpos + 1;
ohy = hy * 62 + 121;
tft.drawLine(omx, omy, xpos, 121, TFT_BLACK);
omx = mx * 84 + xpos;
omy = my * 84 + 121;
}

// Redraw new hand positions, hour and minute hands not erased here to avoid flicker
tft.drawLine(osx, osy, xpos, 121, TFT_BLACK);
osx = sx * 90 + xpos + 1;
osy = sy * 90 + 121;
tft.drawLine(osx, osy, xpos, 121, TFT_RED);
tft.drawLine(ohx, ohy, xpos, 121, TFT_CYAN);
tft.drawLine(omx, omy, xpos, 121, TFT_WHITE);
tft.drawLine(osx, osy, xpos, 121, TFT_RED);
tft.fillCircle(xpos, 121, 3, TFT_RED);

tft.setCursor(xpos-40, 45);
tft.setTextSize(2);
tft.print("SAMSUNG");

// Draw MINI clock face "SECOND"
tft.drawCircle(xpos, 155, 20, TFT_YELLOW);
tft.drawCircle(xpos, 155, 18, TFT_BLUE);
tft.drawCircle(xpos, 155, 17, TFT_CYAN);
tft.drawCircle(xpos, 155, 16, TFT_CYAN);
tft.fillRect(xpos-10, 149,22,15,TFT_BLACK); //erase
if(ss<10){tft.setCursor(xpos-10, 149); tft.setTextSize(2);
tft.print('0'); tft.setCursor(xpos+2, 149);}
else{
tft.setCursor(xpos-10, 149);}
tft.setTextSize(2);
tft.print(ss);

// Draw MINI clock face "Minutes"
tft.drawCircle(xpos+35, 117, 20, TFT_YELLOW);
tft.drawCircle(xpos+35, 117, 18, TFT_BLUE);
tft.drawCircle(xpos+35, 117, 17, TFT_CYAN);
tft.drawCircle(xpos+35, 117, 16, TFT_CYAN);
tft.fillRect(xpos+25, 111,22,15,TFT_BLACK); //erase
if(mm<10){tft.setCursor(xpos+25, 111); tft.setTextSize(2);
tft.print('0'); tft.setCursor(xpos+37, 111);}
else{
tft.setCursor(xpos+25, 111);}
tft.println(mm);

// Draw MINI clock face "Hour"
tft.drawCircle(xpos-35, 117, 20, TFT_YELLOW);
tft.drawCircle(xpos-35, 117, 18, TFT_BLUE);
tft.drawCircle(xpos-35, 117, 17, TFT_CYAN);
tft.drawCircle(xpos-35, 117, 16, TFT_CYAN);
tft.fillRect(xpos-45, 111,22,15,TFT_BLACK); //erase
if(hh<10){tft.setCursor(xpos-45, 111); tft.setTextSize(2);
tft.print('0'); tft.setCursor(xpos-33, 111);}
else{
tft.setCursor(xpos-45, 111);}
tft.setTextSize(2);
tft.print(hh);
//tft.setCursor(xpos-65, 111);
//tft.println(':');

if (hh>=0 && hh<12) d='A'; else {d='P';}
tft.drawRoundRect(xpos-14,72,29,21,5,TFT_CYAN);
tft.fillRect(xpos-11, 75,23,15,TFT_BLACK); //erase
tft.setCursor(xpos-11, 75);
tft.setTextSize(2);
tft.print(d);
tft.println('M');
}
}


Untuk Membuat Tampilan Jam nya Lebih Smart lagi silahkan lanjut ke Bagian 3

Pada Bagian ke 3 (Analog Clock Ver.3) kita akan Menambahkan Fungsi drawBmp yaitu memanggil gambar Bitmap dari Memori SD melalui Slot Micro SD yang ada pada Module untuk dihadirkan ke dalam tampilan Jam kita.

Berikut video tampilan Jam Analog Ver.3



reff : http://www.belajarduino.com/2016/06/membuat-jam-analog-dengan-arduino-uno_11.html

Saturday, 25 February 2017

8 digits 7 Segment Display with MAX7219 to Arduino


8digit 7segment adalah salah satu pilihan Display Output yang dapat kita gunakan sebagai tampilan untuk berbagai project arduino ataupun mikrokontroler lain.


Spesifikasi Umum

Module ini memiliki 8 buah LED 7 segment dengan controller sebuah IC MAX7219.
Module ini dapat digabung secara Seri dengan module sejenis secara berurutan (horisontal) maupun bertumpuk (vertikal).Berikut Spesifikasi umum module Display ini :

LED type : 7 Segment with dot (.)
Jumlah 7 Segment : 8
Ukuran 7 segment : "
Komunikasi interface : SPI Serial
Kontroller : Max7219
VCC : 5VDC
Pilihan Warna : Merah (umum),hijau,biru,kuning

Wiring dan Library Arduino

Module ini memiliki 5 pin interface sebagai berikut :
-VCC = Sumber daya (+) 5V
-GND = Sumber daya (-) 0V
-DIN = Data In /SDA / Data
-CS = Shift
-CLK = Clock / SCK / SCL

Module ini dapat kita gunakan bersama Arduino denga menggunakan Library LedControl.
Silahkan download disini. atau download yang ini.

Masukan Library yang dibutuhkan diatas (salah satu saja) ke dalam folder Libraries Arduino

Windows 64bit : C:\ Program Files (x86) \ Arduino \ libraries
Windows 32bit : C:\ Program Files \ Arduino \ libraries

Setelah menambahkan library yang diperlukan diatas ke dalam folder libraries,tutup semua jendela Arduino IDE dan buka Ulang Arduino IDE kemudian klik File-> Example->Led Control (buka salah satu dari 3 example yang diberikan )

seperti pada gambar dibawah ini :


Beberapa example di library tersebut di program untuk 4digits 7segment sehingga mungkin tidak maksimal pada 8digit.
Silahkan coba Example dari saya berikut ini untuk Module 8 digits 7segment anda :

Hubungkan Display anda dengan Arduino dengan posisi Pin seperti berikut :

wiring Module Display 8digit 7segment ke Arduino (Uno)
Arduino Pin D12 to DIN,
Arduino Pin D11 to CLK,
Arduino Pin D10 to CS,
No.of devices is 1 (Display Urutan ke 1)
Kemudian Copy paste kode dibawah ini ke Arduino IDE dan uplaod..
Semoga berhasil...

//////////////////////////////////////////
// Example by Dani Rajacell //
// Mohon tetap mencantumkan sumber //
//apabila menggunakan example kode ini //
//////////////////////////////////////////

#include "LedControl.h" //Memanggil library Led Control
//wiring Module Display 8digit 7segment ke Arduino (Uno)
// Arduino Pin D12 to DIN,
// Arduino Pin D11 to CLK,
// Arduino Pin D10 to CS,
// No.of devices is 1 (Display Urutan ke 1)

LedControl lc=LedControl(12,11,10,1); // DIN,CLK,CS,No.

unsigned long delaytime; //Variable delay transisi

void setup()
{
// Initialize the MAX7219 device
// Kondisi default Max7219 saat power ON adalah Standby jadi harus kita aktifkan dulu...
lc.shutdown(0,false); // Enable display
lc.setIntensity(0,10); // Set brightness level (Level Kecerahan : 0 sampai 15)
lc.clearDisplay(0); // Clear display register (Mengkosongkan tampilan segment)
}
void loop()
{
delaytime = 250 ;
//Menulis Angka 1-8 dari kanan ke kiri
for(int i=0; i<8; i++){
lc.setDigit(0,i,i+1,false);
delay (200);}
delay (1000);
lc.clearDisplay(0);

//Menulis Angka 1-8 dari kiri ke kanan
for(int i=8; i>0; i--){
lc.setDigit(0,(i-1),9-i,false);
delay (200);}
delay (1000);

//Menulis kata Arduino dari kiri ke kanan
writeArduinoOn7Segment();
delay(1000);
lc.clearDisplay(0);

//Blink kata Arduino
delaytime = 5 ;
for (int i=0; i<5; i++) {
writeArduinoOn7Segment(); delay (500);
lc.clearDisplay(0);
}
}

void writeArduinoOn7Segment() {
lc.setChar(0,7,'a',false);
delay(delaytime);
lc.setRow(0,6,0x05);
delay(delaytime);
lc.setChar(0,5,'d',false);
delay(delaytime);
lc.setRow(0,4,0x1c);
delay(delaytime);
lc.setRow(0,3,B00010000);
delay(delaytime);
lc.setRow(0,2,0x15);
delay(delaytime);
lc.setRow(0,1,0x1D);
delay(delaytime);
lc.setChar(0,0,'_',false);
delay(10*delaytime);
lc.clearDisplay(0);
}




reff : http://www.belajarduino.com/2016/08/8-digits-7-segment-display-with-max7219.html

Friday, 24 February 2017

Membuat sendri mesin Mini CNC dengan DVD rom Bekas dan Arduino Uno


Computer Numerical Control / CNC (berarti "komputer kontrol numerik") merupakan sistem otomatisasi Mesin perkakas yang dioperasikan oleh perintah yang diprogram secara abstark dan disimpan dimedia penyimpanan, hal ini berlawanan dengan kebiasaan sebelumnya dimana mesin perkakas biasanya dikontrol dengan putaran tangan atau otomatisasi sederhana menggunakan cam. Kata NC sendiri adalah singkatan dalam Bahasa inggris dari kata Numerical Control yang artinya Kontrol Numerik. Mesin NC pertama diciptakan pertama kali pada tahun 40-an dan 50-an, dengan memodifikasi Mesin perkakas biasa. Dalam hal ini Mesin perkakas biasa ditambahkan dengan motor yang akan menggerakan pengontrol mengikuti titik-titik yang dimasukan kedalam sistem oleh perekam kertas. Mesin perpaduan antara servo motor dan mekanis ini segera digantikan dengan sistem analog dan kemudian komputer digital, menciptakan Mesin perkakas modern yang disebut Mesin CNC (computer numerical control) yang dikemudian hari telah merevolusi proses desain. Saat ini mesin CNC mempunyai hubungan yang sangat erat dengan program CAD. Mesin-mesin CNC dibangun untuk menjawab tantangan di dunia manufaktur modern. Dengan mesin CNC, ketelitian suatu produk dapat dijamin hingga 1/100 mm lebih, pengerjaan produk masal dengan hasil yang sama persis dan waktu permesinan yang cepat sumber :https://id.wikipedia.org/wiki/CNC


Kalau anda dirumah punya rongsokan DVD bekas, anda dapat membuat mini mesin CNC dengan mekanik DVD bekas tersebut.



Yang perlu di persiapkan adalah, :
2 buah Mekanik DVD rom bekas
1 buah arduino UNO R3
2 buah IC LD293
Kabel jumper secukupnya
plat alumunium secukupnya
mur baut secukupnya.

Langah awal, rangkailah Arduino, motor DVD dan IC LD293 dengan sekema sebagai berikut :


rangkaian ic ld293 di bikin di project board

jika anda punya uang, anda dapat membeli sheild driver motor ld293 dengan dirangkai seperti gambar


karena saya gak punya uang unttuk beli sheild, maka saya rangkai driver motor ld293 dengan project board, ini contoh hasil rakitan saya arduino dan ic ld293 di project board.








Lalu uji coba motor dengan memasukkan sketch.ino kedalam arduinio
untuk test x axis = masukan sketch ini
untuk test y axis = masukkan sketch ini

kalau motor bekerja, maka rangkaian sudah benar, kalau belum cek kabel pada motor tersebut.
kalau sudah sukses, masukkan sketch mini cnc ini ke dalam arduino uno R3. klik disini sketch mini CNC

Rakitlah mekanik DVD desngan susunan sebagai berikut :















































Kalau sudah, instal software Inkscape, dapat diunduh disini

setelah software inscape terinstal tambahkan plugin inkcape unicorn, agar gambar dapat di save as kedalam format *.gctrl. klik disini

Setelah itu gambarlah design gambar yang akan dimasukkan kedalam mesin CNC. contoh :


Pastikan Gambar sudah di format dalam mode vektor, jika belum trace dulu. setelah itu save as dengan ekstensi *.gctrl

kemudian buka software Gctrl. klik disini, pastikan telah terinstal java environment pc anda.

Tampilan sofware Gctrl sebagai berikut :


Tekan P untuk setting Port, sesuaikan dengan port arduino anda.
Tekan G untuk memasukkan kode G dengan membuka file *.Gctrl yang di save as di inkscape diatas tadi

Selamat mesin CNC mini dengan DVD rom bekas sudah berhasil dibuat .












Unduh file Project ini lengkap disini


reff : http://www.educasi.ga/2016/04/membuat-sendri-mesin-mini-cnc-dengan.html