- Bahan yang Dibutuhkan:
- Memprogram mikrokontroler PIC:
- Fungsi di Perpustakaan ESP8266:
- Program Sampel:
- Keluaran simulasi:
- Verifikasi Keluaran:
- Menambahkan fungsi ke Perpustakaan ESP8266:
Pada artikel ini, mari kita bahas cara menghubungkan modul WIFI ESP8266 dengan mikrokontroler PIC. Sejauh ini Anda mungkin telah menggunakan modul ESP8266 sebagai mikrokontroler mandiri atau mungkin telah menggunakannya dengan pustaka Arduino. Tapi, ketika datang ke proyek sistem tertanam hardcore kita harus tahu bagaimana menggunakannya dengan mikrokontroler PIC juga. Ini akan membantu Anda menyesuaikan proyek Anda dalam perspektif desain dan pada saat yang sama juga membuatnya murah.
Modul ESP8266 dilengkapi dengan firmware default yang dimuat ke dalamnya, sehingga kita dapat memprogram modul tersebut menggunakan perintah AT. Perintah-perintah ini harus dikirim melalui saluran komunikasi serial. Saluran ini dibuat antara PIC dan modul ESP8266 dengan menggunakan modul USART pada mikrokontroler PIC . Seluruh pekerjaan akan dipantau dan dilaporkan kepada pengguna dengan menggunakan layar LCD 16x2. Karenanya, tutorial ini mengasumsikan bahwa Anda memiliki pengetahuan dasar tentang modul USART di PIC, Menghubungkan LCD dengan PIC dan menggunakan perintah AT di ESP8266. Jika tidak, Anda dapat kembali ke tutorial yang ditautkan untuk mempelajarinya sebelumnya.
Bahan yang Dibutuhkan:
Anda memerlukan perangkat keras berikut untuk menyelesaikan tutorial ini
- PIC16F877A
- Osilator kristal 20MHz
- 7805
- LM317
- ESP8266
- Layar LCD 16 * 2
- Pemrogram PicKit3
- Resistor (1K, 220ohm, 360ohm)
- Kapasitor (1uF, 0.1uF, 33pF)
- Kabel jumper
- Adaptor 12V untuk memberi daya pada modul PIC dan ESP
Perangkat keras:
Skema lengkap proyek ditunjukkan di bawah ini
Skema ini terdiri dari dua rangkaian pengatur tegangan, satu adalah regulator + 5V yang digunakan untuk menyalakan mikrokontroler PIC dan yang lainnya adalah regulator 3.3V yang memberi daya pada modul ESP8266. + 5V diatur dengan menggunakan 7805 (IC Regulator Tegangan Linear). 3.3V diatur dengan menggunakan LM317 (Variable Voltage Regulator). Modul ESP8266 mengkonsumsi banyak arus (~ 800mA) maka jika Anda mendesain catu daya Anda sendiri pastikan itu dapat sumber arus tinggi seperti itu. Pastikan juga pin ground PIC dan modul ESP8266 terhubung bersama.
Jadi sekarang kita tahu bahwa PIC beroperasi pada + 5V dan ESP8266 beroperasi pada volt 3,3V. Untuk membangun komunikasi USART antara kedua modul ini, kita perlu memiliki rangkaian konverter logika 5V - 3,3V seperti yang ditunjukkan pada gambar di atas. Sirkuit ini tidak lain adalah pembagi potensial yang hanya mengubah + 5V yang masuk menjadi 3,3V. Ini akan mencegah pin RX ESP8266 yang dapat ditoleransi 3.3V dari mendapatkan + 5V.
Saya telah membuat modul PIC dan ESP pada dua papan perf terpisah, seperti yang ditunjukkan dalam tutorial ini. Dengan cara ini saya dapat menggunakannya secara universal untuk proyek serupa lainnya
- Perangkat keras LED menggunakan PIC
- Memulai dengan ESP8266
Anda dapat mengikuti hal yang sama, atau membuat papan Anda sendiri dengan gaya Anda atau cukup hubungkan sirkuit di atas ke papan tempat memotong roti.
Memprogram mikrokontroler PIC:
Untuk memprogram mikrokontroler PIC untuk mengirimkan “perintah AT” secara serial menggunakan USART ke modul ESP8266 kita harus menggunakan perpustakaan. Pustaka ini akan menghemat banyak kerumitan, seperti menggunakan modul instruksi ESP8266 untuk memeriksa setiap perintah AT dan kemudian menemukan cara untuk mengirimkannya ke modul ESP. Library ini adalah perangkat lunak gratis yang awalnya dikembangkan oleh Camil Staps dan kemudian diperbaiki dan dimodifikasi oleh Circuit Digest sehingga dapat digunakan dengan Mikrokontroler PIC16F877A kami. Anda bisa mendownloadnya disini
Pustaka tersebut masih dalam pengembangan, tetapi Anda dapat menggunakan sebagian besar perintah AT yang penting di firmware ESP8266. Jika Anda menemukan salah satu perintah yang Anda butuhkan hilang, beri tahu saya di bagian komentar dan saya akan mencoba menambahkannya untuk Anda. Tutorial ini akan menjelaskan semua perintah (sejauh ini) yang dapat digunakan melalui perpustakaan ini. Selanjutnya juga akan memandu Anda untuk menambahkan fungsi Anda sendiri ke perpustakaan.
Fungsi di Perpustakaan ESP8266:
- Initialize_ESP8266 (): Fungsi ini akan menginisialisasi modul USART dari PIC untuk berkomunikasi dengan modul ESP8266. Ini menetapkan baud rate pada 115200 dan menyiapkan pin Rx dan Tx dari PIC untuk komunikasi USART.
- _esp8266_putch (): Fungsi ini digunakan untuk mengirim satu karakter secara serial ke modul ESP8266. Misalnya, _esp8266_putch ('a') akan mengirim karakter secara serial ke ESPmodule.
- _esp8266_getch (): Fungsi ini digunakan untuk mendapatkan satu karakter dari modul ESP. Misalnya jika ESP mencetak "OK" dan kami menggunakan char a = _esp8266_getch (). Kemudian karakter 'o' akan disimpan di variabel a.
- ESP8266_send_string (): Fungsi ini adalah versi string _esp8266_putch (). Itu dapat mengirim satu string lengkap ke modul ESP8266. Misalnya, ESP8266_send_string (“AT / r / n”) akan mengirimkan perintah “AT” ke modul ESP8266.
- esp8266_isStarted (): Ini digunakan untuk memeriksa apakah PIC dapat berkomunikasi dengan modul ESP. Ini mengirim perintah "AT" dan menunggu "OK" jika diterima itu mengembalikan benar kalau tidak mengembalikan salah.
- esp8266_restart (): Mereset modul ESP8266 dan mengembalikan true adalah reset berhasil dan mengembalikan false jika tidak berhasil.
- esp8266_mode (): Digunakan untuk mengatur mode kerja modul ESP8266. Seperti yang kita ketahui, ini dapat bekerja dalam tiga mode berbeda.
Mode stasiun |
|
Mode AP lembut |
|
Baik mode Station dan AP |
- esp8266_connect (): Memungkinkan Anda terhubung ke sinyal wifi. Misalnya esp8266_connect ("rumah", "12345678") , akan memungkinkan modul Anda untuk terhubung ke sinyal wifi bernama rumah yang sandinya 12345678.
- esp8266_disconnect (): Fungsi ini memutuskan modul Anda dari koneksi wifi yang sebelumnya terhubung
- esp8266_ip (): Mendapatkan alamat IP dan mengembalikannya. Gunakan fungsi ini jika Anda ingin mengetahui alamat IP modul ESP8266.
- esp8266_start (): Fungsi ini digunakan untuk memulai komunikasi TCP atau UDP. Misalnya esp8266_start ( "TCP", "192.168.101.110", 80) . Akan memulai jaringan TCP di IP dan port 80 itu.
- esp8266_send (): Fungsi ini digunakan untuk mengirim informasi ke jaringan TCP / UDP. Script HTML akan dikirim menggunakan perintah ini. Kemudian skrip ini akan muncul di alamat IP tempat komunikasi dibuat sebelumnya.
- esp8266_config_softAP (): Fungsi ini digunakan untuk mengkonfigurasi softAP. Misalnya esp8266_config_softAP ("kantor", "12345678"); akan membuat sinyal Wifi bernama office dan kata sandi 12345678 harus digunakan untuk mengaksesnya.
- esp8266_get_stationIP (): Fungsi ini akan mengembalikan Anda alamat IP / MAC dari klien yang terhubung ke softAP Anda.
Program Sampel:
Sekarang kita telah memahami fungsi dari masing-masing dan setiap perintah di perpustakaan, mari kita lihat program contoh kecil. Dalam program ini kami akan memeriksa apakah koneksi antara ESP8266 dan PIC berhasil dan kemudian membuat jaringan WIFI (SoftAP) dengan nama dan kata sandi yang disukai. Program lengkap dan simulasinya akan dijelaskan untuk pemahaman Anda.
Sekali lagi jika Anda belum membaca tutorial PIC interfacing dengan LCD dan PIC USART kami, harap baca, sebelum melanjutkan karena hanya itu yang akan masuk akal bagi Anda.
Karena kami baru saja mulai menghubungkan PIC dengan ESP8266, saya telah menggunakan LCD untuk memastikan semuanya berfungsi dengan baik.
lakukan {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP tidak ditemukan"); } sementara (! esp8266_isStarted ()); // tunggu sampai ESP mengirim kembali "OK" Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP terhubung"); __delay_ms (1500); Lcd_Clear ();
Saat kami mengirim "AT" ke modul ESP8266, ia membalas dengan "OK". Ini memastikan kami bahwa modul ESP8266 berhasil terhubung. Fungsi esp8266_isStarted () digunakan untuk hal yang sama. Kami mengirim sinyal AT dari PIC dan kami menunggu sampai modul ESP menjadi hidup dan mengirimkan OK kepada kami. Jika kita mendapatkan OK kita menampilkan bahwa "ESP terhubung" pada LCD.
esp8266_mode (2); Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP disetel sebagai AP"); __delay_ms (1500); Lcd_Clear ();
Baris kode di atas digunakan untuk mengatur modul ESP agar bekerja dalam mode "AP lunak". Fungsi esp8266_mode (2); mengirim perintah AT "AT + CWMODE = 3" ke modul dan menunggu modul merespons dengan "OK"
/ * Konfigurasi nama AP dan Kata Sandi * / esp8266_config_softAP ("CircuitDigest", "619007123"); Lcd_Set_Cursor (1,1); Lcd_Print_String ("AP dikonfigurasi"); __delay_ms (1500); Lcd_Clear (); / * AP dikonfigurasi * /
Segmen kode ini digunakan untuk mengkonfigurasi softAP. Di sini kami menamai SSID sebagai "CircuitDigest" dan kata sandi sebagai "619007123". Untuk menunjukkan bahwa proses telah selesai, kami akan menunggu modul merespons dengan "OK" dan kemudian mencetak AP yang dikonfigurasi ke layar LCD.
Itu saja sekarang kami telah menghubungkan modul ESP8266 dengan PIC MCU dan telah mengkonfigurasi softAP dengan nama dan kata sandi pilihan kami. Seperti biasa mari kita simulasikan kode ini dan lihat cara kerjanya.
Keluaran simulasi:
Kami menggunakan perangkat lunak Proteus untuk mensimulasikan keluaran. File desain untuk hal yang sama dapat ditemukan di lampiran.
Karena kami tidak memiliki modul ESP8266 di perpustakaan Proteus, kami telah menggunakan terminal Serial dan merespons kembali sebagai pengguna ke modul PIC. Layar simulasi setelah selesai akan terlihat seperti di bawah ini
Output dari kode kami ditampilkan di terminal Virtual. Kerja lengkap dari simulasi akan dijelaskan dalam video di bawah ini.
Verifikasi Keluaran:
Setelah program diverifikasi menggunakan simulasi, masukkan ke mikrokontroler PIC Anda. Buat koneksi seperti yang ditunjukkan pada skema di atas (bagian Hardware). Anda harus dapat melacak kemajuan Anda melalui layar LCD.
Setelah LCD mengatakan bahwa AP dikonfigurasi, kita dapat memeriksanya menggunakan pengaturan WIFI di Telepon atau Laptop. Laptop saya menunjukkan sinyal berikut sesuai program kami.
Itu dia guys kita telah berhasil menghubungkan modul ESP8266 dengan Mikrokontroler PIC. Ini adalah antarmuka yang sangat mendasar dan jika Anda ingin melakukan proyek rumit menggunakan ESP8266, Anda mungkin harus menambahkan perpustakaan Anda sendiri atau setidaknya menambahkan fungsi Anda sendiri. Percayalah, ini sangat mudah untuk dilakukan, saya akan memberikan wawasan singkat untuk hal yang sama.
Menambahkan fungsi ke Perpustakaan ESP8266:
Menambahkan fungsi Anda sendiri akan membantu Anda mengirim perintah "AT" ke modul ESP8266. Untuk melanjutkan ini, Anda perlu membaca dokumentasi set instruksi dari modul ESP8266. Anda dapat langsung mengirim perintah AT apa pun yang Anda temukan di manual set instruksi itu. Tapi selalu ingat untuk menambahkan "/ r / n" di akhir setiap perintah AT. Misalnya jika Anda ingin membuat beberapa koneksi dengan modul ESP Anda. Kemudian buka dokumentasi set instruksi dan temukan perintah AT kami yang akan melakukan pekerjaan ini untuk Anda. Di sini perintah “AT + CIPMUX = 1” akan memungkinkan Anda membuat beberapa koneksi dengan modul ESP Anda.
Sekarang yang harus Anda lakukan adalah mengirimkan “AP + CIPMUX = 1” ini ke modul ESP8266 Anda menggunakan port serial. Cara hardcore untuk melakukan ini adalah dengan hanya menggunakan perintah
_esp8266_print ("AT + CIPMUX = 1 \ r \ n" ")
Ini akan berhasil tetapi bukan cara terbaik untuk melakukannya. Anda harus membaca kembali apa yang ESP8266 merespons perintah Anda. Dalam kasus kami, ini akan merespons dengan "OK". Jadi Anda harus membaca data yang masuk dari modul ESP8266 dan memastikan bahwa itu adalah "OK". Anda juga dapat membuat fungsi ini di mana "1" atau "0" dapat diteruskan sebagai argumen.
Silakan dan coba buat fungsi Anda sendiri untuk perpustakaan. Tetapi jika Anda membutuhkan bantuan, silakan gunakan bagian komentar dan saya akan membantu Anda.