- Komponen Diperlukan
- Modul Wi-Fi ESP8266
- Menghubungkan LPC2148 dengan ESP8266 untuk Serial Communication
- Diagram dan Sambungan Litar
- Langkah-langkah yang terlibat dalam pengaturcaraan UART0 di LPC2148 untuk menghubungkan ESP8266
- Mengawal LED menggunakan ESP8266 IoT Webserver dengan LPC2148
Pemancar Wi-Fi ESP8266 menyediakan cara untuk menyambungkan mikrokontroler ke rangkaian. Ia digunakan secara meluas dalam projek IoT kerana harganya murah, kecil dan mudah digunakan. Kami sebelum ini menggunakannya untuk membuat pelayan web menggunakan pelayan laman web Raspberry dan pelayan laman web Arduino.
Dalam tutorial ini kita akan menghubungkan Modul Wi-Fi ESP8266 dengan mikrokontroler ARM7-LPC2148 dan membuat pelayan web untuk mengawal LED yang disambungkan ke LPC2148. Aliran kerja akan berjalan seperti ini:
- Hantarkan perintah AT dari LPC2148 ke ESP8266 untuk mengkonfigurasi ESP8266 dalam mod AP
- Sambungkan Wi-Fi komputer riba atau komputer dengan titik Akses ESP8266
- Buat laman web HTML di PC dengan alamat IP titik akses dari pelayan web ESP8266
- Buat program untuk LPC2148 untuk mengawal LED mengikut nilai yang diterima dari ESP8266
Sekiranya anda baru menggunakan modul Wi-Fi ESP8266, lawati pautan di bawah untuk mengetahui modul Wi-Fi ESP8266.
- Bermula dengan ESP8266 Wi-Fi Transceiver (Bahagian 1)
- Bermula dengan ESP8266 (Bahagian 2): Menggunakan Perintah AT
- Bermula dengan ESP8266 (Bahagian 3): Pengaturcaraan ESP8266 dengan Arduino IDE dan Memori Memori
Komponen Diperlukan
Perkakasan:
- ARM7-LPC2148
- Modul Wi-Fi ESP8266
- FTDI (USB ke UART TTL)
- LED
- IC Pengatur Voltan 3.3V
- Papan roti
Perisian:
- KEILAI uVision
- Alat Sihir Kilat
- Dempul
Modul Wi-Fi ESP8266
ESP8266 adalah modul Wi-Fi kos rendah yang banyak digunakan untuk projek terbenam yang memerlukan kuasa rendah 3.3V. Ia hanya menggunakan dua wayar TX dan RX untuk komunikasi bersiri dan pemindahan data antara ESP8266 dan mana-mana mikrokontroler yang mempunyai port UART.
Pin Pin untuk modul Wi-Fi ESP8266
- GND, Tanah (0 V)
- TX, Hantar data bit X
- GPIO 2, input / output tujuan umum No. 2
- CH_PD, Chip power-down
- GPIO 0, input / output tujuan umum No. 0
- RST, Tetapkan Semula
- RX, Terima bit data X
- VCC, Voltan (+3.3 V)
Menyiapkan Papan Litar ESP8266
ESP8266 memerlukan bekalan berterusan 3.3V dan tidak mesra papan roti. Oleh itu, dalam tutorial sebelumnya mengenai ESP8266, kami membuat papan litar untuk ESP8266 dengan pengatur voltan 3.3V, butang RESET dan penyediaan jumper untuk menukar mod (perintah AT atau mod kilat). Ia juga dapat disiapkan di papan roti tanpa menggunakan papan wangi.
Di sini kami menyolder semua komponen pada papan roti untuk membuat papan Wi-Fi ESP8266 kami sendiri
Pelajari antara muka ESP8266 dengan pelbagai pengawal mikro dengan mengikuti pautan di bawah:
- Bermula dengan ESP8266 (Bahagian 3): Pengaturcaraan ESP8266 dengan Arduino IDE dan Memori Memori
- Menghubungkan ESP8266 dengan STM32F103C8: Membuat Pelayan Web
- Menghantar E-mel Menggunakan MSP430 Launchpad dan ESP8266
- Memadankan ESP8266 dengan Mikrokontroler PIC16F877A
- Pemantauan Dumpster Berasaskan IOT menggunakan Arduino & ESP8266
Semua projek berasaskan ESP8266 boleh didapati di sini.
Menghubungkan LPC2148 dengan ESP8266 untuk Serial Communication
Untuk menghubungkan ESP8266 dengan LPC2148, kita mesti mewujudkan komunikasi bersiri UART antara kedua peranti ini untuk menghantar arahan AT dari LPC2148 ke ESP8266 untuk mengkonfigurasi modul Wi-Fi ESP8266. Untuk mengetahui lebih lanjut mengenai perintah ESP8266 AT ikuti pautan.
Oleh itu, untuk menggunakan komunikasi UART di LPC2148, kita perlu menginisialisasi port UART di LPC2148. LPC2148 mempunyai dua port UART terbina dalam (UART0 dan UART1).
Pin UART di LPC2148
UART_Port |
TX_PIN |
RX_PIN |
UART0 |
P0.0 |
P0.1 |
UART1 |
P0.8 |
P0.9 |
Memulakan UART0 dalam LPC2148
Seperti yang kita ketahui bahawa pin LPC2148 adalah pin tujuan umum jadi kita perlu menggunakan register PINSEL0 untuk menggunakan UART0. Sebelum memulakan UART0, ketahui mengenai daftar UART yang digunakan di LPC2148 untuk menggunakan ciri UART.
Daftar UART di LPC2148
Jadual di bawah menunjukkan beberapa daftar penting yang digunakan dalam pengaturcaraan. Dalam tutorial masa depan kami, kami akan melihat secara ringkas mengenai daftar lain yang digunakan untuk UART di LPC2148.
x-0 untuk UART0 & x-1 untuk UART1:
DAFTAR |
NAMA DAFTAR |
PENGGUNAAN |
UxRBR |
Terima Daftar Penyangga |
Mengandungi Nilai Yang Baru Diterima |
UxTHR |
Daftar Pemegang Transmit |
Mengandungi Data yang akan dihantar |
UxLCR |
Daftar Kawalan Talian |
Mengandungi format bingkai UART (Bilangan Data, bit Berhenti) |
UxDLL |
Pembahagi Latch LSB |
LSB nilai penjana kadar baud UART |
UxDLM |
Divisor Latch MSB |
Nilai penjana kadar baud MSB dari UART |
UxIER |
Selang Aktifkan Daftar |
Ia digunakan untuk mengaktifkan sumber gangguan UART0 atau UART1 |
UxIIR |
Daftar Pengenalan Ganggu |
Ini mengandungi kod status yang mempunyai keutamaan dan sumber gangguan sementara |
Diagram dan Sambungan Litar
Sambungan antara LPC2148, ESP8266 dan FTDI ditunjukkan di bawah
LPC2148 |
ESP8266 |
FTDI |
TX (P0.0) |
RX |
NC |
RX (P0.1) |
TX |
RX |
ESP8266 dikuasakan melalui Regulator voltan 3.3V dan FTDI & LPC2148 dikuasakan dari USB.
Mengapa FTDI ada di sini?Dalam tutorial ini kami telah menghubungkan pin RX FTDI (USB ke UART TTL) ke pin T8 ESP8266 yang selanjutnya disambungkan ke pin LPC2148 RX, sehingga kita dapat melihat respons modul ESP8266 menggunakan perisian terminal seperti dempul, Arduino IDE. Tetapi untuk itu tetapkan kadar baud mengikut kadar baud modul Wi-Fi ESP8266. (Kadar Baud Saya adalah 9600).
Langkah-langkah yang terlibat dalam pengaturcaraan UART0 di LPC2148 untuk menghubungkan ESP8266
Berikut adalah langkah pengaturcaraan untuk menghubungkan ESP8266 dengan LPC2148 yang akan menjadikannya serasi dengan IoT.
Langkah 1: - Mula-mula kita perlu memulakan pin UART0 TX & RX dalam daftar PINSEL0.
(P0.0 sebagai TX dan P0.1 sebagai RX) PINSEL0 = PINSEL0 - 0x00000005;
Langkah 2: - Selanjutnya dalam U0LCR (Line Control Register), tetapkan DLAB (Divisor Latch Access Bit) ke 1 kerana ia membolehkannya dan kemudian tetapkan no bit berhenti sebagai 1 dan panjang bingkai data 8-bit.
U0LCR = 0x83;
Langkah 3: - Langkah penting yang perlu diberi perhatian ialah menetapkan nilai U0DLL & U0DLM bergantung pada nilai PCLK dan kadar baud yang diinginkan. Biasanya untuk ESP8266 kita menggunakan kadar baud 9600. Oleh itu mari kita lihat cara menetapkan kadar baud 9600 untuk UART0.
Formula untuk pengiraan kadar baud:
Di mana, PLCK: Jam Periferal dalam Frekuensi (MHz)
U0DLM, U0DLL: Daftar pembahagi penjana Baud Rate
MULVAL, DIVADDVAL: Daftar ini adalah nilai penjana pecahan
Untuk Baud Rate 9600 dengan PCLK = 15MHZ
MULVAL = 1 & DIVADDVAL = 0
256 * U0DLM + U0DLL = 97.65
Jadi U0DLM = 0 dan kami mendapat U0DLL = 97 (Pecahan tidak dibenarkan)
Oleh itu, kami menggunakan kod berikut:
U0DLM = 0x00; U0DLL = 0x61; (Nilai perenambelasan 97)
Langkah 4: - Akhirnya, kita mesti menjadikan DLA (Divisor Latch Access) disable diset ke 0 di LCR.
Jadi kita ada
U0LCR & = 0x0F;
Langkah 5: - Untuk Memancarkan Karakter, muatkan bait yang akan dikirim dalam U0THR dan tunggu sehingga bait dihantar, yang ditunjukkan oleh THRE menjadi TINGGI.
batal UART0_TxChar (char ch) { U0THR = ch; sementara ((U0LSR & 0x40) == 0); }
Langkah 6: - Untuk Memancarkan String, fungsi di bawah digunakan. Untuk menghantar data rentetan satu persatu kami menggunakan fungsi watak dari langkah di atas.
batal UART0_SendString (char * str) { uint8_t i = 0; sementara (str! = '\ 0') { UART0_TxChar (str); saya ++; } }
Langkah 7: - Untuk Menerima tali, fungsi rutin perkhidmatan gangguan digunakan di sini kerana modul Wi-Fi ESP8266 akan menghantar data kembali ke pin RX LPC2148 setiap kali kami menghantar perintah AT atau setiap kali ESP8266 mengirim data ke LPC2148, seperti yang kami kirim data ke pelayan web ESP8266.
Contoh: Apabila kita mengirim perintah AT ke ESP8266 dari LPC2148 (“AT \ r \ n”) maka kita akan mendapat balasan “OK” dari modul Wi-Fi.
Oleh itu, kami menggunakan interrupt di sini untuk memeriksa nilai yang diterima dari modul Wi-Fi ESP8266 kerana rutin perkhidmatan gangguan ISR mempunyai keutamaan tertinggi.
Oleh itu, setiap kali ESP8266 mengirim data ke pin RX LPC2148, gangguan ditetapkan dan fungsi ISR dilaksanakan.
Langkah 8: - Untuk mengaktifkan gangguan untuk UART0, gunakan kod berikut
The VICintEnable adalah vektor sampukan membolehkan mendaftar digunakan untuk membolehkan sampukan untuk UART0.
VICIntEnable - = (1 << 6);
The VICVecCnt10 adalah vektor daftar kawalan sampukan yang memperuntukkan slot untuk UART0.
VICVectCntl0 = (1 << 5) - 6;
Seterusnya VICVectaddr0 adalah daftar alamat gangguan vektor yang mempunyai alamat ISR rutin perkhidmatan gangguan.
VICVectAddr0 = (tidak ditandatangani) UART0_ISR;
Kemudian kita harus menetapkan interrupt untuk RBR Receive buffer register. Oleh itu, di Interrupt enabled register (U0IER) kami menetapkan RBR. Sehingga rutin perkhidmatan gangguan (ISR) dipanggil ketika kami menerima data.
U0IER = IER_RBR;
Akhirnya, kita mempunyai fungsi ISR yang perlu melakukan tugas tertentu ketika kita menerima data dari Modul Wi-Fi ESP8266. Di sini kita hanya membaca nilai yang diterima dari ESP8266 yang terdapat di U0RBR dan menyimpan nilai tersebut di UART0_BUFFER. Akhirnya pada akhir ISR VICVectAddr harus ditetapkan dengan nilai sifar atau dummy.
batal UART0_ISR () __irq { char IIRValue yang tidak ditandatangani; IIRValue = U0IIR; Nilai IIR >> = 1; IIRValue & = 0x02; jika (IIRValue == IIR_RDA) { UART_BUFFER = U0RBR; uart0_count ++; jika (uart0_count == BUFFER_SIZE) { uart0_count = 0; } } VICVectAddr = 0x0; }
Langkah 9: - Oleh kerana modul Wi-Fi ESP8266 harus diatur dalam mod AP, kita perlu mengirim perintah AT yang dihormati dari LPC2148 dengan menggunakan fungsi UART0_SendString () .
Perintah AT yang dihantar ke ESP8266 dari LPC2148 disebutkan di bawah. Setelah menghantar setiap arahan AT, ESP8266 bertindak balas dengan "OK"
1. Menghantar AT ke ESP8266
UART0_SendString ("AT \ r \ n"); kelewatan_ms (3000);
2. Menghantar AT + CWMODE = 2 (Menetapkan ESP8266 dalam mod AP).
UART0_SendString ("AT + CWMODE = 2 \ r \ n"); kelewatan_ms (3000);
3. Menghantar AT + CIFSR (Untuk mendapatkan IP AP)
UART0_SendString ("AT + CIFSR \ r \ n"); kelewatan_ms (3000);
4. Menghantar AT + CIPMUX = 1 (Untuk Sambungan Mutliple)
UART0_SendString ("AT + CIPMUX = 1 \ r \ n"); kelewatan_ms (3000);
5. Hantar AT + CIPSERVER = 1,80 (Untuk MENGAKTIFKAN SERVER ESP8266 dengan PORT TERBUKA)
UART0_SendString ("AT + CIPSERVER = 1,80 \ r \ n"); kelewatan_ms (3000);
Memprogramkan dan Mem-Flash Fail Hex ke LPC2148
Untuk Program ARM7-LPC2148, kami memerlukan alat keil uVision & Flash Magic. Kabel USB digunakan di sini untuk memprogram ARM7 Stick melalui port USB mikro. Kami menulis kod menggunakan Keil dan membuat fail hex dan kemudian fail HEX diturunkan ke tongkat ARM7 menggunakan Flash Magic. Untuk mengetahui lebih lanjut mengenai memasang keil uVision dan Flash Magic dan cara menggunakannya, ikuti pautan Memulakan Dengan Mikrokontroler ARM7 LPC2148 dan Program dengan menggunakan Keil uVision.
Program lengkap diberikan pada akhir tutorial.
Catatan: Semasa memuat naik fail HEX ke LPC2148, anda tidak boleh menghidupkan Modul Wi-Fi ESP8266 dan modul FTDI yang dihubungkan dengan LPC2148.
Mengawal LED menggunakan ESP8266 IoT Webserver dengan LPC2148
Langkah 1: - Setelah memuat naik fail HEX ke LPC2148, sambungkan modul FTDI ke PC melalui kabel USB dan buka perisian terminal dempul.
Pilih Serial dan kemudian Pilih port COM mengikut PC anda atau lombong LAPTOP adalah (COM3). Kadar baud adalah 9600.
Langkah 2: - Sekarang tetapkan semula Modul Wi-Fi ESP8266 atau cukup POWER OFF dan POWER ON lagi, terminal dempul akan menunjukkan tindak balas modul Wi-Fi ESP8266 seperti yang ditunjukkan di bawah. \
Langkah 3: - Sekarang tekan butang RESET pada LPC2148. Selepas itu LPC2148 mula menghantar arahan AT ke ESP8266. Kita dapat melihat tindak balasnya di terminal dempul.
Langkah 4: - Seperti yang anda lihat dalam gambar di atas, ESP8266 ditetapkan dalam MODE 2 iaitu mod AP dan alamat APIP adalah 192.168.4.1. Perhatikan alamat ini kerana alamat ini akan dikodkan keras dalam kod HTML halaman web untuk mengawal LED yang disambungkan ke LPC2148.
Penting : Semasa ESP8266 dalam mod AP, anda mesti menyambungkan PC anda ke AP8686 AP. Lihat gambar di bawah modul ESP8266 saya menunjukkan AP dengan nama ESP_06217B (Ia terbuka dan tidak mempunyai kata laluan).
Langkah 5: - Setelah menyambungkan PC ke ESP8266 AP, buka notepad dan copy-paste halaman web program HTML berikut. Pastikan untuk menukar alamat APIP mengikut modul Wi-Fi ESP8266 anda
Selamat Datang ke Circuit Digest
ESP8266 Interfacing dengan LPC2148: Membuat Webserver untuk mengawal LED
LED ON LED MATIDalam halaman HTML ini, kami telah membuat dua butang hyperlink untuk menghidupkan dan mematikan LED dari laman web.
Akhirnya simpan dokumen notepad sebagai pelanjutan .html
Halaman web akan ditunjukkan seperti di bawah di penyemak imbas web.
Di sini alamatnya adalah alamat IP AP 192.168.4.1 dan kami menghantar nilai @ dan% untuk menghidupkan dan mematikan LED dengan menggunakan logik di bawah ini di LPC2148.
sementara (1) { if (uart0_count! = 0) { COMMAND = UART0_BUFFER; if (COMMAND == LEDON) // Logik untuk menyetel atau mematikan LED bergantung pada nilai yang diterima dari ESP8266 { IOSET1 = (1 << 20); // Tetapkan OUTPUT HIGH_ms (100); } lain jika (COMMAND == LEDOFF) { IOCLR1 = (1 << 20); // Tetapkan OUTPUT LOW_ms (100); } } }
Ini adalah bagaimana peranti dapat dikendalikan dari jarak jauh menggunakan ESP8266 dan mikrokontroler ARM7 LPC2148. Video kod dan penjelasan lengkap diberikan di bawah.