Skip to main content

Arduino & DS1307 Kullanarak Gerçek Zaman Saat Uygulaması

ARDUINO & DS1307 KULLANARAK GERÇEK ZAMAN SAAT UYGULAMASI İNCELEME

Arduino & DS1307 ile gerçek zaman uygulaması nasıl yapılır ? DS1307 nedir ve nasıl kullanılır ? Arduinoda RTC kodları ve kütüphanesi nedir ? Bu ve benzeri sorulara yanıt aradığımız Arduino & DS1307 Kullanarak gerçek zaman saat uygulaması inceleme adlı yazımızla karşınızdayız.

Başlayalım.

ARDUINO & DS1307 KULLANARAK GERÇEK ZAMAN SAAT UYGULAMASI

Bir RTC veya gerçek zamanlı saat genellikle bir Entegre Devre(Integrated Circuit) formundaki bir zaman işleyişi cihazıdır.

Bir RTC batarya ile çalışır ve güç olmasa bile güncel saati takip eder.Gerçek zamanlı saat entegre devreleri bilgisayarlarda, sunucularda  ve birçok gömülü sistemde bulunur.Ki gerçek hayatta zamanı doğru şekilde tutabilmek adına gerekli heryerde kullanılırlar.

Neden Gerçek Zamanlı Saate (RTC) İhtiyacımız Var ?

Arduino ve hemen hemen tüm mikrodenetleyicilerin yerleşik zamanlayıcıları ve zaman işleyicileri (Arduinoda millis() ) olmasına rağmen , güç kaynaklarına sahip oldukları için, güç kaynakları olduğu sürece çalışırlar.

Güç kapatıldıktan sonra (manuel yada elektrik kesintisi vb.) tüm zamanlayıcılar 0’a eşitlenir.

Dahili zamanlayıcıları kullanarak zaman tutma işlemi basit projeler için kabul edilebilir olsada zamanlayıcının harici güçten bağımsız olarak veya miktrodenetleyici veya arduino yeniden programlandığında bağımsız olarak çalıştığı veri kaydedicileri , saatler , alarmlar vb. gibi projelerde bir alternatif ihtiyaç duyarız.

