- Gerekli Bileşenler
- ESP8266 Wi-Fi modülü
- Seri İletişim için LPC2148'i ESP8266 ile Bağlama
- Devre Şeması ve Bağlantılar
- ESP8266 arabirimi için LPC2148'de UART0'ın programlanmasında yer alan adımlar
- LPC2148 ile ESP8266 IoT Web Sunucusunu kullanarak LED'i kontrol etme
ESP8266 Wi-Fi alıcı-verici, bir mikro denetleyiciyi ağa bağlamanın bir yolunu sağlar. Ucuz, küçük ve kullanımı kolay olduğu için IoT projelerinde yaygın olarak kullanılmaktadır. Daha önce Raspberry webserver ve Arduino webserver kullanarak web sunucusu oluşturmak için kullandık.
Bu eğitimde , ESP8266 Wi-Fi Modülü ile ARM7-LPC2148 mikro denetleyici arasında arayüz oluşturacağız ve LPC2148'e bağlı LED'i kontrol etmek için bir web sunucusu oluşturacağız. İş akışı şu şekilde ilerleyecektir:
- ESP8266'yı AP modunda yapılandırmak için LPC2148'den ESP8266'ya AT komutları gönderin
- Dizüstü bilgisayarı veya bilgisayarın Wi-Fi'ını ESP8266 Erişim noktasına bağlayın
- ESP8266 web sunucusunun Erişim noktası IP adresiyle bilgisayarda bir HTML web sayfası oluşturun
- ESP8266'dan alınan değere göre LED'i kontrol etmek için LPC2148 için bir program oluşturun
ESP8266 Wi-Fi modülüne tamamen yeniyseniz, ESP8266 Wi-Fi modülüne aşina olmak için aşağıdaki bağlantıları ziyaret edin.
- ESP8266 Wi-Fi Alıcı-Vericisine Başlarken (Bölüm 1)
- ESP8266'ya Başlarken (Bölüm 2): AT Komutlarını Kullanma
- ESP8266'ya Başlarken (Bölüm 3): ESP8266'yı Arduino IDE ile Programlama ve Belleğini Yanıp Söndürme
Gerekli Bileşenler
Donanım:
- ARM7-LPC2148
- ESP8266 Wi-Fi Modülü
- FTDI (USB'den UART TTL'ye)
- LED
- 3.3V Voltaj Regülatörü IC
- Breadboard
Yazılım:
- KEIL uVision
- Flash Magic Aracı
- Macun
ESP8266 Wi-Fi modülü
ESP8266, 3,3V'luk düşük güç gerektiren gömülü projeler için düşük maliyetli, yaygın olarak kullanılan bir Wi-Fi modülüdür. ESP8266 ile UART bağlantı noktasına sahip herhangi bir mikro denetleyici arasında seri iletişim ve veri aktarımı için yalnızca iki TX ve RX kablo kullanır.
ESP8266 Wi-Fi modülü için Pin Şeması
- GND, Toprak (0 V)
- TX, veri biti X iletimi
- GPIO 2, Genel amaçlı giriş / çıkış No. 2
- CH_PD, Chip kapatma
- GPIO 0, Genel amaçlı giriş / çıkış No. 0
- RST, Sıfırla
- RX, veri biti al X
- VCC, Gerilim (+3,3 V)
ESP8266 Devre Kartını Ayarlama
ESP8266, sabit bir 3,3V besleme gerektirir ve devre tahtası dostu değildir. Bu yüzden, ESP8266 ile ilgili önceki eğitimimizde, ESP8266 için 3.3V Voltaj regülatörlü bir devre kartı, bir RESET düğmesi ve anahtarlama modları için (AT komutu veya flaş modu) jumper kurulumu yaptık. Ayrıca performans tahtası kullanmadan breadboard üzerine de kurulabilir.
Burada kendi ESP8266 Wi-Fi kartımızı yapmak için breadboard üzerindeki tüm bileşenleri lehimledik
Aşağıdaki bağlantıları izleyerek ESP8266'nın çeşitli mikro denetleyicilerle arayüzünü öğrenin:
- ESP8266'ya Başlarken (Bölüm 3): ESP8266'yı Arduino IDE ile Programlama ve Belleğini Yanıp Söndürme
- ESP8266'yı STM32F103C8 ile Bağlama: Bir Web Sunucusu Oluşturma
- MSP430 Launchpad ve ESP8266 Kullanarak E-posta Gönderme
- ESP8266 ile PIC16F877A Mikrodenetleyici arasında arayüz oluşturma
- Arduino ve ESP8266 kullanarak IOT Tabanlı Dumpster İzleme
ESP8266 tabanlı tüm projeler burada bulunabilir.
Seri İletişim için LPC2148'i ESP8266 ile Bağlama
ESP8266 ile LPC2148 arasında arayüz oluşturmak için, ESP8266 Wi-Fi modülünü yapılandırmak için LPC2148'den ESP8266'ya AT komutları göndermek için bu iki cihaz arasında bir UART seri iletişimi kurmalıyız. ESP8266 AT komutları hakkında daha fazla bilgi edinmek için bağlantıyı izleyin.
Bu nedenle LPC2148'de UART iletişimini kullanmak için LPC2148'de UART portunu başlatmamız gerekir. LPC2148, iki dahili UART bağlantı noktasına (UART0 ve UART1) sahiptir.
LPC2148'deki UART Pinleri
UART_Port |
TX_PIN |
RX_PIN |
UART0 |
P0.0 |
P0.1 |
UART1 |
P0.8 |
P0.9 |
LPC2148'de UART0'ı başlatma
LPC2148'in pinlerinin genel amaçlı pinler olduğunu bildiğimiz için UART0'ı kullanmak için PINSEL0 registerını kullanmamız gerekiyor. UART0'ı başlatmadan önce, UART özelliğini kullanmak için LPC2148'de kullanılan bu UART kayıtlarını öğrenelim.
LPC2148'deki UART Kayıtları
Aşağıdaki tablo programlamada kullanılan bazı önemli kayıtları göstermektedir. Gelecekteki eğitimlerimizde, LPC2148'de UART için kullanılan diğer yazmaçları kısaca göreceğiz.
UART0 için x-0 ve UART1 için x-1:
KAYIT OL |
KAYIT ADI |
KULLANIM |
UxRBR |
Arabellek Kaydı Alın |
Yakın Zamanda Alınan Değeri İçeriyor |
UxTHR |
Holding Kaydı İlet |
Aktarılacak Verileri İçerir |
UxLCR |
Hat Kontrol Kaydı |
UART çerçeve formatını içerir (Veri Bit Sayısı, Durdurma biti) |
UxDLL |
Bölen Mandalı LSB |
UART baud hızı jeneratör değerinin LSB'si |
UxDLM |
Divizör Mandalı MSB |
UART baud hızı jeneratör değerinin MSB'si |
UxIER |
Kaydı Etkinleştirin Kes |
UART0 veya UART1 kesinti kaynaklarını etkinleştirmek için kullanılır |
UxIIR |
Kimlik Kaydını Kes |
Önceliği ve bekleyen kesintilerin kaynağına sahip durum kodunu içerir |
Devre Şeması ve Bağlantılar
LPC2148, ESP8266 ve FTDI arasındaki bağlantılar aşağıda gösterilmiştir
LPC2148 |
ESP8266 |
FTDI |
TX (P0.0) |
RX |
NC |
RX (P0.1) |
TX |
RX |
ESP8266, 3.3V voltaj Regülatörü ile çalıştırılır ve FTDI & LPC2148, USB'den güç alır.
FTDI neden burada?Bu eğitimde, FTDI'nin RX pinini (USB'den UART TTL'ye) LPC2148 RX pinine daha fazla bağlı olan ESP8266 TX pinine bağladık, böylece ESP8266 modülünün cevabını macun, Arduino IDE gibi herhangi bir terminal yazılımı kullanarak görebiliriz.. Ancak bunun için baud hızını ESP8266 Wi-Fi modülünün baud hızına göre ayarlayın. (Baud Hızım 9600).
ESP8266 arabirimi için LPC2148'de UART0'ın programlanmasında yer alan adımlar
ESP8266'yı IoT uyumlu hale getirecek LPC2148 ile bağlamak için programlama adımları aşağıdadır.
Adım 1: - Önce PINSEL0 yazmacındaki UART0 TX & RX pinlerini başlatmamız gerekir.
(TX olarak P0.0 ve RX olarak P0.1) PINSEL0 = PINSEL0 - 0x00000005;
Adım 2: - U0LCR'de (Hat Kontrol Kaydı) sonra, DLAB'ı (Bölen Mandal Erişim Biti) etkinleştirdikçe 1'e ayarlayın ve ardından durdurma bitlerinin sayısını 1 ve veri çerçevesi uzunluğunu 8 bit olarak ayarlayın.
U0LCR = 0x83;
Adım 3: - Şimdi dikkat edilmesi gereken önemli adım, PCLK değerine ve istenen baud hızına bağlı olarak U0DLL & U0DLM değerlerini ayarlamaktır. Normalde ESP8266 için 9600 baud hızı kullanıyoruz. O halde UART0 için 9600 baud hızını nasıl ayarlayacağımızı görelim.
Baud hızı hesaplaması için formül:
Nerede, PLCK: Frekansta Çevresel Saat (MHz)
U0DLM, U0DLL: Baud Rate jeneratör bölücü kayıtları
MULVAL, DIVADDVAL: Bu kayıtlar fraksiyon üreteç değerleridir
Baud Rate 9600 için PCLK = 15MHZ ile
MULVAL = 1 & DIVADDVAL = 0
256 * U0DLM + U0DLL = 97,65
Yani U0DLM = 0 ve U0DLL = 97 elde ediyoruz (Kesire izin verilmez)
Bu yüzden aşağıdaki kodu kullanıyoruz:
U0DLM = 0x00; U0DLL = 0x61; (97'nin onaltılık değeri)
Adım 4: - Son olarak, DLA (Divisor Latch Access) 'i LCR'de 0 olarak devre dışı bırakmalıyız.
Böylece sahibiz
U0LCR & = 0x0F;
Adım 5: - Bir Karakter İletmek için, U0THR'ye gönderilecek baytı yükleyin ve THRE'nin YÜKSEK hale gelmesiyle gösterilen bayt iletilene kadar bekleyin.
geçersiz UART0_TxChar (karakter ch) { U0THR = ch; while ((U0LSR & 0x40) == 0); }
Adım 6: - Bir Stringi iletmek için aşağıdaki fonksiyon kullanılır. String verilerini tek tek göndermek için yukarıdaki adımdan karakter işlevini kullandık.
void UART0_SendString (char * str) { uint8_t i = 0; while (str! = '\ 0') { UART0_TxChar (str); i ++; } }
Adım 7: - Bir dizi almak için, burada bir ESP8266 Wi-Fi modülü, AT komutunu her gönderdiğimizde veya bir ESP8266, gönderdiğimiz gibi LPC2148'e veri gönderdiğinde, verileri LPC2148'in RX pinine geri göndereceğinden, burada kesinti servis rutini işlevi kullanılır. ESP8266'nın bir web sunucusuna veri.
Örnek: LPC2148'den ESP8266'ya AT komutunu gönderdiğimizde (“AT \ r \ n”) Wi-Fi modülünden “OK” yanıtı alıyoruz.
Bu nedenle, ESP8266 Wi-Fi modülünden alınan değeri kontrol etmek için burada bir kesme kullanıyoruz, çünkü ISR kesinti hizmeti rutini en yüksek önceliğe sahip.
Dolayısıyla, bir ESP8266, LPC2148'in RX pinine veri gönderdiğinde, kesme ayarlanır ve ISR işlevi yürütülür.
Adım 8: - To UART0 için kesmelerini etkinleştirmek, kullanım aşağıdaki kodla
VICintEnable UART0 için kesme etkinleştirmek için kullanılan register sağlayacak kesme yönlendirdik edilir.
VICIntEnable - = (1 << 6);
VICVecCnt10 kesme kontrol kayıt vectored edilir UART0 için ayırdığı yuvası olduğunu.
VICVectCntl0 = (1 << 5) - 6;
Daha sonra, VICVectaddr0 , kesme servis rutini ISR adresine sahip vektörlü kesme adres yazmacıdır .
VICVectAddr0 = (imzasız) UART0_ISR;
Sonra RBR Receive buffer register için interrupt atamamız gerekir. Bu yüzden Interrupt enable register (U0IER) 'de RBR için ayarladık. Böylece veri aldığımızda bu interrupt service rutini (ISR) çağrılır.
U0IER = IER_RBR;
Son olarak, ESP8266 Wi-Fi Modülünden veri aldığımızda belirli bir görevi yerine getirmesi gereken ISR işlevine sahibiz. Burada sadece U0RBR'de bulunan ESP8266'dan alınan değeri okuyoruz ve bu değeri UART0_BUFFER'da saklıyoruz. Son olarak, ISR'nin sonunda, VICVectAddr sıfır veya kukla değerle ayarlanmalıdır.
void UART0_ISR () __irq { işaretsiz karakter IIRValue; IIRValue = U0IIR; IIRValue >> = 1; IIRValue & = 0x02; eğer (IIRValue == IIR_RDA) { UART_BUFFER = U0RBR; uart0_count ++; eğer (uart0_count == BUFFER_SIZE) { uart0_count = 0; } } VICVectAddr = 0x0; }
Adım 9: - ESP8266 Wi-Fi modülünün AP modunda ayarlanması gerektiğinden, UART0_SendString () işlevini kullanarak LPC2148'den saygın AT komutlarını göndermemiz gerekiyor.
LPC2148 dan ESP8266 gönderilen AT komutları aşağıda belirtilmiştir. Her AT komutunu gönderdikten sonra ESP8266 "Tamam" ile yanıt verir
1. AT'yi ESP8266'ya gönderir
UART0_SendString ("AT \ r \ n"); gecikme_ms (3000);
2. AT + CWMODE = 2 gönderir (ESP8266'yı AP modunda ayarlama).
UART0_SendString ("AT + CWMODE = 2 \ r \ n"); gecikme_ms (3000);
3. AT + CIFSR gönderir (AP'nin IP'sini almak için)
UART0_SendString ("AT + CIFSR \ r \ n"); gecikme_ms (3000);
4. AT + CIPMUX = 1 gönderir (Çoklu Bağlantılar İçin)
UART0_SendString ("AT + CIPMUX = 1 \ r \ n"); gecikme_ms (3000);
5. AT + CIPSERVER = 1,80'de gönderir (ESP8266 SUNUCUYU AÇIK PORT ile ETKİNLEŞTİRMEK İÇİN)
UART0_SendString ("AT + CIPSERVER = 1,80 \ r \ n"); gecikme_ms (3000);
Hex Dosyasını LPC2148'e Programlama ve Yanıp Sönme
ARM7-LPC2148'i programlamak için keil uVision ve Flash Magic aracına ihtiyacımız var. ARM7 Stick'i mikro USB portu üzerinden programlamak için burada bir USB Kablosu kullanılır. Keil kullanarak kod yazıyoruz ve bir hex dosyası oluşturuyoruz ve ardından HEX dosyası Flash Magic kullanarak ARM7 çubuğuna flash yapıyor. Keil uVision ve Flash Magic'in yüklenmesi ve bunların nasıl kullanılacağı hakkında daha fazla bilgi için ARM7 LPC2148 Mikrodenetleyiciye Başlarken bağlantısını izleyin ve Keil uVision kullanarak Programlayın.
Eğitimin sonunda programın tamamı verilmektedir.
Not: HEX dosyasını LPC2148'e yüklerken ESP8266 Wi-Fi Modülüne ve LPC2148 ile bağlanan FTDI modülüne güç vermemelisiniz.
LPC2148 ile ESP8266 IoT Web Sunucusunu kullanarak LED'i kontrol etme
Adım 1: - HEX dosyasını LPC2148'e yükledikten sonra, FTDI modülünü USB kablosuyla PC'ye bağlayın ve macun terminal yazılımını açın.
Seri'yi seçin ve ardından PC'nize veya DİZÜSTÜ benimkine göre COM bağlantı noktasını seçin (COM3). Baud hızı 9600'dür.
Adım 2: - Şimdi ESP8266 Wi-Fi Modülünü sıfırlayın veya sadece KAPATIP tekrar AÇIN, macun terminali aşağıda gösterildiği gibi ESP8266 Wi-Fi modülünün yanıtını gösterecektir. \
Adım 3: - Şimdi LPC2148 üzerindeki RESET düğmesine basın. Bundan sonra LPC2148, ESP8266'ya AT komutları göndermeye başlar. Macun terminalinde bunun cevabını görebiliriz.
Adım 4: - Yukarıdaki resimde görebileceğiniz gibi, ESP8266, AP modu olan MODE 2'de ayarlanmıştır ve APIP'nin adresi 192.168.4.1'dir. Bu adresi not edin çünkü bu adres, LPC2148'e bağlı LED'i kontrol etmek için web sayfası HTML kodunda sabit kodlanacaktır.
Önemli : ESP8266 AP modundayken, bilgisayarınızı ESP8266 AP'ye bağlamalısınız. ESP8266 modülümün altındaki resme bakın, ESP_06217B adına AP'yi gösteriyor (Açık ve şifresi yok).
Adım 5: - Bilgisayarı ESP8266 AP'ye bağladıktan sonra, bir not defteri açın ve aşağıdaki HTML programı web sayfasını kopyalayıp yapıştırın. APIP adresini ESP8266 Wi-Fi modülünüze göre değiştirdiğinizden emin olun.
Circuit Digest'e hoş geldiniz
ESP8266 LPC2148 ile arayüz oluşturma: Bir LED'i kontrol etmek için Web sunucusu oluşturma
LED AÇIK LED KAPALIBu HTML sayfasında, LED'i web sayfasından açmak ve kapatmak için iki köprülü düğme oluşturduk .
Son olarak not defteri belgesini.html uzantısı olarak kaydedin
Web sayfası web tarayıcısında aşağıdaki gibi gösterilecektir.
Burada adres, AP IP adresi 192.168.4.1'dir ve aşağıdaki LPC2148'deki bu mantığı kullanarak LED'i AÇMAK ve KAPATMAK için @ ve% değerlerini gönderiyoruz.
while (1) { if (uart0_count! = 0) { COMMAND = UART0_BUFFER; if (COMMAND == LEDON) // ESP8266'dan alınan değere bağlı olarak LED'i AÇIK veya KAPALI olarak ayarlamak için mantık { IOSET1 = (1 << 20); // OUTPUT HIGH delay_ms (100); } else if (COMMAND == LEDOFF) { IOCLR1 = (1 << 20); // ÇIKIŞ DÜŞÜK gecikmesini ayarlar_ms (100); } } }
ESP8266 ve ARM7 mikro denetleyici LPC2148 kullanılarak bir cihaz bu şekilde uzaktan kontrol edilebilir. Tam kod ve açıklama videosu aşağıda verilmiştir.