O gördüğün ekrandaki görüntü. Senin idx her defasında sadece 1 kere 2 komutunu işliyor. Tek satır olduğu için 2222 gibi görüyor.
O zaman ben 234 yazarken 222333444 yazar ve * ile gönderirsem 234 mü gidecek yine?
 
Yok muhtemelen hepsini toplar ama toplama satırını sonuna gecikme verirsin tuş daha net okunur.
 
@uyesercan
Bu senin sipariş fonksiyonundaki https lerin "S" lerini sildim. Çünkü benim localde S diye bir şey yok.
Ama tabi her zamanki gibi zorlamadan çalışmayacak.

Fonkiyonun şu satırına göre Hata: -1 Döndürdü.

C:
 if (konsol) {
                Serial.printf("[HTTP] GET... uyarı, hata: %s\n\r", http.errorToString(httpKod).c_str());
            }
            SatirTemizle(1);
            lcd.print("Hata:");
            lcd.setCursor(6,3);
            lcd.print(httpKod);
        }
        http.end();

C:
void SiparisVer(String TamUrl) {
    std::unique_ptr<BearSSL::WiFiClientSecure>client(new BearSSL::WiFiClientSecure);
    client->setInsecure();
    HTTPClient http;
/*
    if (konsol) {
        Serial.println(TamUrl);
    }
*/
  if (http.begin(*client, TamUrl )) {
        // HTTPS
        int httpKod = http.GET();
        if (httpKod > 0) {
            if (konsol) {
                Serial.printf("[HTTP] Header Kod: %d\n", httpKod);
            }
            if (httpKod == HTTP_CODE_OK) {
                String SayfaDonus = http.getString();
                if (konsol) {
                    Serial.print(String("[HTTP] Sayfanın yaptığı dönüş: ") + SayfaDonus);
                }
                SatirTemizle(1);
                lcd.print(SayfaDonus);
            } else {
                SatirTemizle(1);
                lcd.print("Sayfa cevap vermiyor");
            }
        } else {
            if (konsol) {
                Serial.printf("[HTTP] GET... uyarı, hata: %s\n\r", http.errorToString(httpKod).c_str());
            }
            SatirTemizle(1);
            lcd.print("Hata:");
            lcd.setCursor(6,3);
            lcd.print(httpKod);
        }
        http.end();
    } else {
        if (konsol) {
            Serial.printf("[HTTP] Bağlantı Hatası!\n\r");
        }
        SatirTemizle(1);
        lcd.print("Baglanti Hatasi!");
    }
}
 
Senin kod zaten haberleşiyor demiştin, onu kullan.
 
İnternetteki başka örneklere bak istersen ssl için fazladan bir kaç ekleme yapmıştım. Basit örnekleri birleştirmek değiştirmeye uğraşmaktan daha kolay olur.
 
İnternetteki başka örneklere bak istersen ssl için fazladan bir kaç ekleme yapmıştım. Basit örnekleri birleştirmek değiştirmeye uğraşmaktan daha kolay olur.
Yarın netten bakayım. Zaten öncekini de netten bulmuştum.
 
Şuradaki sıkıntıyı anlayamadım.
Url yi oluşturup get ile gönderiyorum.
url değişkenimin tam çıktısı: 149.100.224.121/int/keypad.php?siparis=16
Ama işlem yapılmıyor.