İşte burada Gerçek Zamanlı Saat entegre devrelerinin kullanımı öne çıkmaktadır.Neredeyse tüm RTC entegre devreleri yıllarca tek bir lityum hücrede çalışan düşük akımlı devrelerdir(genel olarak CR2032.

Popüler olan ve çok sık kullanılan RTC entegre devrelerinden birisi de DS1307 gerçek zaman saatidir.

DS1307 Gerçek Zaman Saati :

DS1307 RTC , tam saati ve takvimi yani saat , dakika , saniye , yıl , ay ve günü koruyabilen düşük maliyetli , düşük güçlü bir gerçek zamanlı saat entegre devresidir.

Popüler DS1307 RTC’nin iyi bilinen özelliklerinden birkaçına beraber bakalım;

  • Tam Zaman işleyiş işlevselliği
  • Saat , dakika , saniye , yıl , ay , ayın günü ve haftanın günü
  • 2100 yılına kadar geçerlidir
  • Düşük Güç tüketimi : Pil ile çalışırken 500 nA’den daha az enerji tüketir.
  • Elektrik kesintisi durumunda batarya beslemesine otomatik geçiş
  • AM/PM göstergeli 24 veya 12 saat seçenekleri

DS1307 RTC ; akü , konnektörler , çekme dirençleri gibi tüm gerekli bileşenlerden oluşan modüller halinde mevcuttur.

DS1307’nin PIN Yapısı :

X1 ve X2 : Dahili osilatörü etkinleştirmek için 32768 Khz frekans kristalini bağlamak için kullanılan pinlerdir.Harici bir osilatör X1’e bağlıysa , X2 boş olarak kalabilir.

VBAT : Akü güç kaynağı pimidir.Yedek besleme için 3V Lityum hücreye bağlı olması gerekir.

GND : Toprak ucudur.

SDA : Seri data pimidir.I2C haberleşmesi için I2C arabiriminin veri giriş/çıkış pimidir.Genel olarak  10KΩ direnç aracılığıyla 5V’a çekilmelidir.

SCL : Seri saat giriş pimidir.I2C arabiriminin saat giriş pimidir.Ayrıca 10KΩ direnç aracılığıyla 5V’a çekilmelidir.

SQW/OUT : Kare dalga çıkış pinidir.Kullanılmazsa , boş bir şekilde bırakılabilir.

Vcc: Ana besleme pimidir.

Arduino Gerçek Zamanlı Saat DS1307 Arabirimi

Biraz DS1307 hakkında bilgi edindiğimize göre , arduino ve gerçek zaman saati arayüzü ile devam edelim.DS1307 RTC modülü I2C haberleşme yöntemini kullanır.

Arduino gerçek zamanlı saat I2C arayüzünde , arduino mikrodenetleyicisi daima master, DS1307 ise slave gibi çalışır.

I2C iletişimde master yani bu durumda arduino, saat sinyali , veri yolu erişimi , başlat ve durdur sinyallerinden sorumlu olur.

Arduino Gerçek Zamanlı Saat DS1307 Arabiriminin Çalışması

Arduino UNO’nun DS1307 gerçek zaman saati arayüzü ile ilişkilendirildiği bir projeye beraber bakalım.Burada DS1307 RTC’yi mevcut tarih ve saate programlayacağız ve Arduino güç kaynağı kesilse bile bu verilen gerçekten saklanıp saklanmadığını göreceğiz.

Program içerisinde ‘RTClib’ adlı özel bir kütüphane kullanılmıştır ve github/adafruit/RTClib üzerinden bu kütüphaneyi indirilebilirsiniz.

İndirip Arduino kütüphanesinin veritabanına eklendiğinden emin olmalısınız.Verileri ve saati DS1307 RTC entegre devresine yüklemek adına , RTClib kütüphanesinde bulunan ve Arduino’nun kodu yüklerken tarih ve saati bilgisayardan yükleyeceği bir özellik kullanılmıştır.

Devre Diyagramı :

DS 1307 RTC Modülü için ;

VCC  = +5V

GND = Toprak

SDA = Arduino Analog giriş PC4/ADC4/SDA

SCL = Arduino analog giriş PC5/ADC5/SCL

16×2 LCD Gösterge için ;

GND 1 = Toprak

VCC 2 = +5V

Cont 3 = 10 KΩ Pot

RS 4 = Arduino PD7/AIN1

E 6 = PD6/AIN0

D4 11= PD5/T1

D5 12 = PD4/T0/XCK

D6 13= PD3/INT1

D7 14 = PD2/INT0

LED+ 15 = -> 1 kΩ direnç -> +5V

LED- 16 = Toprak

 

Arduino Kod :

#include <Wire.h>

#include <LiquidCrystal.h>

#include “RTClib.h”

RTC_DS1307 rtc;

LiquidCrystal lcd(7,6,5,4,3,2); // (rs,e,d4,d5,d6,d7)

 

char daysOfTheWeek[7][12] = {“Sun”,”Mon”,”Tue”,”Wed”,”Thu”,”Fri”,”Sat”};

void setup ()

{

Serial.begin(9600);

lcd.begin(16, 2)

 

if (! rtc.begin())

{

lcd.print(“RTC bulunamadı”);

while (1);

}

if (! rtc.isrunning() )

{

lcd.print(“RTC calısmıyor”)

}

 

rtc.adjust(DateTime(F(__DATE__),F(__TIME__))); //PC’den zamanı güncelle

}

 

void loop ()

{

DateTime now = rtc.now();

lcd.setCursor(0,1);

lcd.print(now.hour());

lcd.print(‘ : ’);

lcd.print (now.minute());

lcd.print(‘ : ’);

lcd.print(now.second());

lcd.print(“    ”);

 

lcd.setCursor(0,0);

lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);

lcd.print(“ , ”);

lcd.print(now.day());

lcd.print(‘ / ’);

lcd.print(now.month());

lcd.print(‘ / ’);

lcd.print(now.year());

 

}

ARDUINO & DS1307 KULLANARAK GERÇEK ZAMAN SAAT UYGULAMASI İNCELEME NEDİR SONUÇ : 

Bugün Arduino & DS1307 Kullanarak gerçek zaman saat uygulaması nasıl yapılır konusunu inceledik.Umuyorum faydalı bilgiler edinmişsinizdir.Arduino ile ilgili proje ve örnek kodlara devam etme niyetindeyiz.

İyi Çalışmalar

Arduino PIR Sensör Kullanımı | Arduino ile PIR Hareket Kontrolü Nasıl Yapılır ?

ARDUINO & PIR SENSÖR İLE HAREKET KONTROLÜ NEDİR?

