ARDUINO
RFID(Radio Frequency Identification)
RFID teknolojisi nesnelerin radyo dalgalarından
faydalanılarak kullanılan teknolojidir. Günlük hayatımızda
toplu taşıma biletlerinde, işyeri ve okul girişlerindeki
turnikelerde karşımıza sıklıkla çıkmaktadır. Arduino ile RFID
projelerini incelediğimizde kapı kilidi, bir ortamda bulunan
kişi sayısı bilgisinin alınması, bilgisayar oturum kilidi, alarm
sistemi gibi projelerle sıklıkla karşılaşabilirsiniz. Kartların
kendilerine ait UID isimli bir numarası vardır. Bu numara,
her kart için farklıdır. Okuyucumuza kartımızı veya
anahtarlığımızı yaklaştırdığımızda bu numara okunarak
işlem yapılır.
RFID Pin Bağlantıları
Infra-Red(IR) Kızılötesi
Kızılötesi sensörler mesafe ve karanlık/aydınlık algılama amaçlarıyla kullanılan
sensörlerdir. Kızılötesi sensörlerin yapısında genellikle kızılötesi ışın yayan bir LED ve bu
ışının yansımasını kontrol eden bir foto komponent bulunur. Sensörün içinde bulunan
LED, kontrol etmek istediğimiz bilgi ile aynı dalga boyuna sahip bir ışın üretir. Bu ışının
şiddetini kullanıcı kontrol edebilir (Örneğin, 0-80 cm arasında mesafe ölçümü yapabilen bir
sensörün kaç cm’ye kadar ölçüm yapması isteniyorsa ona göre ayarlanabilir). Cismin
üzerine düşen ve geri yansıyan kızılötesi ışınları bir foto komponent denetler ve sensör
geri dönen ışın sinyaline göre algılama işini gerçekleştirir.
IR Kumanda
IR kumandanın çalışma prensibi şu şekildedir: kumanda
üzerinde bir kızılötesi (infrared, ir) LED bulunur. Bu LED,
kumanda üzerindeki herhangi bir tuşa bastığımızda önceden
belirlenmiş bir kod verecek şekilde belirli bir frekansta yanıp
söner. Çoğu kumanda için bu frekans 38 kHz’tir. 38 kHz’lik
taşıyıcı sinyale her bir tuş için farklı bir kod oluşturacak şekilde
modülasyon uygulanır. Her marka için farklı modülasyon ve
kodlama teknikleri mevcuttur.
Çift Kimlik Kontrollü Güvenlik Kapısı
[Link]([Link], HEX);
#include <Servo.h> [Link](&Serial); }
#include <[Link]> for(int i=0;i<5;i++)
#include <SPI.h> //SPI haberleşme kütüphanesini çağırıyoruz { if ([Link][i] != kartim[i]) //sisteme kayıtlı kart ile okunan kart karşılaştırması
#include <RFID.h> //rfıd kütüphanesini çağırıyoruz yapılıyor
{
#define SERVO 5 // Servo motor pin gecerlikart=false; //kart farklı ise geçerlikart değişkeni "false" yapılıyor
const int IR_RECEIVE_PIN = 7; // IR alıcı pin }
}
Servo servo; if(gecerlikart==true) //eğer geçerli kart ise
RFID rfid(10,9); //ss veya sda pini, reset pinini arduino da bağladığımız numaraları {
yazıyoruz if ([Link]())
void setup() { { switch([Link])
[Link](); //spı haberleşme başlatıldı {
[Link](9600); // serial portu başlatıyoruz case 0xE31CFF00: //Keypad button "5"
[Link](IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); // Ir sensörü başlat [Link]("5");
[Link](); //kart okumaya hazır [Link](90); //kapıyı aç
[Link](SERVO); delay(2000);
} [Link](0);// kapıyı kapat
//yetki verdiğimiz kart numarasını aşağıdaki alana girmeliyiz break;
byte kartim[5]={0x99,0xB8,0xFF,0xC1,0x1F}; default:
void loop() { break;
boolean gecerlikart=true;//başlangıçta geçerlikart bilgisi "true" olarak kabul ediliyor }
[Link](0); }
if ([Link]()) { //yeni kart okunduysa if([Link]()) }
[Link]("Kart ID:"); else { // eğer geçerli kart değil ise
[Link]([Link][0],HEX); [Link](0); //kapıyı kapat
[Link]([Link][1],HEX); delay(2000);
[Link]([Link][2],HEX); }
[Link]([Link][3],HEX); [Link](); // kumanda tekrar okuma yapabilir
[Link]([Link][4],HEX); [Link](); //kart yeniden okuma yapabilir
}
}
ESP32 Modülü
Çok çeşitli uygulamalar için entegre Wi-Fi ve Bluetooth
bağlantısının yanında zengin özelliklere sahip bir
mikrodenetleyicidir. ESP32 üzerindeki Wi-Fi ile Bluetooth
sayesinde bir çok IOT uygulaması için kullanışlı bir yapıya
sahiptir.
ESP32 Pin Tanımları
Nodemcu ESP8266 Modülü
NodeMCU, özellikle IoT tabanlı uygulamalar için hedeflenen açık kaynaklı
ürün yazılımı ve geliştirme kartıdır. ESP8266 her ne kadar modül adı olarak
anılsa da aslında Espressif System tarafından geliştirilen, çeşiti Wi-Fi IoT
modüllerin üzerinde yer alan ve karşımıza SoC (System-On-Chip) olarak
çıkan çiptir. İlk defa 2014 yılında 3. parti olarak AI-Thinker tarafından
ESP8266–01 adıyla IoT modül haline getirilmiştir. ESP8266–01 ‘den 14’e
kadar çeşitli modelleri mevcuttur.
Nodemcu ESP8266 Pin Tanımları
ESP8266 VE ESP32 Karşılaştırması
ESP32, ESP8266 modülünün gelişmiş hali olarak piyasaya sunulmuştur. En başta
Wi-Fi bağlantısının daha hızlı olması dışında buna ek bluetooth özelliği eklenmiştir.
Bu özellik sayesinde Bluetooth Low Enegy projelerinizde bile kullanabilirsiniz. Daha
fazla pin sayısına sahip olup ADC,GPIO ve DAC girişleri daha çoktur. Bu da
karmaşık pin ve bağlantı gerektirecek projelerde kullanım kolaylığı sağlayacaktır.
Donanım şifrelemesi ve kod imzasına sahip olmasıyla ESP8266’nın sağlayamadığı
güvenlik protokolünü sağlayabilmektedir.
ESP8266 VE ESP32 Karşılaştırması
ESP8266 KÜTÜPHANELER
ESP8266WİFİ Kütüphanesi
ESP8266WiFi.h kütüphanesi, NodeMCU ESP8266 mikrodenetleyici
platformunun Wi-Fi bağlantılarını yönetmek için kullanılan Arduino
kütüphanesidir. Bu kütüphane, ESP8266 mikrodenetleyicisinin Wi-Fi modülünü
programlama ve kontrol etme işlevselliği sağlar.
Bu kütüphaneyi kullanmak için: #include <ESP8266WiFi.h>
Methodlar
• [Link]()
• [Link]()
• [Link]()
• [Link]
• [Link]()
• [Link]()
WİFİ.begin()
Bu metodun amacı, NodeMCU ESP8266 mikrodenetleyicisinin belirtilen Wi-Fi
ağına bağlanma işlemini başlatmaktır. Bağlantının başarılı olup olmadığını
kontrol etmek için aynı zamanda `[Link]()` fonksiyonu gibi diğer
fonksiyonları kullanılmasını gerektirir.
Bu metodun kullanımı şu şekildedir:
[Link](ssid, password);
Parametreler:
ssid: Wi-Fi ağının adıdır
password: Wi-Fi ağına bağlanmak için gereken şifredir
WİFİ.status()
NodeMCU ESP8266 mikrodenetleyicisinin Wi-Fi bağlantı durumunu kontrol etmek
için kullanılır. Bu metodun döndürdüğü değer, ESP8266'nın mevcut Wi-Fi bağlantı
durumunu belirtir. Aşağıda `[Link]()` metodunun döndürebileceği olası değerler
ve anlamları bulunmaktadır:
WL_CONNECTED: ESP8266, belirtilen Wi-Fi ağına başarıyla bağlıdır.
WL_NO_SHIELD: Wi-Fi kütüphanesi yüklenmedi veya geçersizdir.
WL_IDLE_STATUS: Wi-Fi bağlantısı kurulmamış durumda, ancak modül aktif.
WL_CONNECT_FAILED: Bağlantı başarısız oldu.
WL_DISCONNECTED: Önceki bağlantı kesildi.
WİFİ.localIP()
Bu metodun parametreleri yoktur. Bu metod, ESP8266'nın bağlı olduğu Wi-Fi ağının
yerel IP adresini döndürmek için kullanılır, ancak kendisi herhangi bir parametre
almaz.
Bu metodun kullanımı şu şekildedir:
IPAddress ip = [Link]();
Yukarıda ip adlı bir IPAddress türünde değişken oluşturur ve bu değişkeni,
ESP8266'nın yerel IP adresi ile doldurur. Bu IP adresini daha sonra kullanarak,
cihazın ağ içindeki diğer cihazlarla iletişim kurmasını sağlayabilirsiniz.
ESP8266WebServer Kütüphanesi
ESP8266 mikrodenetleyicisi üzerinde basit bir web sunucusu oluşturmayı
sağlar. Bu kütüphane, HTTP protokolünü kullanarak gelen isteklere yanıt verir
ve web sayfalarını işler.
Bu kütüphaneyi kullanmak için: #include <ESP8266WebServer.h>
Methodlar
• [Link]()
• [Link]()
• [Link]()
• [Link]()
• [Link]()
• [Link]()
[Link]()
Web sunucusunu belirli bir port üzerinde başlatır.
Bu metodun kullanımı şu şekildedir:
[Link](port);
Parametreler:
port: web sunucusunun dinlemesini istediğiniz port numarasıdır.
[Link]()
Bu metodun temel amacı, belirli bir URL'ye gelen HTTP isteklerine yanıt vermek için
kullanılmaktır. Bu metodun parametreleri, hangi URL'ye yanıt verileceğini, hangi HTTP
metoduyla çalışılacağını ve bu URL'ye gelen isteklere nasıl yanıt verileceğini belirler.
Bu metodun kullanımı şu şekildedir:
[Link](url, HTTP_METHOD, handlerFunction);
Parametreler:
url : Web sunucusunun yanıt vereceği url ifade eder.
HTTP_METHOD : Belirli bir URL'ye yanıt vermek için kullanılacak HTTP metodu. Genellikle
`HTTP_GET`, `HTTP_POST`, `HTTP_PUT`, `HTTP_DELETE` gibi metodlar kullanılır.
handlerFunction : Belirli bir URL'ye gelen isteğe yanıt vermek üzere çağrılacak fonksiyon.
Bu fonksiyon, istemciden gelen isteği işleyecek ve yanıtı oluşturacaktır.
[Link]()
Bu metodu kullanarak belirli URL'lere ve HTTP metodlarına yanıt verecek
fonksiyonları tanımlayabilir ve web sunucusunun işlevselliğini belirleyebilirsiniz,
[Link]() metodunun temel amacı, istemciye belirli bir HTTP durum kodu, içerik
türü (Content-Type), ve içerik (body) göndermek için kullanılmaktadır. Bu metod, web
sunucusunun yanıtını oluşturarak istemciye gönderir.
Bu metodun kullanımı şu şekildedir:
[Link](statusCode, contentType, content);
Parametreler:
statusCode: Gönderilen HTTP yanıtının durum kodunu belirler
contentType: Gönderilen içeriğin türünü belirler
content: Gönderilecek olan içeriği belirler. Bu genellikle bir metin dizisi (`String`) veya
karakter dizisi (`char`) şeklinde olabilir. HTML, JSON, metin veya diğer içerik türlerini
içerebilir.
ESP8266HTTPClient Kütüphanesi
ESP8266 mikrodenetleyicisi üzerinde HTTP protokolünü kullanarak web
sunucularıyla iletişim kurmayı sağlar. Bu kütüphane, HTTP istekleri göndermek
ve almak için bir dizi metod ve fonksiyon içerir.
Bu kütüphaneyi kullanmak için: #include <ESP8266HTTPClient.h>
Methodlar
• [Link]()
• [Link]()
• [Link]()
• [Link]()
• [Link]()
[Link]()
ESP8266HTTPClient nesnesini başlatmak ve belirli bir URL'yi hedeflemek için
kullanılır. Bu metod, HTTP isteği göndermeden önce istemciyi hazırlar ve isteğin
yapılacağı URL'yi belirler.
Bu metodun kullanımı şu şekildedir:
[Link](url);
Parametreler:
url: HTTP isteğinin hedeflendiği URL'yi belirten bir `String` değeri.
[Link]()
GET() metodu, belirtilen URL'ye bir HTTP GET isteği gönderir ve sunucudan gelen
yanıtı alır. Bu metodu kullanarak istemci, sunucudan bilgi alabilir ve belirli bir
kaynağın durumu veya içeriği hakkında bilgi edinebilir.
Bu metodun kullanımı şu şekildedir:
[Link]();
Parametreler:
GET() metodunun ayrıca kullanılabilen önemli bir parametresi bulunmamakta. Bu
metot, yalnızca belirtilen URL'ye GET isteği gönderir ve yanıt alır.
[Link]()
Bu metod, belirtilen URL'ye bir HTTP POST isteği gönderir ve sunucudan gelen
yanıtı alır.
Bu metodun kullanımı şu şekildedir:
[Link](payload);
Parametreler:
payload:Bu metodun tek parametresi payload adlı bir string`objesidir. Bu parametre,
POST isteği sırasında sunucuya gönderilecek verileri içerir. Veriler genellikle bir
formun içeriği, bir JSON nesnesi veya başka bir veri türü olabilir. Payload
parametresi, HTTP isteği gövdesini temsil eder.
[Link]()
HTTP isteğine özel başlık eklemek için kullanılır. Başlıklar, HTTP isteği veya
yanıtının ek bilgilerini taşıyan alanlardır. Bu metot, özel başlıkları belirleyerek isteği
veya yanıtı özelleştirmenize olanak tanır.
Bu metodun kullanımı şu şekildedir:
[Link](name,value);
Parametreler:
name: eklenen başlığın adını belirten bir string.
value: eklenen başlığın değerini belirten bir string.
Nodemcu ESP8266 da Wifi Kullanımı
Gerekli Aşamalar
• Kurulum Aşaması
• Gereken Kodların Yazılması
• Yazılan kodların Esp8266 Modülüne Yüklenmesi
Kurulum Aşaması
NodeMCU’nun kullanılan modeline göre driverın yüklenmesi gereklidir. Örnek olması için en çok
kullanılan Ch340g çipli driver yüklemesini yapalım. Kartımızı USB kablosuyla bilgisayarımıza
bağlıyoruz.
Kartı taktıktan sonra aygıt yöneticisini açıyoruz. Görüldüğü üzere kartımız için sürücü
yüklenememiş ve hata mesajı mevcut. İndirdiğimiz sürücü dosyanın
içindeki [Link] dosyasını çalıştırıyor ve çıkan pencereden INSTALL butonuna tıklıyoruz.
INSTALL butonuna tıkladıktan sonra sürücüler yükleniyor ve “Driver install success!” yazan bir
pencere çıkıyor. Böylelikle işlem tamamlanmış oluyor.
Daha sonra arduino İde üzerinde File menüsü altında yer alan Preferences seçeneğine tıklayın.
Açılan pencerede belirtilen alana verilen linki yapıştırıp OK butonuna tıklayın.
Daha sonra tools menüsü altında yer alan board seçeneğinden boards maneger kısmına tıklayın.
Sol tarafta açılan boards manager arama kısmına esp32 yazın ve sizin için uygun olan board
seçimini yapın.
Nodemcu ESP8266 ile Led Yakma Projesi
#include <ESP8266WiFi.h> [Link]("Bağlantı için kullanılacak URL: ");
[Link]("[Link]
const char* ssid = *******; // WiFi ağı adı [Link]([Link]());
const char* password = ********; // WiFi şifresi [Link]("/");
int ledPin = 13; // Dijital pin 13, bu pin üzerinde bir LED var }
WiFiServer server(80); // Sunucu portu, HTTP isteklerini void loop() {
dinlemek için kullanılır WiFiClient client = [Link](); // Yeni bir istemci kontrol et
if (!client) {
void setup() { return;
[Link](115200); // Seri haberleşmeyi başlat }
delay(10);
[Link]("Yeni istemci");
pinMode(ledPin, OUTPUT); // LED pinini çıkış olarak ayarla while (![Link]()) {
digitalWrite(ledPin, LOW); // LED'i başlangıçta kapalı konumda tut delay(1);
[Link](); }
[Link]();
[Link]("Bağlanılıyor: "); String request = [Link]('\r'); // İstemciden gelen isteği oku
[Link](ssid); [Link](request);
[Link](ssid, password); // WiFi bağlantısını başlat [Link]();
while ([Link]() != WL_CONNECTED) {
delay(500); int value = LOW;
[Link]("."); if ([Link]("/LED-ACIK") != -1) {
} digitalWrite(ledPin, HIGH);
[Link](""); value = HIGH;
[Link]("WiFi bağlantısı sağlandı"); }
if ([Link]("/LED-KAPALI") != -1) {
[Link](); // Sunucuyu başlat digitalWrite(ledPin, LOW);
[Link]("Sunucu başlatıldı"); value = LOW;
}
Nodemcu ESP8266 ile Led Yakma Projesi
[Link]("HTTP/1.1 200 OK");
[Link]("Content-Type: text/html");
[Link]("");
[Link]("<!DOCTYPE HTML>");
[Link]("<html>");
// Değişiklikler burada başlıyor:
[Link]("<head><style>body {background-color: #C0C0C0; text-align: center; display: flex; flex-direction: column; align-items: center;
justify-content: center;} button {padding: 10px 20px; margin: 10px; border: none; border-radius: 5px; cursor: pointer; box-shadow: 0px 0px 10px
rgba(0,0,0,0.5);} #ledYak {background-color: #2ecc71; color: white;} #ledSondur {background-color: #e74c3c; color: white;} p {margin-
top:250px;}</style></head>");
[Link]("<body>");
[Link]("<p>Modemcu ESP8266 Led Yakma Projem </br>");
[Link]("Led Durumu: ");
if (value == HIGH) {
[Link]("ACIK");
} else {
[Link]("KAPALI");
}
[Link]("</p>");
[Link]("<a href=\"/LED-ACIK\"><button id=\"ledYak\">ledi yak</button></a>");
[Link]("<a href=\"/LED-KAPALI\"><button id=\"ledSondur\">ledi sondur</button></a>");
[Link]("</body></html>"); // Değişiklikler burada bitiyor.
delay(1);
[Link]("İstemci bağlantısı kesildi");
[Link]("");
}
Yazılan Kodların ESP826 Modülüne Yüklenmesi
Board ve Port Seçimi
Kodların ESP826 Modülüne Yüklenmesi
Kodların ESP826 Modülüne Yüklenmesi
Serial Monitör
Web Tasarım Görünümü
TEŞEKKÜRLER