- Gerekli malzemeler:
- PIC mikro denetleyicisinin programlanması:
- ESP8266 Kitaplığındaki İşlevler:
- Örnek Program:
- Simülasyon çıktısı:
- Çıktı Doğrulaması:
- ESP8266 Kitaplığına işlevler ekleme:
Bu yazıda, WIFI modülü ESP8266 ile PIC mikro denetleyici arasında nasıl arayüz oluşturacağımızı tartışalım. Şimdiye kadar ESP8266 modülünü bağımsız bir mikrodenetleyici olarak kullanıyor olabilirsiniz veya Arduino kitaplığıyla kullanıyor olabilirsiniz. Ancak, sıkı gömülü sistem projeleri söz konusu olduğunda, onu PIC mikro denetleyicileriyle de nasıl kullanacağımızı bilmemiz gerekir. Bu, projelerinizi tasarım perspektifinde özelleştirmenize ve aynı zamanda ucuza yapmanıza yardımcı olacaktır.
ESP8266 modülleri, içine yüklenmiş varsayılan bir bellenimle birlikte gelir, dolayısıyla modülü AT komutlarını kullanarak programlayabiliriz. Bu komutların bir seri iletişim kanalı üzerinden gönderilmesi gerekir. Bu kanal, PIC mikro denetleyicideki USART modülü kullanılarak PIC ve ESP8266 modülü arasında kurulur . Tüm çalışma izlenecek ve 16x2 LCD ekran kullanılarak kullanıcıya bildirilecektir. Bu nedenle, bu eğitimde PIC'de USART modülü, PIC ile LCD'yi arayüzleme ve ESP8266'da AT komutlarını kullanma hakkında bazı temel bilgilere sahip olduğunuz varsayılmaktadır. Bunu yapmazsanız, bunları önceden öğrenmek için bağlantılı eğitimlere geri dönebilirsiniz.
Gerekli malzemeler:
Bu öğreticiyi tamamlamak için aşağıdaki donanıma ihtiyacınız olacak
- PIC16F877A
- 20MHz kristal osilatör
- 7805
- LM317
- ESP8266
- 16 * 2 LCD ekran
- PicKit3 programcısı
- Dirençler (1K, 220ohm, 360ohm)
- Kapasitörler (1uF, 0.1uF, 33pF)
- Atlama telleri
- PIC ve ESP modülüne güç sağlamak için 12V Adaptör
Donanım:
Projenin tam şeması aşağıda gösterilmiştir.
Şematik iki voltaj regülatör devresinden oluşur; biri PIC mikro denetleyiciye güç sağlamak için kullanılan bir + 5V regülatör ve diğeri ESP8266 modülüne güç sağlayan bir 3,3V regülatördür. + 5V, bir 7805 (Doğrusal Voltaj Regülatörü IC) kullanılarak düzenlenir. 3.3V, LM317 (Değişken Voltaj Regülatörü) kullanılarak düzenlenir. ESP8266 modülü çok fazla akım (~ 800mA) tüketir, bu nedenle kendi güç kaynağınızı tasarlıyorsanız, bu kadar yüksek akımı kaynaklayabildiğinden emin olun. Ayrıca PIC ve ESP8266 modülünün toprak pimlerinin birbirine bağlı olduğundan emin olun.
Artık PIC'in + 5V'de çalıştığını ve ESP8266'nın 3.3V voltta çalıştığını biliyoruz. Bu iki modül arasında bir USART iletişimi kurmak için yukarıdaki şekilde gösterildiği gibi 5V - 3.3V lojik dönüştürücü devresine ihtiyacımız var. Bu devre, gelen + 5V'yi 3.3V'a dönüştüren potansiyel bir bölücüden başka bir şey değildir. Bu, ESP8266'nın 3.3V tolere edilebilir RX pininin + 5V almasını önleyecektir.
Bu eğitimlerde gösterildiği gibi, PIC ve ESP modüllerini iki ayrı mükemmel kart üzerinde yaptım. Bu şekilde onları daha benzer projeler için evrensel olarak kullanabilirim
- PIC kullanan LED donanımı
- ESP8266 ile başlarken
Aynısını takip edebilir veya kendi tarzınıza göre kendi kartınızı oluşturabilir veya yukarıdaki devreyi bir devre tahtasına bağlayabilirsiniz.
PIC mikro denetleyicisinin programlanması:
PIC mikro denetleyicisini USART kullanarak ESP8266 modülüne seri olarak “AT komutları” gönderecek şekilde programlamak için bir kitaplık kullanmamız gerekir. Bu kitaplık, her bir AT komutunu kontrol etmek için ESP8266 komut modüllerini kullanmak ve ardından bunları ESP modülüne iletmenin bir yolunu bulmak gibi sizi pek çok güçlükten kurtaracaktır. Bu kitaplık, orijinal olarak Camil Staps tarafından geliştirilen ücretsiz bir yazılımdır ve daha sonra PIC16F877A Mikrodenetleyicimiz ile kullanılabilmesi için Circuit Digest tarafından geliştirilmiş ve değiştirilmiştir. Buradan indirebilirsiniz
Kitaplık hala geliştirme aşamasındadır, ancak ESP8266 sabit yazılımındaki önemli AT komutlarının çoğunu kullanabilirsiniz. İhtiyaç duyduğunuz komutlardan herhangi birinin eksik olduğunu görürseniz, yorum bölümünde bana bildirin, sizin için eklemeye çalışacağım. Bu eğitim, size bu kitaplık aracılığıyla kullanılabilecek tüm komutları (şimdiye kadar) açıklayacaktır. Ayrıca kitaplığa kendi işlevlerinizi eklemeniz için size rehberlik edecektir.
ESP8266 Kitaplığındaki İşlevler:
- Initialize_ESP8266 (): Bu işlev, ESP8266 modülü ile iletişim kurmak için PIC'nin USART modülünü başlatacaktır. Baud hızını 115200'e ayarlar ve PIC'in Rx ve Tx pinlerini USART iletişimi için hazırlar.
- _esp8266_putch (): Bu işlev, tek bir karakteri seri olarak ESP8266 modülüne göndermek için kullanılır. Örneğin, _esp8266_putch ('a') , karakteri ESPmodülüne seri olarak gönderecektir.
- _esp8266_getch (): Bu işlev, ESP modülünden tek bir karakter almak için kullanılır. Örneğin, ESP "Tamam" yazdırıyorsa ve biz char a = _esp8266_getch () kullanıyoruz. Daha sonra 'o' karakteri a değişkeninde saklanacaktır.
- ESP8266_send_string (): Bu işlev, _esp8266_putch () işlevinin dize versiyonudur. ESP8266 modülüne bir tam dizi gönderebilir. Örneğin, ESP8266_send_string ("AT / r / n") "AT" komutunu ESP8266 modülüne gönderir.
- esp8266_isStarted (): PIC'nin ESP modülü ile iletişim kurup kuramadığını kontrol etmek için kullanılır. "AT" komutunu gönderir ve alırsa "Tamam" ı bekler, doğru döndürür, aksi takdirde yanlış döndürür.
- esp8266_restart (): ESP8266 modülünü sıfırlar ve doğru, sıfırlama başarılı ve başarılı değilse yanlış döndürür.
- esp8266_mode (): ESP8266 modülünün çalışma modunu ayarlamak için kullanılır. Bildiğimiz gibi üç farklı modda çalışabilir.
İstasyon modu |
|
Yumuşatma modu |
|
Hem İstasyon hem de AP modu |
- esp8266_connect (): Bir wifi sinyaline bağlanmanıza izin verir. Örneğin esp8266_connect ("ev", "12345678") , modülünüzün parolası 12345678 olan home adlı wifi sinyaline bağlanmasına izin verir.
- esp8266_disconnect (): Bu işlev, modülünüzün önceden bağlanmış olan herhangi bir wifi bağlantısıyla olan bağlantısını keser.
- esp8266_ip (): IP adresini alır ve döndürür. ESP8266 modülünün IP adresini öğrenmek istiyorsanız bu işlevi kullanın.
- esp8266_start (): Bu işlev, bir TCP veya UDP iletişimi başlatmak için kullanılır. Örneğin esp8266_start ( "TCP", "192.168.101.110", 80) . Bu IP ve 80 numaralı bağlantı noktasında bir TCP ağı başlatır.
- esp8266_send (): Bu işlev, TCP / UDP ağına bilgi göndermek için kullanılır. HTML komut dosyası bu komut kullanılarak gönderilecektir. Daha sonra bu komut dosyası, iletişimin önceden kurulmuş olduğu IP adresinde görünecektir.
- esp8266_config_softAP (): Bu fonksiyon softAP'ı yapılandırmak için kullanılır. Örneğin esp8266_config_softAP ("ofis", "12345678"); office adlı bir Wifi sinyali oluşturacak ve ona erişmek için 12345678 şifresi kullanılmalıdır.
- esp8266_get_stationIP (): Bu işlev size softAP'inize bağlı istemcilerin IP / MAC adresini döndürecektir.
Örnek Program:
Kütüphanedeki her bir komutun işlevini anladığımıza göre, şimdi küçük bir örnek programa bakalım. Bu programda, ESP8266 ile PIC arasındaki bağlantının başarılı olup olmadığını kontrol edeceğiz ve ardından tercih edilen bir ad ve şifre ile bir WIFI ağı (SoftAP) oluşturacağız. Anlayışınız için tam program ve bunun simülasyonu açıklanacaktır.
Yine, LCD ile PIC arayüzümüzü ve PIC USART öğreticimizi okumadıysanız, lütfen devam etmeden önce okuyun, çünkü ancak o zaman sizin için anlamlı olacaktır.
PIC ile ESP8266 arasında arayüz oluşturmaya yeni başladığımızdan, işlerin düzgün çalıştığından emin olmak için bir LCD kullandım.
do {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP bulunamadı"); } while (! esp8266_isStarted ()); // ESP "Tamam" ı geri gönderene kadar bekleyin Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP bağlı"); __delay_ms (1500); Lcd_Clear ();
"AT" yi ESP8266 modülüne gönderdiğimizde, "OK" ile yanıt veriyor. Bu bize ESP8266 modülünün başarıyla bağlanmasını sağlar. Esp8266_isStarted () işlevi bunun için kullanılır. AT sinyalini PIC'den gönderiyoruz ve ESP modülünün canlanmasını ve bize bir OK göndermesini bekliyoruz. Tamam alırsak LCD'de “ESP bağlı” mesajını görüntüleriz.
esp8266_mode (2); Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP AP olarak ayarlandı"); __delay_ms (1500); Lcd_Clear ();
Yukarıdaki kod satırları, ESP modülünü "soft AP" modunda çalışacak şekilde ayarlamak için kullanılır. Esp8266_mode (2) işlevi; AT komutlarını "AT + CWMODE = 3" modüle gönderir ve modülün "Tamam" ile yanıt vermesini bekler
/ * AP adını ve Parolayı yapılandırın * / esp8266_config_softAP ("CircuitDigest", "619007123"); Lcd_Set_Cursor (1,1); Lcd_Print_String ("AP yapılandırılmış"); __delay_ms (1500); Lcd_Clear (); / * AP yapılandırılmış * /
Kodun bu bölümü softAP'i yapılandırmak için kullanılır. Burada SSID'yi "CircuitDigest" ve şifreyi "619007123" olarak adlandırdık. İşlemin tamamlandığını belirtmek için modülün "Tamam" ile yanıt vermesini bekleyeceğiz ve ardından yapılandırılmış AP'yi LCD ekrana yazdıracağız.
Yani artık ESP8266 modülünü PIC MCU ile arayüzledik ve softAP'yi seçtiğimiz bir isim ve şifre ile yapılandırdık. Her zamanki gibi bu kodu simüle edelim ve nasıl çalıştığını görelim.
Simülasyon çıktısı:
Çıktıyı simüle etmek için Proteus yazılımını kullanıyoruz. Aynı tasarım dosyası ekte bulunabilir.
Proteus kitaplığında bir ESP8266 modülümüz olmadığından, Seri terminali kullanıyoruz ve PIC modülüne kullanıcı olarak yanıt veriyoruz. Simülasyon tamamlandıktan sonra aşağıdaki gibi görünecektir
Kodumuzun çıktısı Sanal terminalde gösterilmektedir. Simülasyonun tam çalışması aşağıdaki videoda açıklanacaktır.
Çıktı Doğrulaması:
Program simülasyon kullanılarak doğrulandıktan sonra, PIC mikro denetleyicinize boşaltın. Bağlantıları yukarıdaki şemalarda gösterildiği gibi yapın (Donanım bölümü). İlerlemenizi LCD ekran üzerinden takip edebilmelisiniz.
LCD, AP'nin yapılandırıldığını söylediğinde, bunu Telefon veya Dizüstü bilgisayardaki WIFI ayarlarını kullanarak kontrol edebiliriz. Dizüstü bilgisayarım, programımıza göre aşağıdaki sinyali gösteriyor.
Yani, ESP8266 modülünü PIC Mikroişlemci ile başarılı bir şekilde arayüzlendirdik. Bu çok basit bir arayüzdür ve ESP8266'yı kullanarak herhangi bir karmaşık proje yapmak istiyorsanız, kendi kitaplıklarınızı veya en azından kendi işlevlerinizi eklemeniz gerekebilir. İnanın bana, bunu yapmak çok kolay, ben de kısa bir fikir vereceğim.
ESP8266 Kitaplığına işlevler ekleme:
Kendi işlevinizi eklemek, ESP8266 modülüne herhangi bir "AT" komutu göndermenize yardımcı olacaktır. Buna devam etmek için ESP8266 modülünün talimat seti belgelerini okumanız gerekir. Bu talimat seti kılavuzunda bulduğunuz herhangi bir AT komutunu doğrudan gönderebilirsiniz. Ancak her AT komutunun sonuna "/ r / n" eklemeyi daima unutmayın. Örneğin ESP modülünüzle birden fazla bağlantı kurmak istiyorsanız. Ardından komut seti belgelerini açın ve hangi AT komutunun bu işi sizin için yapacağını bulun. Burada "AT + CIPMUX = 1" komutu ESP modülünüzle birden fazla bağlantı kurmanıza izin verecektir.
Şimdi tek yapmanız gereken bu “AP + CIPMUX = 1” i seri portu kullanarak ESP8266 modülünüze göndermek. Bunu yapmanın en sert yolu, yalnızca şu komutu kullanmaktır:
_esp8266_print ("AT + CIPMUX = 1 \ r \ n" ")
Bu işe yarayacak, ancak bunu yapmanın en iyi yolu değil. ESP8266'nızın komutunuza ne yanıt verdiğini tekrar okumalısınız. Bizim durumumuzda "Tamam" olarak cevap verecektir. Yani ESP8266 modülünden gelen veriyi okumanız ve bunun "OK" olduğunu onaylamanız gerekir. Ayrıca bu işlevi "1" veya "0" ın bağımsız değişken olarak aktarılabildiği yerde yapabilirsiniz.
Devam edin ve kitaplık için kendi işlevlerinizi yapmaya çalışın. Ancak yardıma ihtiyacınız olursa lütfen yorum bölümünü kullanmaktan çekinmeyin, size yardımcı olacağım.