Arduino ile hareket kontrolü nasıl yapılır ? PIR Sensör nedir ? Arduino ile PIR sensörü nasıl kullanabilir ve nasıl hareketleri kontrol edebiliriz ? Bu ve benzeri sorulara yanıt aradığımız Arduino & PIR Sensör ile hareket kontrolü nedir adlı yazımızla karşınızdayız.

Başlayalım.

ARDUINO & PIR SENSÖR İLE HAREKET KONTROLÜ 

PIR sensör yada Pasif Kızılötesi sensörü , gözlemlenebilir alanda nesneler tarafından yayılan kızılötesi(IR) ışığını ölçen elektronik bir cihazdır.PIR sensöründeki ‘Pasif’ terimi , sensörün aslında herhangi bir kızılötesi ışık yaymadığını ancak çevresindeki nesneler tarafından yayılanı pasif olarak algılandığını gösterir.

Her bir nesne için , eğer yüzey sıcaklığı mutlak sıfırdan daha büyükse, ör. -2730 , kızılötesi radyasyon şeklinde ısı yayar.İnsanlar bu radyasyonu kızılötesi dalga boyu olduğu için göremezler.

Ancak PIR sensörler bu radyasyonları tespit eder ve bunları uygun elektrik sinyalleri haline dönüştürür.

PIR Sensör :

PIR sensörünü harici bir cihaza bağlamak için , Vcc , Dijital Çıkış (Data) ve GND olmak üzere 3 pim bulunmaktadır.

Sensör kartının tepesinde , Fresnal Lens denilen ve gerçek PyroElektrik sensörü kaplayan özel bir lens türü vardır.Fresnal Lensin görevi tüm kızılötesi radyasyonu pyroelektrik sensöre odaklamaktır.

PIR sensör kartının arkasına bakacak olursak , tüm elektronik devre buradadır.PIR sensör modülünün beyni BISS0001 PIR hareket dedektör devresidir.Bu devrenin yanında birisi duyarlılığı ayarlamak ve diğeri ise gecikme süresini ayarlamak için iki potansiyometre bulunmaktadır.

Hassaslık ayarını kullanarak görüş alanını kontrol edebiliriz ve sensörümüzde bu alan 7 metreye kadar çıkabilir.Gecikme süresi ayarını kullanarak , hareketli bir nesne algılandığında Dijital Çıkışın HIGH kalacağı süreyi kontrol edebiliriz.

PIR Sensörü Nasıl Çalışır ?

PIR sensörleri diğer sensörlerden daha karmaşıktır.Yapmamız gereken tek şey herhangi bir hareket algılandığında Sensörün Dijital Çıkış Pininin HIGH olup olmadığını kontrol etmektir.

Ancak , dahili olarak bir sensör içerisinde birçok durum meydana gelmektedir.Gerçek bir PIR sensörü mercekle kaplı olan iki yuvadan oluşur ve her iki yuvada IR duyarlı malzemelerden oluşur.Sensörün önünde hareket olmadığı durumlarda , sensördeki her iki yuvada aynı miktarda kızılötesi radyasyon algılar.

Sensörün önünde bir hareket meydana geldiğinde iki yuva arasındaki fark çıkışı pozitif olur.Hareket uzaklaştıkça , azaldıkça diğer yuva rasyasyonu tespit eder ve diferansiyel çıkışı negatif olur.Bu çıkış palslarına dayanarakta hareket algılanmış olur.

Arduino ve PIR sensör ile hareket kontrolü

PIR Sensör Test Etme :

PIR sensörünün dijital çıkış pini algılanan harekete bağlı olarak HIGH/LOW olduğu için PIR Sensörü test etmek adına basit bir devre oluşturabiliriz.

İlk devre bir PIR sensörü ve bir led’den oluşabilir.PIR sensör hareketleri tespit ettiğinde , led yanar.Led’in açık olduğu süre Gecikme Ayarı , pot yardımı ile ayarlanabilir.

Arduino PIR sensörü : Arduino kullanarak PIR hareket sensörü ile küçük bir hareket tespit edici yapalım.

Burada PIR sensör önündeki herhangi bir hareketi algılar ve arduinoya sinyal yollar.Arduino ise bu durumda Buzzer ile alarm verir.

Büyük bir tasarımdan ziyade burada PIR sensörün arduinoya nasıl bağlanacağı ve arduinonun verileri nasıl kullanabileceğini , röle , GSM modülü , sesli uyarılar gibi çıkış ve yüklerin nasıl çalıştırılabileceği hakkında bilgi edinmeyi deneyelim.

Devre Tasarımı :

