Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

  • IC Timer 555 yang Multifungsi

    IC timer 555 adalah sirkuit terpadu (chip) yang digunakan dalam berbagai pembangkit timer, pulsa dan aplikasi osilator. Komponen ini digunakan secara luas, berkat kemudahan dalam penggunaan, harga rendah dan stabilitas yang baik

  • Ayo Migrasi TV Digital

    Kami bantu anda untuk memahami lebih jelas mengenai migrasi tv digital, apa sebabnya dan bagaimana efek terhadap kehidupan. Jasa teknisi juga tersedia dan siap membantu instalasi - setting perangkat - pengaturan antena dan distribusi televisi digital ke kamar kos / hotel

  • Bermain DOT Matrix - LOVEHURT

    Project Sederhana dengan Dot Matrix dan Attiny2313. Bisa menjadi hadiah buat teman atau pacarmu yang ulang tahun dengan tulisan dan animasi yang dapat dibuat sendiri.

  • JAM DIGITAL 6 DIGIT TANPA MICRO FULL CMOS

    Jika anda pencinta IC TTL datau CMOS maka project jam digital ini akan menunjukkan bahwa tidak ada salahnya balik kembali ke dasar elektronika digital , sebab semuanya BISA dibuat dengan teknologi jadul

  • Node Red - Kontrol Industri 4.0

    Teknologi kontrol sudah melampaui ekspektasi semua orang dan dengan kemajuan dunia elektronika, kini semakin leluasa berkreasi melalui Node Red

Jumat, 02 Juli 2021

LED VU Meter Menggunakan WS2812B dan Controler SP107E - Bluetooth music

Kali ini saya ingin melampiaskan ke galauan saya yang tergelitik oleh video youtube seorang pecinta per-Led-an : Omank Kacau,  dimana saya sangat salut kepada pendekatan tutorial pada videonya yg sangat santai pembawaannya dan penjelasannya yg sangat mudah dimengerti. Penulis yg sejak tahun 1994 sudah berkutat dengan LED-555-4017 dari flip flop 2 transistor dan running LED IC 4017 menjadi 'jealous' dengan anak jaman now yg dihadirkan modul siap pakai yg sangat menarik untuk dicoba.




Yang menjadi kekaguman berlanjut kekaguman saya adalah ketika saya menelusuri apa sih jenis LED Strip yg digunakan ? Wow ternyata bukan LED strip biasa, namun merupakan LED canggih yg memiliki controller RGB dan jalur komunikasi data didalamnya. LED Strip ini ber type WS2812B dan harga satu gulungnya sekitar 120 rb-an di online shop.




Jadi didalam LED tersebut bisa kamu sambungkan sesuai keinginan, bentuknya mau lurus, meliuk ataupun kamu potong - potong dan susun kembali  asal benar koneksinya seperti dibawah ini :



Jadi LED ini di cascade sampai panjang yg mungkin tak berhingga (bohong kalau ini saya) dan selanjutnya untuk mudahnya bisa membeli controller LED + VU Music dengan komunikasi Bluetooh SP107E dengan harga yah kisaran  200 ribuan.





Jadi seperti yg dilakukan Omank Kacau dalam videonya, dia cukup memotong LED, menyambungnya dengan konektor 3 pin, lalu menyusunnya ditembok. Ya semudah itu dan kemudian ambil smartphone install di playstore aplikasi VU meter yg sesuai, beres deh !






Lalu bagaimana sih jeroan coding untuk LED strip WS2812B ini jika mau belajar konsepnya ? Dari sumber internet saya dapatkan seperti berikut.




Bagaimana Cara Kerja  LED WS2812B 


Mari kita mulai dengan melihat lebih dekat pada strip LED. Ini terdiri dari LED RGB tipe 5050 di mana IC driver LED WS2812B yang sangat kompak terintegrasi.

Apa yang hebat tentang LED strip ini adalah kita dapat mengontrol bahkan seluruh strip LED hanya dengan satu pin dari Arduino / microcontroller kita. Setiap LED memiliki tiga konektor di setiap ujungnya, dua untuk daya dan satu untuk data. Panah menunjukkan arah aliran data. Panel output data dari LED sebelumnya terhubung ke panel Input Data dari LED berikutnya. Kita dapat memotong strip ke ukuran yang kita inginkan, serta mengatur jarak LED hanya dengan menggunakan beberapa kabel.





Adapun daya mereka bekerja pada 5V dan masing-masing LED Merah, Hijau dan Biru menarik sekitar 20mA, atau total 60mA untuk setiap LED pada kecerahan penuh. Perhatikan bahwa ketika Arduino diberi daya melalui USB, pin 5V hanya dapat menangani sekitar 400 mA. Jadi gunakan power supply yg ampernya lebih gede aja biar nyalanya tidak mengecewakan.


