Arduino

ESP8266 Wi-fi Kontrollü Araba Yapımı

ESP8266 ile Wi-fi Kontrollü Araba
Wifi Araç görseli

ESP8266 Wi-fi Kontrollü Araba Yapımı

Merhabalar arkadaşlar bugün sizlerle instagram takipçilerimizden Barış ERASLAN arkadaşımızın yaptığı Esp8266 Wi-fi Kontrollü araba projesini yapacağız aslında sadece üstünden geçeceğiz Barış zaten tüm projeyi kendisi gerçekleştirmiş kendisini tebrik ediyoruz.

Haydi şimdi Esp8266 Wi-fi Projemize Kullanacağımız Malzemeler ile başlayalım.

Malzemeler

Malzemelerimiz bu Şekilde şimdi her şeyi tamamladığımıza göre parçalarımızı bağlamaya geçebiliriz.

ESP8266 Wi-fi Kontrollü Araba Bağlantı Şeması

Bağlantı Şeması
Bağlantı Şeması

Bağlantılarımız arkadaşlar Tıpkı şemada görüldüğü gibi olacak ancak anlamama yada karıştırma ihtimaline karşı ben sizin için birde yazılı olarak aşağı liste olarak veriyorum.

  • ENA = D5
  • ENB = D6
  • IN 1 = D8
  • IN 2 = D7
  • IN 3 = D4
  • IN 4 = D3
  • GND = Pilin – ucuna
  • 12V = Pilin + ucuna
  • 5V = esp8266 5v çıkışına

Olacak şekilde bağlantılarımızı gerçekleştirdik Şimdi sıra geldi Tüm Tüm parçalar ile birlite aracımızı birleştirmeye nasıl yapılacağı konusunda problem yaşarsanız diye bu montaj işleminin örnek bir videosunu En alta atıyorum.

ESP8266 Wi-fi Kodlama

Evet Artık Tüm montaj işlemimiz sona erdi Şimdi Esp8266 Wi-fi Kodlama Bölümüne geçtik ancak daha öncede söylediğim gibi sizler için tüm kodlarını aşağıda tek parça halinde paylaşacağım ama sizlere tavsiyem aşama aşama kodları anlayarak kendi idenizde işlemenizden yana olacaktır.

Yapı Tanımlamalar

Tanımlamalar; arkadaşlar burada kullanacağımız pinlere isim ataması yapıyoruz bu şekilde o isimle artık ona ulaşabileceğiz buna yapı tanımlama diyebiliriz. Bu İşlem Global Blog yani en üst yada en alt main bloğun dışında olmalıdır.

#define ENA   14          // Enable/speed motors Right        GPIO14(D5)
#define ENB   12          // Enable/speed motors Left         GPIO12(D6)
#define IN_1  15          // L298N in1 motors Right           GPIO15(D8)
#define IN_2  13          // L298N in2 motors Right           GPIO13(D7)
#define IN_3  2           // L298N in3 motors Left            GPIO2(D4)
#define IN_4  0           // L298N in4 motors Left            GPIO0(D3)

Kütüphaneler

Arkadaşlar Şimdi Bazı işleri daha basit şekilde halletmek için Kütüphanelerimizi sisteme Eklemeliyiz. Sizlere Gereli Kütüphane Linklerini Aşağıya ekliyorum indirdikten sonra Arduino idenize kütüphaneleri kurup eklenmeye hazır hale getirmelisiniz..

Esp8266 Wi-fi Kütüphanelerimizi Tanımlayalım

#include <ESP8266WiFi.h>
#include <WiFiClient.h> 
#include <ESP8266WebServer.h>

Ayarlar ve Fonksiyonlar

Bu Bölümde döngü içerisinde ullanacağımız değişkenlerin tanımlamalarını yapıyoruz

String command;             //String to store app command state.
int speedCar = 800;         // 400 - 1023.
int speed_Coeff = 3;
const char* ssid = "Elektronik Atolyem Araba";
ESP8266WebServer server(80);

void setup() {

 pinMode(ENA, OUTPUT);
 pinMode(ENB, OUTPUT);  
 pinMode(IN_1, OUTPUT);
 pinMode(IN_2, OUTPUT);
 pinMode(IN_3, OUTPUT);
 pinMode(IN_4, OUTPUT); 

  Serial.begin(115200);
// Connecting WiFi
  WiFi.mode(WIFI_AP);
  WiFi.softAP(ssid);
  IPAddress myIP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(myIP);

 // Starting WEB-server 

     server.on ( "/", HTTP_handleRoot );
     server.onNotFound ( HTTP_handleRoot );
     server.begin();    

}

Fonksiyonlar

Arkadaşlar Esp8266 Wi-fi kodlamalarımız da ki en önemli nokta burası Buranın önemini anlamak için fonksiyonları bilmekte fayda var. Fonksiyonlar yazılımda sürekli yapılacak bir işin gerektiğinde yani fonksiyon çağırıldığında nasıl yapılacağını içeren bir parçadır. Nesnel bir önekk vermekk gerekirse arabayı döndürmek için sürekli pin açıp kapatmak yerine tanımlı fonksiyonu çağırırız ve işimizi basitçe hallederiz.