PIR sensör modülünün 3 pimi olduğunu ifade etmiştik.Bunlar Vcc , Dijital Çıkış ve GND’dir.Burada Vcc ile +5V ve GND ile de GND’yi bağlayın.Ardından PIR sensörünün dijital çıkış pinini , Arduinonun dijital giriş çıkış pini 8’e bağlayalım.

Arduino pim 11’e de bir zil bağlayalım.

Arduino PIR Sensör Hareket Dedektörünün Çalışması :

Sistem açıldığında , arduino PIR sensörünün kalibre edilmesini bekler.Kalibrasyon süresi 10 sn’dir ve bu süre zarfı içerisinde PIR sensörünün önünde hareket olmamalıdır.

Kalibrasyondan sonra , PIR sensörü önündeki herhangi algılamaya hazır olacaktır.PIR sensörü herhangi bir hareket tespit ederse , Arduinonun pin8’e bağlı olan pimi HIGH Olur ve ardından pin11’e bağlı olan zili aktif eder.

 

Arduino Kodu :

 

int buzzer = 11;

int sensor = 8;

int led =13;

void setup()

{

 pinMode(buzzer , OUTPUT)

 pinMode(sensor , INPUT)

 pinMode(led , OUTPUT)

 

 digitalWrite(buzzer, LOW);

 digitalWrite(sensor , LOW);

 

 digitalWrite(led , LOW);

 while(millis()<13000)

 {

 digitalWrite(led , HIGH);

 delay(50);

 digitalWrite(led , LOW);

 delay(50);

 }

 digitalWrite(led , HIGH);

}

void loop()

{

 if (digitalRead(sensor) ==HIGH)

 {

 digitalWrite(buzzer, HIGH);

 delay(3000);

 digitalWrite(buzzer , LOW);

 while(digitalRead(sensor)==HIGH);

 }

}

ARDUINO & PIR SENSÖR İLE HAREKET KONTROLÜ NEDİR SONUÇ :

Bugün Arduino & PIR sensör ile hareket kontrolü nedir adlı yazımızı sizlerle paylaştık.PIR sensör çalışma prensibi ve arduino ile kullanımına dair örnekleri ve kodu yukarıda belirttik.Umuyorum faydalı olacaktır sizlere.

İyi Çalışmalar

Arduino Proje Fikirleri -2

DİJİTAL INTEGRATED CIRCUIT TEST DEVRESI PROJESI

Arduino programı nedir ? IC test devresi nasıl yapılır ? Arduino proje fikirleri nedir ? Arduino ile neler yapılabilir ? Bu ve benzeri sorulara cevap aradığımız arduino proje fikirleri adlı yazı dizisinin 2. yazısı ile karşınızdayız.

Farklı IC(Integrated Circuit)’ler farklı özelliklere sahiptirler.Böylece , farklı donanım konfigürasyonlarını uygulamak ve farklı IC’leri kontrol etmek için tüm olası girdileri kontrol etmek zorunlu hale gelmektedir.

Farklı türde IC’lerin işlevselliğini kontrol etmek için bazı kolay ve kullanışlı tekniklere ihtiyacımız vardır.Bu sebeple bu yazımızda arduino tabanlı dijital IC test cihazını anlatmaya çalışacağız.Burada farklı IC’leri kontrol etmek için farklı fonksiyonlara sahip bir program geliştiriyoruz.Çeşitli IC’lerin prototipini sistematik olarak analiz edip test edeceğimiz ve her pime olası tüm girişlere ulaşabileceğimiz bir sistem tasarlıyoruz.

Ek olarak bir görüntüleme kanalı üzerinden farklı IC’lerle ilişkili doğruluk tablolarınıda inceleyeceğiz.

ARDUINO TABANLI DİJİTAL IC TEST DEVRESİ

Dijital IC test cihazında , Atmega2560 mikrodenetleyiciye (MCU) dayalı olarak Arduino Mega ADK kartı , CON1’e bağlı Nokia 5110 LCD , 5×3 matris tuş takımı (S1-S15) , ZIF soketi ve 12V/1A adaptör kullanılacaktır.

Arduino Atmega’da bulunan Atmega2560 , harici bir donanım programlayıcısı kullanmadan MCU’ya yeni kodların yüklenebilmesi için kullanılan bir bootlader ile desteklenmiştir.

