ESP8266-01 incelemesi. ( Modülün Sunucu ( Server ) olarak çalışması )

SUNUCU OLARAK ÇALIŞMA :
ESP modülümüzü seri port üzerinden PC ye bağladıktan sonra program ile ESP modülümüzün Sunucu ayarlarını yapmaya başlayalım. Bu adımlar aynı zamanda arduino yada pic gibi mikroişlemciler ve seri port kullanan diğer sistemler ile simüle edilebilir.
PC olmaksızın sunucu olarak çalıştırmamızı ve gelecek olan bilgiye göre sistemimizi programlamamızı sağlayacaktır.
Sayfa sonundaki Videolarda hem PIC12F1822 ve PICBASIC kullanılarak yapılmış örneği, hem de Arduino ile kütüphane kullanılmadan yapılmış örnekleri göreceksiniz.
Programın ilk sayfasında gerekli bağlantı işlemlerini yapmanız sağlanır. 2. sayfasında ise Sunucu (Server)  ve İstemci (Client) kısımları bulunur.
Her AT komutunu verdiğinizde ESP size bilgi döndürür. Bu cevabın sonunda çoğu zaman OK cevabı gelir. AT komutlarının sonuna mutlaka “/r/n” koymalısınız.
AT komutları için bu bağlantıya bakabilirsiniz.AT Komutları PDF dosyası

 

 

 

 


Server için kullanacağımız AT komutları aşağıda yazılmıştır.
AT    ( İlk haberleşme var mı diye bakılır. OK cevabı döner.)
AT+RST    ( ESP ye reset atılır. )
AT+CWMODE=3    ( sta ve ap modlarını birlikte kullanabilirsin )
AT+CIPMODE=0    ( normal kullanım )
AT+CIPMUX=1    ( birden fazla bağlantı aynı anda yapılabilmesini sağlar. Sunucu kurduğunuzda bunun mutlaka 1 olması gerekir.)
AT+CWSAP=”ESP8266″,”12345678″,6,4 ( AP KISMI ÇALIŞACAKSA )
AT+CWJAP=”ESP8266″,”12345678″    ( station modem kısmı erişim  noktası çalışacaksa)
Arduinoya yeni başlayanlar için bir not. ( işaretlerinin de gönderilmesi gerektiğinden bu satırı yazarken tırnak işareti yerine \” koymak gerekebilir  örneğe dikkat ediniz
örnek : (“AT+CWSAP=\”ESP8266\”,\”12345678\”,6,4″)

AT+CWDHCP=2,0                (hangi tip erişim noktası istiyorsunuz. AP ya da kendi modeminiz üzerinden bağlantı Bu haliyle AP modundadır.)
AT+CIPSERVER=1,80            ( sunucu açmak için kullanılır. 80 olan port numarasıdır. 80 olarak kullanırsanız kolaylık olur ve internet sayfalarıda kullandığından sorun olmayacaktır. modeminizde bazı portlar koruma altında olabilir.
Bu komutları verdiğinizde sunucunuz açılmış demektir. Fakat iş bununla bitmiyor. İnternet sayfasından bir data gelecektir. Bu datanın ayrıştırılması gerekmektedir.
Bu datayı ayırmak için aşağıdaki Arduino programını kullanabilirsiniz.

GELEN DATANIN İNCELENMESİ:
ESP nin benim gördüğüm 2 çeşit çalışma şekli var.

1 – ) internet sayfasından  gelen veri
2 – ) Soket mimarisi kullanım.
Bunların farklılıklarını aşağıda görebileceksiniz.
1-) İnternet üzerinden bilgi göndererek yada alarak çalışacaksanız.
İnternet üzerinden formatı belli bir dizi karakter gelir. Bu karakterleri ayrıştırmak için bilgileri ESP den seri port vasıtasıyla alıp, bilgileri ayrıştırmamız gerekiyor.  Bu sistemde internet sayfasından bir istek ESP modüle geldiğinde aşağıdaki ifade gelmiş demektir.
( seri port buffer denilen tampon bellek 64 karakterdir. Bu karakter adedi dolduğunda veriler gelemiyor yada verici gönderse bile kayboluyor. Programı incelediğinizde verileri zaman kaybetmeden devamlı aldığımız ve değişkenlere aktardığımız için 115200 hızında bile verileri alabiliyor. gelen veri 400-500 karakter uzunluğunda oluyor. devamlı buffer belleği boşaltıldığı için yeni verilerin gelişinde sorun olmuyor. )
0,CONNECT

