12 Haziran 2017 Pazartesi

IOT,IOE NESNESLERİN İNTERNETİ VE YAPAY ZEKA

Herkese Merhabalar :) Daha önceki yazımlarımda ESP modülleri veya ESP kullanarak tasarlanmış programlama kartlarının yapısından ve çalışmasından bahsetmiştim.Ama konuyu biraz açmak istedim.Aslında yeni başlayanlar  için biraz karmaşık gelebilir yazıcaklarım ama okuyup varlığından bile haberdar olmanız yeterli bence.Şuanki teknoloji ile; akıllı ev,akıllı tarla,bisiklet vb. gibi cihazlarımızda,(daha doğrusu bu cihazları akıllı hala getirmek için) ESP modüllerimizi kullanıyoruz.Bunlar şuanki teknoloji ile sadece ve sadece mevcut wireless ağına bağlanabiliyorlar veya kendileri server olarak bir ağ oluşturup bilgi girişine izin veriyorlar.İlgili Pinleri aracılığıyla şuanki teknoloji ile yapılmış bazı sensör'leri kullanarak digital veya analog veriyi işliyorlar ve içerisine yazdığımız kod sayesinde işlemler yapıyorlar.
       Buraya kadar olan kısmı aslında bu işle ilgilenenler için  basit bir döngü.Peki nasıl olsa internet var.O zaman internetten araştırma yaparak kendi amacı için gerekli bilgilere ulaşan ve bunu kullanarak işini en iyi şekilde yapmaya çalışan yapay zekalı iot projeleri yapabilirmiyiz? Hemen bir örnek vererek olayı açıklıyorum.
      Toprak nem sensörü ile topraktaki nemi analog olarak ölçen,nem oranı istenilen seviyenin altına düştüğünde bir selenoid valf aracılığı ile bahçeyi sulayan bir sistem düşünün.Bir iot projesi olduğu için toprak nem oranını dünyanın her yerinden okuyabilir.Bahçenizde kullanılan su miktarından,Ortalama toprak nem oranına kadar birçok veriyi görebilir ve saklayabilirsiniz.Hatta bana ne nemden diyip kendiniz bile sulayabilirsiniz. Şimdi gelelim asıl soruya :) Topraktaki nem oranı düştü ve sulama işleminin başlaması gerekiyor.Ama ESP modülümüzün internetteki serverlardan aldığı bilgiye göre,1 saat sonra yağmur yağıcak.Toprak nem oranı artıcak.Kendi bir karar veriyor ve Sulama işlemini 2 saat erteliyor.Eğer yağmur yağmazsa selonoid valf ile sulama işlemine devam etmek istiyor.İşte bu yapay zeka.Aslında çok çok basit bir AI (yapay zeka) örneği.İnternetten  araştırmalar yapabilen ve edindiği bilgilere istinaden kararlar verebilen akıllı ev sistemleri yapabilirmiyiz, yani zeka olmasada yapayını kullanabilirmiyiz? Şimdi Türkiye olarak bu konuların çok gerisinde kaldığımızın farkındayım.Çeşitli IOT,IOE ile ilgili çalışmalar ve startuplar var.Benim gibi evde çocuk odasında uğraşanlarda var :) Ama aslında mevzunun internet üzerinden birşeyler kontrol etmek olmadığını,aslında nasıl olsa internete bağlıysak internet üzerinden sonsuz bilgiye ulaşarak süper akıllı, akıllı ev sistemleri yapabileceğimizin hayallerini kurmalı ve bu yolda ilerlemeliyiz.

İlker YILDIZHAN
Mi ELEKTRONİK
     


         

10 Haziran 2017 Cumartesi