C:
 String url = TamUrl;
           url += "/int/keypad.php?";
           url += "siparis=";
           url += urlEk;
    Serial.print("Requesting URL: ");
    Serial.println(url);
    //Bu, isteği sunucuya gönderir
    client.print(String("GET ") + url + " HTTP/1.1\r\n" +
                 "Host: " + url + "\r\n" +
                 "Connection: close\r\n\r\n");
   unsigned long timeout = millis();
    while (client.available() == 0){
      if(millis() - timeout > 5000){
      Serial.println(">>> client Timeout !");
      client.stop();
      return;
    }

url.png
 
Tamam çözdüm. Url başına "http://" istiyormuş.
Bunu aslında tahmin edip en yukarıda wifi bağlantı kısmında yazdım ama nedense kabul etmedi.
Biraz başka nedenler aradıktan sonra "http://" yi yukarıya yazmak yerine fonksiyon içinde tanımladığım url ye ekledim sorun çözüldü.

C:
 //Şimdi istek için bir URI oluşturduk
    String url = "http://";  // Buradan ekleyince çalıştı.
           url += TamUrl;
           url += "/int/keypad.php?";
           url += "siparis=";
           url += urlEk;
 
@uyesercan
Sunucuya veriyi gönderdiğimde dönen cevaba göre işlem yaptıracağım.
Sunucudan dönen cevapları şu döngü ile listeliyorum.
C:
while(client.available()){
    String line = client.readStringUntil('\r');
    Serial.print(line);
  }

Döngünün sonucunda aşağıdaki 8 satırlık çıktıyı alıyorum.
Bu satırların içinde 5.satırdaki veri benim işime yarıyor.
Bu satırın en sonundaki rakamı nasıl alıp bir değişkene atarım?
Aslında get.string ile alabilsem çok güzel işimi görecek ama ya get.string çalışmıyor yada ben doğru yazımı bulamıyorum.

HTML:
HTTP/1.1 302 Found
Date: Sat, 26 Sep 2020 18:54:00 GMT
Server: Apache/2.4.46 (Win32) PHP/7.3.21
X-Powered-By: PHP/7.3.21
Location: keypad.php?hata=2
Content-Length: 0
Connection: close
Content-Type: text/html; charset=UTF-8
 
Bağlantı kurduktan ( http.begin ) sonra;
String line = http.getString();
ile alırsın. Aslında bağlantıyı kurduktan sonra
http.GET();
ile apache cevap kontrolü de yaparsan daha da sağlıklı olur.
 
Bağlantı kurduktan ( http.begin ) sonra;
String line = http.getString();
ile alırsın. Aslında bağlantıyı kurduktan sonra
http.GET();
ile apache cevap kontrolü de yaparsan daha da sağlıklı olur.
Sen demiştin ya önceden nasıl çalıştırdıysan öyle yap diye.
ben önceden çalıştırdığım kodları bulup yaptım.
Senin siparisver(); fonksiyonunu da aşağıdaki gibi değiştirip çalışır hale getirdim.
Dolayısıyla senin dediğin http.begin kodlaması yok bende.
En son siparisver(); fonksiyonu aşağıdaki gibidir.

C:
void SiparisVer(String TamUrl, int urlEk) {
  //    Sipariş Verme Fonksiyonu
    SatirTemizle(0);
    lcd.setCursor(0,0);
    lcd.print("Tusla Gelsin v1");
    SatirTemizle(1);
    lcd.setCursor(0,1);
    lcd.print("Baglaniyor...");
    delay(5000);
    //TCP bağlantıları oluşturmak için WiFiClient sınıfını kullanın
    WiFiClient client;
    const int httpPort = 80;
    if(!client.connect(url,httpPort)){
      Serial.print(url);
      SatirTemizle(1);
      lcd.setCursor(0,1);
      lcd.print("Baglanamadi...");
      return;
    }
     SatirTemizle(0);
     SatirTemizle(1);
      lcd.setCursor(0,0);
      lcd.print("Baglandi...");
      lcd.setCursor(0,1);
      lcd.print("Urun isleniyor..");
      delay(3000);
    //Şimdi istek için bir URI oluşturduk
    String url = "http://";
           url += TamUrl;
           url += "/int/keypad.php?";
           url += "siparis=";
           url += urlEk;
    Serial.print("Requesting URL: ");
    Serial.println(url);
    //Bu, isteği sunucuya gönderir
    client.print(String("GET ") + url + " HTTP/1.1\r\n" +
                 "Host: " + url + "\r\n" +
                 "Connection: close\r\n\r\n");
                
   unsigned long timeout = millis();
    while (client.available() == 0){
      if(millis() - timeout > 5000){
      Serial.println(">>> client Timeout !");
      client.stop();
      return;
    }
  }
  //Cevabın tüm satırlarını sunucudan oku ve seriye yazdır
 
  while(client.available()){
    String line = client.readStringUntil('\r');
    //Serial.print(line);
    if(line == "HTTP/1.1 302 Found"){
        SatirTemizle(0);
        lcd.setCursor(0,0);
        lcd.print("Urun Zaten Var");
        SatirTemizle(1);
        lcd.setCursor(0,1);
        lcd.print("Yeni Urun Girinz");
      //Serial.print(line);
      //Serial.println("Ürün Zaten Var");
      return;
      }else{
        SatirTemizle(0);
        lcd.setCursor(0,0);
        lcd.print("Urun Eklendi");
        SatirTemizle(1);
        lcd.setCursor(0,1);
        lcd.print("Yeni Urun Girinz");
        return;
        }
  }
 
  String line = client.readStringUntil('\r');
    Serial.print(line);
  Serial.println();
  Serial.println("closing connecting");
  delay(10000);
}
 
Projeyi bitirdim.
HTTPClient olayını sisteme ekledim.
Get ile istediğim gibi veri alabiliyorum artık.
Ek olarak 2 adet led bağladım. Biri sistemin açık olduğunu göstermek için direk 3.3v çıkışına bağlı, diğeri wifi'nin bağlı olduğunu göstermek için bağlantı kontrolcüsü içine digitalWrite(D8, HIGH); olarak bağlı.
Birde kablolar oynadığı zaman lcd ekrana full pixel basıyordu. Bu durumda NodeMcu yu resetlemek gerekiyordu. Normalde sistem kapalı kutuda olacağından üzerindeki butona erişim imkansızdı. Bende NodeMcu üzerindeki reset pinine bir kod yazdım ve keypad deki kullanmadığım C tuşuna atadım. Artık C tuşuna bastığım da NodeMcu kendini resetliyor.

Projeyi bitirdim ama 3d yazıcı ile ilgili ciddi problemim olduğından kasasını bir türlü istediğim gibi basamıyorum. Bu yuzden biraz zamana ihtiyacım var. Günü geldiğinde yeni bir konu açıp proje olarak paylaşacağım.

20200927_121948.jpg
 
Aklıma bir şey takıldı. NodeMcu nun vu pinini kodlama ile low'a çekip aç-kapa yapmak mümkün mü acaba? Mantıken değil. Çünkü kapatmak için low'a çekebilsek de açmak için yine güce ihtiyacımız olacak. Olmayacağını biliyorum ama belki bilmediğim bir yöntem vardır diye sorayım dedim.
Cihaz çok aktif kullanılmayacağından genelde kapalı olsun istiyorum. Usb den besleyeceğim için buton koymak da biraz uğraştırıcı oluyor.
 
O pin mikroişlemciye bağlı değil. Voltaj regülatörüne bile bağlı değil. Doğrudan girişe bağlı. Yani istersen işlemciyi USB yerine VU pininden çalıştırabilirsin. Dolayısıyla senin sorun, USB gerilimini low yapabilir miyim demek gibi oluyor. Tabii ki mümkün değil. Besleme voltajını bu pin üzerinden düğme ile verebilirsin...

Yazılımla bu işi çözmek istiyorsan LCD'nin aydınlatması gibi kapatabileceğin özellikleri kapsayan uyku modu ekleyebilirsin.

Eğer pilli bir devre olmayacaksa bunların hiç birine gerek yok. Aslında besleme için en güzeli lityum (18650 filan) pil ile şarjlı bir sistem olur. Bir şarj ile çok uzun süre idare edersin, cihaz da mobil olur.
 
Bir ara sormuştum "pil çok çabuk biter" demişti biri.
 
Karbon pil ile lityum aynı olmaz. Bir de şu an konuştuklarımız biraz işkembeden sallama usulü. Yapacağın en güzel şey devre tamamen bittikten sonra çektiği gücü hesaplayıp ona göre adaptör ya da pil (pil ise ne çeşit?) karar vermek olur.
 
Karbon pil ile lityum aynı olmaz. Bir de şu an konuştuklarımız biraz işkembeden sallama usulü. Yapacağın en güzel şey devre tamamen bittikten sonra çektiği gücü hesaplayıp ona göre adaptör ya da pil (pil ise ne çeşit?) karar vermek olur.
Şu anahtarlı Micro USB kablodan alacağım;

 
Merhaba Arkadaşlar,
NodeMCU ile proje yapıyorsanız hazır sensör kutuları satan bir site var. sensor21.com. İşinize yarayabilir. Ayrıca kendi tasarımlarınızı ekleyebileceğiniz bir yönetim platformu da sunuyor. Projeleriniz için uygun olabilir. Denemeye değer.
 

Çevrimiçi personel

Forum istatistikleri

Konular
5,789
Mesajlar
99,024
Üyeler
2,464
Son üye
s4met

Son kaynaklar

Son profil mesajları

cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Kesici/Spindle hızı hesaplamak için SpreadSheet UDF'leri kullanın, hesap makinesi çok eski kalan bir yöntem :)
Dr. Bülent Başaran,
Elektrik ve Elektronik Mühendisi
Yonga Tasarım Özdevinimcisi
Üç güzel "çocuk" babası
Ortahisar/Ürgüp/Konya/Ankara/Pittsburgh/San Francisco/Atlanta/Alaçatı/Taşucu...

Back
Top