Modul Wifi berdasarkan cip ESP8266. ESP8266 dan Arduino, sambungan, gambarajah pendawaian pinout Esp 01

  • 10.09.2021

Modul Wi-Fi ESP-01 ialah modul paling popular dalam siri ESP8266. Komunikasi dengan komputer atau mikropengawal dijalankan melalui UART menggunakan set arahan AT. Di samping itu, modul boleh digunakan sebagai peranti bebas, untuk ini anda perlu memuatkan perisian tegar anda ke dalamnya. Anda boleh memprogram dan memuat turun perisian tegar melalui versi Arduino IDE yang lebih tinggi daripada 1.6.5. Anda memerlukan penyesuai UART-USB untuk memancarkan modul. Modul ESP-01 boleh digunakan secara meluas untuk digunakan dalam peranti IoT (Internet of Things).

Spesifikasimodul

  • Wi-Fi 802.11 b / g / n
  • Mod WiFi: pelanggan, tempat liputan
  • Kuasa keluaran - 19.5 dB
  • Voltan bekalan - 1.8-3.6 V
  • Penggunaan semasa - 220 mA
  • Pelabuhan GPIO: 4
  • Kelajuan jam CPU - 80 MHz
  • Saiz memori untuk kod
  • RAM - 96 KB
  • Dimensi - 13x21mm

Sambungan

Mari kita lihat mod arahan AT. Untuk melakukan ini, sambungkan modul ke komputer melalui penyesuai USB-UART. Tugasan pin modul (lihat Rajah 1):
  • VCC - +3.3 V
  • GND - tanah
  • RX, TX - pin UART
  • Output CH_PD - Cip dayakan
  • GPIO0, GPIO2 - pin digital
Modul ini memerlukan bekalan kuasa 3.3V luaran.

Rajah 1. Pin tugasan modul ESP-01

Gambar rajah sambungan untuk berkomunikasi dengan modul dalam mod arahan AT (Rajah 2):

Rajah 2. Skim menyambungkan modul ESP-01 ke komputer melalui port bersiri

Rajah 3. Perhimpunan skematik

Anda boleh menggunakan CoolTerm untuk menghantar arahan AT dalam Mac OS X dan Anai-anai dalam Windows. Anda hanya boleh mengetahui kelajuan port COM untuk menyambung ke modul secara eksperimen; ia boleh berbeza untuk perisian tegar yang berbeza. Untuk modul saya, kelajuan ternyata 9600 baud. Di samping itu, adalah mungkin untuk mewujudkan pertukaran hanya selepas memutuskan sambungan dan menyambung semula ke bekalan kuasa pin CH_PD. Selepas menyambung, kami menaip AT dalam terminal dan sepatutnya menerima respons OK daripada modul. Arahan AT + GMR memberikan nombor versi perisian tegar modul, arahan AT + RST but semula modul (lihat Rajah 4). Senarai perintah AT asas boleh didapati dalam dokumen ini (ESP8266ATCommandsSet.pdf).

Rajah 4. Menghantar arahan AT ke modul daripada program Anai-anai

Jika mod arahan AT tidak sesuai untuk anda, papan boleh dikonfigurasikan menggunakan program AppStack ESP8266 Config, yang boleh dimuat turun dari pautan http://esp8266.ru/download/esp8266-utils/ESP8266_Config.zip. Penampilan program ditunjukkan dalam Rajah 5. Modul dikonfigurasikan menggunakan antara muka grafik, manakala pelaksanaan arahan boleh dilihat dalam monitor program (lihat Rajah 6). Dalam monitor, anda juga boleh menghantar arahan AT dari baris arahan.

Rajah 5. Program Konfigurasi AppStack ESP8266

Rajah 6. Pemantau bersiri bagi AppStack ESP8266 Config

Terdapat dua pilihan untuk menggunakan modul ini:

  • bersama-sama dengan mikropengawal (contohnya Arduino), yang akan mengawal modul melalui UART;
  • menulis perisian tegar anda sendiri untuk menggunakan ESP8266 sebagai peranti kendiri.

Contoh penggunaan