ESP8266,ARDUİNO ve PİC KULLANARAK RÖLE KONTROLÜ

           Evet yine karşınızdayım :) İster İOT projeleriyle uğraşın ister Arduino,isterseniz PİC,karşılaştığımız en büyük sorunlardan bir tanesi 3.3VDC ile veya 5VDC ile nasıl oluyorda 220VAC'yi veya 50VDC yi kontrol edebiliyorum? sorusudur.Burada yine yardımıza yetiştim :)
           Daha önceki yazılarımızda ESP8266 modüllerinin 3.3VDC ile çalıştığını ve bu yüzdenden digital çıkışlarının logic HİGH olmaları durumundada 3.3VDC vericeklerini anlatmıştım.Bu rağmen Microdenetleyiciler ; Arduino,Pic veya başka isimli  olsunlar, 5VDC ile çalışmakta ve digital pinleri HİGH olduğunda 5VDC çıkış vermekteydi.Niye bunları anlattım hemen açıklıyım.Transistörler ufak voltajları anahtarlamak için kullanılan birer kapı görevi görmektedir.Fakat yüksek akım ve voltajlarda işe yaramazlar.Bu iş için manyetik bir yapısı olan Röle'ler kullanılır.Röle girişine verilen voltajı iletir veya veya iletimde olan bir voltajı keser.Ama bu röleler genelde 5VDC veya 12VDC ile çalışırlar.İşte bu yüzden Arduino veya Pic kullanan arkadaşlar için 5VDC anlamında bir sıkıntı yok.Onlar zaten Arduinodan veya Pic devrelerinden 5VDC alarak röleyi kullanabilirler.Fakat ESP8266 ile İOT projeleri yapmaya çalışanlar için 5VDC biraz sıkıntı :) Yok yok hemen onuda çözelim.Zaten aslında ESP8266 ile ilgili yazımda 5VDC güç kaynağınızı kullanarak LM1117 veya AMS1117 entegreleri ile 3.3VDC elde edin.Böylece hem 5VDC hemde 3.3VDC elde edersiniz diye yazmıştım.(Bu arada songle firması İOT projeleri için 3.3VDC röle çıkardı ama ülkemizde yok) Sadece aliexpress ten alabilirsiniz.)

          Bu devrelerde  dikkat edilmesi gereken noktalar; Rölemizin VCC ucuna 5VDC yi bağlamak ve GND ucunun kontrolünü ele geçirmek.Çünkü zaten 5VDC olan röleye GND verirsek röle çeker. :)  Gelelim GND pinine; ESP8266 olsun veya Arduino veya Pic olsun Pozitif çıkış verirler.İşte burada NPN bir transistöre ihtiyacımız var.Yani Base ucunu Pozitife götürdüğümüzde Collectör'ünden Emiter'ine bir akış sağlıycak bir transistöre ihtiyacımız var.Burada 2N2222 kodlu NPN transistör işimizi fazlasıyla görücek.Datasheetlerine bakarak BC537 gibi NPN transistörler kullanabilirisiniz.


Transistörün collectör ucu gördüğünüz gibi rölenin GND ucuna bağlı ve Emiter ucu ise GND ucuna.Bu şekilde aşırı akım direnci olan Base direnci kullanarak (ESP8266 için 10K olmak üzere 1Kohm-10Kohm arası olabilir)Base ucuna verilecek Logic HIGH seviyesi emiter ucundaki GND hattını collectör ile birleştirecek ve Rölemiz çekicek.

    Bu tarz devrelerde genelde koruma amaçlı röle uçlarına ters ve paralel bağlanmış bir diod görürsünüz.Koymasanızda devreniz çalışır ama koruma amaçlı bir diod'tur.Genelde 1N4148 tercih edilir.Optocoupler ile yalıtılmış röle devreleride mevcut olup internette araştırarak bilgi sahibi olabilirsiniz.

      Şimdi rölemiz çekti diyelim :) Rölemiz çekti derken COIL ucuna 5VDC verdik ve diğer COIL ucuna kontrol ettiğimiz GND yani toprak verdik.Resimde gördüğünüz gibi rölelerde bir COM ucu bulunur.Birde Normally Open veya Normally Closed uçları.Röle enerjisiz iken N-Closed ucu ile COM ucu kısa devredir.Ama enerji verdiğinizde Normally-Open ucu ile COM ucu kısa devre olur.Aslında istediğimiz şeyde bu değilmiydi.Şimdi Arduino veya ESP8266 ile Rölenin GND pinine toprak vericem ve Rölenin COM ucunda bulunan Voltajın Normally-Closed ucuna doğru akmasını sağlıycam.Bence sizde memleketten kontrol edilen bir kahve makinası yapabilirsiniz :)

