ESP8266-01 ile kapı açık alarmı
Not: ESP01 yerine üstünde usb portu olan, NodeMCU ile de bu işi yapabilirsiniz..
ESP01 diye de bilinen bu teknoloji harikası, evinizde veya işyerinizdeki wifi ağa bağlanabiliyor.. NodeMCU Lolin ve Wemos D1 mini diye bilinen üst versiyonları da var. Direnc.net ten temin edilebilir. ESP01 ile örneğin Tapo P100 akıllı wifi priz i veya Sonoff wifi akıllı röle yi kendiniz yapabilirsiniz, telefondaki uygulama ile wifi üzerinden prize elektrik verir veya keser. ESP01 ile yapılabilecekler listesi uzun, web server, IoT tarzı projeler yapılabilir. IoT, o da ne ola ki diyenler, buradaki yazıya bakabilirler. Ben size kapı alarmını anlatacağım, şöyle ki evin kapısı açıldığı anda size telefondaki ücretsiz bir uygulamadan bildirim (notification) gelecek. Siz de evdeki ip kameraya bağlanıp kim gelmiş diye bakabileceksiniz. Ip kamera deyince pahalı şeyler aklınıza gelmesin, google da "360 derece wifi kamera" yazmanız yeterli. Ampul şeklinde bile yapmışlar..
Kapı açıldığında telefona sürekli blink blink diye bildirim gelmesi sinir bozucu olabiliyor, hele ki kapı açık halde kendi halinde dinlenmeye bırakılmışsa..
ESP01, örneğin Arduino Uno ile bağlantılı olarak veya tek başına kullanılabiliyor. Bu projede tek başına kullanacağız. ESP01 i programlamak için arduino da kullanılıyor, ama ben pc ye usb den takılabilen bir adaptör almıştım. Programı, Arduino IDE yazılımından ESP01 e atarken turuncu ve gri kabloları birbirine bağlıyoruz.
Yani ESP01 i adaptöre taktığımızda, VCC ve CH_PD pinlerini jumper ile kısa devre yaptık. Program atarken de GPIO0 ve GND yi turuncu gri kablolarla kısa devre yapıyoruz. Program attıktan sonra bu USB adaptörle işimiz bitiyor yani devreye bağlamıyoruz.
ESP01 malesef 5V ile çalışmıyor. Bunu beslemek için 5V telefon adaptörü yanısıra AMS1117 3V3 türü bir voltaj regülatörü gerekiyor. Bir de kapıya takacağımız reed röle takımı gerekiyor, n11 de MC38 manyetik kontak diye aratırsanız çıkacaktır..
Bir taraf kablolu reed röle diğer taraf mıknatıstır. Kapı kapalıyken iki kablo kısa devre olur, açıkken devre açılır. Buna otomasyoncu dilinde NC normalde kapalı kontak denir. Kapı normalde kapalı konumda olduğu varsayılmaktadır. Sanki kapının açılması anormal bir durummuş gibi.. Kim karar verdi buna bilinmiyor anonim sanırım. Evet kafa açıcı tabirler bunlar..
Devre bağlantılarımızı pin header, jumper kablo ve küçük bir delikli plaket ile yapabiliriz. Bu kelimeleri eğer duymadıysanız direnc.net te aratabilirsiniz. İyi lehim yaparım derseniz sadece delikli plaket ve biraz kablo yeterli.. 5V 1A telefon şarj adaptörünüz vardır, onu AMS1117 girişine bağlayıp, çıkışta 3.3V u elde ediyoruz. Kırmızı 3.3V kabloyu ESP01 de VCC + RST + CH_PD ye, gri kabloyu GND + Reed röle nin bir kablosuna bağlıyoruz.. Reed rölenin diğer kablosunu ESP01 in RX bacağına bağlıyoruz. Kırmızı kablo gri kablo dedim ama sizdekiler farklı renkte olabilir, önemi yok tabi ama nereye bağladığınızın önemi var. Emin olmak için voltmetre ile ölçmek garantili yoldur. Hatırlatayım, devreyi lehimlemeden önce ESP01 e program atmanız gerekiyor.
Telefondaki uygulamamızın ismi Blynk.. Iphone ve android telefon için ücretsiz uygulaması mevcut. Ücretsiz dediysem bir yere kadar tabi, bu uygulama çok basit olduğundan bir ücret alınmıyor. Blynk ile telefonda bir HMI gibi ekran oluşturabilirsiniz. Kimbilir birgün Blynk ile belki de HMI niyetine PLC yi kontrol edersiniz.
Robotistan, NodeMCU ile ilgili ücretsiz bir kitap yayınlamış, linkten indirebilirsiniz. Dediğim gibi NodeMCU, ESP01 in pin sayısı fazla olan abisi olur, aynı projeleri her ikisi ile de yapabilirsiniz. Telefona Blynk kurulumu için 49. sayfadaki yönergeye bakabilirsiniz. ESP01 kullanırsanız sadece CHOOSE DEVICE yazan kutucuğa NodeMCU değil ESP8266 girmeniz gerekiyor. 51. sayfada gauge filan girmiyoruz sadece Notification girmeniz yeterli olacaktır. Blynk in telefona kurulumuna robotistandan da bakabilirsiniz.
ESP01 e yazılım atabilmek için Arduino IDE gerekiyor, linkten eski ama iş gören 1.6.5 windows installer dosyasını indirip kurabilirsiniz. Neden son sürümü indirmiyoruz ki diyenler olacaktır, bu sürüm ESP01 ile denenmiştir, versiyon artıkça program şişmektedir gibi cevapları vardır. Dileyen son sürümü de indirebilir tabi.
ESP01 i Arduino IDE ile programlamak için; File -> Preferences bölümünde Additional Boards Manager URLs kutusuna :
http://arduino.esp8266.com/stable/package_esp8266com_index.json
adresini kopyalayıp yapıştırın, tabi internet bağlantınız varken.. OK e tıkladıktan sonra Tools -> Board:.. -> Board Manager a tıklayın. Burada esp8266 ı bulup install a tıklayın. Kurulum tamamlanınca Close a tıklayın. Board olarak Generic ESP8266 yı seçin. Yine Tools menüsünde Port olarak USB adaptörün COM unu seçin.
Bir de Blynk kütüphanesini Arduino IDE ye eklememiz gerekiyor. Bunun için linkteki zip dosyayı indirin, açmayın. Sketch -> Include Library -> Add .ZIP Library e tıklayıp indirdiğiniz dosyayı seçin. Aynı yerdeki Manage Libraries.. ile kurulan kütüphaneleri görebilirsiniz.
Bu arada eğer elektrik kesilirse, elektrik geri geldiğinde aşağıdaki program sayesinde "Device started" diye size bir bildirim gelmektedir. Böylece elektrik saat kaçta gelmiş anlayabilirsiniz, ne işe yarayacaksa..
Aman deyim, evde kimse yokken, ofisten evdeki fırını yakma projesi gibi işler yapmayın..
Program 6 saniyede bir bildirim yolluyor, bu sayı dahada büyütülebilir. Blynk server a saniyede 100 den fazla bilgi yollamak caiz değildir, burada anlatılıyor. Blynk i ciddi şekilde iş yapmak için filan kullanmak isterseniz fiyatlandırma sayfasına bakabilirsiniz.
Turuncular yazılar kod, yeşil yazılar yorumdur yazmanıza gerek yoktur. İyotunuz pardon IoT unuz bol olsun..
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
// telefon uygulamasından alacağınız token buraya girilecek
// yukarıda linkini verdiğim Robotistan kitabında anlatılıyor
char auth[] = "*****************************";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "********"; //wifi ağı isminiz
char pass[] = "********"; //wifi parolanız
int ledpin=1;
int rxpin=3; //as input
unsigned long sonnotify = 0;
BlynkTimer timer;
void hersaniye()
{
if ((digitalRead(rxpin)==HIGH) && ((millis()-sonnotify)>6000)){
Blynk.notify("Door open !");
sonnotify=millis();
}
if (digitalRead(rxpin)==LOW) {
digitalWrite(ledpin, LOW);
// delay(500);
}
if (digitalRead(rxpin)==HIGH) {
digitalWrite(ledpin, HIGH);
// Serial.println("kapi acik");
// delay(500);
}
}
void setup() {
pinMode(rxpin, FUNCTION_3);
pinMode(ledpin, OUTPUT); // Initialize the LED_BUILTIN pin as an output
pinMode(rxpin,INPUT_PULLUP);
// Serial.begin(115200,SERIAL_8N1,SERIAL_TX_ONLY);
// RX pini input olsada TX çalışabilir
Blynk.begin(auth, ssid, pass);
Blynk.notify("Device started");
sonnotify=millis();
// Setup a function to be called every second
// her saniye çağırılacak fonksiyon ismi hersaniye
timer.setInterval(1000L, hersaniye);
}
// the loop function runs over and over again forever
// bu döngü ilelebet çalışmaz elektrik kesildiği anda biter işi
void loop() {
Blynk.run();
timer.run();
}
Yorumlar
Yorum Gönder