Mari kita pertimbangkan contoh menyambungkan penderia kelembapan dan suhu DHT11 ke modul ESP-01 dan menghantar data ke perkhidmatan awan ThingSpeak (https://thingspeak.com/). Kami memerlukan butiran berikut:
  • modul ESP-01
  • papan roti
  • Sensor kelembapan dan suhu DHT11
  • perintang 10k ohm
  • wayar penyambung
  • unit bekalan kuasa 3 - 3.6V
Mula-mula, mari sambungkan sensor DS18B20 ke modul ESP-01. DS18B20 ialah penderia suhu digital yang beroperasi melalui antara muka wayar tunggal 1-Wayar. Gambar rajah sambungan sensor DS18B20 ke modul ditunjukkan dalam Rajah. 7.

Rajah 7. Gambar rajah menyambung sensor DHT11 ke modul ESP-01.

Kemudian anda perlu membuat profil dalam perkhidmatan ThingSpeak. Perkhidmatan ini mempunyai arahan untuk menghantar data kepada perkhidmatan dan menerima data daripada perkhidmatan.

Rajah 8. Gambar rajah pemasangan.

Kami akan menulis program dalam IDE Arduino untuk ESP8266. Kami akan menggunakan perpustakaan ESP8266WiFi.h (terbina dalam) dan OneWire.h. Mari muat naik lakaran daripada Penyenaraian 1 ke papan Arduino - mendapatkan data daripada penderia suhu dan menghantar data ke perkhidmatan ThingSpeak. Anda perlu memasukkan data anda untuk titik akses WiFi untuk modul ESP-01:

  • const char * ssid;
  • const char * kata laluan;
dan juga parameter privateKey untuk aplikasi anda dalam perkhidmatan ThingSpeak. Penyenaraian 1 // tapak // Kami menyertakan perpustakaan untuk bekerja dengan esp8266 #include // Sertakan perpustakaan DHT untuk berfungsi dengan DHT11 #include // pin untuk menyambungkan kenalan DATA #define DHTPIN 4 // DHT11 sensor #define DHTTYPE DHT11 // mencipta contoh objek DHT DHT dht (DHTPIN, DHTTYPE); // ssid rangkaian sambungan WiFi const char ssid = "********"; // Kata laluan rangkaian WiFi sambungan const char kata laluan = "******"; // ThingSpeak Server const char * hos = "184.106.153.149"; // API KEY bagi aplikasi ThingSpeak anda const char * privateKey = "****************"; // pembolehubah untuk menyimpan suhu dan kelembapan suhu terapung; kelembapan terapung; // pembolehubah untuk selang pengukuran unsigned long millis_int1 = 0; persediaan void () (// mulakan port bersiri Serial.begin (115200); kelewatan (10); Serial.print ("Sambung ke WiFi"); Serial.println (ssid); // Sambung melalui WiFi WiFi.begin ( ssid , kata laluan); manakala (WiFi.status ()! = WL_CONNECTED) (delay (500);) Serial.println ("WiFi disambungkan"); // mula dht dht.begin ();) void loop () (/ / tunggu selang 10 minit jika (milis () - millis_int1> = 10 * 60000) (Serial.print ("sambung ke ThingSpeak"); Serial.println (hos); // Gunakan klien WiFi klien WiFiClient; jika (! klien .connect (host, 80)) (Serial.println ("connection failed"); return;) // dapatkan suhu data temp = get_data_temperature (); humidity = get_data_humidity (); // Cipta URL dengan permintaan untuk pelayan String url = "/ kemas kini? key = "; url + = privateKey; url + =" & temp = "; url + = temp; url + =" & humidity = "; url + = humidity; // Hantar permintaan kepada klien pelayan.cetak (String (" GET ") + url +" HTTP / 1.1 \ r \ n "+" Hos: "+ hos +" \ r \ n "+" Sambungan: tutup \ r \ n \ r \ n "); kelewatan (10); // Sambutan pelayan ThingSpeak manakala (client.available ()) (String req = client.readStringUntil ("\ r"); Serial.print (req);))) Sekarang dalam perkhidmatan ThingSpeak kita boleh menonton graf DHT11 kami sensor suhu (Rajah 9).

Rajah 9. Gambar rajah bacaan sensor suhu DS18B20 dalam perkhidmatan ThingSpeak.

Soalan Lazim Soalan Lazim

1. Modul tidak bertindak balas kepadaarahan AT
  • Semak sama ada modul disambungkan dengan betul;
  • Periksa sambungan yang betul bagi pin Rx, Tx ke penyesuai UART-USB;
  • Periksa sambungan pin CH_PD ke 3.3V;
  • Pilih kadar baud secara eksperimen untuk port bersiri.
2. Modul ESP-01 tidak menerima data suhu daripada sensorDHT11
  • Semak sambungan yang betul bagi penderia DHT11 ke modul.
3. Data tidak dipindahkan ke perkhidmatan ThingSpeak
  • Semak sambungan modul ke pusat akses WiFi;
  • Semak sambungan pusat akses WiFi ke Internet;
  • Sahkan permintaan kepada perkhidmatan ThingSpeak adalah betul.

Untuk berfungsi dengan RemoteXY, modul ESP8266 mesti mempunyai versi perisian tegar yang menyokong perintah AT sekurang-kurangnya v0.40. Untuk menyemak versi modul, serta menukar perisian tegar jika perlu, sambungkan modul ke komputer melalui port bersiri. Modul ini boleh disambungkan melalui papan Arduino atau melalui penyesuai USB-UART.

Sambungan Arduino

Apabila menggunakan Arduino, cip ATmega utama dimasukkan ke dalam mod tetapan semula, hanya penukar USB-UART terbina dalam kekal aktif. Untuk ini, pin RESET disambungkan ke tanah. Pin RX dan TX bersambung terus ke ESP8266, dan bukan bersilang, seolah-olah ia disambungkan untuk berfungsi dengan pengawal.

Sambungan melalui penyesuai USB-UART

Penukar mesti mempunyai output sumber 3.3V untuk kuasa ESP8266. Juga, sumber ini mesti menyediakan arus yang diperlukan sekurang-kurangnya 200mA.



Kenalan CPIO0 menentukan mod pengendalian modul. Apabila kenalan tidak disambungkan, modul beroperasi secara normal dan melaksanakan arahan AT. Apabila kenalan ditutup ke tanah, modul dimasukkan ke dalam mod kemas kini perisian tegar. Menukar modul kepada mod perisian tegar memerlukan pin CPIO0 disambungkan ke tanah apabila modul dikuasakan. Jika kenalan ditutup semasa modul sedang berjalan, modul tidak akan ditukar kepada mod kemas kini perisian tegar.

Menyemak versi semasa

Sebarang program monitor port bersiri mesti digunakan untuk menghantar arahan AT dan melihat respons. Program terminal dari Arduino IDE berfungsi dengan baik. Atur cara mesti menetapkan mod penghantaran arahan dengan suapan baris mengekor dan pulangan pengangkutan. Kelajuan lalai modul ialah 115200 bps. Untuk modul berfungsi dalam mod biasa, hubungan CPIO0 mesti diputuskan.

Anda boleh menyemak versi perisian tegar semasa dengan melaksanakan arahan AT: AT + GMR. Contoh respons modul:

Versi AT: 0.40.0.0 (8 Ogos 2015 14:45:58)
Versi SDK: 1.3.0

Binaan: 1.3.0.2 11 Sep 2015 11:48:04
okey

Ia juga bernilai mengetahui saiz memori kilat modul anda, tetapan alamat beban data semasa mengemas kini perisian tegar bergantung pada ini. Manual ini menerangkan perisian tegar modul dengan saiz memori denyar 8Mbit (512KB + 512KB) atau 16Mbit (1024KB + 1024KB), sebagai yang paling biasa. Saiz memori denyar boleh didapati dengan melaksanakan perintah AT untuk menetapkan semula modul: AT + RST.

Ets 8 Jan 2013, punca pertama: 2, mod but: (3,1)

Muatkan 0x40100000, len 1396, bilik 16
ekor 4
chksum 0x89
muatkan 0x3ffe8000, len 776, bilik 4
ekor 4
chksum 0xe8
muatkan 0x3ffe8308, len 540, bilik 4
ekor 8
chksum 0xc0
csum 0xc0

Versi but kedua: 1.4 (b1)
Kelajuan SPI: 40MHz
Mod SPI: DIO
Saiz & Peta Denyar SPI: 8Mbit (512KB + 512KB)
lompat untuk menjalankan user1 @ 1000

# t # n "t gunakan data mem rtc
slЏ‚rlMe
Ai-Thinker Technology Co., Ltd.

Program untuk perisian tegar

Untuk mengemas kini perisian tegar, anda perlu memuat turun program perisian tegar dan perisian tegar itu sendiri. Program untuk perisian tegar ESP8266 akan digunakan Alat Muat Turun Flash v2.4 daripada laman web rasmi Sistem Espressif. Pautan ke halaman muat turun di laman web rasmi:. Anda perlu pergi ke bahagian "Alat".

Pautan ke program dalam storan fail kami: FLASH_DOWNLOAD_TOOLS_v2.4_150924.rar

Perisian tegar

Perisian tegar juga boleh dimuat turun dari laman web rasmi. Pautan ke halaman muat turun di laman web rasmi:. Anda perlu pergi ke bahagian "SDK & Demo" dan muat turun perisian tegar ESP8266 NONOS SDK v1.3.0 atau lebih tinggi. Daripada versi perisian tegar ini, sokongan untuk arahan AT v0.40 dan banyak lagi dilaksanakan.

Pautan ke perisian tegar dalam storan fail kami: esp8266_nonos_sdk_v1.4.0_15_09_18_0.rar

Semua fail yang dimuat turun mesti dibongkar dan diletakkan dalam direktori di mana laluan penuh ke fail hanya terdiri daripada aksara Latin, iaitu, tanpa aksara penyetempatan bahasa.

Penyesuaian

Jalankan program perisian tegar Flash Download Tools v2.4 (fail dengan nama yang sama). Dalam tetingkap yang terbuka, anda mesti menyatakan dengan betul fail yang dimuat turun dan tetapan sambungan.


Fail yang dimuat turun terletak dalam direktori bin arkib perisian tegar. Untuk setiap fail, anda mesti menyatakan alamat muat turun yang betul. Gunakan jadual berikut untuk memilih fail dan menetapkan alamat:

Tetapkan tetapan berikut:

  • SPIAutoSet - dipasang;
  • CrystalFreq - 26J;
  • SAIZ FLASH - 8Mbit atau 16Mbit bergantung pada saiz memori denyar;
  • COM PORT - pilih port yang ESP disambungkan;
  • BAUDRAT - 115200

Untuk memulakan perisian tegar, anda mesti menekan butang "MULA".

Urutan langkah untuk perisian tegar ESP8266

1. Sambungkan modul ke komputer anda mengikut rajah sambungan dalam artikel ini.

2. Mulakan monitor port bersiri. Laksanakan arahan AT AT + RST dan AT + GMR untuk menentukan versi perisian tegar semasa dan saiz memori modul. Langkah ini juga membolehkan anda menyemak sama ada modul disambungkan dengan betul.

3. Jalankan perisian tegar Alat Muat Turun Flash, konfigurasikan fail yang dimuat turun dengan betul, tetapkan tetapan.

4. Matikan modul ESP8266.

5. Sambungkan pin CPIO0 ke tanah.

6. Kuasakan modul ESP8266.

7. Tekan butang MULA dalam perisian tegar

8. Tunggu sehingga akhir perisian tegar modul. Pada penghujung perisian tegar, FINISH akan muncul dalam warna hijau.

9. Putuskan sambungan kuasa ke modul ESP8266. Putuskan sambungan tanah daripada CPIO0.

10. Hidupkan modul, mulakan monitor port bersiri. Pastikan modul berfungsi dan versi perisian tegar baharu dijalankan dengan melaksanakan perintah AT + GMR.

... Secara umumnya, bahan ini tidak terhad kepada satu topik Arduino sahaja.

Tema ESP8266 adalah tema yang agak rumit. Tetapi, jika anda bekerja dengan modul Wi-Fi ini dalam IDE Arduino, ambang kemasukan jatuh ke tahap yang boleh diterima untuk pemain arduino biasa. Dan bukan sahaja pemain arduino, tetapi mana-mana orang yang mempunyai keinginan untuk melakukan sesuatu tentang topik IoT (Internet of Things), dan tanpa menghabiskan banyak masa membaca dokumentasi untuk litar mikro dan mengkaji API untuk modul ini.

Video ini menduplikasi sepenuhnya bahan yang dibentangkan dalam artikel di bawah.

Nah, kita sudah tahu cara menyambungkan ESP8266 dan memasukkannya ke dalam mod pengaturcaraan, sekarang mari kita beralih kepada sesuatu yang lebih berguna.

Saya akan katakan dengan segera - sebaik sahaja kami memprogramkan modul dalam persekitaran pembangunan arduino, kami merobohkan perisian tegar asli, dan kami tidak lagi dapat bekerja dengan modul menggunakan arahan AT. Secara peribadi, ini tidak sejuk / panas untuk saya, tetapi jika seseorang memerlukannya, menjelang akhir artikel saya akan menunjukkan kepada anda bagaimana untuk menghidupkan semula firmware asli ke dalam modul, atau sejenis pemuat seperti NodeMcu.

Sebagai permulaan, muat turun versi terkini Arduino IDE di luar tapak, pada masa ini ia adalah 1.6.7. Versi lama seperti 1.0.5. tidak akan berfungsi, kerana mereka tidak mempunyai fungsi yang diperlukan, dan menari dengan tamborin tidak menarik minat kita, bukan?

Kami memulakan persekitaran pembangunan dan segera pergi ke Fail / Tetapan:

Http://arduino.esp8266.com/stable/package_esp8266com_index.json

Kemudian kita pergi Alat / Papan: / Pengurus Lembaga ...:

Tetingkap pengurus papan akan muncul di hadapan kita, tatal ke bahagian paling bawah, dan jika semuanya dilakukan dengan betul, kita akan melihat sesuatu seperti ini:

Kami mengklik dengan kursor pada tulisan " esp8266 oleh Komuniti ESP8266"selepas itu, kami mempunyai butang" Pasang ", pilih versi yang dikehendaki, saya ambil yang terakhir, hari ini ia adalah 2.1.0. dan pasangkannya. Persekitaran pembangunan akan memuat turun fail yang diperlukannya (kira-kira 150 megabait) dan sebaliknya tulisan" esp8266 oleh Komuniti ESP8266"" INSTALLED "muncul, iaitu, ia dipasang:

Tatal ke bawah senarai papan dan lihat bahawa kami mempunyai banyak ESP berbeza dalam senarai, ambil "Modul ESP8266 Generik":

Pergi ke "Alat" dan pilih port COM yang dikehendaki (saya ada COM32) penukar Arduino atau USB UART, kemudian tetapkan Kelajuan Muat Naik: "115200":

Kami menetapkan kelajuan kepada 74880 dan "NL & CR" dan sekali lagi mematikan dan menghidupkan kuasa dan ia akan bertindak balas dengan beberapa maklumat penyahpepijatan:

Ambil perhatian bahawa 74880 bukanlah kelajuan utama ESP8266, ia hanya menghantar maklumat nyahpepijat padanya. Jika modul tidak menghantar apa-apa ke konsol, maka ada kemungkinan sesuatu telah disambungkan dengan tidak betul.

Secara lalai, kelajuan sepatutnya 115200, tetapi dalam beberapa kes ia boleh menjadi 9600 dan yang lain ... Jadi cuba ambil.

Selepas memilih kelajuan yang diperlukan, kami menghantar modul "AT" dan ia harus menjawab bahawa semuanya adalah "OK". Perintah AT + GMR memaparkan maklumat tentang perisian tegar.

Sebelum anda mula menyalakan ESP8266 ke dalam Arduino IDE, saya menasihati anda untuk membaca artikel itu hingga akhir.

Sekarang mari cuba menghidupkan ESP8266 melalui Arduino IDE. Kami memindahkan modul ke mod pengaturcaraan (saya menulis bagaimana untuk melakukan ini dalam artikel sebelumnya).

Mari jahit flasher dengan LED biasa:

// Oleh MrPodelkinC youtube.com/RazniePodelki // khas untuk geektimes.ru/post/271754/ #define TXD 1 // GPIO1 / TXD01 persediaan void () (pinMode (TXD, OUTPUT);) void loop () (digitalWrite () TXD, TINGGI); kelewatan (1000); digitalWrite (TXD, LOW); kelewatan (1000);)

Berkelip? Jadi semuanya dilakukan dengan betul. Di manakah saya mendapat bahawa LED disambungkan ke pin pertama? Dalam artikel sebelumnya, terdapat gambar dengan pinout modul yang berbeza, dan terdapat susun atur port apabila menggunakan pemuat but Arduino (pin ditandakan dengan warna merah jambu).

Berkelip LED sudah tentu bagus, tetapi anda perlu menutup beberapa jenis pelayan web atau mula mengawal LED sekurang-kurangnya menggunakan butang dalam penyemak imbas, bukan? Tetapi saya akan memberitahu anda tentang perkara ini lain kali.

Dan sekarang bagaimana untuk mengimbas kembali perisian tegar asli, dan cara untuk menyalakan modul secara amnya dengan pemuat but pihak ketiga. Untuk ESP8266, terdapat program seperti NodeMCU Flasher, yang pada asalnya direka untuk menyalakan pemuat but NodeMCU. Tetapi ternyata, ia juga memancarkan perisian tegar lain dengan sempurna.

Saya akan melampirkan arkib dengan program dan perisian tegar ini pada artikel untuk kemudahan, tetapi anda sentiasa boleh memuat turun versi baharu NodeMCU Flasher.

Dalam folder "nodemcu-flasher-master" terdapat 2 folder Win64 dan Win32, dan bergantung pada kedalaman bit OS anda, pilih yang dikehendaki. Kemudian, dalam folder Release, jalankan "ESP8266Flasher.exe" dan lihat antara muka program:

Pilih port COM yang dikehendaki dan pergi ke tab "Config", keluarkan pangkah di sebelah "INTERNAL: // NODEMCU" dan letakkan satu item di bawah, seperti dalam tangkapan skrin:

(Jika anda ingin memancarkan pemuat but NodeMCU, keluarkan salib di tempat yang tiada, dan letakkan di tempatnya, iaitu berhampiran "INTERNAL: // NODEMCU").

Kemudian kami klik pada gear dan pilih di mana firmware kami terletak, firmware biasanya dalam format * .bin (dalam arkib yang dilampirkan ialah "v0.9.5.2 AT Firmware.bin" yang terdapat dalam folder utama), dan juga pilih "0x00000" dan lebih tinggi.

Kami kembali semula ke tab "Operasi", tukar modul ke mod pengaturcaraan dan tekan "Flash":

Itu sahaja, modul mula berkelip, selepas berkelip, jangan lupa reboot modul dan voila, ia dinyalakan dengan firmware yang kita perlukan.

Kami menyemak dengan arahan AT "AT + GMR" jika kami melakukan semuanya dengan betul:

Seperti yang anda lihat, semuanya telah dijahit dengan baik.

Dalam proses mengkaji dan mereka bentuk projek yang lebih kompleks, tiba masanya apabila terdapat keperluan dan keinginan untuk belajar cara bekerja dengan jenis komunikasi yang meluas seperti WiFi. Memandangkan jenis komunikasi inilah yang membolehkan anda membuat rangkaian tunggal dengan selesa untuk peranti rumah pintar anda dan mengawalnya, contohnya, daripada telefon mudah alih, tablet atau komputer, iaitu, dengan kata lain, mencipta rumah pintar sebenar yang akan menelan belanja anda sepuluh kali lebih murah daripada membeli penyelesaian siap pakai di kedai. Penggunaan WiFi sudah tentu tidak terhad kepada ini, dan terdapat begitu banyak contoh menggunakan jenis komunikasi ini yang tidak masuk akal untuk menyenaraikannya, dan jika anda sampai ke halaman ini, maka anda sudah perlu menggunakan WiFi untuk beberapa sebab, anda hanya perlu memikirkan cara untuk bekerja dengannya dengan betul ...

Kami akan menyusunnya berdasarkan modul WiFi yang paling murah dan paling popular. ESP8266-01... Anda boleh membeli modul WiFi ESP8266-01 di laman web kami.

Salah satu kelebihan utama modul sedemikian ialah kehadiran memori dan mikropengawalnya sendiri di papan, yang membolehkannya berfungsi secara bebas dengan memuatkan lakaran terus ke dalam modul itu sendiri.

Sebenarnya terdapat beberapa pengubahsuaian modul WiFi ESP8266 dan kami tidak akan menyenaraikannya di sini, setelah mengetahui cara bekerja dengan satu, anda boleh mula bekerja dengan orang lain dengan mudah. Saya ingin ambil perhatian segera bahawa bekerja dengan WiFi mungkin kelihatan seperti tugas yang agak sukar, dan jika terdapat beberapa projek yang telah siap dalam bagasi anda, adalah lebih baik untuk meninggalkan komunikasi WiFi buat masa ini dan menggunakan komunikasi radio dalam projek anda, bekerja dengannya. adalah lebih mudah untuk difahami. Seluruh komuniti dan forum tematik sedang diwujudkan untuk berfungsi dengan modul WiFi, yang sekali lagi membuktikan betapa sukarnya bagi kebanyakan orang untuk segera memahami jenis komunikasi ini, dan apabila membaca semula semua maklumat, kebanyakan orang hanya hilang semangat. Kemungkinan besar, saya tidak akan dapat memuatkan semua maklumat penting dalam rangka artikel ini sahaja, dan tidak ada gunanya dalam hal ini, jika tidak, kekeliruan lain akan berlaku. Saya akan cuba mengikuti laluan urutan yang ketat bagi mata yang paling penting supaya anda boleh mula memahami prinsip jenis komunikasi ini dan kemudian hanya mengembangkan kemahiran anda ke arah ini sendiri.

Oleh itu, mari kita mulakan dan mula-mula menganalisis kesimpulan modul WiFi ESP8266-01.

VCC- bekalan kuasa modul dari 3V hingga 3.6V

GND- Bumi.

RST- pin Reset bertanggungjawab untuk but semula modul.

CH_PD- "mengurangkan kuasa cip" apabila kuasa digunakan padanya, operasi modul diaktifkan.

TX- pemindahan data (antara muka UART)

RX- penerimaan data (antara muka UART)

GPIO0

GPIO2- port I / O tujuan umum

Pin GPIO0 dan GPIO2 adalah pin digital yang sama yang kami gunakan pada papan Arduino untuk sambungan dengan pelbagai sensor, dan ia digunakan dalam kes kerja bebas pada mikropengawal WiFi dalaman modul ESP8266-01.

Untuk kuasa modul ESP8266-01 dengan pasti, gunakan bekalan kuasa 3.3V yang distabilkan luaran, dan lebih baik jangan cuba menarik kuasa dari papan Arduino anda, kerana modul itu menarik arus sehingga 215mA dan ini mungkin berakhir dengan teruk untuk papan nyahpepijat anda. Di mana untuk mendapatkan bekalan kuasa 3.3V yang stabil, saya harap ia tidak menjadi masalah untuk anda, jika tidak jelas terlalu awal untuk anda berurusan dengan modul ini. Sebagai contoh, saya suka menggunakan modul bekalan kuasa 3.3V dan 5.0V YWRobot ini untuk mengumpulkan litar pada papan roti dengan cepat, yang membolehkan anda mendapatkan voltan stabil 3.3V atau 5V dengan cepat pada trek kuasa papan roti yang sepadan.

Kami menyambung tambah (+) daripada bekalan kuasa 3.3V kami ke pin VCC Modul ESP8266-01, dan tolak (-) bekalan kuasa disambungkan kepada output GND... Dalam keadaan ini, LED merah pada modul akan dihidupkan, menandakan kepada kami bahawa kuasa disambungkan dengan betul. Agar modul diaktifkan, ia juga perlu untuk menyambung tambah (+) bekalan kuasa dengan output CH_PD Modul ESP8266-01 dan dinasihatkan untuk melakukan ini dengan segera melalui perintang 10kOhm. Sekarang, apabila kita menghidupkan kuasa, LED merah pada modul akan menyala dan LED biru akan berkelip dengan cepat beberapa kali. Jika ini berlaku untuk anda, maka semuanya baik-baik saja, anda menyambung semuanya dengan betul dan modul anda berfungsi. Jika tidak, semak sambungan sekali lagi, atau gantikan modul, kerana kemungkinan besar ia tidak berfungsi.

Teruskan. Untuk bekerja dengan modul WiFi ESP8266, kami memerlukan penyesuai USB-UART. Terdapat penyesuai yang berbeza, contohnya: FT232RL, CP2102, PL2303. Tetapi kami akan menganggap bahawa anda tidak mempunyai penyesuai sedemikian, dan kami akan menggunakan papan Arduino sebagai penyesuai USB-UART. Saya akan menggunakan papan Arduino NANO untuk ini, dan anda boleh menggunakan mana-mana papan lain yang anda boleh gunakan. Sambungan satu dengan satu pada mana-mana papan adalah sama. Kami membuat sambungan mengikut rajah berikut.

Mari kita lihat apa yang telah kita lakukan di sini. Beri perhatian segera bahawa kami telah membuat litar pintas pada papan Arduino. RST dan GND... Manipulasi sedemikian mematikan mikropengawal dan membolehkan kami membuat penyesuai USB-UART sebenar daripada papan Arduino kami.

Memandangkan kami menjanakan modul WiFi ESP8266-01 daripada sumber kuasa luaran yang berasingan, tidak dapat dilupakan bahawa kami mesti sentiasa menyambungkan asas semua bekalan kuasa antara satu sama lain dalam projek kami. Oleh itu, kami menyambungkan output GND Papan Arduino dengan tanah (-) bekalan kuasa 3.3V luaran kami yang direka untuk menggerakkan modul ESP8266-01.

Pengeluaran TX sambungkan papan Arduino anda ke pin TX Modul ESP8266-01. Talian ini akan menghantar data dari modul WiFi ke papan Arduino. Sesiapa yang biasa dengan antara muka UART mungkin berfikir: "Tetapi bagaimana ini boleh berlaku? Di mana-mana sahaja mengajar bahawa TX harus berhubung dengan RX. TX menghantar maklumat, dan RX menerima." Dan anda akan betul. Semuanya betul, TX sentiasa menyambung ke RX, tetapi tepat dalam kes apabila kita membuat penyesuai UART dari Arduino yang kita perlukan untuk menyambungkan peranti secara langsung. Pertimbangkan ini sebagai pengecualian kepada peraturan.

Talian RX papan Arduino anda juga disambungkan terus ke talian RX Modul ESP8266-01. Baris ini akan menghantar maklumat dari papan Arduino ke papan modul WiFi. Tetapi kami membuat sambungan ini melalui pembahagi voltan yang dipanggil, yang terdiri daripada dua perintang dengan nilai nominal 1 kOhm dan 2 kOhm. Kita perlu mengurangkan voltan pada talian ini menggunakan dua perintang (pembahagi voltan), kerana papan Arduino menghantar isyarat logik dengan voltan 5V, dan modul WiFi berfungsi dengan voltan 3.3V. Untuk menukar isyarat logik, kami boleh menggunakan papan penukar aras logik khas, yang pastinya betul, tetapi sekali lagi, andaikan anda tidak memilikinya, dan kami terpaksa menggunakan cara yang lebih mudah dan melakukannya menggunakan pembahagi voltan. .

Setakat ini kami telah menyambungkan semua yang diperlukan untuk kerja selanjutnya, tetapi kami masih mempunyai 3 lagi output yang tidak digunakan ( GPIO0, GPIO2 dan RST) pada Modul WiFi ESP8266-01... Untuk pengendalian modul WiFi yang stabil, kita perlu menarik baki pin yang tidak digunakan ini kepada positif (+) talian bekalan kuasa modul melalui perintang 10kOhm.

Ini akan menyelamatkan kita daripada pelbagai gangguan (pickup) dan menjadikan modul berfungsi stabil. Lebih baik buat segera. Jika tidak, jangan terkejut bahawa modul anda sentiasa terlebih beban, memberikan maklumat yang tidak dapat difahami, atau tidak mahu berfungsi sama sekali. Penggunaan perintang tarik ke atas pada pin mikropengawal yang tidak digunakan sepatutnya, sebagai peraturan, jika anda mahukan operasi yang stabil dalam projek anda.

Dan sekali lagi kami menyemak kecekapan modul WiFi ESP8266-01. Kami menghidupkan kuasa dan melihat bahawa LED merah menyala dan biru berkelip beberapa kali. Jika semuanya berlaku seperti ini, maka hebat, mari kita teruskan. Jika tidak, kami menyemak ketepatan sambungan, serta kualiti semua kenalan. Ia mungkin hanya situasi remeh apabila mereka menyemak semula segala-galanya sepuluh kali dan memastikan semuanya disambungkan dengan betul, tetapi termasuk modul, anda melihat bahawa LED biru tidak berkelakuan dengan secukupnya, sentiasa menyala, sentiasa berkelip atau tidak. bertindak balas sama sekali. Ini mungkin disebabkan oleh sentuhan yang lemah pada beberapa talian. Sebagai contoh, apabila memasang litar pada papan roti, beberapa perintang longgar di tempatnya dan ini menyebabkan gangguan. Semak kualiti sambungan. Modul ini sangat sensitif. Jangan abaikan ini. Ini adalah sebab biasa untuk prestasi tidak stabil.

Secara umum, kami telah selesai dengan sambungan. Sekarang kita perlu menyediakan program IDE Arduino untuk berfungsi dengan modul WiFi ESP8266-01. Untuk melakukan ini, kami perlu memuat turun dan memasang dalam Arduino IDE arkib yang diperlukan dengan perpustakaan, contoh dan papan ESP, yang kemudiannya akan membolehkan kami memuat naik lakaran terus ke mikropengawal modul ESP8266-01, menukar firmware, dsb. Sebagai sebahagian daripada artikel ini, kemungkinan besar kami tidak memerlukan tetapan ini, tetapi saya nampaknya selepas kami mengetahui cara menyambungkan modul, prosedurnya akan betul jika kami segera memuat turun semua yang kami perlukan untuk bekerja dengan Arduino IDE. Semuanya mudah pada dasarnya.

Melancarkan program IDE Arduino dan pergi ke menu "Fail" - "Tetapan"

Dalam tetingkap yang muncul, tulis "esp8266" di medan atas. Akibatnya, kami hanya akan mempunyai perisian tegar yang diperlukan dalam tetingkap. Apabila anda mengklik pada perisian tegar, butang akan muncul "Pemasangan"... Klik pada butang "Pemasangan" dan tunggu sehingga semuanya ditetapkan. Arkibnya cukup besar, kira-kira 150 megabait, jadi anda perlu menunggu.

Selepas selesai pemasangan. But semula Arduino IDE dan lihat bagaimana papan ESP baharu muncul dalam menu "Alat" - "Papan". Itu sahaja. Kami telah selesai menyediakan IDE Arduino. Setakat ini, kami tidak memerlukan tetapan ini, tetapi dalam kerja kami selanjutnya, kami tidak boleh melakukannya tanpanya.

Kami menyambung segala-galanya dan bersedia, kini kami boleh mula menangani kawalan. Malah, kini akan ada kesinambungan menyemak dan mengkonfigurasi modul menggunakan arahan AT, dan anda tidak boleh melakukannya tanpanya. Modul WiFi dilaksanakan sedemikian rupa sehingga semua komunikasi dengannya berlaku menggunakan arahan AT yang dipanggil, yang disambungkan ke dalam perisian tegar modul. Kami tidak akan menyenaraikan semua arahan AT di sini, terdapat beberapa daripadanya dan jika anda ingin mengkaji semuanya dengan teliti, anda boleh mencarinya dengan mudah di Internet. Dan sekarang kami akan menggunakan hanya yang paling perlu untuk bermula.

Oleh itu, kami menyambungkan papan Arduino kami melalui kabel USB ke komputer. Bekalan kuasa luaran yang membekalkan Modul WiFi ESP8266-01 tidak perlu dihidupkan lagi. Kami melancarkan program Arduino IDE, pilih papan Arduino kami dari menu "Alat", dalam kes saya ia adalah Arduino NANO, dan anda memilih milik anda. Juga, jangan lupa untuk memilih port yang Arduinka kami disambungkan. Saya harap anda memahami semua ini dan tahu bagaimana untuk melakukannya.

Membuka pemantauan pelabuhan "Alat" - "Monitor Pelabuhan"... Memilih kelajuan port 74880 (pada kelajuan ini modul dimulakan) dan di sebelah kiri dalam senarai pilih "NL & CR"

Kini kami menyambungkan sumber kuasa luaran yang menguatkan modul WiFi kami. Selepas itu, anda harus melihat maklumat berikut dalam monitor port.

Di sini kami melihat beberapa maklumat tentang modul WiFi kami (kelajuan, jumlah memori di atas kapal, dll.). Maklumat yang diterima mungkin berbeza bergantung pada versi perisian tegar modul WiFi. Jangan kita fokus pada perkara ini. Perkara lain yang penting. Di bawah kita melihat satu set simbol tidak bermakna, yang bermaksud bahawa kelajuan port (74880 baud), yang kami tetapkan, hanya sesuai untuk pemuatan awal modul, untuk melihat maklumat ini secara normal, tetapi kelajuan ini tidak sesuai untuk biasa. komunikasi dengan modul WiFi.

Untuk mencari kelajuan port yang betul, kami hanya akan menukar kelajuan port dan menghantar aksara ke port (medan di atas dan butang hantar) AT sehingga kita mendapat jawapan okey... Jika anda cuba menghantar simbol sekarang AT ke port pada kelajuan 74880, anda akan menerima satu atau dua aksara tidak bermakna lagi sebagai tindak balas.

Cuba tetapkan kadar baud kepada 115200 dengan segera dan hantar arahan AT. Selalunya, modul dipancarkan pada kelajuan ini.

Ini adalah gambar yang anda patut lihat dalam monitor port anda. Jika anda masih menerima set aksara yang tidak dapat difahami sebagai tindak balas, perlahan dan ulangi penghantaran AT arahan sehingga ia kembali sebagai tindak balas okey... Jika anda mencuba semua kelajuan dan tidak mendapat jawapan yang betul, maka anda tidak bernasib baik dan modul dipancarkan dengan perisian tegar pada kelajuan yang tidak standard. Kemudian ia kekal hanya untuk mengemas semula modul dengan perisian tegar biasa, tetapi ini adalah topik untuk artikel berasingan.

Saya harap semuanya baik dan kelajuannya betul. Dengan cara ini, jika anda cuba mematikan dan menghidupkan modul WiFi selepas anda memilih kelajuan yang betul, maka bukannya maklumat awal yang sama yang dipaparkan dengan betul pada 74880 baud, sebaliknya, anda akan melihat set rawak aksara, tetapi pada akhirnya anda akan melihat perkataan "bersedia". Tetapi kami mempunyai peluang untuk melihat maklumat awal ini dalam bentuk biasa pada kelajuan yang betul, untuk ini anda perlu memulakan semula modul secara pemrograman menggunakan arahan AT AT + RST.

Untuk mengetahui versi perisian tegar modul WiFi ESP8266-01 anda, anda perlu menghantar arahan ke monitor port AT + GMR dan sebagai tindak balas anda akan menerima lebih kurang maklumat berikut:

Modul WiFi ESP8266-01 boleh berfungsi dalam kedua-dua mod titik akses dan mod klien. Untuk membolehkan modul berfungsi dalam semua mod sekaligus, hantar arahan ke monitor port AT + CWMODE = 3 dan sebagai balasan anda harus menerima okey.

Perintah AT + CWLAP akan membolehkan anda melihat semua titik akses WiFi yang modul anda lihat pada masa ini. Modul saya, sebagai contoh, pada masa ini hanya melihat tiga titik akses WiFi dalam kawasan liputannya. Jawapannya sepatutnya seperti ini:

Sebagai contoh, kami mengetahui kata laluan untuk titik akses ketiga dan untuk menyambung kepadanya kami melaksanakan arahan itu AT + CWJAP = "nama", "kata laluan", dalam kes saya arahan ini kelihatan seperti AT + CWJAP = "dsl_unlim_512_home", "11111111", yang mana kami mendapat jawapan yang berjaya:

Parameter arahan ditulis pada memori kilat WiFi modul ESP8266-01, dan jika kami mematikan modul dan menghidupkannya semula, ia akan menyambung secara automatik ke pusat akses ini. Lihat secara tidak sengaja dalam arahan, jangan benarkan ruang, jika tidak, anda akan menerima balasan RALAT... Perlu diingatkan bahawa dalam versi perisian tegar terkini adalah disyorkan untuk menggunakan arahan AT + CWJAP_CUR, iaitu, arahan akan kelihatan seperti AT + CWJAP_CUR = "nama", "kata laluan". Jika kami tiba-tiba terlupa titik akses mana modul kami disambungkan, kami perlu menghantar arahan itu AT + CWJAP? atau AT + CWJAP_CUR? dan sebagai tindak balas, kami akan menerima titik akses yang modul WiFi disambungkan pada masa ini.

Dengan sambungan dan persediaan awal Modul WiFi ESP8266-01 kami memikirkannya. Modul ini berfungsi dan bersedia untuk pelaksanaan projek anda selanjutnya. Tidak mungkin untuk menganalisis semua kemungkinan contoh bekerja dengan modul ini dalam rangka satu artikel, dan kami akan menangani perkara ini dalam artikel berikut. Dan bagi mereka yang tidak begitu mesra dengan pengaturcaraan, tetapi benar-benar ingin mula menguruskan projek mereka dengan cepat menggunakan WiFi, saya cadangkan memperkenalkan pereka projek RemoteXY WiFi. Tapak ini akan membantu anda dengan mudah membuat antara muka kawalan untuk telefon mudah alih atau tablet anda dan menggunakannya untuk mengawal peranti anda yang anda sambungkan modul WiFi.

Cara menggunakan modul ESP-01 untuk mengawal LED melalui Internet, modul yang membolehkan anda mengawal sebarang peranti elektrik.

Dalam tutorial ESP8266 ini, kami menggunakan modul ESP-01 untuk mengawal LED melalui Internet. ESP8266 ialah platform yang murah tetapi berkesan untuk berkomunikasi melalui Internet.

Ia juga mudah digunakan dengan Arduino. Selepas melengkapkan pelajaran ini, anda akan mendapat pengetahuan asas tentang cara mengawal sebarang peranti elektrik melalui Internet dari mana-mana sahaja di dunia!

Di sini kami akan menggunakan penukar USB-ke-TTL untuk memprogramkan ESP8266 ESP-01. Dan kami akan gunakan untuk membangunkan pelayan web untuk mengawal LED dari jauh.

Bagaimana ia berfungsi

ESP8266 boleh dikawal dari rangkaian wifi tempatan atau dari internet (selepas penghantaran port). Modul ESP-01 mempunyai pin GPIO yang boleh diprogramkan untuk menghidupkan atau mematikan LED atau geganti melalui Internet. Modul ini boleh diprogramkan dengan penukar USB-ke-TTL Arduino melalui pin bersiri (RX, TX).

Menyambung Perkakasan ke ESP8266 Anda

Kita boleh menggunakan penukar USB-ke-TTL atau menggunakan Arduino untuk memprogramkan ESP8266. Berikut ialah tiga cara yang boleh anda ikuti untuk memuat naik kod ke ESP8266 anda - pilih yang paling sesuai untuk anda. Rujuk gambar rajah untuk setiap pilihan dan laraskan perkakasan anda dengan sewajarnya.

1. Penukar USB-ke-TTL menggunakan penyambung DTR

Jika anda menggunakan penukar USB-ke-TTL dengan output DTR, muat turun akan berjalan lancar. Sila ambil perhatian bahawa monitor bersiri tidak akan berfungsi dengan ini.

USB TTL → ESP8266 ESP-01
GND → GND
TX → RX
RX → TX
RTS → RST
DTR → GPIO0

2. Penukar USB ke TTL tanpa output DTR

Untuk menyambungkan penukar USB ke TTL tanpa pin DTR, kita perlu menggunakan transmisi manual. Untuk ini kami menggunakan dua butang - lihat rajah berikut:

USB TTL → ESP8266 ESP-01
GND → GND
TX → RX
RX → TX
Butang Set Semula → RST
Butang Denyar → GPIO0

Apabila memuat turun kod, klik butang Muat Turun (Flash). Pastikan butang ditekan semasa anda menekan butang "Reset / Reset" sekali. Anda kini boleh melepaskan butang Flash. ESP8266 kini berada dalam mod di mana anda boleh memuat naik lakaran.

3. Menggunakan Arduino Uno untuk memuat naik kod ke ESP8266

Anda boleh menggunakan ESP8266 ESP-01 untuk menjalankan kod. Apabila memuat turun kod, ikut prosedur yang sama seperti dalam perenggan kedua - terus butang "Muat turun" ditekan apabila anda menekan butang set semula sekali, dan kemudian lepaskan butang Flash.

ARDUINO → ESP8266 ESP-01
GND → GND
TX → TX
RX → RX
Butang set semula → RST
Denyar → butang GPIO0

Muat turun kod ESP8266

Gunakan mana-mana kaedah di atas dan buka kemudian pilih papan ESP8266 daripada menu:

Alat → Papan → Modul ESP8266 Generik
(Alat -> Papan -> Modul ESP8266)

Catatan. Jika anda belum memasang dan mengkonfigurasi papan ESP8266 anda untuk Arduino, lakukan dengan mengikuti langkah di atas tutorial ini. Kemudian anda boleh meneruskan.

Sekarang salin kod di bawah ke dalam Arduino IDE dan tekan butang muat turun. Tukar SSID kepada hotspot wifi dan tukar kata laluan kepada kata laluan wifi anda dan susun.

#termasuk const char * ssid = "YOUR_SSID"; // taip ssid const char * kata laluan = "YOUR_PASSWORD"; // taip kata laluan anda int ledPin = 2; // GPIO2 pelayan WiFiServer ESP8266 (80); // Persediaan Port Perkhidmatan tidak sah () (Serial.begin (115200); kelewatan (10); pinMode (ledPin, OUTPUT); digitalWrite (ledPin, LOW); // Sambung ke Rangkaian WiFi Serial.println (); Serial.println (); Serial.print ("Menyambung ke"); Serial.println (ssid); WiFi.begin (ssid, kata laluan); manakala (WiFi.status ()! = WL_CONNECTED ) (kelewatan (500); Serial.print (".");) Serial.println (""); Serial.println ("WiFi disambungkan"); // Mulakan pelayan server.begin (); Serial.println ( "Pelayan dimulakan"); // Cetak alamat IP Serial.print ("Gunakan URL ini untuk menyambung:"); Serial.print ("http: //"); Serial.print (WiFi.localIP ()); Serial .println ("/");) void loop () (// Semak sama ada klien telah menyambungkan WiFiClient client = server.available (); if (! client) (return;) // Tunggu sehingga klien menghantar beberapa data Serial .println ("pelanggan baharu"); while (! client.available ()) (delay (1);) // Baca baris pertama permintaan String request = client.readStringUntil ("\ r"); Serial.println (permintaan); client.flush (); // Ma tch nilai int permintaan = RENDAH; if (request.indexOf ("/ LED = ON")! = -1) (digitalWrite (ledPin, HIGH); nilai = HIGH;) jika (request.indexOf ("/ LED = OFF"! = -1) ( digitalWrite (ledPin, LOW); nilai = LOW;) // Tetapkan ledPin mengikut permintaan // digitalWrite (ledPin, nilai); // Kembalikan klien respons.println ("HTTP / 1.1 200 OK"); client.println ("Jenis-Kandungan: teks / html"); client.println (""); // jangan lupa klien yang satu ini.println (""); client.println (" "); client.print (" Pin led sekarang: "); if (nilai == TINGGI) (client.print (" On ");) else (client.print (" Off ");) client.println ( "

"); client.println (" Klik di sini hidupkan LED pada pin 2
"); client.println (" Klik di sini matikan LED pada pin 2
"); client.println (""); kelewatan (1); Serial.println (" Pelanggan diputuskan sambungan "); Serial.println (" ");)

Buka monitor bersiri dan buka URL yang ditunjukkan pada monitor bersiri anda melalui pelayar web. Sambungkan GPIO 2 dari ESP8266 ke pin LED yang lebih panjang. Anda kini boleh mengawal LED anda dari jauh melalui Internet!

Keluarkan sebarang wayar yang diperlukan untuk memuat turun kod. Modul LM1117 digunakan untuk menyediakan output 3.3V terkawal. Ini akan membolehkan anda menjadikan ESP8266 atau ESP-01 berdiri sendiri.

Sambungan Internet ESP8266

Pada masa ini, modul ESP8266 hanya tersedia melalui rangkaian wifi tempatan. Untuk mengawal peranti daripada Internet, anda perlu melakukan pemajuan port pada penghala anda.

Untuk melakukan ini, cari alamat IP sistem anda sama ada dengan arahan "ifconfig" dalam terminal anda, atau pergi ke whatsmyip.org. Salin alamat IP anda. Sekarang buka tetapan penghala dan pergi ke tetapan "Memajukan". Masukkan butiran untuk "Port Perkhidmatan" dan "Alamat IP". Port perkhidmatan ialah nombor port daripada kod Arduino anda (port perkhidmatan: 80):

Pelayan WiFiServer (80); // Servis Port

Alamat IP adalah yang anda nyatakan sebelum ini. Biarkan selebihnya tetapan sebagai lalai. Sekarang pergi ke penyemak imbas anda dan masukkan alamat: xxx.xxx.xx.xx: 80. Halaman untuk mengawal LED harus dibuka.