Bu prototipte kullanılan LCD ekran 48×84 pikseldir.Ortalama güç gereksinimi 3,3V olan düşük güçte bir CMOS LCD denetleyici (PCD8544) kullanılmaktadır.Burada uygun dirençlerle MCU güç gereksinimlerine ayarlanabilmektedir.LCD’yi kontrol etmek için , bazı temel fonksiyonlara sahip olan LCD adlı basit bir kütüphane tasarlanmıştır.

Tuş takımı matris kullanmamızın amacı ise , tuşların kontrol edilmesi için gerekli olan giriş/çıkış pin sayısının azaltılmasıdır.Bir giriş yaparken , bir seferde sadece bir sütun okunur.Okunacak sütun mantıksal olarak 0V’a bağlanır.

Artık , satırların durumunu kontrol ederken , o sütundan hangi tuşa basıldığını tespit etmek mümkündür.Bir sütunu okuduktan sonra , MCU , yeni sütunu mantıksal 0V’a bağlayarak hemen bir sonraki için geçer.Sadece o belirli kolonun 0V’a bağlanması çok önemlidir.Aksi halde , doğru girişi tespit etmek mümkün olmayacaktır.Bu şekilde , tüm sütunlar matris taramasının bir tam döngüsünü elde etmek için tek tek okunur.

Saat hızı 16Mhz olan Atmega2560 , saniyede binlerce kez tüm matrisi tarayabilir.Birden fazla tuşa basılması nedeniyle beklenmedik sonuçları ortadan kaldırmak için diyotların tüm anahtar boyunca eklendiğini unutmamalıyız.Tuş takımını kontrol etmek için tuş takımı adı verilen başka bir kütüphane , kullanıcının MCU’ya farklı girişleri beslemesini sağlar.

Devrede , her bir Giriş/Çıkış pini 1-Megaohm çekme direncine bağlanmıştır.Bu dirençler herhangi bir duruma bağlı olmadığında giriş pinlerinin kayma durumunu önlemektedir. IC test cihazının kusursuz olarak çalışması için tasarlanan kod için , arduino pinlerine olan tüm bağlantıların devre şemasında olduğu gibi yapılması önerilir.Devre şeması üzerinde bir değişiklik yaparsanız , kod üzerinde de aynı şekilde değişim yapmalısınız.

Aşağıdaki IC’ler başarılı bir şekilde test edilmiştir  ;

4000, 4001, 4002, 4011, 4012, 4023, 4025, 4029, 4030, 4049, 4050, 4068, 4069, 4070, 4071, 4072, 4073, 4075, 4077, 4081, 4082, 4093, 5408, 5409, 5411, 5421, 5479, 7266, 7400, 7401, 7402, 7403, 7404, 7405, 7408, 7409, 7410, 7411, 7412, 7414, 7420, 7421, 7427, 7430, 7432, 7473, 7474, 7476, 7478, 7479, 7486, 74132 ve 74393.

Desteklenen IC’lerin sayısı , programa yeni işlevlerin ve kitaplıkların dahil edilmesi ile artırılabilir.Atmega2560 MCU’nun 256 kB flash belleğe sahip olması dolayısıyla çok sayıda IC için bir program yüklenebilmektedir.

Tipik bir IC test cihazının aksine , bu cihaz kullanıcısına birçok kullanışlı özellik sunar.Bu cihaz üzerinde Nokia 5110 ekran paneli ve 15 tuşlu bir tuş takımı kullanılmıştır.

Kullanıcılar test prosedürleri hakkında da yardım bulabileceklerdir.Örnek olarak , bir girdi girileceği zaman yanlış girildiyse ,tekrar doğrusu girilerek yanlış olanlar düzeltilebilir.

Her bir kapı için doğruluk tabloları daha iyi bir gözlem için durdurulabilir veya zaman kazanmak için es geçilebilir.Cihazı resetlemeden önceki aşamayıda (yeniden veri girmek için) tekrar bir çalıştırma yaptırılabilir.

İşlem hızının 16 Mhz’i , bu IC test cihazının cevap zamanını oldukça iyi hale getirmektedir.Tuş takımından veri kabul ederken ve LCD panel üzerinden bilgi görüntülerken zaman gecikmesi gözlenmemektedir.Otomatik tarama durumunda , bu prototip , IC’yi test etmek için ortalama yaklaşık olarak 0,5 sn sürmektedir.Tüm bu özellikler bu cihazı güçlü ve kullanıcı dostu yapar.

Otomatik Arama Yöntemi :

