- Bahan yang Diperlukan:
- Mengaturcara mikrokontroler PIC:
- Fungsi di Perpustakaan ESP8266:
- Contoh Program:
- Hasil simulasi:
- Pengesahan Keluaran:
- Menambah fungsi ke Perpustakaan ESP8266:
Dalam artikel ini, mari kita bincangkan bagaimana untuk menghubungkan modul WIFI ESP8266 dengan mikrokontroler PIC. Sejauh ini anda mungkin telah menggunakan modul ESP8266 sebagai mikrokontroler mandiri atau mungkin telah menggunakannya dengan perpustakaan Arduino. Tetapi, mengenai projek sistem tertanam tegar, kita harus tahu bagaimana menggunakannya dengan mikrokontroler PIC juga. Ini akan membantu anda menyesuaikan projek anda dari perspektif reka bentuk dan pada masa yang sama menjadikannya murah.
Modul ESP8266 dilengkapi dengan firmware lalai yang dimasukkan ke dalamnya, oleh itu kami dapat memprogram modul menggunakan perintah AT. Perintah ini harus dihantar melalui saluran komunikasi bersiri. Saluran ini dijalin antara PIC dan modul ESP8266 dengan menggunakan modul USART dalam mikrokontroler PIC . Keseluruhan kerja akan dipantau dan dilaporkan kepada pengguna dengan menggunakan paparan LCD 16x2. Oleh itu, tutorial ini mengandaikan bahawa anda mempunyai pengetahuan asas mengenai modul USART dalam PIC, Interfacing LCD dengan PIC dan menggunakan arahan AT di ESP8266. Sekiranya tidak, anda boleh kembali ke tutorial terpaut untuk mempelajarinya terlebih dahulu.
Bahan yang Diperlukan:
Anda memerlukan perkakasan berikut untuk menyelesaikan tutorial ini
- PIC16F877A
- Pengayun kristal 20MHz
- 7805
- LM317
- ESP8266
- Paparan LCD 16 * 2
- Pengaturcara PicKit3
- Perintang (1K, 220ohm, 360ohm)
- Kapasitor (1uF, 0.1uF, 33pF)
- Wayar pelompat
- Penyesuai 12V untuk menghidupkan modul PIC dan ESP
Perkakasan:
Skema lengkap projek ditunjukkan di bawah ini
Skema terdiri daripada dua rangkaian pengatur voltan, satu adalah pengatur + 5V yang digunakan untuk memberi kuasa pada mikrokontroler PIC dan yang lain adalah pengatur 3.3V yang memberi kuasa pada modul ESP8266. + 5V diatur dengan menggunakan 7805 (Linear Voltage Regulator IC). 3.3V diatur dengan menggunakan LM317 (Variable Voltage Regulator). Modul ESP8266 menghabiskan banyak arus (~ 800mA) oleh itu jika anda merancang bekalan kuasa anda sendiri pastikan ia dapat menghasilkan arus yang tinggi. Pastikan juga pin ground PIC dan modul ESP8266 disambungkan bersama.
Jadi sekarang kita tahu bahawa PIC beroperasi pada + 5V dan ESP8266 beroperasi pada 3.3V volt. Untuk menjalin komunikasi USART antara kedua modul ini, kita memerlukan litar penukar logik 5V - 3.3V seperti yang ditunjukkan pada gambar di atas. Litar ini tidak lain hanyalah pembahagi berpotensi yang hanya menukar + 5V masuk ke 3.3V. Ini akan mengelakkan pin RX 3.3V yang bertoleransi ESP8266 daripada mendapat + 5V.
Saya telah membuat modul PIC dan ESP pada dua papan perf yang terpisah, seperti yang ditunjukkan dalam tutorial ini. Dengan cara ini saya dapat menggunakannya secara universal untuk projek yang lebih serupa
- Perkakasan LED menggunakan PIC
- Bermula dengan ESP8266
Anda boleh mengikuti yang sama, atau membina papan anda sendiri dengan gaya anda atau hanya menghubungkan litar di atas ke papan roti.
Mengaturcara mikrokontroler PIC:
Untuk memprogram mikrokontroler PIC untuk menghantar "perintah AT" secara bersiri menggunakan USART ke modul ESP8266 kita harus menggunakan perpustakaan. Perpustakaan ini akan menjimatkan banyak kesulitan, seperti menggunakan modul arahan ESP8266 untuk memeriksa setiap arahan AT dan kemudian mencari jalan untuk menghantarnya ke modul ESP. Perpustakaan ini adalah perisian percuma yang pada awalnya dikembangkan oleh Camil Staps dan kemudiannya diperbaiki dan diubah suai oleh Circuit Digest sehingga dapat digunakan dengan Mikrokontroler PIC16F877A kami. Anda boleh memuat turunnya di sini
Perpustakaan masih dalam pembangunan, tetapi anda boleh menggunakan sebahagian besar perintah AT penting dalam firmware ESP8266. Sekiranya anda mendapati bahawa arahan yang anda perlukan tidak ada, maka beritahu saya di bahagian komen dan saya akan mencubanya untuk anda. Tutorial ini akan menerangkan kepada anda semua perintah (setakat ini) yang dapat digunakan oleh perpustakaan ini. Lebih jauh juga akan membimbing anda untuk menambahkan fungsi anda sendiri ke perpustakaan.
Fungsi di Perpustakaan ESP8266:
- Initialize_ESP8266 (): Fungsi ini akan Memulakan modul USART PIC untuk berkomunikasi dengan modul ESP8266. Ini menetapkan kadar baud pada 115200 dan menyiapkan pin Rx dan Tx PIC untuk komunikasi USART.
- _esp8266_putch (): Fungsi ini digunakan untuk menghantar satu watak bersiri ke modul ESP8266. Contohnya, _esp8266_putch ('a') akan menghantar watak secara bersiri ke modul ESP.
- _esp8266_getch (): Fungsi ini digunakan untuk mendapatkan satu watak dari modul ESP. Contohnya jika ESP mencetak "OK" dan kita menggunakan char a = _esp8266_getch (). Kemudian char 'o' akan disimpan dalam pemboleh ubah a.
- ESP8266_send_string (): Fungsi ini adalah versi rentetan _esp8266_putch (). Ia dapat menghantar satu rentetan lengkap ke modul ESP8266. Sebagai contoh, ESP8266_send_string (“AT / r / n”) akan menghantar arahan “AT” ke modul ESP8266.
- esp8266_isStarted (): Ia digunakan untuk memeriksa sama ada PIC dapat berkomunikasi dengan modul ESP. Ini akan mengirimkan perintah "AT" dan menunggu "OK" jika diterima, ia akan menjadi benar, tetapi ia akan menjadi salah.
- esp8266_restart (): Menetapkan semula modul ESP8266 dan mengembalikan true diset semula berjaya dan mengembalikan palsu jika tidak berjaya.
- esp8266_mode (): Digunakan untuk menetapkan mod kerja modul ESP8266. Seperti yang kita tahu, ia boleh berfungsi dalam tiga mod yang berbeza.
Mod stesen |
|
Mod AP lembut |
|
Kedua-dua mod Stesen dan AP |
- esp8266_connect (): Membolehkan anda menyambung ke isyarat wifi. Contohnya esp8266_connect ("home", "12345678") , akan membolehkan modul anda menyambung ke isyarat wifi yang dinamakan home yang kata laluannya adalah 12345678.
- esp8266_disconnect (): Fungsi ini memutuskan modul anda dari sebarang sambungan wifi yang sebelumnya disambungkan
- esp8266_ip (): Mendapatkan alamat IP dan mengembalikannya. Gunakan fungsi ini jika anda ingin mengetahui alamat IP modul ESP8266.
- esp8266_start (): Fungsi ini digunakan untuk memulakan komunikasi TCP atau UDP. Contohnya esp8266_start ( "TCP", "192.168.101.110", 80) . Akan memulakan rangkaian TCP di IP dan port 80 itu.
- esp8266_send (): Fungsi ini digunakan untuk mengirim maklumat ke rangkaian TCP / UDP. Skrip HTML akan dihantar menggunakan perintah ini. Kemudian skrip ini akan muncul di alamat IP tempat komunikasi dibuat sebelumnya.
- esp8266_config_softAP (): Fungsi ini digunakan untuk mengkonfigurasi softAP. Contohnya esp8266_config_softAP ("pejabat", "12345678"); akan membuat isyarat Wifi bernama pejabat dan kata laluan 12345678 harus digunakan untuk mengaksesnya.
- esp8266_get_stationIP (): Fungsi ini akan mengembalikan alamat IP / MAC klien yang disambungkan ke softAP anda.
Contoh Program:
Sekarang setelah kita memahami fungsi setiap perintah di perpustakaan, mari kita melihat contoh program kecil. Dalam program ini kita akan memeriksa apakah hubungan antara ESP8266 dan PIC berjaya dan kemudian membuat rangkaian WIFI (SoftAP) dengan nama dan kata laluan yang disukai. Program lengkap dan simulasi yang sama akan dijelaskan untuk pemahaman anda.
Sekali lagi jika anda belum membaca tutorial PIC kami dengan LCD dan PIC USART, sila baca, sebelum meneruskan kerana hanya akan masuk akal bagi anda.
Oleh kerana kita baru mula menghubungkan PIC dengan ESP8266, saya telah menggunakan LCD untuk memastikan semuanya berjalan dengan baik.
lakukan {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP tidak dijumpai"); } sementara (! esp8266_isMulakan ()); // tunggu sehingga ESP menghantar kembali "OK" Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP disambungkan"); __delay_ms (1500); Lcd_Clear ();
Apabila kami menghantar "AT" ke modul ESP8266, ia membalas dengan "OK". Ini memastikan kita bahawa modul ESP8266 berjaya disambungkan. Fungsi esp8266_isStarted () digunakan untuk perkara yang sama. Kami menghantar isyarat AT dari PIC dan kami menunggu sehingga modul ESP menjadi hidup dan menghantar OK. Sekiranya kita mendapat OK, kita akan memaparkan bahawa "ESP disambungkan" pada LCD.
esp8266_mode (2); Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP ditetapkan sebagai AP"); __delay_ms (1500); Lcd_Clear ();
Garis kod di atas digunakan untuk mengatur modul ESP agar berfungsi dalam mod "AP lembut". Fungsi esp8266_mode (2); menghantar perintah AT "AT + CWMODE = 3" ke modul dan menunggu modul bertindak balas dengan "OK"
/ * Konfigurasikan nama AP dan Kata Laluan * / esp8266_config_softAP ("CircuitDigest", "619007123"); Lcd_Set_Cursor (1,1); Lcd_Print_String ("AP dikonfigurasikan"); __delay_ms (1500); Lcd_Clear (); / * AP dikonfigurasikan * /
Segmen kod ini digunakan untuk mengkonfigurasi softAP. Di sini kami telah menamakan SSID sebagai "CircuitDigest" dan kata laluan sebagai "619007123". Untuk menunjukkan bahawa prosesnya sudah selesai, kami akan menunggu modul bertindak balas dengan "OK" dan kemudian mencetak AP yang dikonfigurasikan ke layar LCD.
Itulah sekarang kami telah menghubungkan modul ESP8266 dengan PIC MCU dan telah mengkonfigurasi softAP dengan nama dan kata laluan pilihan kami. Seperti biasa mari mensimulasikan kod ini dan melihat bagaimana ia berfungsi.
Hasil simulasi:
Kami menggunakan perisian Proteus untuk mensimulasikan output. Fail reka bentuk yang sama boleh didapati di lampiran.
Oleh kerana kami tidak mempunyai modul ESP8266 di perpustakaan Proteus, kami telah menggunakan terminal Serial dan bertindak balas sebagai pengguna modul PIC. Skrin simulasi setelah selesai akan kelihatan seperti di bawah
Keluaran kod kami ditunjukkan di terminal Maya. Penyelesaian simulasi yang lengkap akan dijelaskan dalam video di bawah.
Pengesahan Keluaran:
Setelah program disahkan menggunakan simulasi, masukkan ke mikrokontroler PIC anda. Buat sambungan seperti yang ditunjukkan dalam skema di atas (bahagian Perkakasan). Anda seharusnya dapat mengesan kemajuan anda melalui paparan LCD.
Sebaik sahaja LCD mengatakan bahawa AP dikonfigurasi, kita dapat memeriksanya menggunakan tetapan WIFI di Telefon atau Laptop. Komputer riba saya menunjukkan isyarat berikut mengikut program kami.
Itu sahaja kita berjaya menghubungkan modul ESP8266 dengan PIC Microcontroller. Ini adalah antara muka yang sangat asas dan jika anda ingin melakukan projek rumit menggunakan ESP8266, anda mungkin perlu menambah perpustakaan anda sendiri atau sekurang-kurangnya menambahkan fungsi anda sendiri. Percayalah bahawa sangat mudah untuk melakukannya, saya akan memberikan pandangan ringkas untuk perkara yang sama.
Menambah fungsi ke Perpustakaan ESP8266:
Menambah fungsi anda sendiri akan membantu anda menghantar arahan "AT" ke modul ESP8266. Untuk meneruskannya, anda perlu membaca dokumentasi set arahan modul ESP8266. Anda boleh menghantar arahan AT yang terdapat dalam manual set arahan itu secara langsung. Tetapi selalu ingat untuk menambahkan "/ r / n" di akhir setiap perintah AT. Contohnya jika anda ingin menjalin banyak sambungan dengan modul ESP anda. Kemudian buka dokumentasi set arahan dan cari arahan AT kami yang akan melakukan tugas ini untuk anda. Di sini perintah "AT + CIPMUX = 1" akan membolehkan anda menjalin banyak sambungan dengan modul ESP anda.
Sekarang yang harus anda lakukan adalah menghantar “AP + CIPMUX = 1” ini ke modul ESP8266 anda menggunakan port bersiri. Cara tegar untuk melakukannya adalah dengan hanya menggunakan perintah
_esp8266_print ("AT + CIPMUX = 1 \ r \ n" ")
Ini akan berjaya tetapi bukan kaedah terbaik untuk melakukannya. Anda harus membaca semula apa yang disahut oleh ESP8266 terhadap arahan anda. Dalam kes kami, ia akan bertindak balas dengan "OK". Oleh itu, anda harus membaca data masuk dari modul ESP8266 dan mengesahkan bahawa ia adalah "OK". Anda juga dapat membuat fungsi ini di mana "1" atau "0" dapat diteruskan sebagai argumen.
Teruskan dan cuba buat fungsi anda sendiri untuk perpustakaan. Tetapi jika anda memerlukan pertolongan, sila gunakan bahagian komen dan saya akan membantu anda.