void goAhead(){ 

      digitalWrite(IN_1, LOW);
      digitalWrite(IN_2, HIGH);
      analogWrite(ENA, speedCar);
      digitalWrite(IN_3, LOW);
      digitalWrite(IN_4, HIGH);
      analogWrite(ENB, speedCar);

  }

void goBack(){ 

      digitalWrite(IN_1, HIGH);
      digitalWrite(IN_2, LOW);
      analogWrite(ENA, speedCar);
      digitalWrite(IN_3, HIGH);
      digitalWrite(IN_4, LOW);
      analogWrite(ENB, speedCar);

  }

void goRight(){ 

      digitalWrite(IN_1, HIGH);
      digitalWrite(IN_2, LOW);
      analogWrite(ENA, speedCar);
      digitalWrite(IN_3, LOW);
      digitalWrite(IN_4, HIGH);

      analogWrite(ENB, speedCar);

  }

void goLeft(){

      digitalWrite(IN_1, LOW);
      digitalWrite(IN_2, HIGH);
      analogWrite(ENA, speedCar);
      digitalWrite(IN_3, HIGH);
      digitalWrite(IN_4, LOW);
      analogWrite(ENB, speedCar);

  }

void goAheadRight(){

      digitalWrite(IN_1, LOW);
      digitalWrite(IN_2, HIGH);
      analogWrite(ENA, speedCar/speed_Coeff);
      digitalWrite(IN_3, LOW);
      digitalWrite(IN_4, HIGH);
      analogWrite(ENB, speedCar);

   }

void goAheadLeft(){

      digitalWrite(IN_1, LOW);
      digitalWrite(IN_2, HIGH);
      analogWrite(ENA, speedCar);
      digitalWrite(IN_3, LOW);
      digitalWrite(IN_4, HIGH);
      analogWrite(ENB, speedCar/speed_Coeff);

  }

void goBackRight(){ 

      digitalWrite(IN_1, HIGH);
      digitalWrite(IN_2, LOW);
      analogWrite(ENA, speedCar/speed_Coeff);
      digitalWrite(IN_3, HIGH);
      digitalWrite(IN_4, LOW);
      analogWrite(ENB, speedCar);

  }

void goBackLeft(){ 

      digitalWrite(IN_1, HIGH);
      digitalWrite(IN_2, LOW);
      analogWrite(ENA, speedCar);
      digitalWrite(IN_3, HIGH);
      digitalWrite(IN_4, LOW);
      analogWrite(ENB, speedCar/speed_Coeff);

  }

void stopRobot(){  

      digitalWrite(IN_1, LOW);
      digitalWrite(IN_2, LOW);
      analogWrite(ENA, speedCar);
      digitalWrite(IN_3, LOW);
      digitalWrite(IN_4, LOW);
      analogWrite(ENB, speedCar);

 }

Döngü

Evet arkadaşlar bu bölüm işlemcimizin çağlıştığı sürece sürece döndüğü bölüm olduğu artık biliniyordur sanırım. Bu Bölümde Wi-fi kumandası yani telefondan gelen komutları izlemeye alıyor ve eğer komut geldiyse işleme souyor Dilerseniz komutları değiştirebilirsiniz.

void loop() {

    server.handleClient();
      command = server.arg("State");
      if (command == "F") goAhead();
      else if (command == "B") goBack();
      else if (command == "L") goLeft();
      else if (command == "R") goRight();
      else if (command == "I") goAheadRight();
      else if (command == "G") goAheadLeft();
      else if (command == "J") goBackRight();
      else if (command == "H") goBackLeft();
      else if (command == "0") speedCar = 400;
      else if (command == "1") speedCar = 470;
      else if (command == "2") speedCar = 540;
      else if (command == "3") speedCar = 610;
      else if (command == "4") speedCar = 680;
      else if (command == "5") speedCar = 750;
      else if (command == "6") speedCar = 820;
      else if (command == "7") speedCar = 890;
      else if (command == "8") speedCar = 960;
      else if (command == "9") speedCar = 1023;
      else if (command == "S") stopRobot();

}
void HTTP_handleRoot(void) {
if( server.hasArg("State") ){
      Serial.println(server.arg("State"));
}
server.send ( 200, "text/html", "" );
delay(1);
}

Kodların Tamamı

#define ENA   14          // Enable/speed motors Right        GPIO14(D5)
#define ENB   12          // Enable/speed motors Left         GPIO12(D6)
#define IN_1  15          // L298N in1 motors Right           GPIO15(D8)
#define IN_2  13          // L298N in2 motors Right           GPIO13(D7)
#define IN_3  2           // L298N in3 motors Left            GPIO2(D4)
#define IN_4  0           // L298N in4 motors Left            GPIO0(D3)

#include <ESP8266WiFi.h>
#include <WiFiClient.h> 
#include <ESP8266WebServer.h>

String command;             //String to store app command state.
int speedCar = 800;         // 400 - 1023.
int speed_Coeff = 3;
const char* ssid = "Elektronik Atolyem Araba";
ESP8266WebServer server(80);