Bu işlemde kontrol edilecek IC’nin pin sayısı önce girilmektedir.Cihaz daha sonrasında tüm olası giriş sinyallerini IC’ye bildirmeye başlayacaktır ve olası her giriş için geri yanıt almaktadır.Bir cevap kendi veritabanında belirli bir IC’nin çıktısı ile eşleşirse , o zaman IC’nin iyi olduğunu bildirir.

Manuel Kontrol Yöntemi :

Bu yöntemde de ilk önce IC numarası girilir(Ör ; 4011).İşlem devam ederken , bu IC’nin temel detayları görüntülenir.Kontrol işleminin başlangıcında , kullanıcı için doğruluk tablosu seçeneği sunulur.Gerçek tabloları görüntülemek için bu seçenek seçilmelidir.Bir sonraki aşamada ise , MCU , sinyal işleme görevini başlatır.

Burada spesifik olarak NAND geçidi , IC 4011’in durumunda MCU , pin 14’e  0  ve 5’e 5V besleme sağlar.Bu IC’nin dört tane NAND kapısı olduğu için , bunlardan her biri birer birer kontrol edilir.MCU, her bir kapıya , doğruluk tablosuna göre gerekli olan giriş kombinasyonunu sağlar ve çıktıları IC (4011) tarafından kendi girişi olarak geri alır.

Daha sonra ise , bu gözlemlenen sonuçları , IC spesifikasyonlarına göre beklenen sonuçlarla karşılaştırarak , MCU , söz konusu belirli kapıdaki sonucunu verir.Son olarak ise , IC’nin genel durumuna ek olarak iyi veya kötü kapılarının sayısı görüntülenir.

KAYNAK DOSYALARINI İNDİRMEK İÇİN TIKLAYINIZ (DEVRE ŞEMALARI vb. )

 

DİJİTAL INTEGRATED CIRCUIT TEST DEVRESİ PROJESİ SONUÇ :

Bugünki yazımızda Dijital IC Test Devresi projesini sizlerle paylaştık.Arduino tabanlı olan bu proje ile arduino proje fikirleri yazı dizisine devam ediyoruz.Umuyoruz faydalı bir yazı dizisi oluyordur.

İyi Çalışmalar

Arduino Proje Fikirleri -1

ESP8266 TABANLI KABLOSUZ WEB SUNUCUSU PROJESİ

ESP8266 nedir ? Arduino proje fikirleri nedir ? Kablosuz web sunucu projesi nasıl yapılır ? ESP8266 nasıl programlanır ? Bugünki yazımızda Arduino Proje Fikirleri serisinin ilk yazısı ile sizlerleyiz.

Tüm kaynak kodlar , resimler ve ilgili dökümanları sayfanın en altındaki linkten indirebilirsiniz.

ESP8266 TABANLI KABLOSUZ  WEB SUNUCUSU

ESP8266 tabanlı kablosuz web sunucusu projesi arduino çerçevesinde oluşturulmuştur.Şu anda , ESP8266 elektronik alanında popülerlik kazanmaktadır çünkü düşük maliyetli , güvenilir ve piyasada kolay bulunabilir bir modüldür.

Bu modülle ilgili belgelerin çoğu Mandarin (Çince) dilinde olup veri sayfasında sağlanan bilgiler bir uygulama adına ve ESP8266’nın kullanımı için çokta yeterli değildir.

Bu boşluğu doldurmak adına , çeşitli ülkelerden insanlar bu modülle ilgili programlama ve diğer konular hakkında gerekli detayları veren bir ESP8266 topluluğu oluşturmuşlardır.

ESP8266 , dahili 32 bit düşük-güç CPU , ROM ve RAM içermektedir.Yazılım uygulamalarını bağımsız bir cihaz olarak taşıyabilen veya bir mikro denetleyici (MCU) ile bağlayabilen eksiksiz ve bağımsız bir Wi-Fi ağ çözümüdür.Modül , COM portu üzerinden herhangi bir MCU ile kullanmak üzere yerleşik AT komutu ürün yazılımına sahiptir.ES8266’nın göze çarpan özellikleri şunlardır ;

802.11  b/g/n protokolü

Doğrudan (P2P) , soft-AP

Entegre TCP/IP protokol yığını

Entegre PLL , düzenleyiciler ve güç yönetim birimleri

802.11b modunda +19,5 dBm çıkış gücü

Anten çeşitliliğini destekler

Entegre düşük güçlü 32 bir MCU

SDIO 2.0 , SPI , UART

Kablosuz SoC

GPIO , I2C , ADC , SPI , PWM

Maksimum frekans 80 MHz

64k byte Komut RAM’ı

