Yardım Arduino ve python ikilisi ile akıllı ev sistemi projesinde takıldığım alan

Bu konuyu okuyanlar

NoobFly

Öğrenci
Katılım
29 Mart 2021
Mesajlar
11
Reaksiyon puanı
5
Puanları
3
Yaş
39
Merhabalar bozuk kapı zillerinden çıktığım bu akıllı ev serimde bir sistemimde takıldım arduino uno, esp8266,12 volt pil, yüksek torklu servo bileşenleri ile kapı açma projesi yapmaya karar verdim lakin internet üzerinde araştırdığım kadarı ile yardım bulamadım göremedim.

Aklımdaki işleyiş süreci şu şekilde:
AnaSistem.py içerisinde şifrelenmiş bir şekilde geçiş protokolü var şifre olmadan hiçbir şekilde işlem yapılamıyor
ana sistemi kendim yaptım, ihtiyacım olan doğru şifre kullanıldığında kapıaç.py tetiklenerek ki tetikleme koduda hazır vaziyette
arduinoya wifi üzerinden aç veya "1" artık ne denilirse komudunu gönderip servoyu tetiklemesi.

Özet:
arduino esp8266 kullanarak bilgisayar üzerinden python kullanarak nasıl iletişim sağlanabilir?
 

NoobFly

Öğrenci
Katılım
29 Mart 2021
Mesajlar
11
Reaksiyon puanı
5
Puanları
3
Yaş
39
Modül kullanımı : Arduino Dersleri #22: Arduino ESP8266 Kullanımı - Thingspeak Nasıl Kullanılır?


Örnek bir haberleşme : Python ile Arduino Haberleştirme | mehmettopuz.net


Arduino ve Python la haberleşme yaparsınız. Arduino ya değer gönderilmesi hâlinde istenilen değer ile servo yu hareket ettirirsiniz.
Teşekkürler verdiğiniz bağlantılar aracılığı ile kendi işime yarayan konuyu bulabildim en kısa yolunu yapamamış dahi olsam aşağıda verilen kod html üzerindeki sitede eğer ipadresi/?pin=on istenir ise alt kısımdaki pine artık servoya veya neye bağlı ise komut gönderiyor teorim python üzerinden requests modülü ile

Python:
import requests

requests.get('78.87.12.12/?pin=on')

Bu şekilde kısa bir kod ile html isteği atıp arduinonun bunu okuyup gerekli işlemi çalıştırması biraz uzun ve daha taze bir başlangıç özgeçmişim olduğu için kabataslak ve uzun bir yol


Arduino içi örnek:
Kod:
#define ag_ismi "Wifi Adresi"
#define ag_sifresi "Wifi Sifresi"
void setup() {
  Serial.begin(115200); //Seriport'u açıyoruz. Güncellediğimiz
  //ESP modülünün baudRate değeri 115200 olduğu için bizde Seriport'u 115200 şeklinde seçiyoruz
  Serial.println("AT"); //ESP modülümüz ile bağlantı kurulup kurulmadığını kontrol ediyoruz.
  pinMode(13, OUTPUT);
  delay(3000); //ESP ile iletişim için 3 saniye bekliyoruz.
  if (Serial.find("OK")) { //esp modülü ile bağlantıyı kurabilmişsek modül "AT" komutuna "OK" komutu ile geri dönüş yapıyor.
    Serial.println("AT+CWMODE=1"); //esp modülümüzün WiFi modunu STA şekline getiriyoruz. Bu mod ile modülümüz başka ağlara bağlanabilecek.
    delay(2000);
    String baglantiKomutu = String("AT+CWJAP=\"") + ag_ismi + "\",\"" + ag_sifresi + "\"";
    Serial.println(baglantiKomutu);
    delay(5000);
  }
  Serial.print("AT+CIPMUX=1\r\n");
  delay(200);
  Serial.print("AT+CIPSERVER=1,80\r\n");
  delay(1000);
}
void loop() {
  if (Serial.available() > 0) {
    if (Serial.find("+IPD,")) {
      String metin = "<head> Hello World </head>";
      metin += "<br><a href=\" ?pin=on\"><button type='button'>ON</button></a>";
      metin += "<br><a href=\" ?pin=off\"><button type='button'>OFF</button></a>";
      String cipsend = "AT+CIPSEND=";
      cipsend += "0";
      cipsend += ",";
      cipsend += metin.length();
      cipsend += "\r\n";
      Serial.print(cipsend);
      delay(500);
      Serial.println(metin);
      led_yakma();
      Serial.println("AT+CIPCLOSE=0");
    }
  }
}
void led_yakma() {
  String gelen = "";
  char serialdenokunan;
  while (Serial.available() > 0) {
    serialdenokunan = Serial.read();
    gelen += serialdenokunan;
  }
  Serial.println(gelen);
  if ((gelen.indexOf(":GET /?pin=on") > 1)) { //on butonuna basıldığında server adresinde /?pin=on var ise
    digitalWrite(13, HIGH); //ledi yakar
  }
  if ((gelen.indexOf(":GET /?pin=off") > 1)) { // off butonuna basıldığında server adresinde /?pin=off var ise
    digitalWrite(13, LOW); //ledi söndürür
  }
}
 
Üst