İlker YILDIZHAN
Mi Elektronik



     

9 Haziran 2017 Cuma

ESP8266 İLE ANALOG ÖLÇÜMLER YAPALIM :)

             Herkese yeniden merhabalar. :) ESP8266 modülleri her ne kadar Arduino killer olarak adlandırılarak onun yerini almaya çalışsada, En meşhur Arduino modeli olan Arduino Uno'ya göre (Yani Atmega328 entegresi) daha çok eksiklikleri olduğunu söylemek lazım.Digital pin sayısı 16'ya kadar çıkmış modüller olsada benim projelerde en zorlandığım şey Analog Pin'in sadece ve sadece 1 adet olması.Oysa bu UNO'da 6 tane.Hem her Arduino UNO modelinde 6 adet Analog Pin bulunmasına rağmen ESP modüllerinde ise ESP07 ve üzerinde ADC pini mevcut.Eeeee madem 1 tane var o zaman iyi kullanalım dimi :)

           ADC pini bütün microdenetleyicilerde nasıl çalışıyor ise ESP modüllerindede aynı çalışıyor.Yani ilgili ADC pininde ölçülen voltajın değeri 0-1024 arasında bir değere çevriliyor.Aşağıda resimde anlatıldığı üzere bizler yani maker'lar analog pinde 1.06 volt gördüğümüzde bu 1024'e denk geliyorki bu bizim için max değer demek.Bazı sensörler her ne kadar Digital çıkış verselerde (bunlar TRUE veya FALSE) hassas ölçüm yapan birçok sensör Analog çıkış vermekte.Peki bunu nasıl ölçücez. :)


               Mesala Hava sıcaklığını hassas bir biçimde ölçmek istiyoruz ve bunu internet üzerinden gözlemlemek istiyoruz.LM35 ısı sensörü veya Analog ölçüm yapan  herhangi bir sönsörün Vcc pinine 3.3V, Gnd pinine Toprak verip ADC pininide ESP8266 modülünüzün A0 pinine bağlarsak ölçüm işlemi gerçekleşir.Ölçüm işlemi hemen başlar.Bunu hemen seri porttta görüntüleyebilir veya daha önceki yazıda anlattığım gibi BLYNK yazılımı ile ADC pini ölçümü yaptırarak dünyanın her yerinden ölçebilirsiniz.Bu ölçüm işlemi 0-1024 değerinde olacağından bir değişkene tanımlanmalı ve çevrilmek istenilen değere çevrilmelidir.Şimdi bir örnek verelim :)
Değişken tanımla kısmına float tipinde bir değişken tanımlıyoruz.Ve tempPin'in 17 numaralı ADC pinini ölçmesini istiyoruz.

float temp; int tempPin = 17; // ADC pin


Şimdi gelelim VOiD LOOP kısmına temp değerine Analog Pinden ölçtüğümüz tempPin (yani ADC pini) değerini atıyoruz.Daha sonra ölçtüğümüz değeri sıcaklığa çevirmek için 1/1024 çarpı 100 ile çarpıyoruz.Artık ADC pinini temp değeri olarak ölçmüş olduk.Eğer bunu yapmasaydık.ESP8266 modülümüz ölçtüğü değeri 0-1024 arasında bir değer olarak göndericekti.
  
   temp = analogRead(tempPin);
   temp = temp * 0.09765625; // formül (1/1024*100)
Yada map komutunu kullanarak ölçüm yaptığımız 0-1024 arasındaki değeri 1-100 arasındaki bir değere çevirerek % olarak ölçüm yapabiliriz.Mesala nem oranı kaç.?
Örnek Kullanım:
şimdi nem isminde bir değişken tanımlayalım.ve sonra bunu çevirelim.
int nem;
nem  = analogRead (17) // analog Pin
void loop kısmına ise 
map nem(nem,0 ,1023, 0, 100);
artık nem değerimiz 0-100 arasında ölçülmekte :)
İlker YILDIZHAN Mİ elektronik



BLYNK YAZLIMI İLE ESP8266 KONTROLÜ