+IPD,0,416:GET / HTTP/1.1
Host: 192.168.1.140:1234
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: tr-TR,tr;q=0.8,en-US;q=0.6,en;q=0.4
Bu ifade web sitesinin bağlanmak istediğini anlatır. Gelen ifadeyi ayırdığımızda +IPD belirteç olup yanındaki 0 bağlantı numarasıdır. Yanındaki 416 ise gelen karakterin 416 karakter olduğunu belirtir.
Arduino yada mikroişlemci ile bunları ayıklayıp ESP ile istek yapan WEB sitesine bir html sayfası göndeririz. Bu sayfada işlemimize göre butonlar bulunur. Yada bilgi satırları bulunur. Kullanıcı internet sayfasından butona bastığında Benzer bir satır gelir fakat son kısmı farklıdır.
+IPD,1,570:POST / HTTP/1.1
Host: 192.168.4.1
Connection: keep-alive
Content-Length: 39
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: http://192.168.4.1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://192.168.4.1/
Accept-Encoding: gzip, deflate
Accept-Language: tr-TR,tr;q=0.8,en-US;q=0.6,en;q=0.4
action=submit&name=John&submit=LIGHT1+ON
Bu en alttaki satır basılan butona göre değişiklik gösterebilir. Kendi gönderdiğiniz web sayfanıza göre. LIGHT2+ON yada OFF olabilir.
Örnek web sayfası : Bu sayfada butonları ESP ye gönderen kısım PHP kısmıdır.
İsterseniz kendinize göre düzeltebilirsiniz fakat düzelttiğinizde tüm karakter sayısını doğru bir şekilde sayıp AT+CIPSEND ile önceden ESP ye bildirmeniz gerekiyor. Programda bunu görebileceksiniz.
<!DOCTYPE html>
<html>
<form action=”” method=”post”>
<input type=”” name=”action” value=”Butonlari kullanin” /><br><br>

<input id=”LIGHT1ON” type=”submit” name=”submit” value=”LIGHT1 ON”>
<input id=”LIGHT1OFF” type=”submit” name=”submit” value=”LIGHT1 OFF”><p>
<input id=”LIGHT2ON” type=”submit” name=”submit” value=”LIGHT2 ON”>
<input id=”LIGHT2OFF” type=”submit” name=”submit” value=”LIGHT2 OFF”></p>)
</form>
</html>

<?php
if (isset($_POST[‘action’])) {

}
?>
Bu sayfayı internet üzerinden sayfa isteği geldiğinde program otomatik olarak gönderecektir. Şayet Giriş bölümünde kullandığınız programı kullanmak isterseniz SERVER kısmındaki beyaz kutudaki html yazılarıyla bu html yazılarını yer değiştirmeniz yeterlidir.

2-) SOKET mimarisinde işler biraz daha kolaydır. Bu genelde aynı network üzerinde yakın mesafede mesela ev içerisinde kullandığınız sistemlerde olabilir.
MIT2 App inventor da yapabileceğiniz wifi programlarda soket mimarisi kullanılır.
Bu sistemde sadece gönderilecek bilgi ESP tarafından alınır. Mesela sadece LIGHT1ON kelimesini gönderebilirsiniz.
Gelen bilgilerden örnekler aşağıdadır.
1,CONNECT

+IPD,1,5:LCDDD
+IPD,1,16:LCDWR 1,3-DENEME
+IPD,1,5:LCDCB
+IPD,1,10:LCDRC 1,5-1,CLOSED

Bizde soket mimarisine uygun bir şekilde geri bilgi gönderebiliriz. Bunun için önce ESP ye kaç karakter yollayacağımızı bildiriyoruz. Göndereceğimiz bilgi : “Geri bildirim”
AT+CIPSEND=0,13
OK
>

Recv 13 bytes
SEND OK
Bu sistemde Seri port üzerinden gelen bilgileri ayrıştırmak daha kolaydır.
Fakat bunu internet üzerinden soket mimarisine göre gönderecek program bulamadım. Bundan dolayı aynı ağ üzerinde çalışan android sisteminden yada 2 arduino arası ya da PC den ESP ye gönderim olarak kullanabilirsiniz.

Ayrıca Proteus ve PIC12F1822 kullanılarak ESP kontrolünü gerçekleştiren PICBASIC kodunu da bulacaksınız.

picbasic programı ve proteus şeması (12F1822 server)
Picbasic programı ds18b20 ile yapılmış sensör bilgilerini içeriyor. Çalışıyor fakat internete gönderim metodu daha eklenmedi. Bilgileri incelediğinizde aynı metodla internete gönderebilirsiniz.  
Tüm sistem 115200 baud olarak çalışacaktır. Fakat Proteus gerçek devreyi 115200 baud ile kontrol edemeyeceği için geçici olarak ESP modülün baud hızını değiştirmemiz gerekiyor.
Bu değişim ESP modüllerin versiyon ve modeline göre değişiyor. Bir başka ESP modülünde AT+CIOBAUD komutu kullanılıyormuş.
Benim modülümün versiyonları aşağıdadır.
AT+GMR    (komutuyla versiyon bilgilerini öğrenebilirsiniz. )

AT version:1.2.0.0(Jul  1 2016 20:04:45)
SDK version:1.5.4.1(39cb9a32)
Ai-Thinker Technology Co. Ltd.
Dec  2 2016 14:21:16
OK
Bu versiyona göre olan haberleşme hızı değiştirme komutları.
AT+UART UART configuration, [@deprecated]   Kullanımdan kaldırılmış.
AT+UART_CUR UART current configuration     Geçici olarak değiştirir. Güç kesildiğinde                                                                              eski haline döner.
AT+UART_DEF UART default configuration, save to flash     Bu komut kullanıldığında FLASH içerisinde değişiklik yapıldığından ayarladığınız şekilde kalacaktır.
PC üzerinde herhangi bir seri port uygulaması yada seri monitör kullanılarak  Geçici olarak haberleşme hızı değiştirilir.Sonrasında Proteus uygulaması açılır ve COMPIM komponenti ayarlarından ESP modülünün bağlandığı port seçilerek program çalıştırılır.

Gerekli açıklamaları videolar içerisinde bulacaksınız.

SUNUCU (server) video-1

SUNUCU (server) video-1

Modülün İstemci (Client ) olarak çalışmasını görün

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir