- Komponen Diperlukan
- Modul Wi-Fi ESP8266
- Menghubungkan LPC2148 dengan ESP8266 untuk Komunikasi Serial
- Diagram Sirkuit dan Koneksi
- Langkah-langkah yang terlibat dalam pemrograman UART0 di LPC2148 untuk antarmuka ESP8266
- Mengontrol LED menggunakan ESP8266 IoT Webserver dengan LPC2148
ESP8266 Wi-Fi transceiver menyediakan cara untuk menghubungkan mikrokontroler ke jaringan. Ini banyak digunakan dalam proyek IoT karena murah, kecil dan mudah digunakan. Kami sebelumnya telah menggunakannya untuk membuat webserver menggunakan webserver Raspberry dan webserver Arduino.
Dalam tutorial ini kita akan menghubungkan Modul Wi-Fi ESP8266 dengan mikrokontroler ARM7-LPC2148 dan membuat server web untuk mengontrol LED yang terhubung ke LPC2148. Alur kerja akan berjalan seperti ini:
- Kirim perintah AT dari LPC2148 ke ESP8266 untuk mengkonfigurasi ESP8266 dalam mode AP
- Hubungkan laptop atau komputer Wi-Fi dengan titik akses ESP8266
- Buat halaman web HTML di PC dengan alamat IP titik akses dari server web ESP8266
- Buat program untuk LPC2148 untuk mengontrol LED sesuai dengan nilai yang diterima dari ESP8266
Jika Anda benar-benar baru menggunakan modul Wi-Fi ESP8266, kunjungi tautan di bawah ini untuk membiasakan diri dengan modul Wi-Fi ESP8266.
- Memulai dengan ESP8266 Wi-Fi Transceiver (Bagian 1)
- Memulai dengan ESP8266 (Bagian 2): Menggunakan Perintah AT
- Memulai dengan ESP8266 (Bagian 3): Pemrograman ESP8266 dengan Arduino IDE dan Flashing Memori
Komponen Diperlukan
Perangkat keras:
- ARM7-LPC2148
- Modul Wi-Fi ESP8266
- FTDI (USB ke UART TTL)
- LED
- IC Regulator Tegangan 3.3V
- Papan tempat memotong roti
Perangkat lunak:
- UVisi UTAMA
- Alat Ajaib Flash
- Dempul
Modul Wi-Fi ESP8266
ESP8266 adalah modul Wi-Fi berbiaya rendah yang banyak digunakan untuk proyek tertanam yang membutuhkan daya rendah 3,3V. Ini hanya menggunakan dua kabel TX dan RX untuk komunikasi serial dan transfer data antara ESP8266 dan setiap mikrokontroler yang memiliki port UART.
Diagram Pin untuk modul Wi-Fi ESP8266
- GND, Ground (0 V)
- TX, Mengirimkan data bit X
- GPIO 2, Input / output tujuan umum No.2
- CH_PD, Chip mati
- GPIO 0, Input / output tujuan umum No. 0
- RST, Setel Ulang
- RX, Terima data bit X
- VCC, Tegangan (+3,3 V)
Menyiapkan Papan Sirkuit ESP8266
ESP8266 membutuhkan pasokan konstan 3,3V dan tidak ramah breadboard. Jadi dalam tutorial kami sebelumnya tentang ESP8266, kami membuat papan sirkuit untuk ESP8266 dengan regulator Tegangan 3.3V, tombol tekan RESET dan pengaturan jumper untuk mode switching (perintah AT atau mode flash). Itu juga dapat diatur di papan tempat memotong roti tanpa menggunakan papan kinerja.
Di sini kami menyolder semua komponen pada papan tempat memotong roti untuk membuat papan Wi-Fi ESP8266 kami sendiri
Pelajari antarmuka ESP8266 dengan berbagai mikrokontroler dengan mengikuti tautan di bawah ini:
- Memulai dengan ESP8266 (Bagian 3): Pemrograman ESP8266 dengan Arduino IDE dan Flashing Memori
- Menghubungkan ESP8266 dengan STM32F103C8: Membuat Server Web
- Mengirim Email Menggunakan MSP430 Launchpad dan ESP8266
- Antarmuka ESP8266 dengan Mikrokontroler PIC16F877A
- Pemantauan Dumpster Berbasis IOT menggunakan Arduino & ESP8266
Semua proyek berbasis ESP8266 dapat ditemukan di sini.
Menghubungkan LPC2148 dengan ESP8266 untuk Komunikasi Serial
Untuk menghubungkan ESP8266 dengan LPC2148, kita harus membuat komunikasi serial UART antara kedua perangkat ini untuk mengirim perintah AT dari LPC2148 ke ESP8266 untuk mengkonfigurasi modul Wi-Fi ESP8266. Untuk mengetahui lebih lanjut tentang ESP8266 perintah AT ikuti tautannya.
Jadi untuk menggunakan komunikasi UART di LPC2148 kita perlu menginisialisasi port UART di LPC2148. LPC2148 memiliki dua port UART inbuilt (UART0 dan UART1).
Pin UART di LPC2148
UART_Port |
TX_PIN |
RX_PIN |
UART0 |
P0.0 |
P0.1 |
UART1 |
P0.8 |
P0.9 |
Menginisialisasi UART0 di LPC2148
Seperti yang kita ketahui bahwa pin LPC2148 merupakan pin yang bersifat umum sehingga perlu menggunakan register PINSEL0 untuk menggunakan UART0. Sebelum menginisialisasi UART0 beri tahu tentang register UART ini yang digunakan di LPC2148 untuk menggunakan fitur UART.
UART Register di LPC2148
Tabel di bawah ini menunjukkan beberapa register penting yang digunakan dalam pemrograman. Dalam tutorial mendatang kita akan melihat secara singkat tentang register lain yang digunakan untuk UART di LPC2148.
x-0 untuk UART0 & x-1 untuk UART1:
DAFTAR |
DAFTAR NAMA |
MENGGUNAKAN |
UxRBR |
Terima Buffer Register |
Berisi Nilai yang Baru Diterima |
UxTHR |
Mengirimkan Holding Register |
Berisi Data yang akan dikirim |
UxLCR |
Daftar Kontrol Jalur |
Berisi format bingkai UART (No of Data Bits, Stop bit) |
UxDLL |
Latch Pembagi LSB |
LSB dari nilai generator baud rate UART |
UxDLM |
Latch Pembagi MSB |
MSB dari nilai generator baud rate UART |
UxIER |
Interrupt Enable Register |
Ini digunakan untuk mengaktifkan sumber interupsi UART0 atau UART1 |
UxIIR |
Interrupt Identification Register |
Ini berisi kode status yang memiliki prioritas dan sumber interupsi yang tertunda |
Diagram Sirkuit dan Koneksi
Koneksi antara LPC2148, ESP8266 dan FTDI ditunjukkan di bawah ini
LPC2148 |
ESP8266 |
FTDI |
TX (P0.0) |
RX |
NC |
RX (P0.1) |
TX |
RX |
ESP8266 ditenagai melalui Regulator tegangan 3.3V dan FTDI & LPC2148 ditenagai dari USB.
Mengapa FTDI ada di sini?Dalam tutorial ini kami telah menghubungkan pin RX FTDI (USB ke UART TTL) ke pin ESP8266 TX yang selanjutnya dihubungkan ke pin RX LPC2148, sehingga kami dapat melihat respon modul ESP8266 menggunakan perangkat lunak terminal seperti dempul, Arduino IDE. Namun untuk itu atur baud rate sesuai dengan baud rate modul Wi-Fi ESP8266. (Baud Rate saya adalah 9600).
Langkah-langkah yang terlibat dalam pemrograman UART0 di LPC2148 untuk antarmuka ESP8266
Berikut adalah langkah-langkah pemrograman untuk menghubungkan ESP8266 dengan LPC2148 yang akan membuatnya kompatibel dengan IoT.
Langkah 1: - Pertama kita perlu menginisialisasi pin UART0 TX & RX di register PINSEL0.
(P0.0 sebagai TX dan P0.1 sebagai RX) PINSEL0 = PINSEL0 - 0x00000005;
Langkah 2: - Selanjutnya di U0LCR (Line Control Register), atur DLAB (Divisor Latch Access Bit) ke 1 karena memungkinkannya dan kemudian atur no stop bits sebagai 1 dan panjang frame data 8-bit.
U0LCR = 0x83;
Langkah 3: - Sekarang langkah penting yang harus diperhatikan adalah mengatur nilai U0DLL & U0DLM tergantung pada nilai PCLK dan baud rate yang diinginkan. Biasanya untuk ESP8266 kami menggunakan baud rate 9600. Jadi mari kita lihat cara mengatur baud rate 9600 untuk UART0.
Rumus untuk perhitungan baud rate:
Dimana, PLCK: Jam Periferal dalam Frekuensi (MHz)
U0DLM, U0DLL: register pembagi generator Baud Rate
MULVAL, DIVADDVAL: Register ini adalah nilai generator pecahan
Untuk Baud Rate 9600 dengan PCLK = 15MHZ
MULVAL = 1 & DIVADDVAL = 0
256 * U0DLM + U0DLL = 97,65
Jadi U0DLM = 0 dan kita mendapatkan U0DLL = 97 (Pecahan tidak diperbolehkan)
Jadi kami menggunakan kode berikut:
U0DLM = 0x00; U0DLL = 0x61; (Nilai heksadesimal 97)
Langkah 4: - Akhirnya, kita harus menonaktifkan DLA (Divisor Latch Access) disetel ke 0 di LCR.
Jadi kita punya
U0LCR & = 0x0F;
Langkah 5: - Untuk Mengirimkan Karakter, muat byte yang akan dikirim dalam U0THR dan tunggu sampai byte tersebut ditransmisikan, yang ditunjukkan dengan THRE menjadi TINGGI.
batal UART0_TxChar (char ch) { U0THR = ch; sementara ((U0LSR & 0x40) == 0); }
Langkah 6: - Untuk Mengirimkan String, fungsi di bawah ini digunakan. Untuk mengirim data string satu per satu kami menggunakan fungsi karakter dari langkah di atas.
batal UART0_SendString (char * str) { uint8_t i = 0; sementara (str! = '\ 0') { UART0_TxChar (str); i ++; } }
Langkah 7: - Untuk Menerima string, fungsi rutin layanan interupsi digunakan di sini karena modul Wi-Fi ESP8266 akan mengirimkan data kembali ke pin RX LPC2148 setiap kali kami mengirim perintah AT atau setiap kali ESP8266 mengirim data ke LPC2148, seperti yang kami kirim data ke server web ESP8266.
Contoh: Ketika kita mengirim perintah AT ke ESP8266 dari LPC2148 (“AT \ r \ n”) maka kita mendapatkan balasan “OK” dari modul Wi-Fi.
Jadi kami menggunakan interupsi di sini untuk memeriksa nilai yang diterima dari modul Wi-Fi ESP8266 karena rutinitas layanan interupsi ISR memiliki prioritas tertinggi.
Jadi setiap kali ESP8266 mengirim data ke pin RX dari LPC2148, interupsi diatur dan fungsi ISR dijalankan.
Langkah 8: - Untuk mengaktifkan interupsi untuk UART0, gunakan kode berikut
The VICintEnable adalah vektor interrupt memungkinkan mendaftar digunakan untuk mengaktifkan interupsi untuk UART0.
VICIntEnable - = (1 << 6);
The VICVecCnt10 adalah vektor interupsi register kontrol yang mengalokasikan slot untuk UART0.
VICVectCntl0 = (1 << 5) - 6;
Selanjutnya VICVectaddr0 adalah register alamat interupsi vektor yang memiliki alamat ISR rutin layanan interupsi.
VICVectAddr0 = (tidak ditandatangani) UART0_ISR;
Kemudian kita harus menetapkan interupsi untuk RBR Receive buffer register. Jadi di Interrupt enable register (U0IER) kita atur untuk RBR. Sehingga interrupt service routine (ISR) dipanggil saat kita menerima data.
U0IER = IER_RBR;
Terakhir, kami memiliki fungsi ISR yang perlu melakukan tugas tertentu saat kami menerima data dari Modul Wi-Fi ESP8266. Di sini kita baru saja membaca nilai yang diterima dari ESP8266 yang ada di U0RBR dan menyimpan nilai tersebut di UART0_BUFFER. Akhirnya di akhir ISR, VICVectAddr harus disetel dengan nilai nol atau dummy.
batal UART0_ISR () __irq { unsigned char IIRValue; IIRValue = U0IIR; IIRValue >> = 1; IIRValue & = 0x02; jika (IIRValue == IIR_RDA) { UART_BUFFER = U0RBR; uart0_count ++; jika (uart0_count == BUFFER_SIZE) { uart0_count = 0; } } VICVectAddr = 0x0; }
Langkah 9: - Karena modul Wi-Fi ESP8266 harus disetel dalam mode AP, kita perlu mengirim perintah AT yang dihormati dari LPC2148 dengan menggunakan fungsi UART0_SendString () .
The perintah AT yang dikirim ke ESP8266 dari LPC2148 disebutkan di bawah ini. Setelah mengirim setiap perintah AT, ESP8266 merespons dengan "OK"
1. Mengirim AT ke ESP8266
UART0_SendString ("AT \ r \ n"); delay_ms (3000);
2. Mengirim AT + CWMODE = 2 (Mengatur ESP8266 dalam mode AP).
UART0_SendString ("AT + CWMODE = 2 \ r \ n"); delay_ms (3000);
3. Mengirim AT + CIFSR (Untuk mendapatkan IP AP)
UART0_SendString ("AT + CIFSR \ r \ n"); delay_ms (3000);
4. Mengirim AT + CIPMUX = 1 (Untuk Koneksi Mutliple)
UART0_SendString ("AT + CIPMUX = 1 \ r \ n"); delay_ms (3000);
5. Mengirim AT + CIPSERVER = 1,80 (Untuk MENGAKTIFKAN ESP8266 SERVER dengan OPEN PORT)
UART0_SendString ("AT + CIPSERVER = 1,80 \ r \ n"); delay_ms (3000);
Pemrograman dan Flashing File Hex ke LPC2148
Untuk memprogram ARM7-LPC2148 kita membutuhkan alat keil uVision & Flash Magic. Kabel USB digunakan di sini untuk memprogram ARM7 Stick melalui port micro USB. Kami menulis kode menggunakan Keil dan membuat file hex dan kemudian file HEX di-flash ke tongkat ARM7 menggunakan Flash Magic. Untuk mengetahui lebih lanjut tentang menginstal keil uVision dan Flash Magic dan bagaimana menggunakannya ikuti link Memulai Dengan Mikrokontroler ARM7 LPC2148 dan Program itu menggunakan Keil uVision.
Program lengkap diberikan di akhir tutorial.
Catatan: Saat mengunggah file HEX ke LPC2148 Anda tidak boleh menyalakan Modul Wi-Fi ESP8266 dan modul FTDI yang terhubung dengan LPC2148.
Mengontrol LED menggunakan ESP8266 IoT Webserver dengan LPC2148
Langkah 1: - Setelah mengunggah file HEX ke LPC2148, hubungkan modul FTDI ke PC melalui kabel USB dan buka perangkat lunak terminal putty.
Pilih Serial kemudian Pilih COM port sesuai dengan PC atau LAPTOP saya tadi (COM3). Tingkat baud adalah 9600.
Langkah 2: - Sekarang setel ulang Modul Wi-Fi ESP8266 atau cukup MATIKAN dan HIDUPKAN lagi, terminal dempul akan menampilkan respons modul Wi-Fi ESP8266 seperti yang ditunjukkan di bawah ini. \
Langkah 3: - Sekarang tekan tombol RESET pada LPC2148. Setelah itu LPC2148 mulai mengirim perintah AT ke ESP8266. Kita bisa melihat responnya di terminal dempul.
Langkah 4: - Seperti yang Anda lihat pada gambar di atas, ESP8266 diatur dalam MODE 2 yaitu mode AP dan alamat APIP adalah 192.168.4.1. Catat alamat ini karena alamat ini akan diberi kode keras dalam kode HTML halaman web untuk mengontrol LED yang terhubung ke LPC2148.
Penting : Saat ESP8266 dalam mode AP Anda harus menghubungkan PC Anda ke ESP8266 AP. Lihat gambar di bawah modul ESP8266 saya menunjukkan AP atas nama ESP_06217B (Terbuka dan tidak memiliki kata sandi).
Langkah 5: - Setelah menghubungkan PC ke ESP8266 AP, buka notepad dan copy-paste halaman web program HTML berikut. Pastikan untuk mengubah alamat APIP sesuai dengan modul Wi-Fi ESP8266 Anda
Selamat datang di Circuit Digest
ESP8266 Antarmuka dengan LPC2148: Membuat Webserver untuk mengontrol LED
LED ON LED OFFDi halaman HTML ini, kami telah membuat dua tombol hyperlink untuk Menghidupkan dan mematikan LED dari halaman web.
Terakhir simpan dokumen notepad sebagai ekstensi .html
Halaman web akan ditampilkan seperti di bawah ini di browser web.
Di sini alamatnya adalah alamat IP AP 192.168.4.1 dan kami mengirim nilai @ dan% untuk menghidupkan dan mematikan LED dengan menggunakan logika di bawah ini di LPC2148.
sementara (1) { if (uart0_count! = 0) { COMMAND = UART0_BUFFER; if (COMMAND == LEDON) // Logika untuk menyetel LED ON atau OFF tergantung pada nilai yang diterima dari ESP8266 { IOSET1 = (1 << 20); // Menetapkan OUTPUT HIGH delay_ms (100); } lain jika (COMMAND == LEDOFF) { IOCLR1 = (1 << 20); // Menetapkan OUTPUT RENDAH delay_ms (100); } } }
Beginilah cara perangkat dapat dikontrol dari jarak jauh menggunakan mikrokontroler ESP8266 dan ARM7 LPC2148. Kode lengkap dan video penjelasan diberikan di bawah ini.