Herkese Merhabalar.Daha önceki yazımızda ESP8266 entegresinin nasıl hardware ayarlarının yapılacağını,devrelerde nasıl kullanılacağını anlamıştım.Bu yazımda ise devremizde kullanacağımız ESP8266 entegresinin çok basit birkaç işlemle dünyanın her yerinden nasıl kontrol edilebileceğini anlatıcam :) Hemen başlayalım.

1.Akıllı telefonlarımıza (İOS veya ANDROİD temelli olabilir hiç önemli değil) storelar'dan veya www.blynk.cc sitesinden blynk uygulamasını indiriyoruz.İndirme işlemi bitince Facebook ile veya kullanıcı adı şifre oluşturarak oturum açıyoruz.Artık programımız proje oluşturmaya ve kullanmaya hazır.Şimdi sizlere programın ESP8266 entegresine nasıl bağlandığını ve nasıl eşletiğini anlatıcam :)

2.Eşleşme(Pairing) işlemi sizin devrelerinizde kullandığınız ESP8266 modülünüz ile akıllı cihazınıza indirdiğiniz uygulamanın birbiri ile eşleşme işlemidir.Cep telefonuna indirdiğimiz blynk yazılımı bize her bir proje için bir Anahtar kodu verir.Projenizi oluşturma işlemini bitirdiğinizde uygulama size bir mail ile AUTH TOKEN yazan anahtar kodunu göndericektir.Ayrıca Proje içreisindeki ayarlar kısmında size verilmiş AUTH TOKEN kodu görebilirsiniz.Bu kod bizim için önemli.Telefonumuz bu kodu kullanarak ESP modülümüze bağlanıcak.

3.Şimdi gelelim ESP8266 modülümüzün programlanmasına.Buradaki birinci adım Arduino yazılımı içerisine BLYNK kütüphanesini yüklemek.Kütüphaneyi yükledikten sonra yine www.blynk.cc internet istesinde bulabileceğiniz kaynak koda geçelim.Kodu aşağıda verdim :)


#define BLYNK_PRINT Serial #include <ESP8266WiFi.h> #include <BlynkSimpleEsp8266.h> char auth[] = "YourAuthToken"; // uygulamamızın verdiği anahtar kodumuz. char ssid[] = "YourNetworkName"; // AĞ ADIMIZ char pass[] = "YourPassword"; // AĞ ŞİFREMİZ void setup() { // Debug console Serial.begin(9600); Blynk.begin(auth, ssid, pass); } void loop() { Blynk.run(); }


     Yukarıdaki kodumuzu bir önceki yazıda size anlatıldığı yöntemi kullanarak ESP8266 modülüze yüklediğimizde artık kullanmaya hazır.Ufak bir açıklama yapıcak olursak.Şimdi yukarıdaki kod ile ESP modülümüz ilgili anahtar kodu ile xxxxxx isimli ağını ve  xxxxx şifresini kullanarak BLYNK server'ına yani sunucusuna bağlanıyor.Akıllı cihazımızda Aynı kodu kullanarak server'a bağlanacağı için eşleşme işlemi tamamlanmış oluyor :) Seri portunuzu açarak bağlantının sağlandığını görebilirsiniz.

Akıllı cihazımıza yüklediğimiz yazılımda oluşturduğumuz proje ekranımıza 1 adet buton ekleyelim ve bunu GPI0 14 numaralı pini kontrol etmesi için ayarlayalım.Burada PIN hanesine basarak GPIO 14 ü seçmeniz yeterli.Mode konumunu Switch seçersek ve OK tuşuna basarsak butonumuz hazır.Şimdi sağ üstteki  RUN tuşuna bastığımızda ekranda GPIO 14 pinini kontrol eden bir buton olucak ve butonumuza bastığımızda ESP8266 modülümüzün 14 numaralı pin'i HIGH olucak.Bir led ile test edebilirsiniz :) Eğer RUN tuşuna bastığınızda Proje Offline diyorsa.ESP modülünüz veya Akıllı cihazınız server'a bağlanamamış veya bişeyler yanlış demektir. :) Kolay gelsin.

