Sözde WIFI modülü, aslında aslan parçası: ESP-01
Beni takip edenlerin bileceği gibi bu sıralar TÜBİTAK-2209 projem üzerine çalışıyorum. Projedeki yapı taşları üçe ayrlıyor, bunlar: kontrol paneli yazılımı, mikrokontrolcü yazılımı ve mekanik tasarım. Kontrol panelini yazdım ve bu GitHub reposunda detaylarını bulabilirsiniz. İleride bu konuda başarımlarımı, kullandığım teknolojileri ve sistemin mantığını anlatacağım bir yazı da hazırlamayı planlıyorum.
Mikrokontrolcüye emir gönderirken hazırladığım web sunucusunu kullanacağım. Bundan dolayı mikrokontrolcüme WiFi modülü almam gerektiğini düşünerek ESP8266-01'i sipariş ettim. Öncelikle ilk bilmemiz gereken şey şu: bu bir modül (ne demek ki modül?) değil. Esperessif sitesinde SoC olarak tanıtmış, yani System-on-Chip. Anlayacağınız bir dille söyleyelim ve hep beraber şok olalım. ESP8266-01 kendi başına bir geliştirme kartı!
Pin şemasına baktığımızda bir besleme voltajı, bir toprak, dört GPIO pini ve bir CH_PD (açılımı chip power-down) pini bulunuyor. Eğer ki elinizde TTL ve USB dönüştürücüsü bulunuyor ise aracı olarak Arduino kullanmadan bu SoC'u programlayabilirsiniz. Benim gibi fazladan para harcamaya bünyesi el vermeyenler ellerindeki Arduino UNO'yu kullanabilirler.
Kural 1) ESP8266-01 üzerindeki TX ve RX pinlerinin adları harici bağlantı kaynağı baz alınarak verilmiştir.
İlginçtir ki çoğu internet sayfası yukarıda verdiğim kural birden bi'haberdirler! Arduino ve ESP8266'nın haberleşmesini yapabilmeniz için Arduino tarafında TX olan kabloyu ESP8266 tarafında da TX pinine bağlanamalısınız. Aynı şekilde Arduino tarafında RX olan kabloyu da ESP8266 tarafında RX'e bağlamalısınız. Şok edici ve saçmalık, evet, ama doğrusu buymuş. Bu bağlantıları yaparken arada bir lojik seviye düşürücü kullanmanızı ben de tavsiye ediyorum.
Kural 2) 5 voltluk bir güç kaynağı ile besleyin.
Satın aldığım site dahi 3.3 Volt ile beslemeyi önerse de benim elimdeki SoC'u bu voltaj ile beslediğimde "AT" komutuna (birazdan öğreneceğiz) cevap alamadım. LED yanıyordu gerçi. Ne zaman ki yanlışlıkla 5 voltluk bir kaynağa bağladım, o zaman ready dönütünü serial monitörde görebildim.
Kural 3) RST pinine voltaj verme, CH_PD'ye voltaj ver.
Bazı internet sayfaları, nedense, CH_PD'ye voltaj vermeyip RST'ye voltaj vermiş ve çalıştıklarını iddia etmişler. Bende çalışmadı açıkçası. Çözümü bu şekilde buldum. CH_PD pinini taktığınız anda kart üzerindeki mavi LED ışık yanıp sönüyor ve serial monitörünüze "ready" dönütü geliyor.
Ayrıca GPIO0 ve GPIO2 pinlerine de voltaj vermenize gerek yok, bazılarının söylediğinin aksine.
Bağlantı Modu
ESP8266-01'i kullanarak üç tip bağlantı modunu seçebilirsiniz:
- İstasyon modu, (client)
- Erişim noktası modu, (server)
- Hem istasyon hem erişim noktası modu (client + server)
ESP'yi ilk çalıştırışınızda telefonunuzaki WiFi listesini bir kontrol edin. Orada yepyeni bir erişim noktası göreceksiniz çünkü fabrika çıkışlı olarak ESP8266-01'ler 2. modda, yani erişim noktası olarak, ayarlı gelirler.
Bunu değiştirebilmek için şunu yazın AT+CWMODE=3
. Artık SoC'unuz hem bir server hem de bir client. Client olarak herhangi bir WiFi ağına bağlanmak isterseniz öncelikle AT+CWLAP
aracılığı ile uygun erişim noktalarını arayın. Daha sonra AT+CWJAP="SSID","PASS"
ile bağlanabilirsiniz. Bunun gibi bir çok komut için şu siteyi inceleyiniz.