96k byte Veri RAM’ı

64k byte Önyükleme RAM’ı

RISC mimarisi

ESP8266 Tabanlı Kablosuz Web Sunucusu :

Ana kart ve diğer kartın devre şemaları ilgili dosya içerisinde verilmiştir.ESP8266’yı bağımsız bir cihaz olarak kullanıyoruz.Wi-Fi modülü için besleme gerilimi 3.3 volttur.Diğer kart ana karta monte edilmelidir.

CON2 , modülü bir PC’ye bağlamak için COM port arabirimi için kullanılır ve modül, USB-Seri dönüştürücü olarak kullanılır ve programlanır.

PC’de eğer fiziksel Com port var ise , USB-Seri dönüştürücü gerekli değildir.

ESP8266 modülünde 16 adet pin bulunmaktadır.Pin1 Reset , R5 direnci üzerinden 3.3V’a bağlanır ve manual reset için S2 düğmesi kullanılmaktadır.

Programlama modu için Pin12 (GPIO0) , 3.3V’dan R3’e bağlanır ve S1 , modülü program moduna getirmek adına kullanılır.Pin3 (CH_PD) , 3.3V’dan R8’e bağlanır.

ESP8266 ayrıca genel amaçlı olarak 10 bit olan ADC (Pin2)’yi entegre eder.Genellikle sensörden veya bataryadan gelen voltajı ölçmek için kullanılırlar.Çip yayım yaparken kullanılmazlar aksi durumda voltaj bilgisi yanlış olabilir.

Tüm dijital giriş/çıkış (I/O) pinleri , ped ile toprak arasına bağlanan bir snap-back devresi ile aşırı voltajdan korunmaktadır.Snap-back gerilimi genellikle 6V’dur ve tutma voltajıda 5.8V’dur.

Bu aşırı voltaj ve ESD’den koruma sağlar.Çıkış cihazları ayrıca diyotlarla ters voltajdan korunmaktadır.

Led1 , Pin11’e (GPIO2) bağlanır.Pin6 (GPIO12) 3.3V’dan R4’e bağlanır ve hata ayıklamak adına bir düğme ile (S3) ilgili işlem sağlanır.

Wi-Fi modüllerinin her tedarikçisi , çıkış pinleri düzenlemesi adına farklı bir model izlemektedir.Yani standart PCB modeli takip edilmemektedir.

Bir web tarayıcısı kullanılarak LM35 sıcaklık sensörü ve bir led kontrol(açık/kapalı) kullanılarak oda sıcaklığını ölçmek adına bir uygulamada kullanılmıştır.LM35 , hassasiyeti 10 mV/1 C derece olan kalibre edilmiş bir sıcaklık sensörüdür ancak aynı zamanda özel projelerle de kullanılabilir.

ESP8266 ev otomasyonu , ağlar , endüstriyel kablosuz kontrol , IP kameralar , sensör ağları , akıllı prizler , bebek monitörleri , giyilebilir elektronikler , güvenlik kimlik etiketleri , konum sistem işaretleri ve konum duyarlı cihazlarda kullanılabilir.

Yazılım Kısmı :

ESP8266 tabanlı kablosuz web sunucusunda programları derlemek ve yüklemek için Arduino IDE kullandık.ESP8266 topluluğu ESP8266’nın bir Arduino IDE ile kullanılması için uygun bir eklenti geliştirdi.Eklenti , üç tür ESP8266 Wi-Fi kartını destekler.Bunlar genel olarak ESP8266 anakart , MCU ESP8266 devre kartı ve OLIMEX ESP8266 geliştirme kartıdır.

ESP8266 Arduino Eklentisi Takma işlemi ; Arduino IDE (1.6.5 veya üstü sürümü) yükleyin.Arduino IDE’yi çalıştırın ve Dosya -> Tercihler seçeneğinden açık tercihler penceresini açın.Ek olarak Pano Yöneticileri URL alanına gidin ve ‘http://arduino.esp8266.com/stable/package_esp8266com_index.json’ adresini girin.Tamam’a basın.

Tools menü üzerinden Board: Arduino Uno -> Boards manager ve buradan Open Boards Manager’i açın ve ESP8266 topluluğunu , ESP8266’yı bulmak için aşağı doğru kaydırın.

Alanı bulduktan ya da vurguladıktan sonra yükle işareti karşınızda görünecektir.

Tıklayın.İşlem ortalama bir internet bağlantısı ile 30 dakika kadar sürecektir.

