STM32F103 İLE WEB SUNUCUSU

ESP8266 ile ev otomasyon sistemleri geliştirmek çok kolaylaştı. Ücretsiz olarak sunulan bol miktarda görsel malzeme ile çok alımlı WEB sayfaları hazırlanabiliyor. STM32 serisinin de WiFi yetenekleri olan tipleri, bunlarla kullanılabilecek zengin kütüphaneleri var.

Ben elimdeki basit malzemeleri kullanarak, STM32F103 ile ESP8266-01 i birlikte çalıştırarak ev otomasyonunda kullanılabilecek bir WEB sunucusu yapmaya karar verdim. Öyle olağanüstü bir şey değil, ESP zaten işin büyük kısmını yapıyor. Bana sadece bunu STM32 ile UART üzerinden konuşturmak ve WEB sayfalarını hazırlamak kalıyor.

AYNI İŞ STM32 OLMAKSIZIN SADECE ESP YONGALARI İLE YAPILAMAZ MI ?

Elbette ESP ailesinden kontrolcüler kullanılarak dört başı mamur WEB sunucuları ve bunlara bağlı çalışan ev otomasyon sistemleri kurulabilir. Özellikle ESP32 serisi, bunların çift çekirdekli olan son derece güçlü tipleri ile her şeyi yapmak mümkün.

ESP mikrodenetleyicilerinin geliştirme platformu Arduino IDE. Arduino’nun hazır kütüphanelere dayalı geliştirme ortamını öteden beri sevmemişimdir. Bu ayrı bir tartışma konusu olabilir. Ama önde gelen neden bu değil.

STM32/ESP8266 ikilisi ile çalışmayı seçtim çünkü, her iki markanın da en küçük, en kolay erişilebilen ve en ucuz mikro denetleyicilerinden oluşan zengin bir envanterim var. Ayrıca STM32 mikrodenetleyicilere göre geliştirilmiş adaptör kartlarım var, geliştirme platformlarına hakimim, bir yazılım kütüphanesi birikimim var.

Sonuç olarak; yeni başlıyor olsaydım farklı bir yaklaşımım olabillirdi, fakat sevdiğim ve hakim olduğum STM32 ekosistemine ESP ile WiFi ve TCP IP yeteneklerini katarak devam etmek daha cazip geliyor. ESP olmasaydı, STM32 nin kablosuz bağlantı yetenekleri olan yeni mikro kontrolcülerine el atabilirdim. Ama dediğim gibi elimdeki malzemeleri değerlendirmek istiyorum.

STM32 ile ESP arasındaki görev paylaşımı şöyle olacak : ESP sadece WiFi üzerinden internete bağlanacak, WEB sunucusu fonksiyonlarını html sayfalarını, css kodlarını barındıracak. İstemcilerden gelen komutları UART üzerinden STM32 ye iletecek. STM32 de lokal olarak yürütülecek tüm işleri yapacak. Röleleri açıp kapayacak, ekranında kullanıcı arayüzünü sunacak, lokal komutları alıp gereğini yapacak.

SİSTEM KURULUMU

Başlangıç projemiz basit. Amaç ESP2866_01 ile WiFi üzerinden çalışan bir WEB sunucuyu test edeceğiz. STM32-ESP8266_01 arasında kesinti (interrupt) tabanlı bir ring buffer ile UART haberleşmesi kuracağız. ESP bu bağlantı üzerinden STM32 ye kullanıcılardan gelen komutları, bunun yanısıra bir DHT22 sensör ile ölçtüğü sıcaklık ve nem bilgilerini aktaracak.

Kullandığım mikrodenetleyici STM32F103RB, bir Minikit S geliştirme plaketi üzerinde çalışıyor. SPI arayüzlü TFT takılmasına uygun. Bu kiti seçmemin nedeni, PCB yi tasarlarken bunun bir kenarında ESP8266 takılması için koymuş olduğum soket. Buraya takılan ESP8266, STM32 nin UART1 (PA9 ve PA10) portuna bağlanmış oluyor. Fotoda görülen mavi renkli DHT22 sensör, beslemesini STM32 kitinden alıyor, sinyal ucu ESP8266 nın GPIO2 pinine bağlı.

ESP8266 BESLEME VE TOPRAKLAMA KONULARINA DİKKAT

ESP8266 nın öyle minik göründüğüne aldanmamak gerek. Özellikle WiFi veri transferleri sırasında 3V3 beslemeden yüzlerce miliamper akım çekiyor. Bu akımlar darbe yığınları (burst) halinde, multimetre ile görülmesi mümkün değil. STM32 ile aynı gerilim regülatöründen besleniyorsa, sorun çıkma ihtimali çok yüksek oluyor. Görünüşte gayet güzel çalışıyor gibi görünse de istemciler (client) WEB sayfasını açamayabiliyor, yanıt süreleri uzayabiliyor sistem kararlı çalışmayabiliyor.