Jika Anda menggunakan lebih banyak LED dan jumlah arus yang akan ditarik melebihi batas yang disebutkan di atas, Anda harus menggunakan catu daya 5V yang terpisah. Dalam kasus seperti itu, Anda juga perlu menghubungkan dua garis Ground satu sama lain. Selain itu, disarankan untuk menggunakan resistor sekitar 330 Ohm antara Arduino dan pin data strip LED untuk mengurangi kebisingan/noise pada saluran itu, serta kapasitor sekitar 100uF di seluruh 5V dan Ground untuk memperlancar catu daya. .


Contoh Arduino dan LED WS2812B


Sekarang sebagai contoh saya akan menggunakan 20 LED strip panjang, terhubung ke Arduino melalui resistor 330 Ohm dan ditenagai dengan catu daya 5V terpisah, seperti yang dijelaskan di atas. Untuk memprogram Arduino, kami akan menggunakan library:  FastLED. Ini adalah library yang sangat baik dan terdokumentasi dengan baik yang memungkinkan kontrol yang mudah dari LED WS2812B.



#include <FastLED.h>
#define LED_PIN 7
#define NUM_LEDS 20
CRGB leds[NUM_LEDS];
void setup() {
FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
}
void loop() {
leds[0] = CRGB(255, 0, 0);
FastLED.show();
delay(500);
leds[1] = CRGB(0, 255, 0);
FastLED.show();
delay(500);
leds[2] = CRGB(0, 0, 255);
FastLED.show();
delay(500);
leds[5] = CRGB(150, 0, 255);
FastLED.show();
delay(500);
leds[9] = CRGB(255, 200, 20);
FastLED.show();
delay(500);
leds[14] = CRGB(85, 60, 180);
FastLED.show();
delay(500);
leds[19] = CRGB(50, 255, 20);
FastLED.show();
delay(500);
}




Penjelasan: Jadi pertama-tama kita perlu menyertakan library FastLED, menentukan pin yang menghubungkan data strip LED, menentukan jumlah LED, serta menentukan array tipe CRGB. Jenis ini berisi LED, dengan tiga anggota data satu byte untuk masing-masing dari tiga saluran warna Merah, Hijau dan Biru.





Di bagian pengaturan kita hanya perlu menginisialisasi FastLED dengan parameter yang ditentukan di atas. Sekarang loop utama kita dapat mengontrol LED kita sesuka kita. Menggunakan fungsi CRGB, kita dapat mengatur LED apa pun ke warna apa pun menggunakan tiga parameter warna Merah, Hijau, dan Biru. Untuk membuat perubahan terjadi pada LED kita perlu memanggil fungsi FastLED.show().


Lalu contoh kedua akan dibuat animasi sederhana pada LED Strip.



#include <FastLED.h>
#define LED_PIN 7
#define NUM_LEDS 20
CRGB leds[NUM_LEDS];
void setup() {
FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
}
void loop() {
for (int i = 0; i <= 19; i++) {
leds[i] = CRGB ( 0, 0, 255);
FastLED.show();
delay(40);
}
for (int i = 19; i >= 0; i--) {
leds[i] = CRGB ( 255, 0, 0);
FastLED.show();
delay(40);
}
}




Di sini loop "untuk" pertama menyalakan semua 20 LED dengan warna biru, dari LED pertama hingga terakhir dengan penundaan 40 milidetik. Loop "untuk" berikutnya menyala lagi semua 20 LED, tetapi kali ini dalam warna merah dan dalam urutan terbalik, dari LED terakhir ke LED pertama.







Library FastLED memiliki banyak fungsi lain yang dapat digunakan untuk membuat animasi dan pertunjukan cahaya yang sangat menarik, jadi terserah imajinasi Anda untuk membuat proyek LED berikutnya menyala seperti bagaimana.


Share:

Kamis, 01 Juli 2021

[ ESP8266 ] Kunci Motor Menggunakan wifi + password lewat SD card - (Part3 : Gabungin yuk...)

Kita sampai pada bagian ujung dari praktek pembuatan kunci motor berbasis wifi + sdcard , dimana kita akan menggabungkan pembahasan sebelumnya yaitu esp8266 sebagai async webserver dan bahasan kedua mengenai SD Card. Jadi pembahasan awal ini perlu dipahami terlebih dulu agar tidak terlalu membingungkan bagi pembaca setia blog ini.




Secara garis besar tujuan yg ingin dicapai dari seri praktek kali ini adalah :


  • Menggunakan ESP8266 sebagai akses poin dan webserver  untuk diakses smartphone dan selanjutnya mengontol relay yg terhubung dengan sistem elektrik kunci motor
  • SD card digunakan sebagai media penyimpanan parameter wifi dan kunci jawaban / challenge kode yg akan dipecahkan pengguna lewat smartphone


Rangkaian yg saya rancang diagramnya seperti ini :