Yazılım ise basittir.Setup  () rutinleri , seri portu , çıkış olarak ise GPIO2 pinini ve giriş olarakta GPIO12’yi yapılandırarak donanımı çalıştırır.setupWifi() kısmı kablosuz bölümünü yapılandıracaktır.

Loop() kısmıda gelecek olan istekleri işleyen kısımdır.

Fonksiyon size_t sendProgmem (Wi-FiClient istemcisi , const char progmem[], size_t boyut) istemciye veri gönderir.IN [] dizisi , Web sayfasına karşılık gelir.Görüntü [] dizisi , EFYLOGO’ya karşılık gelir ve ES[] dizisi , modüle karşılık gelmektedir.

Diziler dosya-dizi dönüştürücü yazılım hexy kullanılarak oluşturulmaktadır.Bu ücretsizdir ve internetten indirilebilirdir.Diziyi oluştururken , kod çözme amacı ile .jpg görüntü uzantısını kaldırmalısınız.Tüm .jpg dosyaları bu yazımıza dahil edilmiştir.

SSID ve şifreyi , değiştirmek ve saklamak için uygun rutinler bulunmaktadır.ESP8266 yapılandırması Wi-Fi için yapıldıktan sonra , HCF4094 kullanılarak paralel-kaydırma yazma programına 8 bitlik bir seri geçiş ve LCD arabirimi için kullanılmaktadır.

İnşa ve Test Aşaması :

USB-Seri UART dönüştürücü sürücüsü yazılımını yükleyin ve geri-döngü testi yapın.

Araçlar Kartı : Arduino Uno’dan Genel ESP8266 Kart modülünü seçiniz.Arduino IDE ile ilgili kartınıza bağlandıktan sonra Programı yükle butonunu kullanarak birleştirme işlemini yapabilirsiniz.Programı modülde birleştirmek için , ana kartın COM bağlantı noktasınıı (CON2) seri-usb dönüştürücü ile PC’nize bağlayınız ve sanal COM bağlantı noktası numarasını not ediniz.

Ana Kartı Açın :

Program tuşunu S1 (SPIO0) basılı tutarak Reset (Sıfırla) düğmesi (S2) basınız.Reset’i bırakınız ve S1 (GPIO0) düğmesini serbest bırakın.Şimdi ESP8266 program moduna girecektir.

Yükle düğmesine tıklayın ve program modunda derlenecek ve oluşturulacak olan bin dosyası modüle yüklenecektir.

Ana kartı artık kapatın ve Wi-Fi cihazınızı açın.Açık hiperterminal (EFY Lab’ta X-CTU hyperterminal kullanılmıştır) baud hızı 115200 olan PC ile COM portunuzu seçin.S3’e basılı tutun ve ana kartı açın.SSID ve şifreyi girmeniz istenecektir.Anahtarı serbest bırakın ve Wi-Fi ağınızın SSID ve şfiresini virgülle ayırın ve Enter deyin.SSID ve şifre EEPROM’da saklanacaktır.

Sonraki kullanım adına S3’ü kullanmanız gerekmez.Wi-Fi’ye bağlandığınızda , ESP8266 modülünün IP adresi LCD1’de görüntülenecektir.

Tarayıcıyı IP adresi ile başlatınız.Karşınıza bir web sayfası gelecektir.LEDON ve LEDOFF olarak işaretlenmiş olan düğmeler LED1’i açmak ve kapatmak için kullanılmaktadır.Pervane ve motor gibi aletler , Pin11’e (GPIO2) bağlı optokuplör kullanılarak uygun bir röle sürücü devresi ile açılıp kapatılabilir.Pin6’nın (GPIO12) durumu ve sıcaklık okumaları , tüm Web sayfasını yenilemeden AJAX komut dosyaları kullanılarak görüntülenir.

KAYNAK DOSYALARINI İNDİRMEK İÇİN TIKLAYINIZ ! 

 ESP8266 TABANLI KABLOSUZ WEB SUNUCUSU PROJESİ SONUÇ :

Bugünki yazımızda ESP8266 Tabanlı Kablosuz Web Sunucusu Projesi adlı yazıyı sizlerle paylaştık.Bu yazı ile arduino projelerine dair ilk yazımızı paylaşmış oluyoruz.Birbirinden eğlenceli ve öğretici fikirler ve ilgili fikirlere dair kaynaklarla beraber farklı bilgiler öğrenmeye başlıyoruz.Umuyorum faydalı oluyordur.

İyi Çalışmalar