Wifi esp8266 Step Motor Kontrolü

Yeni bir step motor kontrol uygulaması ile karşınızdayız. Bu sefer cep telefonundan step motorumuzu kontrol edeceğiz. Oldukça yaygın olarak kullanılan ESP8266 wifi çipini kullanacağız. Her zaman olduğu gibi kodlar ve şema dahil tamamen açık kaynaklı bir proje yapıyoruz.

Bu sitede daha birçok esp8266 çipi ile yapılmış uygulamaları bulabilirsiniz.

Devre Şeması

Kodlar

#include <ESP8266WiFi.h>
 
const char* ssid = "wifi adınız";
const char* password = "şifreniz";
 
const int stepPin = 13 ;
const int dirPin = 12;


WiFiServer server(80);
 
void setup() {
Serial.begin(115200);
delay(10);
 
pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT); 
 
Serial.println();
Serial.println();
Serial.print("Baglaniyor");
Serial.println(ssid);
 
WiFi.begin(ssid, password);
 
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi bagli");
 
 
server.begin();
Serial.println("Server Baslatildi");
 
 
Serial.print("Baglanmak icin bu URL'yi kullanin: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
 
}
 
void loop() {
  
  
 WiFiClient client = server.available();
if (!client) {
return;
}
 
 
Serial.println("Yeni kisi ");
while(!client.available()){
delay(1);
}
 
 
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
 
int value = LOW;
if (request.indexOf("/MOTOR-ILERI") != -1) {
digitalWrite(dirPin, HIGH);
 
for(int i = 0 ; i<100;i++){

    digitalWrite(stepPin,HIGH);
    delayMicroseconds(1500);
    digitalWrite(stepPin,LOW);
    delayMicroseconds(1500);
  }
value = HIGH;
}
if (request.indexOf("/MOTOR-GERI") != -1) {
digitalWrite(dirPin, LOW);
 
for(int i = 0 ; i<100;i++){

    digitalWrite(stepPin,HIGH);
    delayMicroseconds(1500);
    digitalWrite(stepPin,LOW);
    delayMicroseconds(1500);
  }
value = LOW;
}
 
 
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); 
client.println("<!DOCTYPE HTML>");
client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
client.println("<link rel=\"icon\" href=\"data:,\">");
client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}");
client.println(".button { background-color: #195B6A; border: none; color: white; padding: 16px 40px;");
client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}");
client.println(".button2 {background-color: #77878A;}</style></head>");
            
 
client.println("<body><h1>ESP8266 MOTOR KONROL</h1>");
client.println("<html>");
 

client.println("");

client.println("<a href=\"/MOTOR-ILERI\"><button class=\"button\">Ileri</button></a>");

client.println("<a href=\"/MOTOR-GERI\"><button class=\"button button2\">Geri</button></a>"); 
client.println("</html>");
client.println("<br>");
client.println("<br>");
delay(1);
client.print("<h3>Motor :</h3>");
 
if(value == HIGH) {
client.print("<h3>Ileriye döndü</h3>");
} else {
client.print("<h3>Geriye döndü</h3>");
}
Serial.println("Client disonnected");
Serial.println("");
 

}

Step Motor ve Optik Anahtar

Step motor uygulamalarında çoğunlukla pozisyonlamada bir anahtar kullanılarak sistemin bu anahtara gelip dokunması ve böylece kendi sıfır noktasını bulması sağlanmaktadır.

Herhangi bir mekanik parça bulundurmayan optik anahtarlar oldukça hassas ve uzun ömürlü sonuçlar ortaya çıkarmaktadır.

Gnexlab olarak bu çalışmamızda size konu hakkında fikir verebilecek bir uygulama yapmak istedik.

Devre Şeması

Kodlar

int dirPin= 8;
int stepPin = 9 ;

void setup() {  
  pinMode(dirPin, OUTPUT);
  pinMode(stepPin, OUTPUT);
  attachInterrupt(0,kesme,RISING);
  Serial.begin(9600);
  digitalWrite(dirPin,HIGH);
}
 
void kesme()
{
  digitalWrite(dirPin, !digitalRead(dirPin));
}
void loop() {
  for(int i = 0 ; i<200;i++){  
   digitalWrite(stepPin, HIGH);
   delayMicroseconds(1500);
   digitalWrite(stepPin, LOW);
   delayMicroseconds(1500); 
  } 
 
}