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
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();
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");
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
});
0 komentar:
Posting Komentar