Nah kali ini akan saya bahas bagian  yg penting saja dan belum pernah dibahas pada 2 seri tulisan sebelumnya, yaitu bagian file seting wifi dan pertanyaan untuk password, dimana pengguna dapat menulis sendiri di SD card melalui PC/Laptop dan  membuat alat ini bisa diubah sesuai keinginan. Disini saya menggunakan file seting bernama kunci.txt yg berisikan data:


wifi,motorku,kerensekali
1,merek motor,suzuki
2,tahun beli,2012
3,kota,surabaya
4,nama kucing,pussy
5,hobby,mancing

Baris paling atas wifi,motorku,kerensekali merupakan setting untuk nama wifi dan password (minimal 8 karakter). Sedangkan selanjutnya merupakan 5 buah urutan pertanyaan yg bisa dipecahkan untuk menghidupkan relay kontak motor.

Untuk script pembacaan isi file perbaris kemudian di parsing sebagai berikut:

dataFile = SD.open("kunci.txt");

  if (dataFile) {

    while (dataFile.available()) {

    buffer = dataFile.readStringUntil('\r\n');
   //Buka seting wifi password
    if(getStringPartByNr(buffer,',',0) == "wifi")
    {
    Serial.println(buffer);
    ssid =  getStringPartByNr(buffer,',',1);
    password = getStringPartByNr(buffer,',',2);
      
    }
    //buka pertanyaan dan jawaban sesuai urutan sequence
    else if(getStringPartByNr(buffer,',',0) == String(sequ))
    {
    Serial.print("pertanyaan : ");
    key = getStringPartByNr(buffer,',',1);
    Serial.print(key);
    Serial.print(" - jawaban : ");
    chal =getStringPartByNr(buffer,',',2); 
    Serial.println(chal);
    }
   }
   
    dataFile.close();


Sedangkan untuk melakukan perubahan pertanyaan agar tidak sama terus yg ditanyakan, perlu diadakan proses penambahan sequence yg disimpan pada file seq.txt , ya mirip seperti proses random / memilih pertanyaan secara acak.


SD.remove("seq.txt");  //hapus dulu lalu bikin lagi
  File myFile = SD.open("seq.txt", FILE_WRITE);
  if (myFile) // it opened OK
    {
    Serial.println("Writing to seq.txt");
    sequ++; //nambah posisi pertanyaan
    if(sequ > maxsequ) sequ= 1; //muter ke awal
    //nulis ke SD sequence baru
    myFile.print(String(sequ));
    myFile.close(); 
    Serial.print("sequence sekarang :");
    Serial.println(String(sequ));
    }
  else 
    Serial.println("Error opening seq.txt");


Untuk membandingkan apakah jawaban benar atau tidak maka dilakukan pembandingan di inputan yg diresponse oleh form submit secara asynchronous.


server.on("/get", HTTP_GET, [] (AsyncWebServerRequest *request) {
    String inputMessage;
    String inputParam;
    
    // GET input1 value on <ESP_IP>/get?input=<inputMessage>
    if (request->hasParam(PARAM_INPUT) ) {
      inputMessage = request->getParam(PARAM_INPUT)->value();
      inputParam = PARAM_INPUT;

    }
   
    else {
      inputMessage = "No challenge ";
      inputParam = "none";
    }
    Serial.print("jawaban : ");
    Serial.println(inputMessage); 

    //jika jawaban sesuai
    if(inputMessage == chal)
    {

    
    request->send(200, "text/html", SendBenar());
    
    
    }

    else{
     olkey = key ; 
     request->send(200, "text/html", SendSalah(olkey,inputMessage));
      }

    writeToFile();  //nambah sequence pertanyaan
   

                                     
  }); 


Hasilnya cukup memuaskan dan pertanyaannya dapat diubah sesuai keinginan.





Karena masih berupa web dan formatnya berupa GET biasa, maka untuk pengembangan bisa diwrap kedalam APK android yg cukup simple, hanya butuh merubah web HTML ke aplikasi android. Juga jika mau keren bisa disertai Relay kedua untuk melakukan starter melalui tombol di layar smartphone.






Berminat mengembangkan ke produk jadi ? Hubungi : 08155737755
Share:

Kontak Penulis



12179018.png (60×60)
+628155737755

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (12) antares (8) arduino (25) artikel (11) attiny (3) attiny2313 (19) audio (5) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp8266 (25) euro2020 (13) gcc (1) iklan (1) infrared (2) Input Output (3) iot (58) jam (7) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (17) komputer (3) komunikasi (1) kontrol (8) lain-lain (8) lcd (2) led (14) led matrix (6) line tracer (1) lm35 (1) lora (5) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (1) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (3) ninmedia (5) ntp (1) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (33) proyek (1) python (7) radio (17) raspberry pi (4) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) transistor (2) troubleshoot (3) tulisan (93) tutorial (108) tv digital (6) tvri (2) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika