Bu haberde, Arduino ile step motoru internet üzerinden kontrol etmek için geliştirilen bir projenin haberini paylaştık. Projenin çalışma prensibini ve avantajlarını anlattık.
Projenin kodunu da paylaşmak istedik. Kod, aşağıdaki gibidir:
Örnek Kodlar
// Arduino step motor kodu
// Ağ adı ve şifresi
String agAdi = "YazarHaber";
String agSifresi = "YazarHaber";
// Step motor pinleri
int motorPin1 = 3, motorPin2 = 4, motorPin3 = 5, motorPin4 = 6;
// Arduino setup() fonksiyonu
void setup() {
// Step motor pinlerini çıkış olarak ayarla
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
// Seri haberleşmeyi başlat
Serial.begin(115200);
// ESP8266'yı resetle
Serial.println("AT+RST");
delay(1000);
// ESP8266'yı client olarak ayarla
Serial.println("AT+CWMODE=1");
delay(1000);
// Wifi'ye bağlan
Serial.println("AT+CWJAP="" + agAdi + "","" + agSifresi + """);
delay(1000);
// IP adresini ve MAC adresini oku
Serial.print("AT+CIFSRrn");
Serial.print(espOkuma(1000));
// Seri haberleşmede kullanmadığımız verileri temizle
serialTemizle(2000);
// Çoklu bağlantı ayarını yap
Serial.println("AT+CIPMUX=1");
serialTemizle(2000);
// Server oluştur ve 80. porttan dinlemeye başla
Serial.println("AT+CIPSERVER=1,80");
serialTemizle(2000);
}
// Arduino loop() fonksiyonu
void loop() {
// Seri haberleşmeden veri geldiğinde içindeki komutlar çalışır
if (Serial.available()) {
if (Serial.find("+IPD,")) {
// Bağlantı numarasını oku
delay(200);
int connectionId = Serial.read() - 48;
// Bağlantı komutlarını oku
String komut = espOkuma(1000);
// İleri komutu geldiğinde step motorunu ileri hareket ettir
if (komut.indexOf("step=ileri") != -1) {
for (int adim = 0; adim < 5; adim++) {
stepIleri(50);
}
}
// Geri komutu geldiğinde step motorunu geri hareket ettir
else if (komut.indexOf("step=geri") != -1) {
for (int adim = 0; adim < 5; adim++) {
stepGeri(50);
}
}
// Web sayfasını oluştur
String sayfa = "<h1>Step Motor Kontrol</h1><br>";
sayfa += "<br><a href="?step=ileri"><button><h1>Ileri</h1></button></a>";
sayfa += "<br><br><a href="?step=geri"><button><h1>Geri</h1></button></a>";
// Sayfa verisini oluştur
komut = "AT+CIPSEND=";
komut += connectionId;
komut += ",";
komut += sayfa.length();
komut += "rn";
Serial.print(komut);
delay(1000);
Serial.print(sayfa);
delay(1000);
// Bağlantıyı sonlandır
komut = "AT+CIPCLOSE=";
komut += connectionId;
komut += "rn";
Serial.print(komut);
}
}
}
// ESP8266'dan gelen dönütleri okur
String espOkuma(long int zaman