Menggunakan Blynk & Arduino Uno/Nano
Berikut ini langkah-langkah pembuatan alat penggerak kamera menggunakan Blynk dan Arduino Uno/Nano.
1. Siapkan rangkaian Arduino seperti berikut.
Ada 4 jenis komponen yang diperlukan dalam rangkaian di atas:
- Arduino (bisa Uno/Nano, atau lainnya)
- Driver Motor (bisa L298 atau lainnya )
- Motor Encoder
- Limit Switch (LS1, LS2)
Keterangan rangkaian:
- Arduino digunakan untuk membaca data posisi Encoder, mengirimkan datanya melalui komunikasi serial dan menerima data dari komunikasi serial untuk menggerakkan Motor.
- Driver Motor digunakan untuk menguatkan sinyal Arduino agar mampu menggerakkan Motor.
- Motor Encoder digunakan untuk menggerakkan kamera dan memberikan data posisi.
- Limit Switch LS1 dan LS2 ditempatkan di ujung-ujung rel, digunakan sebagai pembatas gerakan kamera, menghentikan Motor, dan khusus untuk LS1, digunakan sebagai titik 0 Encoder (mereset nilai Encoder).
Koneksi kaki I/O Arduino:
- D2 terhubung ke output E1 Encoder
- D3 terhubung ke output E2 Encoder
- D4 terhubung ke LS1, yang memutus/hubungkan D4 ke Ground
- D5 terhubung ke LS2, yang memutus/hubungkan D5 ke Ground
- D8 terhubung ke IN1 L293
- D9 terhubung ke IN2 L293
- D10 terhubung ke Enable L293
File unduhan:
- Teman-teman bisa mengunduh file Proteus di atas, di link ini: file Proteus
2. Buat program Arduino seperti berikut:
#define BLYNK_PRINT mySerial#include <SoftwareSerial.h>#include <Encoder.h>SoftwareSerial mySerial(12, 11);Encoder myEnc(2, 3);#include <BlynkSimpleStream.h>char auth[] = "yb-m0Q1rlKRcamJvPCfmE8LaOTTO6VL0";BlynkTimer timer;int ena = 0;int in1 = 0; //cwint in2 = 0; //ccwint a = 0;int posisi = 0;void myTimer() {Blynk.virtualWrite(V1, a);mySerial.println(a);}BLYNK_WRITE(V0) {posisi = param.asInt();}void setup() {Serial.begin(9600);mySerial.begin(9600);pinMode(4, INPUT_PULLUP);//ls1pinMode(5, INPUT_PULLUP);//ls2pinMode(8, OUTPUT); //in1pinMode(9, OUTPUT); //in2pinMode(10, OUTPUT); //enaBlynk.begin(Serial, auth);timer.setInterval(100L, myTimer);}void loop() {a = myEnc.read();Blynk.run();timer.run();if (!digitalRead(4)) {myEnc.write(0);digitalWrite(9, 0); //in2}if (!digitalRead(5)) {digitalWrite(8, 0); //in1}if (posisi > (a + 2)) {digitalWrite(8, 1); //in1digitalWrite(9, 0); //in2}else if (posisi < (a - 2)) {digitalWrite(8, 0); //in1digitalWrite(9, 1); //in2}else {digitalWrite(8, 0); //in1digitalWrite(9, 0); //in2}}
Keterangan program Arduino:
- Pada baris ke-7, teman-teman perlu mengisi nilai char auth[] dengan kode token yang diperoleh saat membuat project Blynk di HP (handphone). Kode token pada program di atas diberi warna merah.
- Program di atas pada intinya menjalankan motor DC untuk menggerakkan kamera ke posisi tertentu, sesuai dengan nilai posisi yang dikirimkan dari HP. Pengiriman dari HP ini menggunakan aplikasi Blynk, yang dibuat dengan instruksi BLYNK_WRITE. Nilai posisi ini dihasilkan dengan menggeser Slider V1.
- Selain nilai posisi, nilai PWM juga dikirimkan dari aplikasi Blynk, yang nilainya dihasilkan dengan menggeser Slider D10. Pengiriman nilai PWM ini tidak menggunakan instruksi BLYNK_WRITE, karena pin yang digunakan bukan pin virtual.
- Untuk mengetahui apakah posisi sudah tercapai atau belum, digunakan pembacaan Encoder, yang nilainya dikirimkan dari Arduino ke aplikasi Blynk menggunakan instruksi Blynk.virtualWrite. Apabila nilai posisi lebih besar dari nilai Encoder, arah putaran motor dibuat cw dengan in1=1 dan in2=0. Apabila nilai posisi lebih kecil dari nilai Encoder, arah putaran motor dibuat ccw dengan in1=0 dan in2=1. Apabila nilai posisi sama dengan nilai Encoder, nilai in1 dan in2 dibuat 0.
- 2 buah Limit Switch (LS1 dan LS2), digunakan untuk menghentikan motor, dan khusus untuk LS1, apabila tertekan, akan mereset nilai Encoder, menggunakan instruksi myEnc.write(0). Ketika LS1 atau LS2 tertekan, maka agar motor bisa digerakkan ke arah yang berlawanan, maka penghentian motor dilakukan dengan membuat in1 atau in2 (salah satu saja yang sedang bernilai 1), dibuat menjadi 0.
File unduhan:
- Teman-teman bisa mengunduh file program Arduino di atas, di link ini: program Arduino
- Program di atas memerlukan libary blynk yang dapat teman-teman unduh di link ini: Blynk-1.1.0.zip
- Program di atas juga memerlukan library Encoder. Teman-teman bisa mengunduh file library Encoder di link ini: library Encoder
3. Buat project di Blynk seperti berikut:
Catatan: Blynk yang digunakan di sini masih versi Blynk Legacy. Saya akan perbarui versi Blynk ini ke Blynk IoT setelah Blynk Legacy ini benar-benar sudah tidak dapat digunakan (saya berharap masih bisa digunakan seterusnya).
Berikut langkah-langkah pembuatan project di Blynk:
1. Instal aplikasi Blynk Legacy dari Google Playstore (apabila rekan-rekan tidak menemukan, hal ini dikarenakan per tgl 30 Juni 2022, aplikasi Blynk Legacy sudah dihapus dari Google Playstore).
2. Setelah terinstal, buka Blynk. Apabila muncul halaman Log In, silahkan mengisi username dan password sesuai yang didaftarkan.
3. Setelah halaman Blynk muncul, tekan tombol +New Project untuk membuat project baru.
4. Pada halaman Create New Project, isi Project Name dengan nama tertentu, contoh penggerakKamera, dan pilih Arduino Uno pada kolom Choose Device, dan Connection Type pilih Wi-Fi. Tekan tombol Create.
5. Maka muncul tampilan Auth Token sudah dikirimkan ke email yang didaftarkan.
6. Berikut ini contoh Auth Token yang dikirimkan melalui email. Copy kode Token yang dikirimkan melalui email ini, dan isikan ke baris program char auth[] di baris ke-7 pada program Arduino di atas. Lakukan kompilasi atau Verify program Arduino tersebut. Setelah muncul pesan Done Compiling, upload kode program tersebut ke hardware Arduino.
7. Kembali ke aplikasi Blynk, di halaman project, tekan tombol + untuk mengambil Widget. Pada halaman Widget Box, ambil Slider.
8. Tempatkan Slider di halaman project.
9. Klik Slider beberapa lama, hingga muncul titik di kedua tepi Slider. Tarik titik tersebut untuk memanjangkan kotak Slider.
10. Klik 2 kali Slider, untuk membuka halaman Slider Settings. Isi nama Widget dengan PWM, dan klik pada PIN, pilih Digital pin D10. Harusnya nilai minimum dan maksimumnya secara default 0 dan 255. Setelah itu, kembali ke halaman project dengan menekan tombol panah ke kiri di samping Slider Settings.
11. Di halaman project, tekan tombol + untuk mengambil Slider kedua, perlebar ukurannya agar sama seperti Slider pertama.
12. Klik 2 kali Slider kedua, untuk membuka halaman Slider Settings. Isi nama Posisi, dan Klik pada PIN, pilih Virtual pin V0, dan isi nilai minimum dan maksimumnya 0 dan 1000 (angka 1000 ini bisa diganti-ganti, menyesuaikan ukuran rel kamera). Klik tombol tanda panah ke kiri untuk kembali ke halaman project.
13. Di halaman project, tekan tombol + untuk mengambil widget Gauge.
14. Perbesar ukuran Gauge.
15. Klik 2 kali Gauge untuk membuka halaman Gauge Settings. Isi nama Encoder, klik PIN, dan pilih Virtual pin V1. Isi nilai minimum dan maksimumnya 0 dan 1000. Klik tombol tanda panah ke kiri untuk kembali ke halaman project.
16. Sebelum menjalankan project Blynk ini dengan menekan tombol Run di pojok kanan atas, pastikan program Arduino sudah terupload ke hardware Arduino. Karena di sini saya menggunakan simulasi Arduino di Proteus, maka lokasi file Hex hasil kompilasi program Arduino saya tempatkan di kolom Program File, di jendela Edit Component ATmega328. Agar simulasi dapat berjalan baik, atur CLKDIV8 =Unprogrammed, CKSEL Fuses = Ext Clock dan Clock Frequency = 16MHz.
17. Jalankan simulasi Proteus.
18. Berikutnya, agar project aplikasi Blynk yang dibuat di HP ini bisa terhubung dengan Arduino, dibutuhkan server lokal (komputer lokal) yang menjadi penghubung antara aplikasi Blynk dengan Arduino. Untuk mengaktifkan server lokal tersebut, klik 2 kali file blynk-ser.bat yang ada di folder libraries Arduino, di folder Blynk-1.1.0, di folder scripts.
19. Maka akan muncul jendela cmd.exe yang menanyakan port COM yang digunakan. Isi port COM yang sesuai, dalam contoh di sini saya menggunakan port COM 6, yang mana merupakan COM yang berpasangan dengan port COM di rangkaian Arduino.
20. Jalankan aplikasi Blynk dengan menekan tombol Run di pojok kanan atas.
21. Apabila koneksi berhasil, maka tampilan di jendela cmd.exe menampilkan tulisan Connect ("blynk-cloud.com, "80") - OK, dan di Virtual Terminal menampilkan tulisan Ready.
22. Geser Slider PWM dan Slider Posisi ke sembarang nilai, kemudian perhatikan tampilan Motor Encoder di Proteus, dan nilai Encoder di Virtual Terminal, serta nilai Gauge Encoder di aplikasi Blynk.
23. Terlihat poros Motor Encoder di Proteus berputar dan tampilan Virtual Terminal menampilkan nilai Encoder.
24. Ketika Slider Posisi diatur ke nilai 565, maka seharusnya nilai Gauge Encoder juga berhenti di nilai 565.
25. Begitu juga di tampilan Proteus, ketika Slider Posisi diatur ke nilai 565, maka nilai Encoder yang ditampilkan di Virtual Terminal harusnya menampilkan nilai 565.
26. Nilai Maksimum dari Slider Posisi dan Gauge Encoder seharusnya diubah mengikuti nilai maksimum Encoder yang dihasilkan Motor ketika dipasang pada rel kamera yang sebenarnya. Pengaturan bisa dilakukan dengan bantuan LS1 dan LS2 yang dipasang pada ujung-ujung rel kamera. Ketika motor menyentuh LS1, maka nilai Encoder menjadi 0, dan ketika motor menyentuh LS2, maka nilai Encoder yang dihasilkan adalah nilai maksimum.
27. Terakhir, agar alat penggerak kamera ini dapat diakses oleh banyak orang, maka buat pengaturan di Project Settings. Hentikan aplikasi dengan menekan tombol Stop berbentuk kotak di pojok kanan atas. Kemudian tekan tombol berbentuk segi enam dengan lingkaran di dalamnya untuk masuk ke Project Settings. Di Project Settings, aktifkan Shared Access dengan menggeser ke posisi ON, dan tekan tombol Generate Link. Untuk membuat Shared Access aktif ini, ternyata poin yang dibutuhkan cukup besar, yaitu 1000, dan tidak dapat dipulihkan. Muncul pertanyaan, apakah akan dilanjutkan?
28. Setelah di-klik OK, berikutnya tekan tombol Generate Link.
29. Maka link kode QR akan dibangkitkan, dan bisa dikirimkan ke siapa saja yang diijinkan mengakses alat penggerak kamera ini.
30. Sampai di sini langkah pembuatan Solusi#2 selesai.
Tidak ada komentar:
Posting Komentar