Selasa, 26 Juni 2018

Tutorial Kontrol Robot Dengan WiFi menggunakan ESP8266 dan Arduino



Dua robot pertama yaitu Robot pengikut Baris dan Kendala yang Menghindari Robot tidak memiliki kontrol manual terhadap robot, yaitu tidak akan ada input tambahan dari pengguna selain dari memprogram fungsi utamanya.
WiFi Controlled Robot Image 1
Tetapi dalam kasus dua robot lainnya yaitu Bluetooth Controlled Robotic Arm dan RF Controlled Robot, robot menunggu pengguna untuk memberikan masukan yang tepat. Masukan ini dapat berupa arah gerakan atau memegang objek dll.
Dalam proyek ini, saya telah membangun Robot sederhana (robot mobil) yang dapat dikendalikan melalui WiFi Network yaitu input pengguna untuk arah pergerakan Robot disediakan melalui WiFi (dengan bantuan Halaman HTML sederhana).

Konsep di balik Robot yang Dikendalikan WiFi

Jika Anda telah mengikuti proyek “WiFi Controlled LED menggunakan ESP8266 dan Arduino” kami, maka Anda dapat dengan mudah memahami konsep Robot yang Dikendalikan WiFi.
Modul ESP8266 bertanggung jawab untuk menghubungkan ke Jaringan WiFi dan juga bertindak sebagai server. Datang ke klien, halaman HTML sederhana dibuat dan browser yang membuka halaman web ini bertindak sebagai klien.
Ketika Anda mengklik halaman web, informasi terkait akan dikirimkan ke Server (ESP8266).Informasi ini selanjutnya diterima oleh Arduino dan itu mengendalikan motor robot.

Diagram Sirkuit Robot Kontrol WiFi

Diagram rangkaian Robot Kontrol WiFi menggunakan ESP8266 dan Arduino diberikan dalam gambar di bawah ini.
Diagram Diagram Robot Kontrol WiFi
CATATAN: ESP8266 Modul WiFi dimuat dengan AT Perintah.Rangkaian di atas dirancang dengan mengingat hal itu.

Komponen Diperlukan

  • ESP8266
  • Modul Penggerak Motor L298N
  • Arduino UNO
  • Robot Chassis
  • 4 x 5V Geared Motors
  • Menghubungkan Kabel
  • Catu daya (atau baterai)

Desain Sirkuit

Hal penting pertama yang harus diingat adalah saya akan memprogram Arduino dan bertanggung jawab untuk mengkonfigurasi Modul ESP8266 melalui Komunikasi Serial dan juga mengendalikan Modul Penggerak Motor L298N.
Jadi, Digital Pins 2 dan 3 Arduino dikonfigurasikan sebagai RX dan TX menggunakan fungsi SoftwareSerial. Pin ini terhubung ke pin TX dan RX dari Modul ESP8266.
Kemudian, Input Modul Driver Motor L298N yaitu IN1, IN2, IN3 dan IN4 terhubung ke Digital Pins 8, 9, 10 dan 11 dari Arduino UNO.
Datang ke chassis robot, ia memiliki 4 motor diarahkan. Jadi, saya telah menghubungkan dua motor yang benar secara paralel dan menghubungkan mereka ke terminal OUT1 dan OUT2 Driver Motor. Demikian pula, dua motor kiri ke OUT3 dan OUT4.

Kode

Ada dua kode untuk proyek Robot Controlled WiFi. Satu kode untuk Arduino UNO dan yang lainnya adalah Kode HTML untuk membuat Halaman Web.

Arduino Code