İlker YILDIZHAN
Mi elektronik

 / _ )/ /_ _____  / /__
   / _  / / // / _ \/  '_/
  /____/_/\_, /_//_/_/\_\
         /___/    v0.4.4

    [1240] Connecting to YourWiFi
    [1240] Connected to YourWiFi
    [1240] My IP: 192.168.10.172
    [1240] Blynk v0.4.4
    [5001] Connecting to blynk-cloud.com:8442
    [5329] Ready (ping: 1ms)
   

5 Haziran 2017 Pazartesi

ESP8266 İLE AKILLI SİSTEMLER NASIL GELİŞTİRİLİR.

Herkese Merhabalar.Elektronik projelerde son zamanlarda Arduino yerine kullanılmaya başlanan ve Arduino'nun tahtını sallayan ESP8266 entegresi ile nasıl Akıllı bir sistem kurucağımızı sizlere anlatmaya çalışıcam.İnternette biraz araştırma ile ESP modüllerinin 01 den başlayıp (ben bu yazıyı yazdığımda 14 tü) güncellenmeye devam ettiğini görebilirsiniz.Aslında hepsi aynı işi yapsalarda donanımsal olarak iyileştirmeler vede ESP07 ve sonrası ESP modüllerinde Analog bilgileri dijitale çeviren bir ADC bulunması süper bir avantaj.

Bu entegrenin veya modüllerin  hazır olarak programlanmasını sağlayan çeşitli maker firmaları tarafından hazırlanmış kartlar mevcut.Bunlarıda internetten araştırarak ulaşabilirsiniz ve aşağıda anlatıcağım adımı atlayıp hazıra konabilirsiniz.Ama bence hazır alsanız bile aşağıdaki bilgiler işinize yarıycaktır.

1-ESP modülleri nasıl çalışmaya ve programlamaya hazır hale gelir.?
       Yanda bir şema verdim,Çok basit ve anlaşılır bir şema.Ama ilk dikkat etmemiz gereken şey bu modüllerin  (hepsi için) 3.3VDC ile çalışması.Birazdan 3.3VDC yi nasıl elde ediceğimizi anlatıcam.Daha sonra RESET,CH_PD(EN),GPIO0,(sıfır) pinine 10k lık bir direnç bağlıyarak bu pinleri 3.3VDC ile besliyoruz. :) Bittimi tabiki bitmedi.Son bişey daha kaldı.GPIO15 pinine de bir adet 10K lık direnç bağlayarak bunuda Toprak(GND) ucu ile birleştirmek.Şemada gördüğünüz C1 kondansatörü ile voltaj regületörü olarak kullanılmakta olup çoğu zaman hayat kurtarmaktadır.Burada ise 0.1 MF (100nF)  16volt bir kondansatör işimizi görür.İşte şimdi ESP modülümüz çalışmaya ve proglanmaya hazır hale geldi.As bayrakları :).Gözünüzü korkutmasın 10K 1/4 watt dirençler ve 100nF kondansatör modülünüzün yıllarca güven içinde çalışması için gerekli.Aşağıdaki resimde nasıl kolay bir şekilde yapılmış olduğunu görmektesiniz.

2-ESP modülünü Voltajı nasıl ayarlanır?
      Evet modülümüzü yukarıda anlattığım gibi yandaki resime benzer bir şekilde yaptık diyelim.Peki nasıl çalışıcak? ESP modül ve devrenizde kullanacağınız sensörler veya Röleler genelde 5VDC veya 3.3VDC ile çalışır.Tekrar tekrar söylüyorum bütün ESP modülleri 3.3VDC ile çalışır.O halde bize sensör ve röle devresi için 5VDC ve ESP modül için 3.3VDC lazım.Bunu Programlama için kullanacağımız bir Arduinodan veya FT232 3.3v USB promlama modülünden elde edebiliriz.Aslında bu en kolay yol ama programla işi bitipte devreniz kendi başına çalışmaya başladığında Arduinoyu veya USB dönüştürücüyü sadece bize 3.3VDC sağlasın diye projemizde kullanamayız.Peki nasıl yapıcaz.?Genelde elektronik devreler , sensörler, röleler veya adaptörler 5VDC ile çalışır.O yüzden projemizde bir 5v 1A gücünde bir adaptör kullanmamız yeterli.Şimdi elimizde mevcut 5VDC yi 3.3VDC ye çevirmemiz lazım. 5VDC den 3.3VDC elde etmek için LM1117 entegresini kullanarak ve sadece girişine 10MF bir kondansatör koyarak 3.3VDC elde edebiliriz.Şimdi Bir adaptör ile beslenen bir ESP modülümüz var.Hemde elimizde 3.3VDC ve 5VDC olmak üzere 2 voltajımız var.

