{"id":32192,"date":"2025-10-18T21:01:52","date_gmt":"2025-10-18T18:01:52","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/esp32-ve-firebase-ile-akilli-su-pompasi-kontrol-sistemi-nasil-yapilir\/"},"modified":"2025-10-18T21:01:52","modified_gmt":"2025-10-18T18:01:52","slug":"esp32-ve-firebase-ile-akilli-su-pompasi-kontrol-sistemi-nasil-yapilir","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/esp32-ve-firebase-ile-akilli-su-pompasi-kontrol-sistemi-nasil-yapilir\/","title":{"rendered":"ESP32 ve Firebase ile Ak\u0131ll\u0131 Su Pompas\u0131 Kontrol Sistemi Nas\u0131l Yap\u0131l\u0131r?"},"content":{"rendered":"<p><body><\/p>\n<style>\n        \/* Temel CSS stil tan\u0131mlar\u0131 *\/\n        body {\n            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n            line-height: 1.7;\n            color: #333;\n            max-width: 900px;\n            margin: 0 auto;\n            padding: 20px;\n            background-color: #f9f9f9;\n        }\n        h2 {\n            color: #2c3e50;\n            border-bottom: 2px solid #3498db;\n            padding-bottom: 10px;\n            margin-top: 40px;\n        }\n        h3 {\n            color: #34495e;\n            margin-top: 30px;\n        }\n        p {\n            margin-bottom: 15px;\n        }\n        ul, ol {\n            margin-bottom: 15px;\n            padding-left: 25px;\n        }\n        ul li, ol li {\n            margin-bottom: 8px;\n        }\n        code {\n            background-color: #e8e8e8;\n            padding: 2px 4px;\n            border-radius: 3px;\n            font-family: 'Consolas', 'Monaco', monospace;\n            font-size: 0.9em;\n        }\n        pre {\n            background-color: #2d2d2d;\n            color: #f8f8f2;\n            padding: 15px;\n            border-radius: 8px;\n            overflow-x: auto;\n            margin-bottom: 20px;\n            font-family: 'Consolas', 'Monaco', monospace;\n            font-size: 0.95em;\n        }\n        pre code {\n            background-color: transparent;\n            color: inherit;\n            padding: 0;\n            border-radius: 0;\n        }\n        table {\n            width: 100%;\n            border-collapse: collapse;\n            margin-bottom: 20px;\n            background-color: #fff;\n            box-shadow: 0 0 10px rgba(0,0,0,0.05);\n        }\n        th, td {\n            border: 1px solid #ddd;\n            padding: 12px;\n            text-align: left;\n        }\n        th {\n            background-color: #ecf0f1;\n            color: #34495e;\n            font-weight: bold;\n        }\n        tr:nth-child(even) {\n            background-color: #f2f2f2;\n        }\n        .expert-tip {\n            background-color: #e7f3fe;\n            border-left: 5px solid #2196F3;\n            padding: 15px;\n            margin: 20px 0;\n            border-radius: 4px;\n            font-style: italic;\n            color: #333;\n        }\n        .expert-tip strong {\n            color: #2196F3;\n        }<\/p>\n<p>        \/* Mobil Uyumlu Tasar\u0131m \u0130\u00e7in Media Query \u00d6rnekleri *\/\n        @media (max-width: 768px) {\n            body {\n                padding: 15px;\n            }\n            h2 {\n                font-size: 1.6em;\n            }\n            h3 {\n                font-size: 1.3em;\n            }\n            table, thead, tbody, th, td, tr {\n                display: block;\n            }\n            thead tr {\n                position: absolute;\n                top: -9999px;\n                left: -9999px;\n            }\n            tr {\n                border: 1px solid #ccc;\n                margin-bottom: 10px;\n            }\n            td {\n                border: none;\n                border-bottom: 1px solid #eee;\n                position: relative;\n                padding-left: 50%;\n                text-align: right;\n            }\n            td:before {\n                position: absolute;\n                top: 6px;\n                left: 6px;\n                width: 45%;\n                padding-right: 10px;\n                white-space: nowrap;\n                text-align: left;\n                font-weight: bold;\n            }\n            \/* Tablo ba\u015fl\u0131klar\u0131n\u0131 td:before i\u00e7eri\u011fine ekle *\/\n            td:nth-of-type(1):before { content: \"Bile\u015fen\"; }\n            td:nth-of-type(2):before { content: \"A\u00e7\u0131klama\"; }\n            td:nth-of-type(3):before { content: \"Fiyat Aral\u0131\u011f\u0131\"; }\n        }<\/p>\n<p>        @media (max-width: 480px) {\n            body {\n                padding: 10px;\n            }\n            h2 {\n                font-size: 1.4em;\n            }\n            h3 {\n                font-size: 1.2em;\n            }\n            pre {\n                font-size: 0.85em;\n            }\n        }\n    <\/style>\n<p>Ak\u0131ll\u0131 su pompas\u0131 kontrol sistemleri, su israf\u0131n\u0131 \u00f6nlerken ayn\u0131 zamanda manuel m\u00fcdahale ihtiyac\u0131n\u0131 ortadan kald\u0131ran yenilik\u00e7i \u00e7\u00f6z\u00fcmler sunar. Bu makalede, ESP32 mikrodenetleyici ve Firebase platformunu kullanarak uzaktan kontrol edilebilir ve otomatik \u00e7al\u0131\u015fan bir su pompas\u0131 sistemi in\u015fa etmeyi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz.<\/p>\n<p>G\u00fcn\u00fcm\u00fcz d\u00fcnyas\u0131nda kaynaklar\u0131n verimli kullan\u0131m\u0131, \u00f6zellikle de su gibi hayati \u00f6neme sahip bir kayna\u011f\u0131n y\u00f6netimi, giderek daha kritik hale gelmektedir. Ak\u0131ll\u0131 su pompas\u0131 kontrol sistemleri, geleneksel manuel sulama veya su transferi y\u00f6ntemlerine modern ve otomasyon odakl\u0131 bir alternatif sunar. Peki, tam olarak nedir bu sistemler ve neden bu kadar \u00f6nemlidir? Temel olarak, bu sistemler sens\u00f6rler arac\u0131l\u0131\u011f\u0131yla \u00e7evresel verileri (toprak nemi, su seviyesi gibi) toplar, bu verileri bir mikrodenetleyici (bizim durumumuzda ESP32) ile i\u015fler ve internet (IoT) \u00fczerinden bir bulut platformuna (Firebase) aktar\u0131r. Kullan\u0131c\u0131lar, mobil uygulama veya web aray\u00fcz\u00fc \u00fczerinden uzaktan pompay\u0131 kontrol edebilir veya sistemin tamamen otomatik \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayabilirler. B\u00f6ylece, gereksiz su kullan\u0131m\u0131n\u0131n \u00f6n\u00fcne ge\u00e7ilir ve enerji maliyetlerinden tasarruf sa\u011flan\u0131r.<\/p>\n<p>Bu t\u00fcr bir sistemin \u00f6nemi bir\u00e7ok farkl\u0131 senaryoda ortaya \u00e7\u0131kar. \u00d6rne\u011fin, b\u00fcy\u00fck bir bah\u00e7eye veya tarlaya sahip bir \u00e7ift\u00e7i d\u00fc\u015f\u00fcn\u00fcn. Manuel sulama hem \u00e7ok zaman al\u0131c\u0131d\u0131r hem de hangi b\u00f6lgelerin ne kadar suya ihtiya\u00e7 duydu\u011funu do\u011fru bir \u015fekilde belirlemek zordur. Ak\u0131ll\u0131 bir sulama sistemi, toprak nem sens\u00f6rleri sayesinde bitkilerin ger\u00e7ek ihtiyac\u0131na g\u00f6re su sa\u011flayarak su israf\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde azalt\u0131r. Ayr\u0131ca, uzaktan kontrol yetene\u011fi sayesinde \u00e7ift\u00e7i tarladan uzakta olsa bile sulama i\u015flemlerini ba\u015flatabilir, durdurabilir veya programlayabilir. Bu, i\u015f g\u00fcc\u00fc maliyetlerini d\u00fc\u015f\u00fcr\u00fcrken verimlili\u011fi art\u0131r\u0131r.<\/p>\n<p>Bir ba\u015fka vaka analizi olarak, evdeki su deposu y\u00f6netimini ele alal\u0131m. E\u011fer su seviyesi belli bir limitin alt\u0131na d\u00fc\u015ft\u00fc\u011f\u00fcnde pompan\u0131n otomatik olarak devreye girmesi ve depoyu doldurmas\u0131 gerekiyorsa, ak\u0131ll\u0131 bir sistem bu ihtiyac\u0131 kusursuzca kar\u015f\u0131lar. Su seviye sens\u00f6rleri ile s\u00fcrekli izleme yap\u0131l\u0131r ve Firebase \u00fczerinden kullan\u0131c\u0131lara anl\u0131k bildirimler g\u00f6nderilebilir. Bu, hem su kesintilerini \u00f6nler hem de pompan\u0131n kuru \u00e7al\u0131\u015fmas\u0131n\u0131 engelleyerek \u00f6mr\u00fcn\u00fc uzat\u0131r. Benzer \u015fekilde, sel riskinin oldu\u011fu b\u00f6lgelerde, belirli bir su seviyesi a\u015f\u0131ld\u0131\u011f\u0131nda tahliye pompalar\u0131n\u0131 otomatik olarak devreye sokan sistemler, olas\u0131 zararlar\u0131 en aza indirme potansiyeline sahiptir. K\u0131sacas\u0131, ak\u0131ll\u0131 su pompas\u0131 kontrol sistemleri, su y\u00f6netimine esneklik, verimlilik ve kullan\u0131c\u0131 dostu bir yakla\u015f\u0131m getirerek hem \u00e7evresel s\u00fcrd\u00fcr\u00fclebilirli\u011fe katk\u0131da bulunur hem de maliyet avantajlar\u0131 sunar.<\/p>\n<h3>Neden ESP32 ve Firebase Kombinasyonunu Tercih Etmelisiniz?<\/h3>\n<p>Bu projede neden \u00f6zellikle ESP32 ve Firebase ikilisini se\u00e7ti\u011fimize dair birka\u00e7 \u00f6nemli neden bulunmaktad\u0131r. ESP32, dahili Wi-Fi ve Bluetooth \u00f6zellikleriyle birlikte gelen g\u00fc\u00e7l\u00fc, d\u00fc\u015f\u00fck maliyetli bir mikrodenetleyicidir. Bu \u00f6zellikleri sayesinde internete kolayca ba\u011flanabilir ve sens\u00f6r verilerini buluta aktarabilir. G\u00fc\u00e7l\u00fc i\u015flem kapasitesi ve geni\u015f GPIO pinleri, birden fazla sens\u00f6r ve akt\u00fcat\u00f6r\u00fc y\u00f6netmek i\u00e7in yeterli esnekli\u011fi sunar. \u00d6te yandan Firebase, Google taraf\u0131ndan geli\u015ftirilen, ger\u00e7ek zamanl\u0131 veritaban\u0131, kimlik do\u011frulama, bulut i\u015flevleri ve bar\u0131nd\u0131rma gibi bir\u00e7ok \u00f6zelli\u011fi bir arada sunan bir mobil ve web uygulama geli\u015ftirme platformudur. ESP32&#8217;den gelen verileri anl\u0131k olarak Firebase Realtime Database&#8217;e yazabilir, ayn\u0131 zamanda Firebase \u00fczerinden g\u00f6nderilen komutlarla pompay\u0131 uzaktan kontrol edebiliriz. Bu kombinasyon, h\u0131zl\u0131 prototipleme, g\u00fcvenilir veri ak\u0131\u015f\u0131 ve kolay \u00f6l\u00e7eklenebilirlik sa\u011flar, bu da projemiz i\u00e7in ideal bir se\u00e7imdir.<\/p>\n<h2>Temel Bile\u015fenler: ESP32, Firebase ve Sens\u00f6rler Nas\u0131l \u00c7al\u0131\u015f\u0131r?<\/h2>\n<p>Ak\u0131ll\u0131 su pompas\u0131 kontrol sistemimizi olu\u015ftururken kullanaca\u011f\u0131m\u0131z temel bile\u015fenleri ve her birinin sistemdeki rol\u00fcn\u00fc anlamak olduk\u00e7a \u00f6nemlidir. Bu bile\u015fenler, sistemin beyni, veri otoyolu ve duyu organlar\u0131 olarak g\u00f6rev yaparlar. Do\u011fru bile\u015fen se\u00e7imi ve bunlar\u0131n i\u015flevlerini kavramak, projenin ba\u015far\u0131s\u0131 i\u00e7in ilk ad\u0131md\u0131r.<\/p>\n<h3>ESP32: Beynimiz ve \u0130leti\u015fim Merkezimiz<\/h3>\n<p>ESP32, projemizin kalbinde yer alan, Wi-Fi ve Bluetooth \u00f6zelliklerine sahip, d\u00fc\u015f\u00fck maliyetli ama olduk\u00e7a g\u00fc\u00e7l\u00fc bir mikrodenetleyicidir. Arduino IDE ile programlanabilir olmas\u0131, geni\u015f bir geli\u015ftirici kitlesine hitap etmesini sa\u011flar ve bol miktarda kaynak ve k\u00fct\u00fcphane sunar. ESP32&#8217;nin temel g\u00f6revleri \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>Sens\u00f6r Veri Toplama:<\/strong> Toprak nem sens\u00f6rleri, su seviye sens\u00f6rleri gibi \u00e7e\u015fitli sens\u00f6rlerden gelen analog veya dijital verileri okur ve i\u015fler.<\/li>\n<li><strong>\u0130nternet Ba\u011flant\u0131s\u0131:<\/strong> Dahili Wi-Fi mod\u00fcl\u00fc sayesinde yerel a\u011f\u0131m\u0131za ba\u011flan\u0131r ve internet \u00fczerinden Firebase ile ileti\u015fim kurar.<\/li>\n<li><strong>Mant\u0131k Y\u00fcr\u00fctme:<\/strong> Toplanan verilere ve Firebase&#8217;den gelen komutlara g\u00f6re pompan\u0131n ne zaman a\u00e7\u0131l\u0131p kapanaca\u011f\u0131na karar veren programlama mant\u0131\u011f\u0131n\u0131 y\u00fcr\u00fct\u00fcr.<\/li>\n<li><strong>Akt\u00fcat\u00f6r Kontrol\u00fc:<\/strong> R\u00f6le mod\u00fcl\u00fc arac\u0131l\u0131\u011f\u0131yla su pompas\u0131n\u0131 a\u00e7\u0131p kapat\u0131r.<\/li>\n<li><strong>Veri G\u00f6nderme\/Alma:<\/strong> Toplanan sens\u00f6r verilerini Firebase Realtime Database&#8217;e g\u00f6nderir ve Firebase&#8217;den gelen kontrol komutlar\u0131n\u0131 veya ayarlar\u0131 al\u0131r.<\/li>\n<\/ul>\n<p>ESP32&#8217;nin bu \u00e7ok y\u00f6nl\u00fcl\u00fc\u011f\u00fc, onu IoT projeleri i\u00e7in m\u00fckemmel bir se\u00e7im haline getirir. Hem sens\u00f6rlerden veri alabilir hem de kablosuz olarak bu verileri bulut platformuna iletebilir.<\/p>\n<h3>Firebase: Ger\u00e7ek Zamanl\u0131 Veri ve Uzaktan Kontrol Platformumuz<\/h3>\n<p>Firebase, Google&#8217;\u0131n mobil ve web uygulamalar\u0131 i\u00e7in geli\u015ftirilmi\u015f kapsaml\u0131 bir platformudur. Projemizde \u00f6zellikle Firebase Realtime Database \u00f6zelli\u011fini kullanaca\u011f\u0131z. Firebase&#8217;in sundu\u011fu avantajlar:<\/p>\n<ul>\n<li><strong>Ger\u00e7ek Zamanl\u0131 Veritaban\u0131:<\/strong> Sens\u00f6r verileri anl\u0131k olarak veritaban\u0131na yaz\u0131l\u0131r ve kullan\u0131c\u0131 aray\u00fczleri bu de\u011fi\u015fiklikleri e\u015f zamanl\u0131 olarak alg\u0131layabilir. Bu, su pompas\u0131 durumu gibi kritik bilgilerin her zaman g\u00fcncel kalmas\u0131n\u0131 sa\u011flar.<\/li>\n<li><strong>Kolay Entegrasyon:<\/strong> ESP32 i\u00e7in mevcut Firebase k\u00fct\u00fcphaneleri sayesinde mikrodenetleyici ile bulut aras\u0131nda veri al\u0131\u015fveri\u015fi olduk\u00e7a basittir.<\/li>\n<li><strong>Uzaktan Kontrol:<\/strong> Firebase veritaban\u0131na bir kontrol komutu (\u00f6rne\u011fin, &#8220;pompa a\u00e7\u0131k&#8221;) yaz\u0131ld\u0131\u011f\u0131nda, ESP32 bu de\u011fi\u015fikli\u011fi alg\u0131lar ve pompay\u0131 a\u00e7ar. Bu, d\u00fcnyan\u0131n herhangi bir yerinden sisteminizi kontrol etmenizi sa\u011flar.<\/li>\n<li><strong>Kimlik Do\u011frulama:<\/strong> Firebase Authentication ile sisteminize g\u00fcvenli eri\u015fim sa\u011flayabilir, sadece yetkili ki\u015filerin pompay\u0131 kontrol etmesine izin verebilirsiniz.<\/li>\n<li><strong>\u00d6l\u00e7eklenebilirlik:<\/strong> Firebase altyap\u0131s\u0131, projeniz b\u00fcy\u00fcd\u00fck\u00e7e veya daha fazla cihaz ekledik\u00e7e kolayca \u00f6l\u00e7eklenebilir.<\/li>\n<\/ul>\n<p>Firebase, sundu\u011fu zengin \u00f6zellikler ve kullan\u0131m kolayl\u0131\u011f\u0131 ile projemizin bulut tabanl\u0131 altyap\u0131s\u0131n\u0131 olu\u015fturmak i\u00e7in ideal bir \u00e7\u00f6z\u00fcmd\u00fcr. Ayr\u0131ca, \u00fccretsiz ba\u015flang\u0131\u00e7 plan\u0131 (Spark Plan) k\u00fc\u00e7\u00fck projeler i\u00e7in olduk\u00e7a c\u00f6merttir.<\/p>\n<h3>Sens\u00f6rler ve Akt\u00fcat\u00f6rler: Sistemimizin G\u00f6zleri ve Kollar\u0131<\/h3>\n<p>Sistemimizin \u00e7evre ile etkile\u015fimini sa\u011flayan bile\u015fenlerdir.<\/p>\n<ul>\n<li><strong>Toprak Nem Sens\u00f6r\u00fc (\u00d6rn: Capacitive Soil Moisture Sensor):<\/strong> Bitkilerin bulundu\u011fu topra\u011f\u0131n nem seviyesini \u00f6l\u00e7er. Diren\u00e7 tabanl\u0131 sens\u00f6rler yerine kapasitif sens\u00f6rler tercih edilmelidir, \u00e7\u00fcnk\u00fc paslanma sorunlar\u0131 daha azd\u0131r ve daha uzun \u00f6m\u00fcrl\u00fcd\u00fcrler. Toprak nemi belirli bir e\u015fi\u011fin alt\u0131na d\u00fc\u015ft\u00fc\u011f\u00fcnde pompan\u0131n otomatik olarak \u00e7al\u0131\u015fmas\u0131n\u0131 tetikleyebiliriz.<\/li>\n<li><strong>Su Seviye Sens\u00f6r\u00fc (\u00d6rn: Ultrasonik HC-SR04 veya \u015eamand\u0131ral\u0131 Sens\u00f6r):<\/strong> Su deposundaki su seviyesini izler. Ultrasonik sens\u00f6rler temass\u0131z \u00f6l\u00e7\u00fcm yaparken, \u015famand\u0131ral\u0131 sens\u00f6rler daha basit bir &#8220;a\u00e7\u0131k\/kapal\u0131&#8221; bilgisi sa\u011flar. Bu sens\u00f6r, deponun bo\u015falmas\u0131n\u0131 veya ta\u015fmas\u0131n\u0131 engellemek i\u00e7in kritik \u00f6neme sahiptir.<\/li>\n<li><strong>R\u00f6le Mod\u00fcl\u00fc:<\/strong> ESP32 gibi d\u00fc\u015f\u00fck voltajl\u0131 bir mikrodenetleyicinin y\u00fcksek voltajl\u0131 (genellikle 220V AC) bir su pompas\u0131n\u0131 g\u00fcvenli bir \u015fekilde a\u00e7\u0131p kapatmas\u0131n\u0131 sa\u011flayan bir elektronik anahtard\u0131r. R\u00f6le mod\u00fclleri, mikrodenetleyici ile pompa aras\u0131na bir izolasyon katman\u0131 koyarak g\u00fcvenlik sa\u011flar. Genellikle 1 kanall\u0131 veya 2 kanall\u0131 5V r\u00f6le mod\u00fclleri kullan\u0131l\u0131r.<\/li>\n<li><strong>Su Pompas\u0131:<\/strong> Temel g\u00f6revini yerine getirecek olan cihazd\u0131r. Kullan\u0131m amac\u0131na g\u00f6re (bah\u00e7e sulama, depo doldurma vb.) uygun g\u00fc\u00e7te ve tipte bir pompa se\u00e7ilmelidir. G\u00fcvenlik nedeniyle, pompa ve r\u00f6le aras\u0131ndaki ba\u011flant\u0131n\u0131n do\u011fru ve yal\u0131t\u0131lm\u0131\u015f oldu\u011fundan emin olunmal\u0131d\u0131r.<\/li>\n<\/ul>\n<p>Bu bile\u015fenlerin entegrasyonu, sistemin hem verileri do\u011fru bir \u015fekilde toplamas\u0131na hem de bu verilere g\u00f6re fiziksel d\u00fcnyada eylemler ger\u00e7ekle\u015ftirmesine olanak tan\u0131r. Her bir bile\u015fenin do\u011fru se\u00e7imi ve ba\u011flant\u0131s\u0131, projenin istikrarl\u0131 ve g\u00fcvenli \u00e7al\u0131\u015fmas\u0131 i\u00e7in hayati \u00f6nem ta\u015f\u0131r.<\/p>\n<h2>Ad\u0131m Ad\u0131m Kurulum: Donan\u0131m Ba\u011flant\u0131lar\u0131 Nas\u0131l Yap\u0131l\u0131r?<\/h2>\n<p>\u015eimdiye kadar projemizin neden \u00f6nemli oldu\u011funu ve hangi bile\u015fenlerden olu\u015ftu\u011funu anlad\u0131k. Bu b\u00f6l\u00fcmde, t\u00fcm bu bile\u015fenleri fiziksel olarak bir araya getirme s\u00fcrecine odaklanaca\u011f\u0131z. Donan\u0131m ba\u011flant\u0131lar\u0131, sistemin do\u011fru bir \u015fekilde \u00e7al\u0131\u015fabilmesi i\u00e7in b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. Yanl\u0131\u015f yap\u0131lan bir ba\u011flant\u0131, bile\u015fenlere zarar verebilir veya sistemin hi\u00e7 \u00e7al\u0131\u015fmamas\u0131na neden olabilir. Bu nedenle her ad\u0131m\u0131 dikkatlice takip etmek kritik bir ad\u0131md\u0131r.<\/p>\n<h3>Gerekli Malzemeler Listesi<\/h3>\n<p>Projenizi ba\u015flatmadan \u00f6nce ihtiyac\u0131n\u0131z olacak temel donan\u0131m bile\u015fenlerinin bir listesini yapal\u0131m. Bu liste, al\u0131\u015fveri\u015f yaparken size yol g\u00f6sterecektir:<\/p>\n<ul>\n<li><strong>ESP32 Geli\u015ftirme Kart\u0131:<\/strong> (\u00d6rn: ESP32 DEVKIT V1 veya ESP32 Wemos D1 Mini) &#8211; Projemizin i\u015flemcisi ve ileti\u015fim mod\u00fcl\u00fc.<\/li>\n<li><strong>1 Kanall\u0131 R\u00f6le Mod\u00fcl\u00fc:<\/strong> (5V veya 3.3V uyumlu) &#8211; Su pompas\u0131n\u0131 a\u00e7\u0131p kapatmak i\u00e7in.<\/li>\n<li><strong>Su Pompas\u0131:<\/strong> (12V DC dalg\u0131\u00e7 pompa veya uygun bir AC pompa ve buna uygun r\u00f6le) &#8211; Su transferi yapacak cihaz.<\/li>\n<li><strong>Harici G\u00fc\u00e7 Kayna\u011f\u0131:<\/strong> (12V DC, pompan\u0131z\u0131n amper ihtiyac\u0131na g\u00f6re) &#8211; Pompan\u0131z\u0131 beslemek i\u00e7in.<\/li>\n<li><strong>Toprak Nem Sens\u00f6r\u00fc:<\/strong> (Capacitive Soil Moisture Sensor) &#8211; Toprak nemini \u00f6l\u00e7mek i\u00e7in.<\/li>\n<li><strong>Su Seviye Sens\u00f6r\u00fc:<\/strong> (Ultrasonik HC-SR04 veya \u015eamand\u0131ral\u0131 Sens\u00f6r) &#8211; Su seviyesini kontrol etmek i\u00e7in.<\/li>\n<li><strong>Breadboard:<\/strong> Ba\u011flant\u0131lar\u0131 ge\u00e7ici olarak yapmak i\u00e7in.<\/li>\n<li><strong>Jumper Kablolar:<\/strong> (Erkek-erkek, erkek-di\u015fi, di\u015fi-di\u015fi) &#8211; Bile\u015fenleri birbirine ba\u011flamak i\u00e7in.<\/li>\n<li><strong>USB Kablosu:<\/strong> ESP32&#8217;yi bilgisayar\u0131n\u0131za ba\u011flamak ve programlamak i\u00e7in (Type-C veya Micro USB, ESP32 modeline g\u00f6re).<\/li>\n<li><strong>\u0130ste\u011fe Ba\u011fl\u0131:<\/strong> Su hortumu, ba\u011flant\u0131 par\u00e7alar\u0131, su deposu.<\/li>\n<\/ul>\n<p>Bu bile\u015fenleri temin ettikten sonra, ba\u011flant\u0131 \u015femas\u0131na ge\u00e7ebiliriz.<\/p>\n<h3>Donan\u0131m Ba\u011flant\u0131 \u015eemas\u0131 ve Ad\u0131mlar\u0131<\/h3>\n<p>A\u015fa\u011f\u0131daki tablo, temel ba\u011flant\u0131lar\u0131 \u00f6zetlemektedir. Karma\u015f\u0131k bir \u015fema \u00e7izmek yerine, her bir bile\u015fenin ESP32&#8217;ye nas\u0131l ba\u011flanaca\u011f\u0131n\u0131 a\u00e7\u0131klayal\u0131m.<\/p>\n<table>\n<thead>\n<tr>\n<th>Bile\u015fen<\/th>\n<th>ESP32 Ba\u011flant\u0131s\u0131<\/th>\n<th>A\u00e7\u0131klama<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>R\u00f6le Mod\u00fcl\u00fc<\/strong><\/td>\n<td>\n<ul>\n<li>VCC -> ESP32 3.3V veya Harici 5V (r\u00f6le t\u00fcr\u00fcne g\u00f6re)<\/li>\n<li>GND -> ESP32 GND<\/li>\n<li>IN (Kontrol Pini) -> ESP32 GPIO23 (\u00d6rn.)<\/li>\n<\/ul>\n<\/td>\n<td>R\u00f6le mod\u00fcl\u00fcn\u00fcn VCC pinini ESP32&#8217;nin 3.3V \u00e7\u0131k\u0131\u015f\u0131na veya harici bir 5V g\u00fc\u00e7 kayna\u011f\u0131na (e\u011fer r\u00f6le 5V ile \u00e7al\u0131\u015f\u0131yorsa ve ESP32&#8217;den yeterli ak\u0131m sa\u011flanam\u0131yorsa) ba\u011flay\u0131n. GND pinini ESP32 GND&#8217;ye ba\u011flay\u0131n. IN pinini ESP32&#8217;deki herhangi bir dijital GPIO pinine (\u00f6rne\u011fin GPIO23) ba\u011flay\u0131n. Pompan\u0131n g\u00fc\u00e7 kablosunu r\u00f6lenin normalde a\u00e7\u0131k (NO) ve ortak (COM) pinlerine ba\u011flay\u0131n. Bu, r\u00f6le tetiklendi\u011finde pompan\u0131n \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar. R\u00f6le ve pompa aras\u0131ndaki ba\u011flant\u0131da g\u00fcvenlik \u00f6nlemlerine dikkat edin, \u00f6zellikle AC pompa kullan\u0131l\u0131yorsa.<\/td>\n<\/tr>\n<tr>\n<td><strong>Toprak Nem Sens\u00f6r\u00fc<\/strong><\/td>\n<td>\n<ul>\n<li>VCC -> ESP32 3.3V<\/li>\n<li>GND -> ESP32 GND<\/li>\n<li>Analog \u00c7\u0131k\u0131\u015f (AO) -> ESP32 VP (ADC1_CH0 \/ GPIO36)<\/li>\n<\/ul>\n<\/td>\n<td>Kapasitif toprak nem sens\u00f6r\u00fcn\u00fcn VCC pinini ESP32&#8217;nin 3.3V \u00e7\u0131k\u0131\u015f\u0131na, GND pinini ESP32&#8217;nin GND&#8217;sine ba\u011flay\u0131n. Analog \u00e7\u0131k\u0131\u015f pinini (AO) ESP32&#8217;nin analog giri\u015f pinlerinden birine (\u00f6rne\u011fin GPIO36) ba\u011flay\u0131n. Bu pin, toprak nemindeki de\u011fi\u015fimi analog de\u011ferler olarak okuyacakt\u0131r. Sens\u00f6r\u00fc topra\u011fa yerle\u015ftirirken elektronik k\u0131sm\u0131n\u0131n \u0131slanmamas\u0131na dikkat edin.<\/td>\n<\/tr>\n<tr>\n<td><strong>Ultrasonik Su Seviye Sens\u00f6r\u00fc (HC-SR04)<\/strong><\/td>\n<td>\n<ul>\n<li>VCC -> ESP32 3.3V<\/li>\n<li>GND -> ESP32 GND<\/li>\n<li>Trig -> ESP32 GPIO25 (\u00d6rn.)<\/li>\n<li>Echo -> ESP32 GPIO26 (\u00d6rn.)<\/li>\n<\/ul>\n<\/td>\n<td>HC-SR04 sens\u00f6r\u00fcn\u00fcn VCC ve GND pinlerini ESP32&#8217;nin 3.3V ve GND pinlerine ba\u011flay\u0131n. Trig (tetikleyici) pinini bir dijital GPIO&#8217;ya (\u00f6rne\u011fin GPIO25), Echo (yank\u0131) pinini ise ba\u015fka bir dijital GPIO&#8217;ya (\u00f6rne\u011fin GPIO26) ba\u011flay\u0131n. Bu sens\u00f6r, ses dalgalar\u0131 yayarak ve geri d\u00f6n\u00fc\u015f s\u00fcresini \u00f6l\u00e7erek mesafeyi, dolay\u0131s\u0131yla su seviyesini hesaplar. <strong>Unutmay\u0131n: HC-SR04 genellikle 5V ile \u00e7al\u0131\u015f\u0131r. ESP32&#8217;ye do\u011frudan ba\u011flarken Echo pininden gelen 5V sinyali 3.3V&#8217;a d\u00fc\u015f\u00fcrmek i\u00e7in bir gerilim b\u00f6l\u00fcc\u00fc (voltage divider) kullanman\u0131z GEREK\u0130R. Aksi takdirde ESP32&#8217;ye zarar verebilirsiniz. E\u011fer 5V&#8217;luk bir ESP32 kullanm\u0131yorsan\u0131z bu ad\u0131ma dikkat edin.<\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong>Su Pompas\u0131<\/strong><\/td>\n<td>\n<ul>\n<li>(+) -> Harici G\u00fc\u00e7 Kayna\u011f\u0131 (+)<\/li>\n<li>(-) -> R\u00f6le Mod\u00fcl\u00fc COM Pini<\/li>\n<li>Harici G\u00fc\u00e7 Kayna\u011f\u0131 (-) -> R\u00f6le Mod\u00fcl\u00fc NO Pini<\/li>\n<\/ul>\n<\/td>\n<td>Su pompan\u0131z\u0131n pozitif (+) ucunu harici g\u00fc\u00e7 kayna\u011f\u0131n\u0131n pozitif (+) ucuna ba\u011flay\u0131n. Pompan\u0131z\u0131n negatif (-) ucunu r\u00f6le mod\u00fcl\u00fcn\u00fcn &#8220;Normalde A\u00e7\u0131k&#8221; (NO) pinine ba\u011flay\u0131n. Harici g\u00fc\u00e7 kayna\u011f\u0131n\u0131z\u0131n negatif (-) ucunu ise r\u00f6le mod\u00fcl\u00fcn\u00fcn &#8220;Ortak&#8221; (COM) pinine ba\u011flay\u0131n. Bu ba\u011flant\u0131, r\u00f6le tetiklendi\u011finde pompan\u0131n \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar. E\u011fer bir AC pompa kullan\u0131yorsan\u0131z, n\u00f6tr hatt\u0131n\u0131 do\u011frudan pompaya, faz hatt\u0131n\u0131 ise r\u00f6le \u00fczerinden pompaya ba\u011flay\u0131n. AC ba\u011flant\u0131lar\u0131nda ekstra dikkatli olun ve gerekirse profesyonel yard\u0131m al\u0131n.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"expert-tip\">\n        <strong>Uzman \u0130pucu:<\/strong> T\u00fcm ba\u011flant\u0131lar\u0131 yapmadan \u00f6nce, ESP32 ve di\u011fer bile\u015fenler i\u00e7in uygun bir g\u00fc\u00e7 kayna\u011f\u0131 se\u00e7ti\u011finizden emin olun. \u00d6zellikle r\u00f6le mod\u00fclleri ve pompalar, ESP32&#8217;nin sa\u011flayabilece\u011finden daha fazla ak\u0131ma ihtiya\u00e7 duyabilir. Bu durumlarda harici bir g\u00fc\u00e7 kayna\u011f\u0131 kullanmak ve ESP32&#8217;yi ayr\u0131 beslemek hem g\u00fcvenlik hem de stabilite a\u00e7\u0131s\u0131ndan \u00f6nemlidir. Ayr\u0131ca, ba\u011flant\u0131lar\u0131n\u0131z\u0131 lehimlemeden \u00f6nce breadboard \u00fczerinde test edin.\n    <\/div>\n<p>Yukar\u0131daki ba\u011flant\u0131lar genel bir rehber niteli\u011findedir. Kulland\u0131\u011f\u0131n\u0131z ESP32 kart\u0131n\u0131n veya sens\u00f6rlerin spesifik pin d\u00fczenlemesi farkl\u0131l\u0131k g\u00f6sterebilir. Her zaman bile\u015fenlerinizin veri sayfalar\u0131n\u0131 (datasheet) kontrol etmelisiniz. Ba\u011flant\u0131lar\u0131 yaparken k\u0131sa devre yapmamaya \u00f6zen g\u00f6sterin ve \u00f6zellikle y\u00fcksek voltajl\u0131 par\u00e7alarla \u00e7al\u0131\u015f\u0131rken t\u00fcm g\u00fcvenlik \u00f6nlemlerini al\u0131n.<\/p>\n<h2>ESP32 \u0130\u00e7in Yaz\u0131l\u0131m Geli\u015ftirme: Firebase Entegrasyonu ve Veri Y\u00f6netimi<\/h2>\n<p>Donan\u0131m ba\u011flant\u0131lar\u0131n\u0131 tamamlad\u0131ktan sonra, projemizin beyni olan ESP32&#8217;yi programlama a\u015famas\u0131na ge\u00e7ebiliriz. Bu b\u00f6l\u00fcmde, Arduino IDE ortam\u0131n\u0131 kuracak, gerekli k\u00fct\u00fcphaneleri ekleyecek ve Firebase ile ileti\u015fim kuracak temel kod yap\u0131s\u0131n\u0131 olu\u015fturaca\u011f\u0131z. Bu kod, sens\u00f6r verilerini okuyacak, Firebase&#8217;e g\u00f6nderecek ve Firebase&#8217;den gelen kontrol komutlar\u0131na g\u00f6re pompay\u0131 y\u00f6netecek. Yaz\u0131l\u0131m geli\u015ftirme, sistemin donan\u0131m kadar \u00f6nemli bir par\u00e7as\u0131d\u0131r ve do\u011fru bir \u015fekilde yap\u0131land\u0131r\u0131lmas\u0131 gerekir.<\/p>\n<h3>Arduino IDE Kurulumu ve Gerekli K\u00fct\u00fcphaneler<\/h3>\n<ol>\n<li><strong>Arduino IDE Kurulumu:<\/strong> <a href=\"https:\/\/www.arduino.cc\/en\/software\" target=\"_blank\">Arduino resmi web sitesinden<\/a> IDE&#8217;yi indirip bilgisayar\u0131n\u0131za kurun.<\/li>\n<li><strong>ESP32 Kart Tan\u0131mlamas\u0131:<\/strong> Arduino IDE&#8217;yi a\u00e7\u0131n, <code class=\"language-plaintext\">Dosya > Tercihler<\/code> men\u00fcs\u00fcne gidin. &#8220;Ek Devre Kartlar\u0131 Y\u00f6neticisi URL&#8217;leri&#8221; alan\u0131na a\u015fa\u011f\u0131daki URL&#8217;yi ekleyin:<br \/>\n            <code class=\"language-plaintext\">https:\/\/raw.githubusercontent.com\/espressif\/arduino-esp32\/gh-pages\/package_esp32_index.json<\/code><br \/>\n            Ard\u0131ndan <code class=\"language-plaintext\">Ara\u00e7lar > Kart > Kart Y\u00f6neticisi<\/code>&#8216;ne gidin, &#8220;esp32&#8221; yaz\u0131p arat\u0131n ve &#8220;esp32 by Espressif Systems&#8221; paketini y\u00fckleyin.<\/li>\n<li><strong>Gerekli K\u00fct\u00fcphaneler:<\/strong> <code class=\"language-plaintext\">Taslak > K\u00fct\u00fcphaneleri Dahil Et > K\u00fct\u00fcphaneleri Y\u00f6net<\/code>&#8216;e gidin ve a\u015fa\u011f\u0131daki k\u00fct\u00fcphaneleri aray\u0131p y\u00fckleyin:\n<ul>\n<li><code class=\"language-plaintext\">Firebase-ESP32<\/code> (espressif\/Firebase-ESP-Client)<\/li>\n<li><code class=\"language-plaintext\">WiFi<\/code> (genellikle ESP32 paketiyle gelir)<\/li>\n<\/ul>\n<p>            E\u011fer ultrasonik sens\u00f6r kullan\u0131yorsan\u0131z:<\/p>\n<ul>\n<li><code class=\"language-plaintext\">NewPing<\/code> veya manuel olarak mesafe hesaplama.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3>Firebase Projesi Olu\u015fturma ve Kimlik Bilgileri<\/h3>\n<ol>\n<li><strong>Firebase Konsolu:<\/strong> <a href=\"https:\/\/console.firebase.google.com\/\" target=\"_blank\">Firebase konsoluna<\/a> gidin ve bir Google hesab\u0131yla oturum a\u00e7\u0131n.<\/li>\n<li><strong>Yeni Proje Olu\u015ftur:<\/strong> &#8220;Proje Ekle&#8221; butonuna t\u0131klayarak yeni bir proje olu\u015fturun. Projenize bir isim verin ve Google Analytics ayarlar\u0131n\u0131 iste\u011finize g\u00f6re yap\u0131land\u0131r\u0131n.<\/li>\n<li><strong>Ger\u00e7ek Zamanl\u0131 Veritaban\u0131 (Realtime Database) Kurulumu:<\/strong> Firebase projenizin sol men\u00fcs\u00fcnden &#8220;Realtime Database&#8221; se\u00e7ene\u011fine t\u0131klay\u0131n. &#8220;Veritaban\u0131 Olu\u015ftur&#8221; butonuna basarak yeni bir veritaban\u0131 olu\u015fturun. G\u00fcvenlik kurallar\u0131n\u0131 &#8220;test modu&#8221; olarak ba\u015flatabilirsiniz, ancak canl\u0131ya almadan \u00f6nce g\u00fcvenlik kurallar\u0131n\u0131 d\u00fczenlemelisiniz.<\/li>\n<li><strong>API Anahtar\u0131 ve Veritaban\u0131 URL&#8217;si:<\/strong> Proje ayarlar\u0131n\u0131zdan (di\u015fli simgesi) &#8220;Proje Ayarlar\u0131&#8221;na gidin. &#8220;Genel&#8221; sekmesinde &#8220;Web API anahtar\u0131&#8221;n\u0131 (Server key de\u011fil, &#8220;Web API Key&#8221; veya &#8220;Web API Anahtar\u0131&#8221;) bulacaks\u0131n\u0131z. Bu anahtar <code class=\"language-plaintext\">FIREBASE_HOST<\/code> ve <code class=\"language-plaintext\">FIREBASE_AUTH<\/code> i\u00e7in kullan\u0131lacak. Realtime Database b\u00f6l\u00fcm\u00fcndeki veritaban\u0131 URL&#8217;nizi de not al\u0131n (\u00f6rne\u011fin, <code class=\"language-plaintext\">https:\/\/your-project-id-default-rtdb.firebaseio.com\/<\/code>).<\/li>\n<\/ol>\n<h3>ESP32 Firebase Entegrasyonu ve Temel Kod Yap\u0131s\u0131<\/h3>\n<p>\u015eimdi ESP32&#8217;yi programlamaya ba\u015flayabiliriz. A\u015fa\u011f\u0131daki kod, Wi-Fi ba\u011flant\u0131s\u0131n\u0131 kurar, Firebase ile kimlik do\u011frulamas\u0131n\u0131 yapar ve sens\u00f6r verilerini Firebase&#8217;e g\u00f6nderirken ayn\u0131 zamanda Firebase&#8217;den pompa kontrol komutlar\u0131n\u0131 okur.<\/p>\n<pre><code>\n#include <WiFi.h>\n#include <FirebaseESP32.h>\n\n\/\/ WiFi Ayarlar\u0131\n#define WIFI_SSID \"WIFI_ADINIZ\"\n#define WIFI_PASSWORD \"WIFI_SIFRENIZ\"\n\n\/\/ Firebase Ayarlar\u0131\n#define FIREBASE_HOST \"YOUR_FIREBASE_DATABASE_URL\" \/\/ \u00f6rn: \"your-project-id-default-rtdb.firebaseio.com\"\n#define FIREBASE_AUTH \"YOUR_WEB_API_KEY\" \/\/ Firebase Proje Ayarlar\u0131ndan al\u0131nan Web API Anahtar\u0131n\u0131z\n\n\/\/ Donan\u0131m Pinleri\n#define RELAY_PIN 23    \/\/ R\u00f6le i\u00e7in GPIO23\n#define SOIL_MOISTURE_PIN 36 \/\/ Toprak nem sens\u00f6r\u00fc i\u00e7in GPIO36 (ADC1_CH0)\n#define ULTRASONIC_TRIG_PIN 25 \/\/ Ultrasonik sens\u00f6r Trig pini\n#define ULTRASONIC_ECHO_PIN 26 \/\/ Ultrasonik sens\u00f6r Echo pini\n\n\/\/ FirebaseESP32 nesnesi\nFirebaseData firebaseData;\n\n\/\/ Ger\u00e7ek zamanl\u0131 olarak Firebase verilerini okumak ve yazmak i\u00e7in\nFirebaseJson json;\n\n\/\/ Pompa durumu de\u011fi\u015fkeni\nbool pumpState = false; \/\/ Ba\u015flang\u0131\u00e7ta pompa kapal\u0131\n\n\/\/ Sens\u00f6r okuma gecikmesi (milisaniye)\nconst long readDelay = 5000;\nunsigned long lastReadTime = 0;\n\n\/\/ Ultrasonik sens\u00f6r i\u00e7in mesafe hesaplama fonksiyonu\nlong getDistance() {\n    \/\/ Trig pinini d\u00fc\u015f\u00fck konuma getir, 2 mikrosaniye bekle\n    digitalWrite(ULTRASONIC_TRIG_PIN, LOW);\n    delayMicroseconds(2);\n    \/\/ Trig pinini y\u00fcksek konuma getir, 10 mikrosaniye bekle\n    digitalWrite(ULTRASONIC_TRIG_PIN, HIGH);\n    delayMicroseconds(10);\n    digitalWrite(ULTRASONIC_TRIG_PIN, LOW);\n\n    \/\/ Echo pininden gelen ses dalgas\u0131n\u0131n s\u00fcresini \u00f6l\u00e7\n    long duration = pulseIn(ULTRASONIC_ECHO_PIN, HIGH);\n    \/\/ Mesafeyi hesapla (cm cinsinden, ses h\u0131z\u0131 0.034 cm\/mikrosaniye)\n    long distance = duration * 0.034 \/ 2;\n    return distance;\n}\n\nvoid setup() {\n    Serial.begin(115200);\n\n    \/\/ Pin modlar\u0131n\u0131 ayarla\n    pinMode(RELAY_PIN, OUTPUT);\n    digitalWrite(RELAY_PIN, LOW); \/\/ Ba\u015flang\u0131\u00e7ta r\u00f6le kapal\u0131 (pompa kapal\u0131)\n    pinMode(ULTRASONIC_TRIG_PIN, OUTPUT);\n    pinMode(ULTRASONIC_ECHO_PIN, INPUT);\n\n    \/\/ WiFi Ba\u011flant\u0131s\u0131\n    Serial.print(\"WiFi'a ba\u011flan\u0131l\u0131yor: \");\n    Serial.println(WIFI_SSID);\n    WiFi.begin(WIFI_SSID, WIFI_PASSWORD);\n    while (WiFi.status() != WL_CONNECTED) {\n        delay(500);\n        Serial.print(\".\");\n    }\n    Serial.println(\"\");\n    Serial.println(\"WiFi'a ba\u011fland\u0131.\");\n    Serial.print(\"IP Adresi: \");\n    Serial.println(WiFi.localIP());\n\n    \/\/ Firebase yap\u0131land\u0131rmas\u0131\n    Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);\n    Firebase.reconnectWiFi(true); \/\/ WiFi ba\u011flant\u0131s\u0131 kesilirse otomatik yeniden ba\u011flan\n\n    \/\/ Firebase'de ba\u015flang\u0131\u00e7 durumu olu\u015ftur\/g\u00fcncelle\n    if (!Firebase.setString(firebaseData, \"\/pump\/status\", pumpState ? \"ON\" : \"OFF\")) {\n        Serial.print(\"Firebase '\/pump\/status' yazma hatas\u0131: \");\n        Serial.println(firebaseData.errorReason());\n    }\n    if (!Firebase.setInt(firebaseData, \"\/pump\/moisture\", 0)) {}\n    if (!Firebase.setInt(firebaseData, \"\/pump\/waterLevel\", 0)) {}\n    if (!Firebase.setString(firebaseData, \"\/pump\/control\", \"AUTO\")) {} \/\/ Ba\u015flang\u0131\u00e7ta otomatik mod\n\n    Serial.println(\"Firebase kurulumu tamamland\u0131.\");\n}\n\nvoid loop() {\n    if (Firebase.ready() && (millis() - lastReadTime > readDelay)) {\n        lastReadTime = millis();\n\n        \/\/ 1. Sens\u00f6r Verilerini Oku\n        int soilMoisture = analogRead(SOIL_MOISTURE_PIN); \/\/ 0-4095 aras\u0131\n        long waterLevelCm = getDistance(); \/\/ Ultrasonik sens\u00f6rden mesafe oku (cm)\n\n        \/\/ Su seviyesini bir e\u015fik de\u011ferine g\u00f6re anlaml\u0131 hale getir\n        \/\/ \u00d6rne\u011fin, 10 cm alt\u0131 d\u00fc\u015f\u00fck, 30 cm \u00fcst\u00fc yeterli, 10-30 aras\u0131 orta.\n        String waterLevelStatus = \"UNKNOWN\";\n        if (waterLevelCm > 0 && waterLevelCm < 10) { \/\/ Sens\u00f6rden 10cm'e kadar mesafe = su dolu\n             waterLevelStatus = \"DOLU\";\n        } else if (waterLevelCm >= 10 && waterLevelCm < 30) {\n             waterLevelStatus = \"YETERLI\";\n        } else if (waterLevelCm >= 30 && waterLevelCm < 200) { \/\/ Max mesafe 200cm varsayal\u0131m\n             waterLevelStatus = \"DUSUK\";\n        } else {\n             waterLevelStatus = \"OKUNAMADI\";\n        }\n\n\n        \/\/ 2. Verileri Firebase'e G\u00f6nder\n        json.set(\"\/moisture\", soilMoisture);\n        json.set(\"\/waterLevelCm\", waterLevelCm); \/\/ Raw cm de\u011feri\n        json.set(\"\/waterLevelStatus\", waterLevelStatus); \/\/ Okunabilir durum\n\n        if (Firebase.updateNode(firebaseData, \"\/sensorData\", json)) {\n            Serial.println(\"Sens\u00f6r verileri Firebase'e g\u00f6nderildi.\");\n            Serial.print(\"Nem: \"); Serial.print(soilMoisture);\n            Serial.print(\", Su Seviyesi (cm): \"); Serial.print(waterLevelCm);\n            Serial.print(\", Su Seviyesi Durumu: \"); Serial.println(waterLevelStatus);\n        } else {\n            Serial.print(\"Firebase sens\u00f6r verisi g\u00f6nderme hatas\u0131: \");\n            Serial.println(firebaseData.errorReason());\n        }\n\n        \/\/ 3. Firebase'den Kontrol Komutlar\u0131n\u0131 Oku\n        if (Firebase.getString(firebaseData, \"\/pump\/control\")) {\n            String controlCommand = firebaseData.stringData();\n            Serial.print(\"Firebase kontrol komutu: \"); Serial.println(controlCommand);\n\n            if (controlCommand == \"ON\") {\n                if (!pumpState) { \/\/ E\u011fer pompa kapal\u0131ysa, a\u00e7\n                    digitalWrite(RELAY_PIN, HIGH); \/\/ R\u00f6leyi a\u00e7 (pompaya g\u00fc\u00e7 ver)\n                    pumpState = true;\n                    Serial.println(\"Pompa A\u00c7IK (Manuel Komut).\");\n                    Firebase.setString(firebaseData, \"\/pump\/status\", \"ON\");\n                }\n            } else if (controlCommand == \"OFF\") {\n                if (pumpState) { \/\/ E\u011fer pompa a\u00e7\u0131ksa, kapat\n                    digitalWrite(RELAY_PIN, LOW); \/\/ R\u00f6leyi kapat (pompan\u0131n g\u00fcc\u00fcn\u00fc kes)\n                    pumpState = false;\n                    Serial.println(\"Pompa KAPALI (Manuel Komut).\");\n                    Firebase.setString(firebaseData, \"\/pump\/status\", \"OFF\");\n                }\n            } else if (controlCommand == \"AUTO\") {\n                \/\/ Otomatik mod: sens\u00f6r de\u011ferlerine g\u00f6re karar ver\n                Serial.println(\"Otomatik modda \u00e7al\u0131\u015f\u0131l\u0131yor.\");\n                \/\/ \u00d6rne\u011fin: Toprak nemi 2000'in alt\u0131ndaysa pompay\u0131 a\u00e7, 3000'in \u00fcst\u00fcndeyse kapat.\n                \/\/ Ve su seviyesi 'DUSUK' de\u011filse.\n                if (soilMoisture < 2000 &#038;&#038; waterLevelStatus != \"DUSUK\") {\n                    if (!pumpState) {\n                        digitalWrite(RELAY_PIN, HIGH);\n                        pumpState = true;\n                        Serial.println(\"Pompa A\u00c7IK (Otomatik Mod - Nem D\u00fc\u015f\u00fck).\");\n                        Firebase.setString(firebaseData, \"\/pump\/status\", \"ON\");\n                    }\n                } else if (soilMoisture > 3000 || waterLevelStatus == \"DUSUK\") {\n                    if (pumpState) {\n                        digitalWrite(RELAY_PIN, LOW);\n                        pumpState = false;\n                        Serial.println(\"Pompa KAPALI (Otomatik Mod - Nem Yeterli veya Su Yok).\");\n                        Firebase.setString(firebaseData, \"\/pump\/status\", \"OFF\");\n                    }\n                }\n            } else {\n                Serial.println(\"Ge\u00e7ersiz kontrol komutu.\");\n            }\n        } else {\n            Serial.print(\"Firebase '\/pump\/control' okuma hatas\u0131: \");\n            Serial.println(firebaseData.errorReason());\n        }\n    }\n}\n    <\/pre>\n<p><\/code><\/p>\n<div class=\"expert-tip\">\n        <strong>Uzman \u0130pucu: G\u00fcvenlik Kurallar\u0131!<\/strong> Firebase Realtime Database'in varsay\u0131lan g\u00fcvenlik kurallar\u0131 genellikle test modundad\u0131r ve herkesin veri okuyup yazmas\u0131na izin verir. Canl\u0131 bir uygulamada, <a href=\"https:\/\/firebase.google.com\/docs\/database\/security\/enable-disable#set_up_rules_for_your_realtime_database\" target=\"_blank\">Firebase G\u00fcvenlik Kurallar\u0131<\/a>'n\u0131 kullanarak sadece yetkili kullan\u0131c\u0131lar\u0131n veya cihazlar\u0131n veri okuyup yazmas\u0131n\u0131 sa\u011flamal\u0131s\u0131n\u0131z. \u00d6rne\u011fin,<\/p>\n<pre><code>\n{\n  \"rules\": {\n    \".read\": \"auth != null\",\n    \".write\": \"auth != null\"\n  }\n}\n        <\/pre>\n<p><\/code><br \/>\n        Bu kural, sadece kimli\u011fi do\u011frulanm\u0131\u015f kullan\u0131c\u0131lar\u0131n veritaban\u0131n\u0131 okuyup yazabilece\u011fi anlam\u0131na gelir. ESP32 taraf\u0131nda kimlik do\u011frulama i\u00e7in Firebase Auth'u (\u00f6rn. e-posta\/\u015fifre veya anonim kimlik do\u011frulama) kullanman\u0131z gerekir. Bu makaledeki \u00f6rnekte kolayl\u0131k sa\u011flamak amac\u0131yla Web API Key kullan\u0131lm\u0131\u015ft\u0131r, ancak daha g\u00fcvenli uygulamalar i\u00e7in Authentication servisi \u00f6nerilir.\n    <\/div>\n<p>Bu kod blo\u011fu, ESP32'nizin Firebase ile etkile\u015fimini sa\u011flar. Sens\u00f6rlerden gelen verileri s\u00fcrekli olarak okur ve Firebase'e <code class=\"language-plaintext\">\/sensorData<\/code> yoluna g\u00f6nderir. Ayn\u0131 zamanda, <code class=\"language-plaintext\">\/pump\/control<\/code> yolundan gelen komutlar\u0131 dinler ve pompay\u0131 buna g\u00f6re y\u00f6netir. \"ON\", \"OFF\" veya \"AUTO\" komutlar\u0131yla pompa manuel veya otomatik olarak kontrol edilebilir. Otomatik modda, \u00f6rnek kod nem sens\u00f6r\u00fcne ve su seviyesine g\u00f6re pompa karar\u0131n\u0131 verir. Kendi ihtiya\u00e7lar\u0131n\u0131za g\u00f6re nem ve su seviyesi e\u015fik de\u011ferlerini ayarlamay\u0131 unutmay\u0131n.<\/p>\n<h2>Mobil Aray\u00fcz Geli\u015ftirme: Su Pompan\u0131z\u0131 Uzaktan Nas\u0131l Kontrol Edersiniz?<\/h2>\n<p>Ak\u0131ll\u0131 su pompas\u0131 sistemimizin en cazip \u00f6zelliklerinden biri, pompay\u0131 d\u00fcnyan\u0131n herhangi bir yerinden kontrol edebilme yetene\u011fidir. Bu b\u00f6l\u00fcmde, Firebase Realtime Database'i kullanarak basit bir web aray\u00fcz\u00fc (veya mobil aray\u00fcz mant\u0131\u011f\u0131n\u0131) nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ele alaca\u011f\u0131z. Bu aray\u00fcz sayesinde sens\u00f6r verilerini ger\u00e7ek zamanl\u0131 olarak g\u00f6r\u00fcnt\u00fcleyebilecek ve pompay\u0131 uzaktan a\u00e7\u0131p kapatabileceksiniz. Mobil uyumlu bir tasar\u0131m i\u00e7in temel HTML, CSS ve JavaScript bilgisi yeterli olacakt\u0131r.<\/p>\n<h3>Neden Web Aray\u00fcz\u00fc?<\/h3>\n<p>Bir mobil uygulama geli\u015ftirmek (Flutter, React Native vb.) daha profesyonel bir deneyim sunsa da, bir web aray\u00fcz\u00fc ile ba\u015flamak \u00e7ok daha h\u0131zl\u0131 ve kolayd\u0131r. HTML, CSS ve JavaScript kullanarak taray\u0131c\u0131 tabanl\u0131, mobil cihazlarda da \u00e7al\u0131\u015fan bir sayfa olu\u015fturabiliriz. Firebase'in sundu\u011fu JavaScript SDK sayesinde, veritaban\u0131na eri\u015fim olduk\u00e7a basittir.<\/p>\n<h3>Firebase Web SDK Entegrasyonu<\/h3>\n<p>Web aray\u00fcz\u00fcn\u00fcz\u00fcn Firebase ile ileti\u015fim kurabilmesi i\u00e7in, Firebase projenizin yap\u0131land\u0131rma bilgilerini aray\u00fcze eklemeniz gerekir. Bu bilgileri Firebase konsolunuzda, \"Proje Ayarlar\u0131\" > \"Uygulamalar\u0131n\u0131z\" b\u00f6l\u00fcm\u00fcnde, \"Web uygulamas\u0131 ekle\" se\u00e7ene\u011fini se\u00e7tikten sonra bulabilirsiniz. A\u015fa\u011f\u0131daki HTML kodu, bu bilgileri i\u00e7eren ve temel pompa kontrol i\u015flevlerini sunan bir \u00f6rnektir.<\/p>\n<h3>Basit Bir Web Kontrol Aray\u00fcz\u00fc Olu\u015fturma<\/h3>\n<p>A\u015fa\u011f\u0131daki HTML, CSS ve JavaScript kodu, ak\u0131ll\u0131 su pompan\u0131z\u0131 kontrol etmek i\u00e7in kullanabilece\u011finiz basit bir web aray\u00fcz\u00fc \u00f6rne\u011fini g\u00f6stermektedir. Bu kodu bir <code class=\"language-plaintext\">index.html<\/code> dosyas\u0131na kaydedip taray\u0131c\u0131n\u0131zda a\u00e7arak test edebilirsiniz.<\/p>\n<pre><code>\n<!DOCTYPE html>\n<html lang=\"tr\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Ak\u0131ll\u0131 Su Pompas\u0131 Kontrol\u00fc<\/title>\n    <!-- Firebase SDK'lar\u0131 -->\n    <script src=\"https:\/\/www.gstatic.com\/firebasejs\/8.6.8\/firebase-app.js\"><\/script>\n    <script src=\"https:\/\/www.gstatic.com\/firebasejs\/8.6.8\/firebase-database.js\"><\/script>\n    <style>\n        body {\n            font-family: Arial, sans-serif;\n            margin: 0;\n            padding: 20px;\n            background-color: #f4f7f6;\n            color: #333;\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            min-height: 100vh;\n        }\n        .container {\n            background-color: #ffffff;\n            padding: 30px;\n            border-radius: 10px;\n            box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);\n            max-width: 500px;\n            width: 100%;\n            text-align: center;\n            box-sizing: border-box; \/* Padding'in geni\u015fli\u011fe dahil olmas\u0131n\u0131 sa\u011flar *\/\n        }\n        h2 {\n            color: #2c3e50;\n            margin-bottom: 25px;\n        }\n        .status-display {\n            margin-bottom: 20px;\n            font-size: 1.1em;\n            text-align: left;\n            border: 1px solid #eee;\n            padding: 15px;\n            border-radius: 8px;\n            background-color: #f9f9f9;\n        }\n        .status-display p {\n            margin: 8px 0;\n        }\n        .status-display strong {\n            color: #3498db;\n        }\n        .button-group button {\n            background-color: #3498db;\n            color: white;\n            border: none;\n            padding: 12px 25px;\n            text-align: center;\n            text-decoration: none;\n            display: inline-block;\n            font-size: 16px;\n            margin: 10px 5px;\n            cursor: pointer;\n            border-radius: 5px;\n            transition: background-color 0.3s ease;\n            width: calc(33% - 10px); \/* 3 buton yan yana *\/\n            box-sizing: border-box;\n        }\n        .button-group button:hover {\n            background-color: #2980b9;\n        }\n        .button-group button#offButton {\n            background-color: #e74c3c;\n        }\n        .button-group button#offButton:hover {\n            background-color: #c0392b;\n        }\n        .button-group button#autoButton {\n            background-color: #27ae60;\n        }\n        .button-group button#autoButton:hover {\n            background-color: #229954;\n        }\n\n        \/* Mobil uyumluluk *\/\n        @media (max-width: 600px) {\n            .container {\n                padding: 20px;\n            }\n            .button-group button {\n                width: calc(50% - 10px); \/* K\u00fc\u00e7\u00fck ekranlarda 2 buton yan yana *\/\n                margin: 8px 4px;\n            }\n        }\n        @media (max-width: 400px) {\n            .button-group button {\n                width: 100%; \/* \u00c7ok k\u00fc\u00e7\u00fck ekranlarda butonlar alt alta *\/\n                margin: 8px 0;\n            }\n        }\n    <\/style>\n<\/head>\n<body>\n    <div class=\"container\">\n        <h2>Ak\u0131ll\u0131 Su Pompas\u0131 Y\u00f6netimi<\/h2>\n\n        <div class=\"status-display\">\n            <p>Pompa Durumu: <strong id=\"pumpStatus\">Y\u00fckleniyor...<\/strong><\/p>\n            <p>Toprak Nemi: <strong id=\"soilMoisture\">Y\u00fckleniyor...<\/strong><\/p>\n            <p>Su Seviyesi: <strong id=\"waterLevel\">Y\u00fckleniyor...<\/strong><\/p>\n        <\/div>\n\n        <div class=\"button-group\">\n            <button id=\"onButton\">Pompa A\u00c7<\/button>\n            <button id=\"offButton\">Pompa KAPA<\/button>\n            <button id=\"autoButton\">Otomatik Mod<\/button>\n        <\/div>\n    <\/div>\n\n    <script>\n        \/\/ Firebase yap\u0131land\u0131rma objesi\n        \/\/ Bu bilgileri Firebase Proje Ayarlar\u0131n\u0131zdan almal\u0131s\u0131n\u0131z.\n        const firebaseConfig = {\n            apiKey: \"YOUR_API_KEY\", \/\/ Web API Anahtar\u0131n\u0131z\n            authDomain: \"YOUR_PROJECT_ID.firebaseapp.com\",\n            databaseURL: \"YOUR_FIREBASE_DATABASE_URL\", \/\/ \u00f6rn: \"https:\/\/your-project-id-default-rtdb.firebaseio.com\"\n            projectId: \"YOUR_PROJECT_ID\",\n            storageBucket: \"YOUR_PROJECT_ID.appspot.com\",\n            messagingSenderId: \"YOUR_SENDER_ID\",\n            appId: \"YOUR_APP_ID\"\n        };\n\n        \/\/ Firebase'i ba\u015flat\n        firebase.initializeApp(firebaseConfig);\n        const database = firebase.database();\n        const pumpRef = database.ref('pump');\n        const sensorDataRef = database.ref('sensorData');\n\n        \/\/ Durum g\u00fcncellemelerini dinle\n        pumpRef.on('value', (snapshot) => {\n            const data = snapshot.val();\n            if (data && data.status) {\n                document.getElementById('pumpStatus').textContent = data.status;\n            }\n        });\n\n        sensorDataRef.on('value', (snapshot) => {\n            const data = snapshot.val();\n            if (data) {\n                if (data.moisture) {\n                    document.getElementById('soilMoisture').textContent = data.moisture + \" (0-4095)\";\n                }\n                if (data.waterLevelStatus) {\n                    document.getElementById('waterLevel').textContent = data.waterLevelStatus + \" (\" + data.waterLevelCm + \" cm)\";\n                }\n            }\n        });\n\n        \/\/ Buton olay dinleyicileri\n        document.getElementById('onButton').addEventListener('click', () => {\n            pumpRef.update({ control: 'ON' })\n                .then(() => console.log(\"Pompa A\u00c7 komutu g\u00f6nderildi\"))\n                .catch((error) => console.error(\"Pompa A\u00c7 komutu g\u00f6nderilemedi:\", error));\n        });\n\n        document.getElementById('offButton').addEventListener('click', () => {\n            pumpRef.update({ control: 'OFF' })\n                .then(() => console.log(\"Pompa KAPA komutu g\u00f6nderildi\"))\n                .catch((error) => console.error(\"Pompa KAPA komutu g\u00f6nderilemedi:\", error));\n        });\n\n        document.getElementById('autoButton').addEventListener('click', () => {\n            pumpRef.update({ control: 'AUTO' })\n                .then(() => console.log(\"Otomatik Mod komutu g\u00f6nderildi\"))\n                .catch((error) => console.error(\"Otomatik Mod komutu g\u00f6nderilemedi:\", error));\n        });\n    <\/script>\n<\/body>\n<\/html>\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu kod par\u00e7as\u0131, Firebase Realtime Database'deki <code class=\"language-plaintext\">\/pump<\/code> ve <code class=\"language-plaintext\">\/sensorData<\/code> yollar\u0131n\u0131 dinler ve gelen verileri web sayfas\u0131nda g\u00f6r\u00fcnt\u00fcler. Ayn\u0131 zamanda \"A\u00c7\", \"KAPA\" ve \"OTOMAT\u0130K MOD\" butonlar\u0131na t\u0131kland\u0131\u011f\u0131nda, Firebase'deki <code class=\"language-plaintext\">\/pump\/control<\/code> yoluna ilgili komutlar\u0131 yazarak ESP32'yi tetikler. CSS b\u00f6l\u00fcm\u00fcnde yer alan <code class=\"language-plaintext\">@media<\/code> sorgular\u0131 sayesinde, bu sayfa mobil cihazlarda da d\u00fczg\u00fcn bir \u015fekilde g\u00f6r\u00fcnt\u00fclenecek ve butonlar ekran boyutuna g\u00f6re otomatik olarak d\u00fczenlenecektir. Bu basit aray\u00fcz, projenizin uzaktan kontrol edilebilirli\u011fini ve veri g\u00f6r\u00fcnt\u00fcleme yeteneklerini kan\u0131tlamak i\u00e7in m\u00fckemmel bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r.<\/p>\n<h2>\u0130leri D\u00fczey Optimizasyonlar ve Ek \u00d6zellikler: Sistem Performans\u0131n\u0131 Nas\u0131l Art\u0131r\u0131rs\u0131n\u0131z?<\/h2>\n<p>Temel ak\u0131ll\u0131 su pompas\u0131 kontrol sistemimizi kurup \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra, projemizi daha da geli\u015ftirecek ve daha kararl\u0131 hale getirecek baz\u0131 ileri d\u00fczey optimizasyonlara ve ek \u00f6zelliklere odaklanabiliriz. Bu iyile\u015ftirmeler, sistemin enerji verimlili\u011fini art\u0131rabilir, daha zengin i\u015flevsellik sunabilir ve genel kullan\u0131c\u0131 deneyimini zenginle\u015ftirebilir. \u00d6zellikle uzun s\u00fcreli ve kritik uygulamalar i\u00e7in bu ad\u0131mlar b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r.<\/p>\n<h3>Enerji Verimlili\u011fi ve G\u00fc\u00e7 Y\u00f6netimi<\/h3>\n<p>ESP32 gibi Wi-Fi \u00f6zellikli cihazlar, s\u00fcrekli a\u00e7\u0131k kald\u0131klar\u0131nda \u00f6nemli miktarda enerji t\u00fcketebilirler. Pil g\u00fcc\u00fcyle \u00e7al\u0131\u015fan veya uzun s\u00fcre fi\u015fte kalmas\u0131 istenmeyen uygulamalar i\u00e7in g\u00fc\u00e7 y\u00f6netimi hayati \u00f6nem ta\u015f\u0131r. ESP32, farkl\u0131 uyku modlar\u0131na sahiptir:<\/p>\n<ul>\n<li><strong>Modem-sleep:<\/strong> Wi-Fi modem kapat\u0131l\u0131r, CPU ve RAM \u00e7al\u0131\u015f\u0131r. En az g\u00fc\u00e7 tasarrufu sa\u011flar.<\/li>\n<li><strong>Light-sleep:<\/strong> CPU duraklat\u0131l\u0131r, RAM ve baz\u0131 \u00e7evresel birimler a\u00e7\u0131k kal\u0131r. Wi-Fi ba\u011flant\u0131s\u0131 kesilebilir. Sens\u00f6r verilerini okuyup periyodik olarak Firebase'e g\u00f6ndermek i\u00e7in idealdir.<\/li>\n<li><strong>Deep-sleep:<\/strong> CPU ve \u00e7o\u011fu \u00e7evresel birim kapat\u0131l\u0131r, sadece RTC (ger\u00e7ek zamanl\u0131 saat) belle\u011fi ve belirli RTC \u00e7evresel birimleri \u00e7al\u0131\u015f\u0131r. En y\u00fcksek g\u00fc\u00e7 tasarrufunu sa\u011flar ancak uyand\u0131\u011f\u0131nda yeniden ba\u015flatma s\u00fcreci gerektirir. Sadece \u00e7ok seyrek veri g\u00f6nderimi gerektiren uygulamalar i\u00e7in uygundur.<\/li>\n<\/ul>\n<p>Sisteminizi programlarken, sens\u00f6r okumalar\u0131 aras\u0131nda ESP32'yi Light-sleep moduna almak, g\u00fc\u00e7 t\u00fcketimini \u00f6nemli \u00f6l\u00e7\u00fcde azaltabilir. \u00d6rne\u011fin, her 5 dakikada bir veri g\u00f6ndermek yeterliyse, ESP32'nin \u00e7o\u011funlukla uyku modunda kalmas\u0131n\u0131 sa\u011flayabilirsiniz.<\/p>\n<pre><code>\n\/\/ \u00d6rnek Light-sleep kullan\u0131m\u0131\n\/\/ #include <esp_sleep.h>\n\/\/ ...\n\/\/ esp_sleep_enable_timer_wakeup(5 * 60 * 1000000); \/\/ 5 dakika sonra uyan\n\/\/ esp_deep_sleep_start(); \/\/ Deep-sleep modu, daha az g\u00fc\u00e7 t\u00fcketimi\n\/\/ esp_light_sleep_start(); \/\/ Light-sleep modu\n    <\/pre>\n<p><\/code><\/p>\n<h3>Geli\u015fmi\u015f Sens\u00f6r Veri Analizi ve Veri G\u00fcnl\u00fc\u011f\u00fc<\/h3>\n<p>Tek bir anl\u0131k sens\u00f6r de\u011feri yerine, zaman i\u00e7indeki veri de\u011fi\u015fimlerini izlemek daha anlaml\u0131 bilgiler sunar. Firebase'de sens\u00f6r verilerini zaman damgalar\u0131yla birlikte depolayarak bir veri g\u00fcnl\u00fc\u011f\u00fc olu\u015fturabilirsiniz. Bu veriler daha sonra grafikler arac\u0131l\u0131\u011f\u0131yla g\u00f6rselle\u015ftirilebilir ve trend analizi yap\u0131labilir. \u00d6rne\u011fin, topra\u011f\u0131n nem seviyesi g\u00fcn i\u00e7inde nas\u0131l de\u011fi\u015fiyor? Hangi saatlerde sulama daha etkili oluyor? Bu sorular\u0131n cevaplar\u0131, daha optimize edilmi\u015f sulama stratejileri geli\u015ftirmenize yard\u0131mc\u0131 olabilir.<\/p>\n<ul>\n<li><strong>Firebase Firestore:<\/strong> Ger\u00e7ek zamanl\u0131 veritaban\u0131 yerine, daha yap\u0131land\u0131r\u0131lm\u0131\u015f veri depolama ve sorgulama yetenekleri sunan Firestore'u kullanarak geli\u015fmi\u015f veri g\u00fcnl\u00fc\u011f\u00fc tutabilirsiniz.<\/li>\n<li><strong>Grafik Entegrasyonu:<\/strong> Web aray\u00fcz\u00fcn\u00fczde Chart.js veya Google Charts gibi k\u00fct\u00fcphaneler kullanarak sens\u00f6r verilerini zaman \u00e7izelgeleri \u00fczerinde g\u00f6rselle\u015ftirebilirsiniz.<\/li>\n<\/ul>\n<h3>Bildirimler ve Uyar\u0131lar<\/h3>\n<p>Sistemin kritik durumlar hakk\u0131nda kullan\u0131c\u0131lar\u0131 bilgilendirmesi, projenin kullan\u0131\u015fl\u0131l\u0131\u011f\u0131n\u0131 art\u0131r\u0131r. \u00d6rne\u011fin, su deposu seviyesi kritik derecede d\u00fc\u015ft\u00fc\u011f\u00fcnde veya pompa anormal derecede uzun s\u00fcre \u00e7al\u0131\u015ft\u0131\u011f\u0131nda bildirim alabilirsiniz.<\/p>\n<ul>\n<li><strong>Firebase Cloud Messaging (FCM):<\/strong> Mobil cihazlara anl\u0131k bildirimler g\u00f6ndermek i\u00e7in FCM kullanabilirsiniz. ESP32 bir kritik durum alg\u0131lad\u0131\u011f\u0131nda, Firebase Functions (bulut i\u015flevleri) arac\u0131l\u0131\u011f\u0131yla FCM \u00fczerinden telefonunuza bir bildirim g\u00f6nderebilirsiniz.<\/li>\n<li><strong>E-posta\/SMS Entegrasyonu:<\/strong> Firebase Functions'\u0131 kullanarak belirli olaylarda e-posta veya SMS g\u00f6nderme hizmetlerini (\u00f6rne\u011fin SendGrid, Twilio) entegre edebilirsiniz.<\/li>\n<\/ul>\n<h3>\u00c7oklu Sens\u00f6r ve Pompa Y\u00f6netimi<\/h3>\n<p>Projeniz tek bir pompa ve birka\u00e7 sens\u00f6rle ba\u015flad\u0131, ancak b\u00fcy\u00fcd\u00fck\u00e7e birden fazla alan\u0131 sulamak veya farkl\u0131 depolar\u0131 y\u00f6netmek isteyebilirsiniz. Firebase'in esnek yap\u0131s\u0131, bu t\u00fcr senaryolar\u0131 kolayca y\u00f6netmenize olanak tan\u0131r.<\/p>\n<ul>\n<li><strong>Veritaban\u0131 Yap\u0131s\u0131:<\/strong> Firebase veritaban\u0131n\u0131zda her pompa ve sens\u00f6r i\u00e7in ayr\u0131 bir yol (path) olu\u015fturarak veri y\u00f6netimini merkezile\u015ftirebilirsiniz. \u00d6rne\u011fin: <code class=\"language-plaintext\">\/zones\/zone1\/pump\/status<\/code>, <code class=\"language-plaintext\">\/zones\/zone2\/sensorData\/moisture<\/code>.<\/li>\n<li><strong>ESP32 A\u011f Ge\u00e7itleri (Gateways):<\/strong> Her bir sulama b\u00f6lgesine veya depoya ayr\u0131 bir ESP32 yerle\u015ftirerek ve bunlar\u0131n hepsini ayn\u0131 Firebase projesine ba\u011flayarak merkezi bir kontrol paneli olu\u015fturabilirsiniz.<\/li>\n<\/ul>\n<h3>G\u00fcvenlik \u0130yile\u015ftirmeleri<\/h3>\n<p>Her IoT projesinde oldu\u011fu gibi, g\u00fcvenlik ihmal edilmemesi gereken bir konudur. \u00d6zellikle uzaktan kontrol edilen bir pompa gibi fiziksel bir akt\u00fcat\u00f6r s\u00f6z konusu oldu\u011funda:<\/p>\n<ul>\n<li><strong>Firebase Authentication:<\/strong> Web aray\u00fcz\u00fcn\u00fcz ve ESP32'niz i\u00e7in g\u00fc\u00e7l\u00fc kimlik do\u011frulama y\u00f6ntemleri kullan\u0131n (e-posta\/\u015fifre, Google ile oturum a\u00e7ma vb.). Web API anahtar\u0131n\u0131 do\u011frudan kodda tutmak yerine, Firebase Authentication ile yetkilendirme ak\u0131\u015flar\u0131n\u0131 kullanmak daha g\u00fcvenlidir.<\/li>\n<li><strong>Veri \u015eifreleme:<\/strong> Hassas verileriniz varsa, bunlar\u0131 \u015fifreleyerek Firebase'e g\u00f6ndermeyi d\u00fc\u015f\u00fcnebilirsiniz, ancak bu genellikle bu t\u00fcr projelerde \u00e7ok gerek duyulmaz.<\/li>\n<li><strong>Fiziksel G\u00fcvenlik:<\/strong> ESP32 ve sens\u00f6rleri d\u0131\u015f etkenlerden koruyacak suya dayan\u0131kl\u0131 bir muhafaza kullan\u0131n. R\u00f6le ve pompa ba\u011flant\u0131lar\u0131n\u0131n do\u011fru yal\u0131t\u0131ld\u0131\u011f\u0131ndan emin olun.<\/li>\n<\/ul>\n<p>Bu ileri d\u00fczey optimizasyonlar ve ek \u00f6zellikler, ak\u0131ll\u0131 su pompas\u0131 kontrol sisteminizi sadece i\u015flevsel olmaktan \u00e7\u0131kar\u0131p, daha profesyonel, g\u00fcvenilir ve kullan\u0131\u015fl\u0131 bir \u00e7\u00f6z\u00fcme d\u00f6n\u00fc\u015ft\u00fcrecektir. Projenizin ihtiya\u00e7lar\u0131na g\u00f6re bu \u00f6zelliklerden birini veya birka\u00e7\u0131n\u0131 uygulayarak sisteminizi ki\u015fiselle\u015ftirebilirsiniz.<\/p>\n<h2>Sonu\u00e7 ve Gelecek Perspektifleri<\/h2>\n<p>Bu makale boyunca, ESP32 ve Firebase platformunu kullanarak ak\u0131ll\u0131 bir su pompas\u0131 kontrol sistemi in\u015fa etmenin t\u00fcm ad\u0131mlar\u0131n\u0131 detayl\u0131 bir \u015fekilde inceledik. Ba\u015flang\u0131\u00e7ta neden b\u00f6yle bir sisteme ihtiya\u00e7 duyuldu\u011funu, ard\u0131ndan temel donan\u0131m ve yaz\u0131l\u0131m bile\u015fenlerinin nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 \u00f6\u011frendik. Donan\u0131m ba\u011flant\u0131lar\u0131n\u0131 ad\u0131m ad\u0131m ger\u00e7ekle\u015ftirip, ESP32'yi Firebase ile entegre edecek temel kodu yazd\u0131k ve son olarak sistemi uzaktan kontrol etmemizi sa\u011flayacak basit bir web aray\u00fcz\u00fc olu\u015fturduk. Ayr\u0131ca, enerji verimlili\u011fi, geli\u015fmi\u015f veri analizi, bildirimler ve g\u00fcvenlik gibi ileri d\u00fczey optimizasyonlara da de\u011findik.<\/p>\n<p>Bu proje, IoT teknolojilerinin g\u00fcnl\u00fck hayat\u0131m\u0131z\u0131 nas\u0131l daha verimli, s\u00fcrd\u00fcr\u00fclebilir ve konforlu hale getirebilece\u011finin somut bir \u00f6rne\u011fidir. Su kaynaklar\u0131n\u0131n k\u0131s\u0131tl\u0131 oldu\u011fu bir d\u00fcnyada, ak\u0131ll\u0131 sulama ve su y\u00f6netimi sistemleri, su israf\u0131n\u0131 \u00f6nleyerek hem bireysel hem de k\u00fcresel d\u00fczeyde \u00f6nemli faydalar sunar. Manuel i\u015f y\u00fck\u00fcn\u00fc azaltmas\u0131, maliyet tasarrufu sa\u011flamas\u0131 ve uzaktan kontrol imkan\u0131 sunmas\u0131, bu t\u00fcr sistemlerin cazibesini art\u0131rmaktad\u0131r. Evde bah\u00e7e sulamas\u0131ndan tar\u0131m alan\u0131ndaki b\u00fcy\u00fck \u00f6l\u00e7ekli uygulamalara kadar geni\u015f bir kullan\u0131m alan\u0131na sahiptir.<\/p>\n<p>Gelecekte, bu t\u00fcr ak\u0131ll\u0131 sistemler daha da geli\u015ferek yapay zeka ve makine \u00f6\u011frenimi entegrasyonlar\u0131yla daha ak\u0131ll\u0131 hale gelecektir. Hava durumu tahminleri, bitki t\u00fcr\u00fcne \u00f6zel su ihtiya\u00e7lar\u0131 ve toprak besin de\u011ferleri gibi ek verilerle birle\u015ferek, sistemler daha hassas ve \u00f6ng\u00f6r\u00fcl\u00fc kararlar alabilecektir. Ayr\u0131ca, enerji hasad\u0131 (solar paneller gibi) ile kendi enerjisini \u00fcreten, tamamen ba\u011f\u0131ms\u0131z ak\u0131ll\u0131 su y\u00f6netimi \u00e7\u00f6z\u00fcmleri de yayg\u0131nla\u015facakt\u0131r. K\u0131sacas\u0131, bu proje, IoT d\u00fcnyas\u0131na at\u0131lan \u00f6nemli bir ad\u0131md\u0131r ve gelecekteki ak\u0131ll\u0131 ya\u015fam alanlar\u0131m\u0131z\u0131n temel ta\u015flar\u0131ndan birini temsil etmektedir.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<p><strong>1. Bu projeyi yapmak i\u00e7in ne kadar programlama bilgisine ihtiyac\u0131m var?<\/strong><\/p>\n<p>C++ (Arduino i\u00e7in) ve temel JavaScript\/HTML bilgisi faydal\u0131d\u0131r. Ancak, bu makaledeki ad\u0131m ad\u0131m talimatlar ve kod \u00f6rnekleri sayesinde, ba\u015flang\u0131\u00e7 seviyesinde olanlar bile projeyi tamamlayabilir. \u00d6nemli olan merak ve \u00f6\u011frenme iste\u011fidir.<\/p>\n<p><strong>2. Firebase kullanmak \u00fccretli mi?<\/strong><\/p>\n<p>Firebase'in Spark Plan\u0131 (\u00fccretsiz katman), \u00e7o\u011fu k\u00fc\u00e7\u00fck ve ki\u015fisel IoT projesi i\u00e7in olduk\u00e7a c\u00f6mert kaynaklar sunar ve genellikle \u00fccretsizdir. Projeniz b\u00fcy\u00fcd\u00fck\u00e7e veya daha fazla kaynak kulland\u0131k\u00e7a Blaze Plan\u0131na (kulland\u0131k\u00e7a \u00f6de) ge\u00e7meniz gerekebilir. Ancak bu projedeki kullan\u0131m\u0131n\u0131z Spark Plan\u0131'n\u0131n s\u0131n\u0131rlar\u0131 i\u00e7inde kalacakt\u0131r.<\/p>\n<p><strong>3. Pompay\u0131 kontrol etmek i\u00e7in neden r\u00f6le kullan\u0131yoruz? Direkt ESP32'ye ba\u011flayamaz m\u0131y\u0131z?<\/strong><\/p>\n<p>Hay\u0131r, do\u011frudan ba\u011flayamazs\u0131n\u0131z. Su pompalar\u0131 genellikle y\u00fcksek voltajda (\u00f6rne\u011fin 12V DC veya 220V AC) ve y\u00fcksek ak\u0131mda \u00e7al\u0131\u015f\u0131r. ESP32 ise d\u00fc\u015f\u00fck voltajl\u0131 (3.3V) ve d\u00fc\u015f\u00fck ak\u0131ml\u0131 bir cihazd\u0131r. R\u00f6le, ESP32'nin d\u00fc\u015f\u00fck voltajl\u0131 sinyali ile y\u00fcksek voltajl\u0131 bir devreyi g\u00fcvenli bir \u015fekilde anahtarlamas\u0131n\u0131 sa\u011flayan bir izolasyon eleman\u0131d\u0131r. Bu, hem ESP32'yi korur hem de g\u00fcvenlik risklerini azalt\u0131r.<\/p>\n<p><strong>4. ESP32 yerine ba\u015fka bir mikrodenetleyici kullanabilir miyim?<\/strong><\/p>\n<p>Evet, Wi-Fi \u00f6zellikli ba\u015fka bir mikrodenetleyici (\u00f6rne\u011fin ESP8266) kullanabilirsiniz. Ancak kod ve ba\u011flant\u0131lar \u00fczerinde baz\u0131 de\u011fi\u015fiklikler yapman\u0131z gerekebilir. ESP32, daha g\u00fc\u00e7l\u00fc i\u015flemci, daha fazla GPIO pini ve Bluetooth LE gibi ek \u00f6zellikler sunarak bu t\u00fcr projeler i\u00e7in daha esnek bir \u00e7\u00f6z\u00fcm sunar.<\/p>\n<p><strong>5. Sistem offline olursa ne olur?<\/strong><\/p>\n<p>E\u011fer ESP32'nin Wi-Fi ba\u011flant\u0131s\u0131 kesilirse, Firebase ile olan ileti\u015fimi durur. Bu durumda, sens\u00f6r verileri Firebase'e g\u00f6nderilemez ve Firebase \u00fczerinden uzaktan kontrol komutlar\u0131 al\u0131namaz. Ancak, ESP32 kendi \u00fczerindeki programlama mant\u0131\u011f\u0131na g\u00f6re \u00e7al\u0131\u015fmaya devam edebilir (\u00f6rne\u011fin, son bilinen sens\u00f6r de\u011ferlerine g\u00f6re pompay\u0131 \u00e7al\u0131\u015ft\u0131rmaya devam edebilir) veya g\u00fcvenli modda bekleyebilir. Daha geli\u015fmi\u015f sistemlerde, ba\u011flant\u0131 kesildi\u011finde yerel bir SD karta veri kaydedilebilir ve ba\u011flant\u0131 geri geldi\u011finde Firebase'e g\u00f6nderilebilir.<\/p>\n<p><\/body><br \/>\n<\/html><\/p>\n","protected":false},"excerpt":{"rendered":"Ak\u0131ll\u0131 su pompas\u0131 kontrol sistemleri, su israf\u0131n\u0131 \u00f6nlerken ayn\u0131 zamanda manuel m\u00fcdahale ihtiyac\u0131n\u0131 ortadan kald\u0131ran yenilik\u00e7i \u00e7\u00f6z\u00fcmler sunar.&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-32192","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>ESP32 ve Firebase ile Ak\u0131ll\u0131 Su Pompas\u0131 Kontrol Sistemi Nas\u0131l Yap\u0131l\u0131r?<\/title>\n<meta name=\"description\" content=\"Ak\u0131ll\u0131 su pompas\u0131 kontrol sistemleri, su israf\u0131n\u0131 \u00f6nlerken ayn\u0131 zamanda manuel m\u00fcdahale ihtiyac\u0131n\u0131 ortadan kald\u0131ran yenilik\u00e7i \u00e7\u00f6z\u00fcmler sunar. Bu makalede, ESP32 mikrodenetleyici ve Firebase platformunu kullanarak uzaktan kontrol edilebilir ve otomatik \u00e7al\u0131\u015fan bir su pompas\u0131 sistemi in\u015fa etmeyi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/esp32-ve-firebase-ile-akilli-su-pompasi-kontrol-sistemi-nasil-yapilir\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ESP32 ve Firebase ile Ak\u0131ll\u0131 Su Pompas\u0131 Kontrol Sistemi Nas\u0131l Yap\u0131l\u0131r?\" \/>\n<meta property=\"og:description\" content=\"Ak\u0131ll\u0131 su pompas\u0131 kontrol sistemleri, su israf\u0131n\u0131 \u00f6nlerken ayn\u0131 zamanda manuel m\u00fcdahale ihtiyac\u0131n\u0131 ortadan kald\u0131ran yenilik\u00e7i \u00e7\u00f6z\u00fcmler sunar. Bu makalede, ESP32 mikrodenetleyici ve Firebase platformunu kullanarak uzaktan kontrol edilebilir ve otomatik \u00e7al\u0131\u015fan bir su pompas\u0131 sistemi in\u015fa etmeyi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/esp32-ve-firebase-ile-akilli-su-pompasi-kontrol-sistemi-nasil-yapilir\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-18T18:01:52+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"29 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/esp32-ve-firebase-ile-akilli-su-pompasi-kontrol-sistemi-nasil-yapilir\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/esp32-ve-firebase-ile-akilli-su-pompasi-kontrol-sistemi-nasil-yapilir\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"ESP32 ve Firebase ile Ak\u0131ll\u0131 Su Pompas\u0131 Kontrol Sistemi Nas\u0131l Yap\u0131l\u0131r?\",\"datePublished\":\"2025-10-18T18:01:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/esp32-ve-firebase-ile-akilli-su-pompasi-kontrol-sistemi-nasil-yapilir\/\"},\"wordCount\":5043,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/esp32-ve-firebase-ile-akilli-su-pompasi-kontrol-sistemi-nasil-yapilir\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/esp32-ve-firebase-ile-akilli-su-pompasi-kontrol-sistemi-nasil-yapilir\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/esp32-ve-firebase-ile-akilli-su-pompasi-kontrol-sistemi-nasil-yapilir\/\",\"name\":\"ESP32 ve Firebase ile Ak\u0131ll\u0131 Su Pompas\u0131 Kontrol Sistemi Nas\u0131l Yap\u0131l\u0131r?\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-18T18:01:52+00:00\",\"description\":\"Ak\u0131ll\u0131 su pompas\u0131 kontrol sistemleri, su israf\u0131n\u0131 \u00f6nlerken ayn\u0131 zamanda manuel m\u00fcdahale ihtiyac\u0131n\u0131 ortadan kald\u0131ran yenilik\u00e7i \u00e7\u00f6z\u00fcmler sunar. Bu makalede, ESP32 mikrodenetleyici ve Firebase platformunu kullanarak uzaktan kontrol edilebilir ve otomatik \u00e7al\u0131\u015fan bir su pompas\u0131 sistemi in\u015fa etmeyi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/esp32-ve-firebase-ile-akilli-su-pompasi-kontrol-sistemi-nasil-yapilir\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/esp32-ve-firebase-ile-akilli-su-pompasi-kontrol-sistemi-nasil-yapilir\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/esp32-ve-firebase-ile-akilli-su-pompasi-kontrol-sistemi-nasil-yapilir\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ESP32 ve Firebase ile Ak\u0131ll\u0131 Su Pompas\u0131 Kontrol Sistemi Nas\u0131l Yap\u0131l\u0131r?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"ESP32 ve Firebase ile Ak\u0131ll\u0131 Su Pompas\u0131 Kontrol Sistemi Nas\u0131l Yap\u0131l\u0131r?","description":"Ak\u0131ll\u0131 su pompas\u0131 kontrol sistemleri, su israf\u0131n\u0131 \u00f6nlerken ayn\u0131 zamanda manuel m\u00fcdahale ihtiyac\u0131n\u0131 ortadan kald\u0131ran yenilik\u00e7i \u00e7\u00f6z\u00fcmler sunar. Bu makalede, ESP32 mikrodenetleyici ve Firebase platformunu kullanarak uzaktan kontrol edilebilir ve otomatik \u00e7al\u0131\u015fan bir su pompas\u0131 sistemi in\u015fa etmeyi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/esp32-ve-firebase-ile-akilli-su-pompasi-kontrol-sistemi-nasil-yapilir\/","og_locale":"tr_TR","og_type":"article","og_title":"ESP32 ve Firebase ile Ak\u0131ll\u0131 Su Pompas\u0131 Kontrol Sistemi Nas\u0131l Yap\u0131l\u0131r?","og_description":"Ak\u0131ll\u0131 su pompas\u0131 kontrol sistemleri, su israf\u0131n\u0131 \u00f6nlerken ayn\u0131 zamanda manuel m\u00fcdahale ihtiyac\u0131n\u0131 ortadan kald\u0131ran yenilik\u00e7i \u00e7\u00f6z\u00fcmler sunar. Bu makalede, ESP32 mikrodenetleyici ve Firebase platformunu kullanarak uzaktan kontrol edilebilir ve otomatik \u00e7al\u0131\u015fan bir su pompas\u0131 sistemi in\u015fa etmeyi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz.","og_url":"https:\/\/fatihsoysal.com\/blog\/esp32-ve-firebase-ile-akilli-su-pompasi-kontrol-sistemi-nasil-yapilir\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-18T18:01:52+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"29 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/esp32-ve-firebase-ile-akilli-su-pompasi-kontrol-sistemi-nasil-yapilir\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/esp32-ve-firebase-ile-akilli-su-pompasi-kontrol-sistemi-nasil-yapilir\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"ESP32 ve Firebase ile Ak\u0131ll\u0131 Su Pompas\u0131 Kontrol Sistemi Nas\u0131l Yap\u0131l\u0131r?","datePublished":"2025-10-18T18:01:52+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/esp32-ve-firebase-ile-akilli-su-pompasi-kontrol-sistemi-nasil-yapilir\/"},"wordCount":5043,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/esp32-ve-firebase-ile-akilli-su-pompasi-kontrol-sistemi-nasil-yapilir\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/esp32-ve-firebase-ile-akilli-su-pompasi-kontrol-sistemi-nasil-yapilir\/","url":"https:\/\/fatihsoysal.com\/blog\/esp32-ve-firebase-ile-akilli-su-pompasi-kontrol-sistemi-nasil-yapilir\/","name":"ESP32 ve Firebase ile Ak\u0131ll\u0131 Su Pompas\u0131 Kontrol Sistemi Nas\u0131l Yap\u0131l\u0131r?","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-18T18:01:52+00:00","description":"Ak\u0131ll\u0131 su pompas\u0131 kontrol sistemleri, su israf\u0131n\u0131 \u00f6nlerken ayn\u0131 zamanda manuel m\u00fcdahale ihtiyac\u0131n\u0131 ortadan kald\u0131ran yenilik\u00e7i \u00e7\u00f6z\u00fcmler sunar. Bu makalede, ESP32 mikrodenetleyici ve Firebase platformunu kullanarak uzaktan kontrol edilebilir ve otomatik \u00e7al\u0131\u015fan bir su pompas\u0131 sistemi in\u015fa etmeyi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/esp32-ve-firebase-ile-akilli-su-pompasi-kontrol-sistemi-nasil-yapilir\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/esp32-ve-firebase-ile-akilli-su-pompasi-kontrol-sistemi-nasil-yapilir\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/esp32-ve-firebase-ile-akilli-su-pompasi-kontrol-sistemi-nasil-yapilir\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"ESP32 ve Firebase ile Ak\u0131ll\u0131 Su Pompas\u0131 Kontrol Sistemi Nas\u0131l Yap\u0131l\u0131r?"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32192","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=32192"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32192\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=32192"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=32192"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=32192"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}