ESP’nin STM32 ile paylaştığı toprak dönüş yolları dahi sorun yaratabiliyor, ESP nin kendine ait, doğrudan besleme kaynağına giden kalın (2 mm den geniş) besleme hatları olması gerekiyor. Besleme kaynağının dinamik yük regülasyon karakteristiği de iyi olmalı.

Yukarıdaki fotoda altta kaldığı için görünmüyor ama ESP besleme girişinde 220µF lık ilave bir kondansatör lehimli. Plaket üzerinden giden toprak-besleme dönüşüne eklenmiş bir de 0.75mm2 tel bağlantı var.

YAZILIM

Bu projede STM32 ve ESP8266 ya ilişkin yazılımlar söz konusu.

STM32 TARAFI

STM32 şu an için sadece ESP8266 dan gelen mesajları UART1 üzerinden dinliyor. Sadece dinliyor, gelen komutu TFT ekranda görüntülüyor, başka da bir şey yapmıyor.

Gelen mesajlarda anlık sıcaklık, nem, basınç bilgileri ile, WEB sayfasına erişen kullanıcıların 7 adet röle çıkışına ilişkin aç/kapa komutları var. Nasıl bir alet yapacağıma karar verince bu röleleri bağlayıp STM32 yazılımını ona göre tamamlayacağım. Muhtemelen ev içi sıcaklığı ölçerek kombiye kumanda eden bir alet olacak, yeni kombimiz için eskisinden daha akıllı bir cihaz olsa iyi olur.

STM32 bu projede UART1 i Kesinti (Interrupt) modunda, bir ring buffer ile kullanıyor. Yazılım çalışmasını yine STM32 cubeIDE ortamında yapıyorum.

ESP8266 TARAFI

Sistemin WEB sayfalarına ulaşan istemcilerin (client) karşısına ESP8266 ile çıkıyoruz. ESP8266 da WiFi, TCP IP ve WEB sunucusuna ait kodlar bulunuyor. Bilindiği üzere ESP8266 kodlarını Arduino IDE üzerinde hazırlıyoruz. Bunun için kullandığım çeşitli kütüphaneler var.

ESP8266 yı yerel WiFi ağın erişim noktasına statik olarak belirlediğim bir IP ile bağlıyorum. Böylece sisteme erişmek istediğimizde her zaman aynı IP yi kullanabiliyoruz.

ESP8266 bu projede asenkron WEB Sunucu modunda çalışıyor, kullanıcı bunun bir fark yarattığının farkına varmayabilir, ancak tarayıcısında açık duran sayfanın, tazele tuşuna basmaya gerek olmadan kısa aralıklarla güncellendiğini farkedebilir. Yani ziyaretçimiz sayfada kaldığı sürece sıcaklık, nem, basınç, bağlı cihazların durumları vb parametrelerdeki değişikliklerin sürekli olarak güncellendiğini görecektir.

Sunucuya ilişkin WEB sayfalarının html kodlarını ve css kodlarını ESP8266 nın dosya sisteminde tutuyorum. Böylece program kodunu yeniden yüklemek zorunda kalmadan WEB sayfalarında değişiklik yapmak kolaylaşıyor.

ESP8266 NIN UZAKTAN YAZILIM GÜNCELLEMESİ

OTA – uzaktan yazılım güncelleme özelliğini ilk defa bu projede devreye soktum, çok a memnun kaldım. Bunun yapılışı için ESP8266-UZAKTAN YAZILIM GÜNCELLEME başlıklı yayınıma bakabilirsiniz.

Hem program kodu, hem de dosya sisteminde kayıtlı html, css veri dosyaları adeta sistem yanı başınızda bilgisayarınıza bağlı imiş gibi güncellenebiliyor.

YAZILIM KODLARI

Bu projede kodları vermek için acele etmeyeceğim. Zira teknik yayın sayfalarıma çok az erişim var. Ziyaret edenler de hiç bir yorum bırakmadan dönüp gidiyorlar. İlgilenen olursa, yorum bıraktığı takdirde daha fazla destek olmaya çalışırım.

Şimdilik bu yayının amacı, bu günlerde vakit harcadığım bir işi not düşmekten ibaret.

SONUÇLAR

Karşılama sayfası bu. Basınç sensörüm olmadığından orada yazan rakam uyduruk.







İkinci sayfada 3 röle daha var. Üç röle de üçüncü sayfada var. Şimdilik “Röle1, Röle2 vb. isimler var, ama nihai sistemde kontrol edilen cihazların isimleri olacak.






Bu da mobil telefon ekranındaki görünüm.

Bu yayının sonu – Selçuk Özbayraktar Eylül 2020

Leave a Reply

Your email address will not be published. Required fields are marked *