3- ESP modülümüzü programlama işlemi nasıl olur.?
     Geldik en kritik noktaya :) Aslında çok kolay.Ama kritik işte.Hatırlarsınız GPIO0 pinine yani 0 numaralı pin'e 10K direnç bağlıyarak 3.3VDC vermiştik.Bu pin 3.3VDC olduğu sürece ESP modülümüz çalışmaya devam eder.Ama bir buton veya kısa bir kablo yardımı ile GND ye bağlandığında yani LOW olduğunda ESP modülümüz programlanmaya hazır duruma gelmektedir.Ben bir Jumper kullanarak bu işi yapıyorum.Bu işlemi yaptıktan sonra İster FT232 USB dönüştürücü ile istersenizde Arduino kullanarak ESP modülümüzü programlıycaz.
USB çeviricimizin 3.3VDC ve GND pinlerini Modülümüze bağlayıp sonra TX pinini Modülümüzün RX pinine,RX pininide modülümüzün TX pinine bağlıyoruz.Şimdi Arduino IDE'den yani Arduino yazlımı ile Seri port ekranını açıp Boudrate i 115200 seçtiğimizde kart ile bilgilerin ekrana geldiğini ve en sonda Ready yazdığını göreceksiniz.Baudrate farklı olabilir.Yeni sürümlerde genelde 115200 baudrate kullanılır.Haydi kolay gele :) PEKİİİİ daha önce Arduino yazılımı ile hiç bir şekilde ESP8266 programlamadıysanız hemmen size yardım ediyorum.

FİLE-PREFERENCES penceresini açıp Additional Boards Manager URL kısmına aşağıdaki siteyi yazıyoruz.
http://arduino.esp8266.com/stable/package_esp8266com_index.json


OK tuşuna bastıktan sonra Arduino yazılımı Ana menüsündeki Tools-Boards Menager'a giriyoruz.Buraya ESP8266 yazarak ok diyoruz ve işlem tamam.Bunlar sadece bir kere yapılan şeyler o yüzden kafanıza takmayın.

Şimdi Baştan hemen kontrol edelim ESP modülümüze gerekli direnç ve kondansatörümüzü lehimledik veya breadboard'a kurduk.Daha sonra 3.3VDC verdik ve çalıştırdık.USB çevirici veya Arduino kartı ile bağladık.Bu arada GPIO0 pinini toprağa çektik.(unutmayın :) Arduino yazılını açıp kart seçiminden Genel ESP8266 yı seçtik.Ve hayırlı uğurlu olsun.Artık sizde Arduino kullanmadan İnternete bağlı projeler üretebilirsiniz.He unutmadan programlama işi bittiğinde GPIO0 pinini tekrar HIGH yani 3.3VDC yapmayı unutmayın :) Sizlere BLYNK uygulaması ile nasıl Cep telefonundan kontrol edilen sistemler yapacağınızıda bir sonraki makalede anlatıcam :)


Şimdi gelelim püf noktalara :) 
1-ESP07 ve üst versiyon modüllerde 1 adet ADC pini bulunur ve Analog bilgi girişidir.(ÖNEMLİ)
2-Akıllı sistemlerde kullanılan Röleler genelde 5VDC ile çalıştığı için 5VDC önemli.
3-ESP modülümüzün çıkışlarıda,girişleride 3.3V seviyesindedir.5v değildir bilgi.Bunun için internette araştırarak 2N2222 transistörünü kullanarak lojik çevirici yapabilirsiniz :) 


İlker YILDIZHAN 
Mİ ELEKTRONİK