Hepimiz izlediğimiz videolarda, gerek okuduğumuz makalelerde IOT ( Internet of Things ) adlı bir başlık duymuşuzdur. IOT nesnelerin interneti anlamına gelmektedir ve günümüzde neredeyse kullandığımız akıllı her üründe IOT kavramını görmekteyiz. Gerek telefonumuzun internete bağlanması, gerek kullandığımız akıllı televizyonlar ve bir çok nesne internetle iletişim halindedir. Peki biz bir nesneyi nasıl IOT dünyasıyla bir araya getirebiliriz ? Bugün IOT konusunun giriş seviye uygulamalarından birisi olan ESP32 ile Dünya’da internetin olduğu herhangi bir konumdan LED açıp kapatacağız.
Bu projeyi yaptıktan sonra Sadece bir LED’i açıp kapatarak bile IOT dünyasına giriş yapmış olacaksınız. Bundan sonra röle modülü kullanarak istediğiniz tüm cihazlarınızın uzaktan bağlantılarını kesebilir veya bir sensör yardımıyla odanızın sıcaklığını ölçebilirsiniz. Yani düşünsenize yapabileceklerinizin sonu yok !
İhtiyaç Listesi
Bu proje için ihtiyacımız olan malzemeler arasında;
1 adet ESP32: ESP32-Wroom-32 Wifi ve Bluetooth Geliştirme Kartı
1 adet Breadboard: Elektronik Breadboard – Orta Boy – 400 Pin
1 adet LED: Kırmızı Led – 5mm – 10 Adet
1 adet Direnç: 220R Direnç Paketi – 1/4 W – 10 Adet
2 adet Jumper(40lı olarak satılıyor 1 tane almanız yeterli): 40lı Ayrılabilen Dişi-Erkek Jumper Kablo – 20cm – Arduino Uyumlu
Projenin yapılışı
ESP32, üzerindeki Wi-fi özelliği sayesinde internete bağlanabilir. ESP32’nin örnek kodlarını incelerseniz internet projeleri olduğunu görebilirsiniz. Ama tüm projeler LAN üzerinden çalışmakta. Tıpkı çocukken arkadaşımızla yan yana oyun oynamak istediğimizde aynı internete bağlı olmamız gerektiği gibi. Yani arkadaşınız çok uzaklardaysa LAN üzerinden oyun oynayamazsınız. Bir servera ihtiyacınız var. Yani internet dünyasına oluşturulmuş bir alana ihtiyacınız var. Bu ihtiyacımızı tıpkı oyunların serverları gibi Arduino Cloud dediğimiz Arduino’nun platformu ile karşılayacağız.
İlk adım olarak https://docs.arduino.cc/arduino-cloud/ internet sitesine girip oradan ARDUINO IOT CLOUD butonuna basmamız gerekiyor. ( Fotoğraf 1.0 )
Daha sonra karşımıza çıkan ekrandan kayıt oluyoruz. ( Fotoğraf 1.1 )
Daha sonra karşımıza çıkan ekrandan Create Thing butonuna basmamız gerekiyor ( Fotoğraf 1.2 )
Sonrasında ise çıkan erkandan Add Variable butonuna basmamız gerekmekte. ( Fotoğraf 1.3 )
Daha sonra ise karşımıza çıkan ekrandan değişkenimize bir isim veriyoruz. Ben led ismini seçtim. Sonrasında hemen altındaki select variable type kısmında değişkenimizin ne olduğunu seçmemiz gerekiyor. ( Fotoğraf 1.4 )
Light yazınca karşınıza çıkmazsa yandaki resimdeki gibi Light and color kutucuğunu da işaretlemeniz gerekir. ( Fotoğraf 1.5 )
Daha sonra değişkenimizin sadece Read & Write ( Okuma ve yazma mı ? ) veya Read Only ( sadece yazma ) mı olduğunu seçmemiz gerek. Eğer bir sensör kullanıyorsak sadece Read Only kutucuğunu seçmemiz, eğer led gibi çıkış vermemiz gereken bir cihaz kullanıyorsak Read & Write kutucuğunu seçmemiz gerek ( Fotoğraf 1.6 )
Daha sonra Variable Update Policy ( Değişken Güncelleme Politikası ) kısmını seçmemiz gerek. Burada dikkat etmemiz gereken Değişkenimiz değişir değişmez mi veri geliyor yoksa periyodik olarak sürekli mi geliyor. Buton veya LED gibi bileşenler kullanacaksak On Change kutucuğunu işaretlememiz gerekir. Sonrasında ise Add Variable kutucuğuna basarak yaptıklarımızı kaydedebiliriz.
Göründüğü gibi projemiz Cloud Variables ( Bulut değişkenleri ) kısmına geldi. ( Fotoğraf 1.7 )
Daha sonra ise Associated Device ( İlişkili Cihaz ) kısmına tıklıyoruz. ( Fotoğraf 1.7 )
ESP32 Arduino IOT Bağlantısı
Karşımıza çıkan ekrandan bağlayacağımız cihazı seçmemiz gerekiyor. Biz Third Party Device ( 3. part cihazlar ) seçeneğini seçmemiz gerekiyor. ( Fotoğraf 1.8 )
Sonrasında karşımıza çıkan ekrandan cihazımızı seçmemiz gerekiyor. kullanacağımız cihaz ESP32 ama ESP32 de üreticisine göre alt başlıklara ayrılmakta. Ben ESP32 DEVKİT V1 kullanacağım. Siz de cihazınızın arkasını çevirip öğrenebilirsiniz. ( Fotoğraf 1.9 – Fotoğraf 2.0 )
UYARI
Burada dikkat etmeniz gereken en önemli şeylerden bir tanesi de ESP32’nizin DRIVER’lerinin bilgisayarınıza yüklü olup olmadığıdır. Bilgisayarımıza USB portu üzerinden bağlanan herhangi bir cihaz üzerlerinde bulunan UART köprüsü dediğimiz minik çipler kullanırlar. Her ESP32 üreticisi gereği farklı UART çipleri kullanabilir. Bu yüzden ESP32’mizin üzerinde bulunan UART çipini tespit edip internetten Driverlerini yüklememiz gerekmektedir. Aksi halde bilgisayarımız ESP32 cihazımızı tanımayacaktır. Bu kısmı daha detaylı incelediğimiz; “ESP32’ye yazılım nasıl yüklenir” blog yazımızı inceleyebilirsiniz. Eğer bunu yapmazsanız bilgisayarınız ESP32 kartınızı görmeyecektir. ( Fotoğraf 2.1 )
Eğer ESP32 ‘ye nasıl yazılım yükleneceğini bilmiyorsanız aşağıdaki blog yazımı okuyabilirsiniz.
Kullandığımız kartı seçtikten sonra devam butonuna basıyoruz. Sonrasında ise cihazımıza istediğimiz ismi verebiliriz. Ben ESP32-Mahmut koyuyorum. ( Fotoğraf 2.2 )
Daha sonra karşınıza Device ID ( Cihazınızın ID’si ) ve Secret Key kısımları çıkacak. Bu iki kısmı kaybetmeyin ve paylaşmamaya özen gösterin. Aksi halde birisi sizin cihazınızı kontrol edebilir. Bu iki kısmı not alabilir veya direk dowload the PDF kısmından bu bilgilerin yazılı olduğu bir PDF indirebilirsiniz. Bilgileri kaydettiğinizden emin olduktan sonra I saved my device ID and Secret Key kutucuğunu seçip devam butonuna tıklıyoruz. ( Fotoğraf 2.3 )
Tebrikler! Cihazınızı Arduino Cloud hesabına bağladınız. ( Fotoğraf 2.4 )
Sonrasını da ana ekranımızın sağ alt kısmında bulunan Network kısmından ESP32 için kullanacağımız internetimizi Arduino IOT’ye tanımlamamız gerekli. Bunu yapmamızın sebebi mantıken ESP32’nin internete bağlanması gerekir. ( Fotoğraf 2.5 )
Sonrasında karşımıza çıkan ekrandan kullanacağımız Wi-Fi ismini, Wi-Fi’nin şifresini ve saklamamız gereken Secret Key’i bu kısma yazacağız. ( Fotoğraf 2.6 )
Sonrasında ana ekranımızda sol üstte Things sekmesinin sağında olan Dashboards sekmesini açıyoruz. ( Fotoğraf 2.7 )
Karşımıza çıkan ekranda Build Dashboard butonuna tıklıyoruz. ( Fotoğraf 2.8 )
Sonrasında ADD kısmına bastığımızda bir çok widgets görmekteyiz. Tıpkı windows 8 de güzel göründüğü için masaüstünün sağ kısmına eklediğimiz gibi. Buradan Switch Widgetini ekliyoruz. ( Fotoğraf 2.9 )
Sonrasında karşımıza çıkan ekrandan Widget’imize bir isim verip daha sonrasında hemen altındaki Linked Variable butonuna basıyoruz. ( Fotoğraf 3.0 )
Daha sonrasında karşımıza çıkan ekrandan Things kısmından oluşturduğumuz kartı ve Variables kısmından ise oluşturduğumuz LED değişkenini seçip LINK VARIABLE butonuna basıyoruz. ( Fotoğraf 3.1 )
Göründüğü gibi gerekli bağlantıyı kurarak Widget’imizle eşleştirdik. ( Fotoğraf 3.2 )
Sonrasında tekrar Things kısmına gelip sağ üstteki Sketch kısmına basıyoruz. ( Fotoğraf 3.3 )
Karşımıza çıkan ekrandan sağ üstteki </> Open Full Editor Butonuna tıklıyoruz. ( Fotoğraf 3.4 )
Nasıl Kodlarız?
Daha sonra gerekli kodları yazıyoruz. Önce karşımıza çıkan editörde void setup kısmına kullanacağımız 2 numaralı pini çıkış olarak gösteriyoruz.
void setup() {
// Initialize serial and wait for port to open:
Serial.begin(9600);
pinMode(2,OUTPUT);
// This delay gives the chance to wait for a Serial Monitor without blocking if none is found
delay(1500);
// Defined in thingProperties.h
initProperties();
// Connect to Arduino IoT Cloud
ArduinoCloud.begin(ArduinoIoTPreferredConnection);
/*
The following function allows you to obtain more information
related to the state of network and IoT Cloud connection and errors
the higher number the more granular information you’ll get.
The default is 0 (only errors).
Maximum is 4
*/
setDebugMessageLevel(2);
ArduinoCloud.printDebugInfo();
}
Daha sonra void onLedChange() fonksiyonuna hatırlarsanız Widget’a bağlı led değişkenini kullanarak basit bir fonksiyon yazıyoruz. Widget açıkken 1, kapalıyken 0 değerini döndüreceği için if(led) koşulu widget açıksa içine, kapalıysa else komutunu döndürecektir.
void onLedChange() {
if(led){
digitalWrite(2,HIGH);
}
else{
digitalWrite(2,LOW);
}
}
Sonrasında kodu yüklemek istediğimizde ESP32’nin bulunamadığını göreceğiz. Bunun için bilgisayarımıza bir uygulama yüklememiz gerek. Mantıken birisi internette birisi bilgisayarımıza bağlı bir bağlantı olması gerek. Bu köprü görevini Arduino Create Agent görecek. Şimdi nasıl kurduğumuzu inceleyelim.
Önce arama kısmına Arduino Create Agent yazıp install the arduino creage agent sitesine tıklyoruz. Sitenin linki aşağıda da var.
https://support.arduino.cc/hc/en-us/articles/360014869820-Install-the-Arduino-Create-Agent
Daha sonra aşağıdan da anlaşılabileceği gibi mavi yazı olan Arduino Create agent installation page yazısına tıklıyoruz. ( Fotoğraf 3.5 )
Start butonuna bastıktan sonra uygulamayı kendi Windows sürümümüze göre indiriyoruz. Ben Windows 64 bit kullandığım için win64 uygulamasını indirdim. ( Fotoğraf 3.6 )
Daha sonra yüklenen kurulum dosyasını kurarak ESP32’nizin internet üzerinden Arduino Sketch ile kodlayabilirsiniz. Gördüğünüz gibi benim kullandığım DOIT ESP32 DEVKIT V1 kartı internet üzerinden Sketch ile bağlantı kurdu. Şimdi kodumuzu yükleyebiliriz. ( Fotoğraf 3.7 )
UYARI
Kodumuzu yüklerken yapmamız gereken en önemli şeylerden bir tanesi ESP32 üzerindeki BOOT butonuna bir süre basılı tutup çekmektir. Bunu yapmazsak kodumuz yüklenmeyecektir. “Eğer ESP32 geliştirme kartına nasıl yazılım atılacağını bilmiyorsanız ESP32’ye Program Nasıl Atılır? ” adlı blog yazımı okuyabilirsiniz. ( Fotoğraf 3.8 )
Devrenin Kurulumu
Önce breadboard üzerine LED’imizi ve direncimizi bağlayalım. Ben direnci LED’in eksi ucundan toprağa verdim. Siz isterseniz artı ucuna da takabilirsiniz. ( Fotoğraf 3.9 )
Daha sonra ESP32’miz ile LED’imizin bağlantılarını yapalım. LED’in artı kısmı ESP32’nin D2 pinine, eksi kısmı ise ESP32’nin herhangi bir GND pinine bağlamamız gerek. ( Fotoğraf 4.0 )
Sonunda! Tüm devre ve yazılım hazır. ( Fotoğraf 4.1 )
Test Kısmı
Dashboard kısmından ayarladığımız switch widgeti açıp kapattıkça ledimizin yanıp söndüğünü gözlemleyebiliriz. ( Fotoğraf 4.2 )
Aynı zamanda telefonunuza Arduino IOT uygulamasını yükleyerek kayıt olduğunuz hesap üzerinden de LED’inizi istediğiniz gibi kontrol edebilirsiniz. ( Fotoğraf 4.3 )
Evet. Bu blog yazımızda Arduino IOT ile kolay bir şekilde ESP32’mizi internetin çektiği her yerden nasıl kontrol edebileceğimiz öğrendik. Diğer Arduino IOT araçlarını kullanarak neler yapabileceğiniz bir hayal etsenize. ESP32’ye bir sıcaklık ve nem sensörü bağlayarak telefonunuzdan ortamın sıcaklığını görebilir, LED yerine bir röle modülü bağlayarak istediğiniz cihazı açıp kapatabilirsiniz. Kısacası yapabileceğiniz şeylerin tek sınırı hayal gücünüz. Bir sonraki yazımızda da hayal gücünüzün sınırlarının genişlemesine yardımcı olacağını düşündüğüm bir projeyi inceleyeceğiz. Aşağıdaki linkten ESP32-CAM ile Yemekleriniz Yanmasın yazımı inceleyebilirsiniz.