Berikut ini adalah Arduino Code untuk proyek tersebut. Dalam kode ini, masukkan SSID dan Kata Sandi jaringan WiFi Anda di tempat yang sesuai.
#include <SoftwareSerial.h>
/* Pins 8, 9, 10 and 11 of Arduino are connected to L298N Motor Driver Input pins i.e.
IN1, IN2, In3 and IN4 respectively*/
#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11
#define DEBUG true
#define RXPIN 2
#define TXPIN 3
SoftwareSerial esp8266Serial(RXPIN,TXPIN); //Pin 2 & 3 of Arduino as RX and TX. Connect TX and RX of ESP8266 respectively.
void setup()
{
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
Serial.begin(9600);
esp8266Serial.begin(115200); //Baud rate for communicating with ESP8266. Your's might be different.
esp8266Data("AT+RST\r\n", 5000, DEBUG); // Reset the ESP8266
esp8266Data("AT+CWMODE=1\r\n", 5000, DEBUG); //Set station mode Operation
/*Change the following command as per your requirement i.e. enter the
SSID and Password of your WiFi Network in the command.*/
esp8266Data("AT+CWJAP=\"SSID\",\"PASSWORD\"\r\n", 5000, DEBUG);//Enter your WiFi network's SSID and Password.
/*while(!esp8266Serial.find("OK"))
{
}*/
esp8266Data("AT+CIFSR\r\n", 5000, DEBUG);//You will get the IP Address of the ESP8266 from this command.
/* The following statement is to assign Static IP Address to ESP8266.
The syntax is AT+CIPSTA=<ip>,<gateway>,<netmask>.
This will assign a Static IP Address of 192.168.1.254 (in my case)
to the ESP8266 Module. Change this value as per your requirements i.e. this IP address
shouldn't conflict with any other device.
Also, the second and third parameters are Gateway and Net Mask values.
You can get these values from ipconfig command in command prompt*/
esp8266Data("AT+CIPSTA=\"192.168.1.254\",\"192.168.1.1\",\"255.255.255.0\"\r\n", 3000, DEBUG); // Assign Static IP Address
esp8266Data("AT+CIFSR\r\n", 5000, DEBUG);//You will get the IP Address of the ESP8266 from this command.
esp8266Data("AT+CIPMUX=1\r\n", 5000, DEBUG);
esp8266Data("AT+CIPSERVER=1,80\r\n", 5000, DEBUG);
}
void loop()
{
if (esp8266Serial.available())
{
if (esp8266Serial.find("+IPD,"))
{
String msg;
esp8266Serial.find("?");
msg = esp8266Serial.readStringUntil(' ');
String command1 = msg.substring(0, 5);
String command2 = msg.substring(6);
if (DEBUG)
{
Serial.println(command1);//Must print "robot"
Serial.println(command2);//Must print "FWD" or "REV" or "LFT" or "RGT" or "STP"
}
delay(100);
if (command2 == "FWD")
{
forward();
}
if (command2 == "REV")
{
reverse();
}
if (command2 == "RGT")
{
right();
}
if (command2 == "LFT")
{
left();
}
if (command2 == "STP")
{
stoprobot();
}
}
}
}
void forward()
{
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
void reverse()
{
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
void left()
{
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
void right()
{
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
void stoprobot()
{
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
String esp8266Data(String command, const int timeout, boolean debug)
{
String response = "";
esp8266Serial.print(command);
long int time = millis();
while ( (time + timeout) > millis())
{
while (esp8266Serial.available())
{
char c = esp8266Serial.read();
response += c;
}
}
if (debug)
{
Serial.print(response);
}
return response;
}
Juga, ada bagian dalam kode yang bertanggung jawab untuk menetapkan Alamat IP statis ke Modul ESP8266. Alamat IP ini (bersama dengan Gateway default dan Subnet Mask) harus diubah sesuai kebutuhan Anda.
Sangat penting bahwa Alamat IP Statis yang akan Anda tetapkan tidak boleh bertentangan dengan perangkat lain di jaringan Anda yaitu tidak ada perangkat lain yang harus memiliki Alamat IP yang sama.
Jadi, pindai semua Alamat IP di jaringan Anda dan dengan hati-hati tetapkan Alamat IP.

Kode HTML

Untuk membuat halaman web kontrol, Anda dapat menggunakan Kode HTML berikut bersama dengan file JavaScript.
<html>
<head>
<title>WiFi Controlled Robot</title>
</head>
<body>
<h2> <i> WiFi Controlled Robot using Arduino and ESP8266 </i> </h2>
<h5> <i> by ElectronicsHub.org </i> </h5>
<button id="FWD" class="robot">FORWARD</button>
<button id="REV" class="robot">REVERSE</button>
<button id="RGT" class="robot">RIGHT</button>
<button id="LFT" class="robot">LEFT</button>
<button id="STP" class="robot">STOP</button>
<script src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
$(".robot").click(function()
{
var cmd = $(this).attr('id');
$.get("http://192.168.1.254:80/", {robot:cmd});
});
});
</script>
</body>
</html>
Unduh kode di atas dengan ekstensi .html dan juga unduh filejquery.js . Tempatkan kedua file ini dalam satu folder.

Kerja

Sebuah proyek sederhana yang disebut WiFi Controlled Robot menggunakan ESP8266 dan Arduino diimplementasikan di sini.Biar saya jelaskan kerjanya.
Unggah kode Arduino setelah membuat koneksi yang diperlukan dan perubahan kode. Jika Anda membuka monitor serial Arduino IDE, Anda dapat melihat AT Perintah yang dikirim ke Modul ESP8266.
WiFi Controlled Robot Serial Monitor
Setelah Modul ESP terhubung ke WiFi, itu akan menetapkan IP statis dan juga membuat server. Setelah server dibuat, Modul ESP menunggu untuk terhubung dengan klien.
Sekarang, jika Anda membuka Halaman HTML yang telah Anda unduh sebelumnya, Anda dapat membuat tata letak sederhana yang terdiri dari lima tombol dengan nama FORWARD, REVERSE, RIGHT, LEFT dan STOP.
Laman Web Robot yang Dikendalikan WiFi
Dengan melihat tombol-tombol ini, Anda mungkin mengerti apa yang setiap tombol lakukan. Cukup dengan mengklik tombol melakukan tindakan tertentu. Ini sesederhana itu.
CATATAN:
  • Robot Kontrol WiFi ini dikendalikan dengan bantuan Halaman Web HTML (yang dapat diakses menggunakan browser web apa pun di komputer yang terhubung ke Jaringan WiFi yang sama dengan ESP8266).
  • Ada banyak proyek di luar sana yang telah menerapkan konsep serupa tetapi menggunakan Aplikasi seperti Blynk.
  • Alasan mengapa saya tidak pergi dengan Aplikasi itu adalah bahwa saya merasa bahwa Anda benar-benar tidak tahu apa yang terjadi sebenarnya karena semuanya dilakukan oleh file perpustakaan.
  • Jadi, jika Anda ingin tahu persis apa yang terjadi dengan proyek, maka hanya Anda yang harus mencoba ini.Jika tidak, Anda dapat dengan mudah menerapkan proyek menggunakan Aplikasi Blynk.
  • Jika Anda mempelajari kedua kode dengan saksama, Anda dapat memahami bagaimana komunikasi terjadi antara Browser dan Modul ESP.

Kesimpulan dan Aplikasi

  • Robot Pengendali WiFi sederhana diimplementasikan dalam proyek ini di mana mobil robot dikendalikan menggunakan halaman web melalui Jaringan WiFi.
  • Anda dapat membuat proyek ini dengan fitur-fitur canggih seperti mengintegrasikan kamera dan mengakses feed langsung di browser.