void setup() {

 pinMode(ENA, OUTPUT);
 pinMode(ENB, OUTPUT);  
 pinMode(IN_1, OUTPUT);
 pinMode(IN_2, OUTPUT);
 pinMode(IN_3, OUTPUT);
 pinMode(IN_4, OUTPUT); 

  Serial.begin(115200);
// Connecting WiFi
  WiFi.mode(WIFI_AP);
  WiFi.softAP(ssid);
  IPAddress myIP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(myIP);

 // Starting WEB-server 

     server.on ( "/", HTTP_handleRoot );
     server.onNotFound ( HTTP_handleRoot );
     server.begin();    

}

void goAhead(){ 

      digitalWrite(IN_1, LOW);
      digitalWrite(IN_2, HIGH);
      analogWrite(ENA, speedCar);
      digitalWrite(IN_3, LOW);
      digitalWrite(IN_4, HIGH);
      analogWrite(ENB, speedCar);

  }

void goBack(){ 

      digitalWrite(IN_1, HIGH);
      digitalWrite(IN_2, LOW);
      analogWrite(ENA, speedCar);
      digitalWrite(IN_3, HIGH);
      digitalWrite(IN_4, LOW);
      analogWrite(ENB, speedCar);

  }

void goRight(){ 

      digitalWrite(IN_1, HIGH);
      digitalWrite(IN_2, LOW);
      analogWrite(ENA, speedCar);
      digitalWrite(IN_3, LOW);
      digitalWrite(IN_4, HIGH);

      analogWrite(ENB, speedCar);

  }

void goLeft(){

      digitalWrite(IN_1, LOW);
      digitalWrite(IN_2, HIGH);
      analogWrite(ENA, speedCar);
      digitalWrite(IN_3, HIGH);
      digitalWrite(IN_4, LOW);
      analogWrite(ENB, speedCar);

  }

void goAheadRight(){

      digitalWrite(IN_1, LOW);
      digitalWrite(IN_2, HIGH);
      analogWrite(ENA, speedCar/speed_Coeff);
      digitalWrite(IN_3, LOW);
      digitalWrite(IN_4, HIGH);
      analogWrite(ENB, speedCar);

   }

void goAheadLeft(){

      digitalWrite(IN_1, LOW);
      digitalWrite(IN_2, HIGH);
      analogWrite(ENA, speedCar);
      digitalWrite(IN_3, LOW);
      digitalWrite(IN_4, HIGH);
      analogWrite(ENB, speedCar/speed_Coeff);

  }

void goBackRight(){ 

      digitalWrite(IN_1, HIGH);
      digitalWrite(IN_2, LOW);
      analogWrite(ENA, speedCar/speed_Coeff);
      digitalWrite(IN_3, HIGH);
      digitalWrite(IN_4, LOW);
      analogWrite(ENB, speedCar);

  }

void goBackLeft(){ 

      digitalWrite(IN_1, HIGH);
      digitalWrite(IN_2, LOW);
      analogWrite(ENA, speedCar);
      digitalWrite(IN_3, HIGH);
      digitalWrite(IN_4, LOW);
      analogWrite(ENB, speedCar/speed_Coeff);

  }

void stopRobot(){  

      digitalWrite(IN_1, LOW);
      digitalWrite(IN_2, LOW);
      analogWrite(ENA, speedCar);
      digitalWrite(IN_3, LOW);
      digitalWrite(IN_4, LOW);
      analogWrite(ENB, speedCar);

 }

void loop() {

    server.handleClient();
      command = server.arg("State");
      if (command == "F") goAhead();
      else if (command == "B") goBack();
      else if (command == "L") goLeft();
      else if (command == "R") goRight();
      else if (command == "I") goAheadRight();
      else if (command == "G") goAheadLeft();
      else if (command == "J") goBackRight();
      else if (command == "H") goBackLeft();
      else if (command == "0") speedCar = 400;
      else if (command == "1") speedCar = 470;
      else if (command == "2") speedCar = 540;
      else if (command == "3") speedCar = 610;
      else if (command == "4") speedCar = 680;
      else if (command == "5") speedCar = 750;
      else if (command == "6") speedCar = 820;
      else if (command == "7") speedCar = 890;
      else if (command == "8") speedCar = 960;
      else if (command == "9") speedCar = 1023;
      else if (command == "S") stopRobot();

}
void HTTP_handleRoot(void) {
if( server.hasArg("State") ){
      Serial.println(server.arg("State"));
}
server.send ( 200, "text/html", "" );
delay(1);
}
https://drive.google.com/file/d/1vfaSqICAD94_eSD9ypOP2p_UH5IIEA4C/view
1 2Sonraki sayfa
Etiketler

Onur NP

Arduino Stm32 gibi Mikrodenetleyici PLC Otomasyon sistemleri ve Genel elektronik projeleri üzerine örnek paylaşımlar yapmaktayım Endüstriyel ve Kişisel proejelerinize Ücretli olarak destek verebilirim.

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu
Call Now ButtonAra
Kapalı
Kapalı