ESP8266 WiFi modülü ve Arduino ile HTTP sorguları yapmak için kütüphane

ESP8266 WiFi modülü ve Arduino ile HTTP sorguları yapmak için kütüphane

ESP8266 WiFi modülü ve Arduino ile HTTP sorguları yapmak için kütüphane

Bir mikrodenetleyiciye bilgi göndermenin ve mikrodenetleyiciden bilgi göndermenin basit bir yolu, onu bir web sunucusunda merkezileştirmektir. Örneğin bir veritabanına doğrudan erişim kadar verimli bir yöntem olmasa da, özellikle mikro denetleyiciye dayalı bir proje düşünürseniz ve her yerde bulunma (buluttaki veriler) ve basitlik (buluttaki veriler) avantajlarını da eklerseniz yeterince etkilidir. metin bilgisi ve emir olarak ele alınabilir.) Bu sistemi kullanarak bilgi göndermek, HTTP POST istekleri yapmak ve bir HTTP GET isteğine verilen yanıtın içeriğini analiz ederek bu istekleri almaktan oluşabilir.

İçindekiler

    El ESP8266 WiFi modülü Mikrodenetleyicilerle kullanıma çok uygun performansı ve AT komutlarıyla çalışmaya çok uygun kullanımıyla oldukça ekonomik bir seçenektir.

    HTTP istekleriyle kullanımını sistematize etmek için, altyapısını bir nesneye genişletilmesine izin veren bir web sunucusuna dayandırdığı için (SleepManager adını verdiğim) uyku yönetimi cihazı projemin ihtiyaçlarını destekleyen küçük bir kitaplık geliştirdim. IOT olarak bulut hizmeti. Örneğin UDP istekleri gibi diğer hizmetleri kütüphaneye eklemek zor değildir. NTP üzerinden zaman senkronizasyonu ancak bağlantılı metinde de açıkladığım gibi ihtiyaçlarım açısından kritik değil ve bu kütüphanenin kullanım örneğinde gösterdiğim gibi, bu amaç için hazırlanmış bir web sayfasına bir HTTP isteği ile bunu kabul edilebilir bir şekilde çözebilirim.

    Kütüphanenin çalışması, cihaz kullanılabilir olduğunda AT komutlarının gönderilmesine ve hata durumunda bunların tekrarlanmasına (küçük bir gecikmeyle) dayanmaktadır; bu, örneğin Wi-Fi erişiminden veya noktadan itibaren kullanılamaması (test yoluyla başarılı bir şekilde) olarak yorumlanır. sunucuya danışılıyor.

    Kütüphane, küçük bir arabelleği sunucu tarafından döndürülen bilgilerle doldurmak için ESP8266 WiFi modülünün veri alımına ilişkin bir uyarı olarak bir +IPD kodu döndürmesi gerçeğinden yararlanır. Uyku yönetimi cihazı projesi için sunucudan dönen çok az veriyi analiz etmem gerekiyor, bu nedenle tasarruf sağlamak için arabellek ve onun üzerinden geçen işaretçi özellikle küçüktür; Bu, daha büyük miktarda veriyi işlemek amacıyla kitaplığı yeniden kullanmak için değiştirmeniz gereken ilk şeylerden biri olacaktır.

    Herkese açık olarak gösterilen işlevler (1) modülün durumunu bilmeye izin verir: bağlı olup olmadığı, arabellekte veri olup olmadığı ve ne kadar veri olduğu ve ESP8266 modülünün istenen işlemi tamamlayıp tamamlamadığı ; (2) DHCP sunucusu olan bir ağdaki WiFi erişim noktasına bağlanın ve (3) HTTP GET ve POST istekleri yapın, ancak göreceğiniz gibi kod, başkalarını eklemeyi çok kolaylaştıracak şekilde tasarlanmıştır.

    İç işleyişle ilgili olarak, ilk olarak biri AT emirlerini, diğeri başarı ve hataya ilişkin beklenen yanıtları içeren iki matris oluşturulur; Daha sonra kütüphaneyi kullanan programın zaman zaman fonksiyonu çağırması gerekir. göndermek Siparişlerin mevcut olması ve meşgul olmaması durumunda modüle ve fonksiyona gönderilmesinden sorumlu olacak Recibir ESP8266 modülünden (ve varsa HTTP sunucusundan gelen yanıtları işleyecek)

    Sinyal kaybı nedeniyle modülün bağlantısı kesilebileceğinden, ana program ESP8266 modülünün WiFi erişim noktasına bağlı olup olmadığını kontrol edebilir (işlevi ile) conectado) ve başka şekilde bağlanmayı deneyin (işlevle connect_wifi)

    İstenilen işlemin bitip bitmediğini bilmek için program şu işlevi kullanabilir: operasyon_tamamlandı ve bu durumda başka bir tane gönderin veya fonksiyonun kullanıldığı sonuç verilerini kullanın okuma_bufferİşlem tamamlanana kadar ESP8266 modülüne gelen verilerle doldurulan ara belleğin içeriğini döndüren fonksiyon ve tampon_uzunluğu Sunucunun gönderileceğine dair uyardığı bu verinin miktarını bildiren (böylece modülün kendisinden gelen bilgiler indirimli olabilir)

    Aşağıdaki örnek, her belirli zaman aralığında sunucuya veri (bir analog girişin okunmasından elde edilen bir yüzde) göndermek için ESP8266 WiFi modülüyle birlikte HTTP sorgu kitaplığını kullanır. Herhangi bir yanıt almayı beklemediğinden tamponu kullanmaz ve işlemin doğru şekilde tamamlanması için yeterlidir. Bu sistem, uyku yönetimi cihazı projemde sensör okumalarının sonuçlarını sunucuda saklamak için kullandığım sistemdir.

    Aşağıdaki örnek, sunucunun saatini sorgulamak ve tahmini yanıt süresini ekleyerek bunu mikro kontrollü cihazın saatiyle senkronize etmek için bir HTTP GET sorgusu kullanır; Aslında, cihazın zamanının sunucunun zamanından daha fazla olmasını sağlamak ve cihazın bir parçası olan gerçek zamanlı saatteki saatin doğru olup olmadığını veya indirme nedeniyle kaybolup kaybolmadığını kolayca kontrol etmek için 4 ila 6 saniye daha ekler. pil.

    Birçok testten sonra bu sistemin çalıştığını doğruladım. ESP8266 WiFi modülü ile zaman senkronizasyonu İhtiyaçlarımı karşılayacak kadar doğru; en kötü durumda 10 saniyeden daha az bir hatayla, ki bu benim durumumla pek alakasız.

    Kodda görülebileceği gibi, okuma onu yeni verileri depolamaya hazır hale getirecek şekilde sıfırladığından, ilk önce arabellek uzunluğunu sorgulamak gerekir.

    Bu örnekte ara belleğin içeriği okunduktan sonra zamanı elde etmek için işlenir. Öncelikle parantezlerin arasındaki metin seçilir (sunucu şu komutu kullanarak yanıt verir: PHP echo “{“.time().”}”) onu bir “zaman nesnesine” dönüştürür ve ondan insan formatındaki tarih ve saati alır.

    Bir kullanıcının sorgusundan ilham alan aşağıdaki örnek program, hizmeti kullanarak genel IP adresini bulmak için kullanılır IP'yi kontrol et AWS (Amazon Web Hizmetleri) her beş dakikada bir.

    Önceki örneklerde olduğu gibi, kullanılan ağ yapılandırmasına (örnekte 192.168.1.X), SSID'ye ve WiFi anahtarına bağlı olarak değiştirilmesi gerekecek bir dizi varsayım yapılmıştır. IP adresi çok zarif değildir; bunu daha geleneksel bir şekilde yapacak bir API olmasına rağmen, HTTP GET isteğine verilen yanıtın son satırı olduğunu varsayar.


    Şunları yapabilirsiniz Arduino Uno ile HTTP sorguları için ESP8266 kütüphanesini indirin (konsolsuz) ve buradan şunları yapabilirsiniz: Arduino için ESP8266 HTTP sorgu kütüphanesini indirin bir konsol kullanan, yani bir seri bağlantı noktasını yazılım yoluyla uygulaması veya donanım olarak kullanması (örneğin bir anakart) gerekir arduino Mega o Arduino Leonardo.

    Yorum Ekle

    Kaçırmış Olabilirsiniz