Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

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:

0 komentar:

Posting Komentar

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 (14) antares (11) arduino (28) 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 (26) euro2020 (13) gcc (1) gsm (1) iklan (1) infrared (2) Input Output (3) iot (76) 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 (11) lorawan (2) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (2) 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 (8) radio (28) raspberry pi (9) 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) telkomiot (5) transistor (2) troubleshoot (3) tulisan (94) tutorial (108) tv digital (6) tvri (2) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3) yolo (7)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika