Kontrol Arduino Tank melalui Wi-Fi. Pengendalian mesin melalui WiFi menggunakan kontrol beban wifi android ESP8266 NodeMCU Arduino

Pernah terpikir untuk mengendalikan perangkat elektronik apa pun menggunakan ponsel cerdas Anda? Setuju, akan sangat keren mengendalikan robot atau perangkat lain dari ponsel cerdas Anda. Kami menawarkan pelajaran sederhana untuk pemula dan boneka tentang cara mengontrol smartphone menggunakan Arduino melalui Bluetooth. Jika setelah pelajaran ini Anda ingin lebih mengenal Arduino, Anda dapat menemukan buku tentangnya.

Langkah 1. Apa yang kita butuhkan

Perangkat

Modul - Modul Bluetooth HC 05/06
Papan - Arduino
Dioda Pemancar Cahaya (LED)
Resistor - 220Ω
perangkat Android

Perangkat lunak

Arduino IDE
Android Studio (sebenarnya tidak perlu, karena aplikasi Androidnya akan Anda temukan di bawah)

Langkah 2. Cara kerjanya

Biasanya langkah ini kita lakukan di akhir, namun agar Anda memahami apa yang harus kita capai, lihatlah hasil pada langkah perantara ini. Kami juga telah menerbitkan video tutorial langkah demi langkah di bawah ini.

Langkah 3. Kita mulai merakit sirkuit

Rangkaian dalam tutorial kita sangat sederhana dan kecil sehingga kita hanya perlu membuat beberapa sambungan:

Pin Arduino____________Pin Modul Bluetooth
RX (Pin 0)______________TX
TX (Pin 1)______________RX
5V______________VCC
GND__________GND

Hubungkan negatif LED ke GND di Arduino, dan positif ke pin 13 melalui resistansi 220 Ohm - 1 kOhm. Secara umum, pada gambar di bawah ini semuanya cukup jelas.

Jangan sambungkan output Bluetooth RX ke RX dan TX ke TX ke output Arduino, Anda tidak akan menerima data apa pun, di sini TX berarti mengirim, RX berarti menerima.

Langkah 4: Mengunggah Program ke Arduino

Sekarang kita perlu menulis sebuah program dan mengunggahnya ke Arduino kita. Jika Anda belum tahu cara melakukannya, unduh buku. Kode di bawah ini persis seperti yang perlu kita muat ke Arduino.

/* Bluetooh Basic: LED ON OFF * Coder - Mayoogh Girish * Website - http://bit.do/Avishkar * Unduh Aplikasi: https://github.com/Mayoogh/Arduino-Bluetooth-Basic * Program ini memungkinkan Anda untuk mengontrol LED pada pin 13 arduino menggunakan modul bluetooth */ char data = 0; //Variabel untuk menyimpan data yang diterima void setup() ( Serial.begin(9600); //Mengatur baud untuk transmisi data serial pinMode(13, OUTPUT); //Mengatur pin digital 13 sebagai pin keluaran ) void loop() ( if(Serial.available() > 0) // Kirim data hanya ketika Anda menerima data: ( data = Serial.read(); //Baca data yang masuk dan simpan ke dalam data variabel Serial.print(data); // Cetak Nilai di dalam data di Serial monitor Serial.print("\n"); //Baris baru if(data == "1") // Memeriksa apakah nilai data sama dengan 1 nilai digitalWrite(13, HIGH); adalah 1 maka LED menyala else if(data == "0") // Memeriksa apakah nilai data sama dengan 0 digitalWrite(13, LOW); //Jika nilainya 0 maka LED mati ) )

Langkah 5. Bagaimana prosesnya bekerja

Modul HC 05/06 beroperasi melalui saluran komunikasi serial. Aplikasi Android mengirimkan data secara berurutan ke modul Bluetooth saat Anda menekan tombol tertentu. Bluetooth di ujung lain menerima data dan mengirimkannya ke Arduino melalui koneksi TX modul Bluetooth (koneksi Arduino RX).

Kode yang dimuat ke Arduino memeriksa data yang diterima dan membandingkannya. Jika “1” diterima, LED akan menyala dan mati saat “0” diterima. Buka monitor port serial dan amati data yang diterima.

Langkah 6. Aplikasi untuk perangkat Android

Dalam tutorial ini kami tidak akan membahas cara membuat aplikasi untuk perangkat Android. Anda dapat mengunduh aplikasinya di GitHub.

Bagaimana cara menggunakan aplikasi ini?

Setelah kita terhubung melalui Bluetooth, kita perlu mendownload dan menginstal aplikasi yang menggunakan smartphone :) akan mengontrol LED kita dari jarak jauh. Anda dapat mengunduh aplikasinya secara gratis di Amazon.com. Kami menghubungkan ponsel cerdas ke modul Bluetooth HC 05/06:

  1. Nyalakan modul HC 05/0
  2. Mencari perangkat
  3. Kami terhubung ke HC 05/06 dengan memasukkan kata sandi default “1234” atau “0000” (empat nol).

Setelah itu kita install aplikasinya di smartphone kita. Mari kita buka. Pilih perangkat - pilih modul Bluetooth dari daftar (HC 05/06). Setelah koneksi berhasil, tekan tombol ON untuk menyalakan LED dan tombol OFF untuk mematikan LED. Kemudian Anda dapat mengklik tombol “Disconnect” untuk memutuskan sambungan dari modul Bluetooth.

Ini adalah panduan untuk boneka dan pemula tentang cara menghubungkan modul Bluetooth dengan Arduino. Proyek ini dapat ditingkatkan dan dibawa ke tingkat yang lebih tinggi, misalnya otomatisasi rumah melalui kontrol ponsel cerdas, robot yang dikendalikan, dan banyak lagi.

Mentransfer firmware, pembaruan, dan data lainnya menggunakan besi solder dan kabel bukanlah solusi terbaik untuk Arduino. Namun, mikrokontroler untuk arduino wi-fi tidaklah murah, dan tidak selalu dibutuhkan, itulah sebabnya pengguna memilih untuk tidak menggunakannya dalam proyek mereka jika tidak diperlukan.

Tapi sekarang produk Cina lainnya telah menguasai pasar; Anda dapat menghubungkan jammer wi-fi esp8266 Anda sendiri ke papan Arduino atau sistem lain, dan Anda akan mendapatkan koneksi yang stabil dengan sejumlah keuntungan lainnya. Jadi mari kita cari tahu arduino uno wi-fi, dan apakah layak membeli modul ini, serta apa sebenarnya mikrokontroler serupa pada arduino wi-fi.

Modul Wi-Fi yang tersedia untuk Arduino

Saat ini, sebagian besar pengguna Arduino tidak lagi mengkhawatirkan harga perangkat tersebut, meskipun 3 tahun yang lalu modul wi-fi Arduino dianggap sebagai barang mewah. Semua ini berkat wi-fi jammer esp8266, yang pabrikannya memperkenalkan produk yang benar-benar baru ke pasar, luar biasa dalam fungsinya dan, pada saat yang sama, cukup murah, yang memberikan kontribusi signifikan dan menciptakan persaingan ke arah ini.

Oleh karena itu, Arduino wi-fi esp8266 kini dianggap sebagai modul paling terjangkau di pasaran, seperti semua saudaranya. Jadi, harga di situs asing mulai dari 2 dolar, yang memungkinkan Anda membeli modul ini secara berkelompok dan tidak perlu melakukan reflash ribuan kali, menyolder ulang kontak untuk mempertahankan fungsionalitas.

Pada awalnya, modul wi-fi Arduino ini digunakan terutama sebagai pelindung wi-fi Arduino, karena ini adalah pilihan termurah dan sama sekali tidak kalah dengan yang asli. Perangkat ini memang nyaris melegenda, karena tidak ada kekurangan berarti dari harganya. Ada banyak perpustakaan, termasuk perpustakaan pengguna, dan juga mendukung pekerjaan melalui bus Serial dan perintah AT dan AT+ yang paling sederhana. Berkat ini, tidak perlu mempelajari semantik C99 yang terkenal kejam, seperti yang sering terjadi pada mikrokontroler pihak ketiga lainnya.

Oleh karena itu, bahkan seorang pemula pun akan mengetahuinya dalam hitungan detik, dan seorang profesional akan dapat menggunakan perpustakaan yang sudah disiapkan. Keunggulan lainnya antara lain:

  1. Prosesornya 160 MHz, tetapi 32-bit, yang meninggalkan jejak tertentu pada kinerja. Namun perlu diingat bahwa modul ini masih digunakan bersama dengan papan Arduino, yang memotong frekuensi tinggi dan menghabiskan sebagian besar sumber daya untuk alasan yang tidak diketahui.
  2. Pabrikan yang merilis modul wi-fi esp8266 tidak menghentikan proyek menariknya, dan kini hadir sederet mikrokontroler yang sudah terbukti kualitasnya.
  3. Standar keamanan jaringan modern. Tentu saja, WPA dan WPA2 tidak lagi seaman yang kita inginkan, tetapi kehadirannya membuat kita senang dengan pengontrol yang murah.
  4. 16 port output, termasuk 10-bit, memungkinkan Anda bereksperimen dengan board.

Lebih penting lagi, di luar kotak Anda akan menemukan memori permanen hingga 4 megabita, tergantung pada jenis papannya, dan ini sangat menyederhanakan bekerja dengan perpustakaan besar dan bahkan beberapa file media. Lagi pula, pada sebagian besar papan Arduino, bahkan 1 megabyte dianggap sebagai kemewahan yang tidak terjangkau.

Karakteristik wi-fi esp8266 tentu menggembirakan, terutama dibandingkan dengan pesaingnya yang lebih mahal, namun pengguna yang tidak memiliki pengalaman sebelumnya dengan papan ini akan memiliki pertanyaan tentang bagaimana cara menghubungkannya. Faktanya adalah modul ini memiliki lebih banyak pin daripada yang biasa dilihat oleh pemula, dan karenanya, mereka mulai panik. Namun, jika Anda memahami situasinya, maka sebenarnya tidak ada yang rumit dalam hal ini. Cukup dengan menyimpan solder dan besi solder dan cukup membaca instruksinya.

Cara menghubungkan modul Wi-Fi ke Arduino

Mari kita lihat menghubungkan esp8266 esp 12e dan apa itu jembatan uart wi-fi esp8266. Bagaimanapun, koneksi dan konfigurasi modullah yang paling banyak menimbulkan pertanyaan.


Pertama-tama, tentukan versi mikrokontroler yang Anda miliki. Yang pertama, LED dipasang di dekat pin, dan yang kedua, yang mulai diproduksi baru-baru ini, lampu sinyal terletak di dekat antena.

Sebelum menghubungkan, Anda harus mengunduh firmware terbaru, yang memungkinkan Anda meningkatkan nilai tukar paket menjadi 9600 unit informasi per detik. Dan kami akan memeriksa koneksi menggunakan kabel usb-ttl dan terminal yang sesuai dari CoolTerm.


Pin untuk menghubungkan kabel yang dijelaskan di atas adalah standar, namun dayanya berasal dari pin 3,3 volt dari Arduino. Penting untuk diingat bahwa arus maksimum yang disuplai oleh papan tidak dapat diatur di atas 150 mA, dan modul wi-fi cloud cerdas esp8266 esp 07 dan esp8266 untuk arduino memerlukan 240 mA.

Namun, jika tidak ada sumber arus lain, Anda dapat menggunakan versi standar dari Arduino, tetapi daya papan akan berkurang. Meskipun, jika bebannya tidak berat, 70 mA sudah cukup, bersiaplah untuk reboot mikrokontroler secara tiba-tiba pada waktu beban puncak dan tulis perangkat lunak yang sesuai sehingga memfilter dan membagi file tanpa membebani papan secara berlebihan.


Opsi koneksi lainnya ada di bawah. Penting - kontak RX-TX dihubungkan dengan crosshair. Karena level sinyal modul ESP8266 adalah 3.3V, dan Arduino adalah 5V, kita perlu menggunakan pembagi tegangan resistif untuk mengubah level sinyal.

Mendaftarkan modul Wi-Fi di Arduino

Seperti yang anda ketahui, dengan pengalaman yang tepat, anda bisa memasangkan esp8266 ex 12e shield dengan smartphone, namun bagi pemula, mendaftarkan esp8266 esp 12 di sistem Arduino menyebabkan kesulitan. Sebenarnya, cukup menghubungkan modul dan memeriksa fungsinya dengan mengeluarkan beberapa perintah AT standar melalui menu debug.

Misalnya, Anda dapat menambahkan kedipan dengan LED standar (untuk diagram koneksi di atas):

#define TXD 1 // GPIO1/TXD01 void setup() ( pinMode(TXD, OUTPUT); ) void loop() ( digitalWrite(TXD, HIGH); penundaan(1000); digitalWrite(TXD, LOW); penundaan(1000) ;

Segera setelah dewan mengonfirmasi bahwa ia melihat mikrokontroler di sistem, Anda dapat mulai bekerja penuh dengannya. Namun, perlu dicatat bahwa jika papan Arduino itu sendiri digunakan dalam proyek hanya untuk menghubungkan pengontrol ini, maka ini tidak rasional.

Konverter USB-UART sudah cukup, karena esp8266 tidak menggunakan "otak" Arduino, dan memori flashnya cukup untuk menyimpan beberapa perpustakaan dasar dan firmware. Oleh karena itu, tidak ada gunanya mengeluarkan uang ekstra untuk papan tambahan jika Anda cukup menyoldernya ke konverter dan menggunakannya lebih lanjut dalam proyek. Pada saat yang sama, dengan menghubungkan sumber daya tambahan dan tanpa khawatir data akan berhenti dikirimkan pada saat yang paling genting karena kurangnya daya sistem.

Catatan penting! Untuk rangkaian terakhir, kita upload sketsanya ke Arduino seperti biasa, namun karena modul ESP8266 terhubung ke pin 0 dan 1, maka pemrograman menjadi tidak mungkin. Kompiler akan menampilkan kesalahan. Cabut kabel menuju ESP8266 dari pin 0 dan 1, lakukan pemrograman, lalu kembalikan pin ke tempatnya dan tekan tombol reset di Arduino.

Popularitasnya semakin meningkat, dan Arduino sudah mengambil inisiatif - menambahkan modul Wi-Fi ini ke daftar papan yang didukung.
Tapi bagaimana cara menghubungkannya ke Arduino? Apakah mungkin untuk melakukannya tanpa Arduino sama sekali? Hari ini artikel ini akan membahasnya.

Ke depan, saya akan mengatakan bahwa akan ada artikel kedua, yang lebih praktis, tentang topik firmware dan pemrograman modul ESP8266 di lingkungan pengembangan Arduino IDE. Tapi hal pertama yang pertama.

Video ini sepenuhnya menduplikasi materi yang disajikan dalam artikel.



Saat ini modul ini banyak sekali jenisnya, berikut beberapa di antaranya:

Dan berikut pinout dari ESP01, ESP03, ESP12:


* Gambar ini dapat dilihat dalam kualitas yang baik dalam keadaan mati. situs web pighixxx.com.

Secara pribadi, saya paling suka versi ESP07. Setidaknya karena adanya layar logam (melindungi sirkuit mikro dari gangguan eksternal, sehingga memastikan pengoperasian yang lebih stabil), antena keramiknya sendiri, dan konektor untuk antena eksternal. Ternyata dengan menghubungkan antena eksternal ke sana, misalnya seperti biquadrat, maka Anda dapat mencapai jangkauan yang baik. Selain itu, terdapat beberapa port input/output yang disebut GPIO (General Purpose Input Output port), mirip dengan pin Arduino.

Mari kita kembali ke modul Wi-Fi domba dan Arduino. Pada artikel ini, saya akan melihat cara menghubungkan ESP8266 (model ESP01) ke Arduino Nano V3.

Namun, informasi ini akan relevan untuk sebagian besar modul ESP8266 dan juga berbagai papan Arduino, misalnya Arduino UNO terpopuler.

Beberapa kata tentang kaki ESP01:

Vcc Dan GND(pada gambar di atas ada 8 dan 1) - makanan, per kaki Vcc dapat diserahkan, dilihat dari dokumentasinya, dari 3 hingga 3,6 V, A GND- ground (dikurangi daya). Saya melihat satu orang menghubungkan modul ini ke dua baterai AA (tegangan suplai dalam hal ini kira-kira 2,7 V) dan modul tersebut beroperasi. Namun tetap saja, pengembang menunjukkan kisaran tegangan di mana modul harus dijamin berfungsi; jika Anda menggunakan yang lain, masalahnya adalah Anda.

Perhatian! Modul ini didasarkan pada logika 3.3V, sedangkan Arduino sebagian besar didasarkan pada logika 5V. 5 V dapat dengan mudah merusak ESP8266, sehingga perlu diberi daya secara terpisah dari Arduino.

- Arduino saya memiliki kaki yang bertuliskan 3,3 V, mengapa tidak menggunakannya?

Anda mungkin akan berpikir. Faktanya adalah bahwa ESP8266 adalah modul yang cukup haus daya, dan pada puncaknya dapat mengkonsumsi arus hingga 200 mA, dan hampir tidak ada Arduino yang mampu mengalirkan arus seperti itu secara default, kecuali Arduino Due, di mana arus sepanjang saluran 3,3 V dapat mencapai 800 mA, yang banyak, dalam kasus lain saya menyarankan Anda untuk menggunakan stabilizer 3,3 V tambahan, misalnya AMS1117 3,3 V. Ada banyak dari mereka baik di Tiongkok maupun di sini.

Kaki Pertama 6 - dimaksudkan agar perangkat keras me-reboot modul, dengan menerapkan level logika rendah secara singkat, modul akan reboot. Meskipun saya mengabaikan ini dalam video, saya tetap menyarankan Anda “tekan” kaki ini dengan resistor 10 kOhm ke positif catu daya, untuk mencapai stabilitas yang lebih baik dalam pengoperasian modul, jika tidak, saya akan melakukan boot ulang jika ada gangguan sekecil apa pun.

Kaki CP_PD 4 (atau dengan cara lain EN) - berfungsi, sekali lagi, untuk "menghubungkan" modul ke mode hemat energi, yang mengkonsumsi arus sangat sedikit. Nah lagi - Tidak ada salahnya untuk “menekan” kaki ini dengan resistor 10 kOhm ke positif Pitalova Dalam video tersebut, dengan bodohnya saya menghubungkan kaki ini ke Vcc, karena saya tidak memiliki resistor seperti itu.

Kaki RXD0 7 TXD0 2 - UART perangkat keras, yang digunakan untuk mem-flash, tetapi tidak ada yang melarang penggunaan port ini sebagai GPIO (masing-masing GPIO3 dan GPIO1). Untuk beberapa alasan, GPIO3 tidak ditandai di gambar, tetapi ada di lembar data:

Ngomong-ngomong, sampai ke kaki TXD0 2 LED “Connect” terhubung, dan menyala ketika level logika pada GPIO1 rendah, atau ketika modul mengirimkan sesuatu melalui UART.

GPIO0 5 - tidak hanya dapat menjadi port I/O, tetapi juga memasukkan modul ke mode pemrograman. Hal ini dilakukan dengan menghubungkan port ini ke level logika rendah (“menekannya” ke GND) dan menyuplai daya ke modul. Di video saya melakukan ini dengan tombol biasa. Setelah flashing, jangan lupa mencabut jumper/tekan tombol (tidak perlu menahan tombol saat flashing; saat dihidupkan, modul masuk ke mode pemrograman dan tetap di dalamnya hingga reboot).

GPIO2 3 - port masukan/keluaran.

Dan satu lagi poin penting, setiap GPIO dari modul Wi-Fi dapat dengan aman mengalirkan arus hingga 6mA, agar tidak terbakar pastikan untuk memasang resistor secara seri dengan port input/output menyala... Ingat hukum Ohm R = U/I = 3.3V / 0.006 A = 550 Ohm yaitu, pada 560 Ohm. Atau mengabaikannya, lalu bertanya-tanya mengapa itu tidak berhasil.

Di ESP01, semua GPIO mendukung PWM, jadi ke empat GPIO kami, yaitu GPIO0-3, Anda dapat menghubungkan driver motor, ala L293 / L298, dan mengarahkan dua mesin, misalnya perahu, atau membuat RGB Wi-Fi apa pun . Ya, ya, modul ini memiliki banyak hal, dan untuk proyek sederhana pemain biola Arduino tidak diperlukan, hanya untuk flashing. Dan jika Anda menggunakan ESP07, maka secara umum port-portnya hampir sama dengan Uno, sehingga Anda dapat dengan percaya diri melakukannya tanpa Arduino. Benar, ada satu momen yang tidak menyenangkan, ESP01 tidak memiliki port analog sama sekali, dan ESP07 hanya memiliki satu, yang disebut ADC. Hal ini tentu saja membuat bekerja dengan sensor analog menjadi lebih sulit. Dalam hal ini, multiplexer analog Arduino akan membantu.

Semuanya sepertinya dijelaskan dengan pinout, dan berikut diagram koneksi ESP8266 ke Arduino Nano:

Apakah Anda melihat jumper pada pin RST dan GND di Arduino Nano? Hal ini diperlukan agar Arduino tidak mengganggu firmware modul; jika menghubungkan ESP8266 menggunakan Arduino, ini merupakan prasyarat.

Selain itu, jika Anda terhubung ke Arduino, RX modul harus menuju ke RX Arduino, TX - TX. Hal ini dikarenakan chip konverter sudah terhubung dengan pin Arduino dengan pola silang.

Yang juga penting adalah pembagi resistif yang terdiri dari resistor 1 kOhm dan 2 kOhm (dapat dibuat dari dua resistor 1 kOhm dengan menghubungkannya secara seri) di sepanjang garis RX modul. Karena Arduino berlogika 5 V dan modulnya 3.3. Ini ternyata merupakan konverter tingkat primitif. Harus ada, karena kaki-kaki modul RXD TXD kurang toleran terhadap tegangan 5V.

Nah, Anda dapat melakukannya tanpa Arduino sama sekali dengan menghubungkan ESP8266 melalui konverter USB-UART biasa. Dalam hal menghubungkan ke Arduino, kami sebenarnya menggunakan konverter antarmuka usb dan uart standar, melewati otak. Jadi mengapa mengeluarkan uang ekstra jika Anda bisa melakukannya tanpa Arduino sama sekali? Hanya dalam hal ini kami menghubungkan RXD modul ke TXD konverter, TXD - RXD.

Jika Anda terlalu malas untuk repot dengan koneksi, mengutak-atik resistor dan stabilisator, ada solusi NodeMcu yang siap pakai:

Semuanya jauh lebih sederhana di sini: colokkan kabel ke komputer, instal driver dan program, jangan lupa gunakan jumper/tombol pada GPIO0 untuk mengalihkan modul ke mode firmware.

Yah, mungkin itu saja teorinya, artikelnya ternyata cukup panjang, dan bagian praktisnya, ala firmware dan pemrograman modulnya, akan saya terbitkan nanti.

Dalam proses mempelajari dan merancang proyek yang semakin kompleks, tiba saatnya muncul kebutuhan dan keinginan untuk mempelajari cara bekerja dengan jenis komunikasi umum seperti WiFi. Karena jenis komunikasi ini memungkinkan Anda dengan nyaman membuat satu jaringan untuk perangkat rumah pintar Anda dan mengendalikannya, misalnya, dari ponsel, tablet, atau komputer, dengan kata lain, menciptakan rumah pintar nyata yang akan memakan biaya. Anda puluhan kali lebih murah daripada membeli solusi siap pakai di toko. Penggunaan WiFi tentunya tidak sebatas itu saja dan banyak sekali contoh penggunaan komunikasi jenis ini sehingga tidak ada gunanya mencantumkannya, dan jika Anda sudah sampai di halaman ini berarti Anda sudah perlu melakukannya. menggunakan WiFi karena alasan tertentu, Anda hanya perlu mengetahui cara menggunakannya dengan benar.

Kami akan mencari tahu berdasarkan modul WiFi termurah dan terpopuler ESP8266-01. Anda dapat membeli modul WiFi ESP8266-01 di website kami.

Salah satu keuntungan utama dari modul semacam itu adalah adanya memori dan mikrokontrolernya sendiri di papan, yang memungkinkannya bekerja secara mandiri dengan memuat sketsa langsung ke dalam modul itu sendiri.

Sebenarnya ada cukup banyak modifikasi modul WiFi ESP8266 dan kami tidak akan mencantumkannya di sini; setelah Anda mempelajari cara bekerja dengan salah satunya, Anda dapat dengan mudah mulai bekerja dengan yang lain. Saya ingin segera mencatat bahwa bekerja dengan WiFi mungkin tampak seperti tugas yang agak sulit, dan jika Anda memiliki sedikit proyek yang telah selesai di bagasi Anda, lebih baik hentikan komunikasi WiFi untuk saat ini dan gunakan komunikasi radio dalam proyek Anda, bekerja dengan yang mana jauh lebih mudah untuk dipahami. Seluruh komunitas dan forum tematik diciptakan untuk bekerja dengan modul WiFi, yang sekali lagi membuktikan betapa sulitnya bagi kebanyakan orang untuk segera memahami jenis komunikasi ini, dan setelah membaca kembali semua informasi, kebanyakan orang menyerah begitu saja. Kemungkinan besar, saya tidak akan dapat memasukkan semua informasi penting dalam kerangka artikel ini saja, dan tidak ada gunanya melakukannya, jika tidak maka akan terjadi kekacauan lagi. Saya akan mencoba mengikuti jalur urutan ketat dari poin-poin terpenting, sehingga Anda dapat mulai memahami prinsip pengoperasian jenis komunikasi ini dan kemudian mengembangkan keterampilan Anda sendiri ke arah ini.

Jadi, mari kita mulai dan lihat dulu pin modul WiFi ESP8266-01.

VCC- modul catu daya dari 3V ke 3,6V

GND- Bumi.

Pertama- Reset output yang bertanggung jawab untuk me-reboot modul.

CH_PD- "chip power-down" ketika daya disuplai ke dalamnya, pengoperasian modul diaktifkan.

terima kasih- transfer data (antarmuka UART)

RX- penerimaan data (antarmuka UART)

GPIO0

GPIO2- port I/O tujuan umum

Pin GPIO0 dan GPIO2 adalah pin digital yang sama persis dengan yang kami gunakan pada papan Arduino untuk interkoneksi dengan berbagai sensor, dan digunakan dalam penerapan operasi independen pada mikrokontroler WiFi internal modul ESP8266-01.

Untuk memberi daya yang andal pada modul ESP8266-01, gunakan catu daya 3,3V eksternal yang stabil dan lebih baik jangan mencoba mengambil daya dari papan Arduino Anda, karena modul mengkonsumsi arus hingga 215mA dan ini mungkin berakibat buruk pada papan debug Anda. Di mana mendapatkan catu daya 3.3V yang stabil, saya harap ini tidak menjadi masalah bagi Anda, jika tidak, jelas terlalu dini bagi Anda untuk menangani modul ini. Misalnya, saya suka menggunakan modul daya YWRobot 3.3V dan 5.0V ini untuk merakit sirkuit dengan cepat di papan tempat memotong roti, yang memungkinkan Anda dengan cepat mendapatkan tegangan stabil sebesar 3.3V atau 5V pada jalur daya yang sesuai di papan tempat memotong roti.

Menghubungkan plus (+) dari catu daya 3.3V kami ke pin VCC modul ESP8266-01, dan minus (-) membawa sumber listrik ke output GND. Dalam keadaan ini, LED merah pada modul akan menyala, menandakan kita bahwa daya tersambung dengan benar. Agar modul dapat diaktifkan, plus juga perlu dihubungkan (+) catu daya dengan keluaran CH_PD modul ESP8266-01 dan disarankan untuk melakukan ini secara langsung melalui resistor 10 kOhm. Sekarang, ketika kita menghidupkan daya, LED merah pada modul akan menyala dan LED biru akan berkedip cepat beberapa kali. Jika ini yang terjadi pada Anda, maka semuanya baik-baik saja, Anda telah menghubungkan semuanya dengan benar dan modul Anda berfungsi. Jika tidak, periksa kembali sambungannya, atau ganti modul, karena kemungkinan besar tidak berfungsi.

Teruskan. Untuk bekerja dengan modul WiFi ESP8266, kita memerlukan adaptor USB-UART. Ada adaptor yang berbeda, misalnya: FT232RL, CP2102, PL2303. Namun kami berasumsi Anda tidak memiliki adaptor seperti itu, dan kami akan menggunakan papan Arduino sebagai adaptor USB-UART. Saya akan menggunakan papan Arduino NANO untuk ini, tetapi Anda dapat menggunakan papan lain yang Anda inginkan. Koneksi di papan mana pun identik. Kami membuat koneksi sesuai dengan diagram berikut.

Mari kita lihat apa yang telah kita lakukan di sini. Perlu diketahui segera bahwa kami telah menghubungkan pin pada papan Arduino dengan jumper Pertama Dan GND. Manipulasi ini menonaktifkan mikrokontroler dan memungkinkan kita membuat adaptor USB-UART asli dari papan Arduino kita.

Karena kami memberi daya pada modul WiFi ESP8266-01 dari catu daya eksternal terpisah, ingatlah bahwa kami harus selalu menghubungkan semua catu daya di proyek kami. Oleh karena itu kami menghubungkan outputnya GND Papan Arduino dengan ground (-) catu daya 3.3V eksternal kami dirancang untuk memberi daya pada modul ESP8266-01.

Kesimpulan terima kasih sambungkan papan Arduino Anda ke pin terima kasih Modul ESP8266-01. Jalur ini akan mengirimkan data dari modul WiFi ke papan Arduino. Siapa pun yang akrab dengan antarmuka UART mungkin bertanya-tanya: "Tetapi bagaimana ini bisa terjadi? Di mana-mana mereka mengajarkan bahwa TX harus terhubung ke RX untuk mengirimkan informasi, dan RX menerima." Dan Anda akan benar. Benar sekali, TX selalu terhubung ke RX, tetapi jika kita membuat adaptor UART dari Arduino, kita perlu menghubungkan perangkatnya secara langsung. Anggap ini pengecualian terhadap aturan tersebut.

Garis RX Kami juga menghubungkan papan Arduino Anda langsung ke saluran RX Modul ESP8266-01. Jalur ini akan mengirimkan informasi dari papan Arduino ke papan modul WiFi. Namun kami membuat sambungan ini melalui apa yang disebut pembagi tegangan, yang terdiri dari dua resistor dengan nilai nominal 1 kOhm dan 2 kOhm. Kita perlu mengurangi tegangan pada saluran ini menggunakan dua resistor (pembagi tegangan), karena papan Arduino mentransmisikan sinyal logis dengan tegangan 5V, dan modul WiFi beroperasi dengan tegangan 3,3V. Untuk mengubah sinyal logika, kita dapat menggunakan papan konverter level logika khusus, yang tentu saja lebih tepat, tetapi sekali lagi, anggaplah Anda tidak memilikinya, dan kita harus mengambil rute yang lebih sederhana dan melakukannya menggunakan a pembagi tegangan.

Kami sekarang telah menghubungkan semua yang diperlukan untuk pekerjaan lebih lanjut, tetapi kami masih memiliki 3 pin lagi yang belum digunakan ( GPIO0, GPIO2 Dan Pertama) pada Modul WiFi ESP8266-01. Untuk pengoperasian modul WiFi yang stabil, kita perlu menarik sisa pin yang tidak terpakai ini ke positif (+) modul saluran listrik melalui resistor 10 kOhm.

Hal ini akan menyelamatkan kita dari berbagai gangguan (interference) dan membuat pengoperasian modul menjadi stabil. Lebih baik melakukannya segera. Jika tidak, jangan kaget jika modul Anda terus-menerus kelebihan beban, menghasilkan informasi yang tidak dapat dipahami, atau tidak mau bekerja sama sekali. Menggunakan resistor pull-up pada pin mikrokontroler yang tidak terpakai harus menjadi aturan praktis jika Anda ingin pengoperasian yang stabil dalam proyek Anda.

Dan sekali lagi kami memeriksa fungsionalitas modul WiFi ESP8266-01. Nyalakan daya dan lihat LED merah menyala dan LED biru berkedip beberapa kali. Jika semuanya terjadi seperti ini, baguslah, mari kita lanjutkan. Jika tidak, kami memeriksa kebenaran koneksi, serta kualitas semua kontak. Ini mungkin hanya situasi sepele ketika Anda memeriksa ulang semuanya sepuluh kali dan memastikan bahwa semuanya terhubung dengan benar, tetapi ketika Anda menghidupkan modul, Anda melihat bahwa LED biru tidak berfungsi dengan baik, terus menyala, terus-menerus berkedip, atau tidak bereaksi sama sekali. Hal ini mungkin disebabkan oleh kontak yang buruk pada beberapa saluran. Misalnya, ketika merakit suatu rangkaian pada papan tempat memotong roti, salah satu resistor tidak terpasang erat pada tempatnya dan hal ini menyebabkan interferensi. Periksa kualitas koneksi. Modul ini sangat sensitif. Jangan abaikan ini. Ini adalah alasan umum mengapa pengoperasian tidak stabil.

Secara umum, kita sudah selesai dengan koneksinya. Sekarang kita perlu menyiapkan program Arduino IDE untuk bekerja dengan modul WiFi ESP8266-01. Untuk melakukan ini, kita perlu mengunduh dan menginstal di Arduino IDE arsip yang diperlukan dengan perpustakaan, contoh, dan papan ESP, yang selanjutnya memungkinkan kita mengunggah sketsa langsung ke mikrokontroler modul ESP8266-01, mengubah firmware, dll. Untuk keperluan artikel ini, kemungkinan besar kita tidak memerlukan pengaturan ini, tetapi menurut saya setelah kita mengetahui cara menghubungkan modul, prosedurnya akan benar jika kita segera mengunduh semua yang diperlukan untuk bekerja dengan Arduino IDE . Semuanya di sini pada dasarnya sederhana.

Luncurkan programnya Arduino IDE dan pergi ke menu "Berkas" - "Pengaturan"

Di jendela yang muncul, di kolom atas kita menulis "esp8266". Akibatnya, kita hanya akan memiliki firmware yang diperlukan di jendela. Ketika Anda mengklik firmware, sebuah tombol akan muncul "Instalasi". Klik pada tombol "Instalasi" dan tunggu sampai semuanya terinstal. Arsipnya cukup besar, sekitar 150 megabyte, jadi Anda harus menunggu.

Setelah instalasi selesai. Kami me-reboot Arduino IDE dan melihat bagaimana papan ESP baru muncul di menu "Alat" - "Papan". Itu saja. Kami selesai menyiapkan Arduino IDE. Kami tidak memerlukan pengaturan ini untuk saat ini, tetapi di masa mendatang kami tidak akan dapat melakukannya tanpa pengaturan tersebut.

Semuanya sudah terhubung dan siap, sekarang kita bisa mulai memahami kontrolnya. Faktanya, sekarang kita akan terus memeriksa dan mengkonfigurasi modul menggunakan perintah AT, dan tidak ada yang bisa dilakukan tanpanya. Modul WiFi diimplementasikan sedemikian rupa sehingga semua komunikasi dengannya terjadi menggunakan apa yang disebut perintah AT, yang tertanam dalam firmware modul. Kami tidak akan mencantumkan semua perintah AT di sini, jumlahnya cukup banyak dan jika Anda ingin mempelajari semuanya dengan cermat, Anda dapat dengan mudah menemukannya di Internet. Dan sekarang kita hanya akan menggunakan yang paling penting saja untuk memulai.

Jadi, kami menghubungkan papan Arduino kami melalui kabel USB ke komputer. Dan sumber daya eksternal yang memberi kekuatan Modul WiFi ESP8266-01 Tidak perlu menyalakannya dulu. Kami meluncurkan program Arduino IDE, pilih papan Arduino kami dari menu "Alat", dalam kasus saya ini adalah Arduino NANO, dan Anda memilih milik Anda. Juga, jangan lupa untuk memilih port yang terhubung dengan Arduino kita. Saya harap Anda memahami semua ini dan tahu bagaimana melakukannya.

Buka pemantauan port "Alat" - "Monitor Pelabuhan". Memilih kecepatan port 74880 (pada kecepatan ini modul dimulai) dan pilih “NL & CR” dalam daftar di sebelah kiri

Sekarang kami menghubungkan sumber daya eksternal yang memberi daya pada modul WiFi kami. Setelah itu Anda akan melihat kira-kira informasi berikut di monitor port.

Di sini kita melihat beberapa informasi tentang modul WiFi kita (kecepatan, jumlah memori yang terpasang, dll.). Informasi yang diterima mungkin berbeda tergantung pada versi firmware modul WiFi. Jangan fokus pada hal ini. Ada hal lain yang penting. Di bawah ini kita melihat sekumpulan karakter yang tidak berarti, ini berarti kecepatan port (74880 baud) yang kita atur hanya cocok untuk pemuatan awal modul untuk melihat informasi ini secara normal, tetapi kecepatan ini tidak cocok untuk komunikasi normal dengan modul WiFi.

Untuk memilih kecepatan port yang benar, kita cukup mengubah kecepatan port dan mengirimkan simbol ke port (bidang di atas dan tombol kirim) PADA sampai kita mendapatkan jawabannya OKE. Jika Anda mencoba mengirim karakter sekarang PADA ke port dengan kecepatan 74880, Anda akan menerima satu atau dua karakter tidak berarti lagi sebagai tanggapan.

Coba segera atur kecepatannya ke 115200 baud dan kirimkan perintah AT. Paling sering, modul di-flash dengan kecepatan ini.

Ini adalah gambar yang akan Anda lihat di monitor port Anda. Jika Anda masih menerima serangkaian karakter yang tidak dapat dipahami sebagai tanggapan, turunkan kecepatan dan kirim ulang PADA perintah sampai jawabannya kembali OKE. Jika Anda mencoba semua kecepatan dan tidak mendapatkan jawaban yang benar, maka Anda kurang beruntung dan modul di-flash dengan firmware pada kecepatan non-standar. Maka yang tersisa hanyalah melakukan reflash modul dengan firmware normal, tetapi ini adalah topik untuk artikel terpisah.

Saya harap semuanya baik-baik saja dan Anda telah memilih kecepatan yang tepat. Omong-omong, jika Anda mencoba mematikan dan menghidupkan kembali modul WiFi setelah Anda memilih kecepatan yang benar, maka alih-alih informasi awal yang sama yang ditampilkan dengan benar pada kecepatan 74880 baud, Anda akan sebaliknya, lihat kumpulan karakter yang campur aduk, tetapi pada akhirnya Anda akan melihat kata "siap" ". Namun kita memiliki kesempatan untuk melihat informasi awal ini dalam bentuk normal dengan kecepatan yang benar; untuk melakukan ini, kita perlu me-reboot modul secara terprogram menggunakan perintah AT PADA + PERTAMA.

Untuk mengetahui versi firmware modul WiFi ESP8266-01 Anda, Anda perlu mengirim perintah ke monitor port AT+GMR dan sebagai tanggapan Anda akan menerima kira-kira informasi berikut:

Modul WiFi ESP8266-01 dapat beroperasi dalam mode titik akses dan klien. Untuk memungkinkan modul beroperasi di semua mode sekaligus, kirimkan perintah ke monitor port DI+CWMODE=3 dan sebagai balasannya Anda harus menerima OKE.

Tim DI+CWLAP akan memungkinkan Anda melihat semua titik akses WiFi yang saat ini dilihat modul Anda. Modul saya, misalnya, saat ini hanya melihat tiga titik akses WiFi di area jangkauannya. Jawabannya seharusnya seperti ini:

Misalnya, kita mengetahui kata sandi untuk titik akses ketiga dan untuk menghubungkannya kita menjalankan perintah AT+CWJAP="nama","kata sandi", dalam kasus saya perintah ini terlihat seperti AT+CWJAP="dsl_unlim_512_home","11111111", yang mendapat respons sukses:

Parameter perintah ditulis ke memori flash modul WiFi ESP8266-01, dan jika kita mematikan modul dan menyalakannya kembali, maka secara otomatis akan terhubung ke titik akses ini. Lihat, secara kebetulan, jangan beri spasi pada perintah, jika tidak, Anda akan menerima jawaban KESALAHAN. Harap dicatat bahwa dalam versi firmware terbaru disarankan untuk menggunakan perintah AT+CWJAP_CUR, yaitu, perintahnya akan terlihat seperti ini AT+CWJAP_CUR="nama","kata sandi". Jika kita tiba-tiba lupa titik akses mana yang terhubung dengan modul kita, kita perlu mengirimkan perintah DI+CWJAP? atau DI+CWJAP_CUR? dan sebagai tanggapannya kita akan menerima titik akses yang saat ini terhubung dengan modul WiFi.

Dengan koneksi dan pengaturan awal Modul WiFi ESP8266-01 kami menemukan jawabannya. Modul ini berfungsi dan siap untuk implementasi proyek Anda di masa depan. Tidak mungkin menganalisis semua kemungkinan contoh bekerja dengan modul ini dalam kerangka satu artikel, dan kami akan membahasnya di artikel berikut. Dan bagi mereka yang tidak terlalu paham dengan pemrograman, tetapi benar-benar ingin segera mulai mengelola proyek mereka menggunakan WiFi, saya sarankan untuk memperkenalkan mereka kepada perancang proyek RemoteXY WiFi. Situs ini akan membantu Anda dengan mudah membuat antarmuka kontrol untuk ponsel atau tablet Anda dan menggunakannya untuk mengontrol perangkat yang Anda sambungkan dengan modul WiFi.

Pada artikel ini, Anda akan mempelajari cara membuat sistem yang dapat menghidupkan dan mematikan beban DC menggunakan aplikasi seluler. Anda juga akan mempelajari cara melakukan tugas ini secara instan atau menggunakan pengatur waktu yang telah diatur sebelumnya untuk menghidupkan dan mematikan beban.

Ulasan Proyek

Anda dapat menerapkan sistem ini di mana Anda perlu menyalakan beban DC untuk waktu tertentu. Aplikasi Android kami akan membantu Anda dalam hal ini, tanpa memerlukan antarmuka perangkat keras, keyboard, atau layar LCD.

Aksesoris

Majelis Dewan Pengembangan ESP8266

ESP8266 adalah SoC berbiaya rendah dengan mikrokontroler terintegrasi dan tumpukan protokol TCP/IP lengkap, artinya dapat langsung mengakses jaringan Wi-Fi Anda.

Karena chip ini memiliki mikrokontrolernya sendiri, Anda dapat memasukkan kode aplikasi Anda ke dalamnya, atau Anda cukup menggunakan modul tersebut sebagai transceiver Wi-Fi, itulah yang akan kita lakukan dalam proyek ini. Akan lebih efisien jika menggunakan modul ini sebagai transceiver dan controller, namun untuk tujuan pelatihan kita akan berinteraksi dengan modul menggunakan Arduino.

Chip ESP8266 hadir dalam modul yang berbeda. Kami akan menggunakan modul ESP-01. Tentu saja, Anda dapat menggunakan modul lainnya.

Pertama, Anda harus tahu bahwa modul beroperasi pada 3.3V dan tegangan level logika tinggi dari Arduino harus sama untuk menghindari kerusakan pada modul kami. Ini memerlukan konverter level tegangan antara papan Arduino (yang beroperasi pada 5V) dan modul. Kabar baiknya adalah konverter hanya memerlukan pin untuk mengirim ke Arduino, karena pin penerima biasanya mengenali sinyal logika 3.3V dari ESP8266.

Salah satu cara paling sederhana untuk melakukan konversi ini adalah rangkaian dari Sparkfun. Anda dapat memesan modul yang sudah jadi.

Konverter level 5V → 3.3V

Gambar di bawah menunjukkan pinout modul kami di ESP8266:

KesimpulanTujuan
UTXDTransfer data melalui UART
URXDMenerima data melalui UART. Output yang dihubungkannya harus 3.3V.
CH_PDMatikan: masukan rendah mematikan chip, masukan tinggi menyalakannya; Untuk pengoperasian normal modul, modul harus dihubungkan ke saluran listrik.
GPIO0Saat memuat: levelnya harus tinggi untuk masuk ke mode pemuatan normal; level rendah memasuki mode boot khusus.
GPIO2Saat boot: level rendah menyebabkan bootloader memasuki mode boot flash; level tinggi menyebabkan mode boot normal.
PertamaMengatur ulang; tingkat aktif - rendah.
GNDBumi.
VCCDaya/3.3V.

Saya menggunakan LM317, pengatur tegangan linier yang dapat dikonfigurasi dengan arus keluaran hingga 1,5A, untuk menyediakan modul dengan catu daya 3,3V yang sesuai.

Catatan: Jangan gunakan pin 3.3V dari Arduino, karena pengatur tegangan 3.3V pada papan Arduino tidak dapat menyediakan jumlah arus yang dibutuhkan modul, terutama pada konsumsi daya puncak selama transmisi.

Saya menggunakan BS170 (bukan BSS138) untuk konverter level logika; keduanya bekerja dengan baik.

Sekarang Anda dapat menghubungkan modul Anda ke komputer menggunakan konverter USB-TTL dan mengujinya.

Rakitan Papan Tempat Memotong Roti Relai

Untuk mengontrol relai, saya menggunakan transistor NPN bipolar BC337 dengan resistor 1 kOhm di basisnya. Untuk melindungi terhadap tegangan balik koil saya menggunakan dioda 1n4007.

Saya memutuskan untuk menghubungkan kontak relai yang biasanya tertutup (NC) ke ground.

kode Arduino

Sekarang kita dihadapkan pada suatu masalah. ESP8266 menggunakan UART sebagai antarmuka untuk perintah AT, sedangkan Arduino Uno (yang menggunakan Atmega328) hanya memiliki satu port UART. Port ini sudah terhubung ke jembatan USB-TTL, serta pin 0 dan 1.

Sebagai solusinya, Anda dapat menggunakan emulator untuk port UART pada pin digital Arduino lain menggunakan pustaka AltSoftSerial atau SoftwareSerial. Ini akan memungkinkan Anda untuk tetap memiliki port UART perangkat keras untuk debugging dan mencetak pesan ke konsol, dan port perangkat lunak untuk berkomunikasi dengan modul.

Banyak orang (termasuk saya) melaporkan masalah dengan port serial perangkat lunak dengan baud rate yang tinggi - seperti yang akan kita gunakan dengan esp8266, 115200 bps. Saya dapat mengatakan bahwa 50% data yang diterima dari modul akan rusak jika Anda menggunakan perangkat lunak UART, dan data yang ditransfer dari Arduino ke modul, hampir 100% benar. Hasil ini saya dapatkan setelah memantau sinyal pada jalur RX dan TX.

Sebagai solusinya, saya menambahkan beberapa arahan definisi pada kode untuk memudahkan Anda memilih antara port UART perangkat keras dan perangkat lunak. Ingatlah bahwa Anda tidak dapat menggunakan port yang sama untuk melakukan debug dan berkomunikasi dengan modul, jadi Anda harus memilih di antara keduanya.

//batalkan komentar Serial.*** jika Anda ingin menggunakan port serial perangkat keras (pin 0,1) untuk berkomunikasi dengan ESP //batalkan komentar esp8266.*** jika Anda ingin menggunakan port serial perangkat lunak (pin 2,3 ) untuk berkomunikasi dengan ESP #define esp8266_Available() Serial.available() //esp8266.available() #define esp8266_Find(ARG) Serial.find(ARG) //esp8266.find(ARG) #define esp8266_Read() Serial. read() //esp8266 .read() #define esp8266_Write(ARG1,ARG2) Serial.write(ARG1,ARG2) //esp8266.write(ARG1,ARG2) #define esp8266_Print(ARG) Serial.print(ARG) // esp8266.print(ARG)

Di sumbernya Anda akan menemukan bagian kode yang menginstal modul dengan router Anda:

SendCommand("AT+RST\r\n", 2000, DEBUG); // memulai ulang modul sendCommand("AT+CWMODE=1\r\n", 1000, DEBUG); // konfigurasikan sebagai titik akses sendCommand("AT+CWJAP=\"tur\",\"341983#tur\"\r\n", 3000, DEBUG); //**** GANTI SSID dan PASSWORD SESUAI JARINGAN ANDA ******// delay(10000); sendCommand("AT+CIFSR\r\n", 1000, DEBUG); // dapatkan alamat IP sendCommand("AT+CIPMUX=1\r\n", 1000, DEBUG); // konfigurasikan untuk beberapa koneksi sendCommand("AT+CIPSERVER=1,1337\r\n", 1000, DEBUG); // aktifkan server pada port 1337

Loop sketsa menunggu perintah yang datang melalui koneksi Wi-Fi. Perintah berikut saat ini didukung:

  • 'con' untuk mendapatkan status pin, logika tinggi atau rendah;
  • 'on=' aktifkan keluaran yang sesuai;
  • 'of=' matikan output yang sesuai;
  • 'Tm=n/fS' mengatur timer untuk menghidupkan (n) atau mematikan (f) output yang sesuai.

Semua perintah memiliki respons konfirmasi.

Catatan:

  • beberapa bagian sketsa didasarkan pada;
  • jika Anda menggunakan modul dengan SDK lama, Anda mungkin mengalami kesalahan yang sama seperti saya. Satu-satunya solusi dalam hal ini adalah memperbarui firmware Anda ke versi terbaru. Lihat bantuan memperbarui firmware modul pada ESP8266. Saya memperbarui firmware dari versi 1.3 ke 1.5.4.

Kode program lengkap:

#termasuk #define DEBUG 0 // jika Anda menggunakan port serial perangkat keras untuk berkomunikasi dengan ESP, ubah nilainya menjadi 0 #define ESPBaudRate 115200 #define HWSBaudRate 115200 #define OUTPUT1 11 #define OUTPUT2 12 #define OUTPUT3 13 //batalkan komentar Serial. *** , jika Anda ingin menggunakan port serial perangkat keras (pin 0,1) untuk berkomunikasi dengan ESP //batalkan komentar esp8266.*** jika Anda ingin menggunakan port serial perangkat lunak (pin 2,3) untuk berkomunikasi ESP #define esp8266_Available() Serial.available( ) //esp8266.available() #define esp8266_Find(ARG) Serial.find(ARG) //esp8266.find(ARG) #define esp8266_Read() Serial.read() / /esp8266.read() #define esp8266_Write(ARG1 ,ARG2) Serial.write(ARG1,ARG2) //esp8266.write(ARG1,ARG2) #define esp8266_Print(ARG) Serial.print(ARG) //esp8266.print( ARG) // Membuat jalur Arduino RX menjadi pin 2, dan jalur TX pada Arduino menjadi pin 3. // Artinya Anda perlu menghubungkan jalur TX dari ESP ke pin 2 Arduino, // dan RX jalur dari ESP ke pin 3 Arduino. Perangkat LunakSerial esp8266(2, 3); /*************/ bytekeadaan OUTPUT; byte OUTPUTTMrisSet ; byte KELUARANStatus; pengatur waktu OUTPUT yang panjang; /************/ /***Perintah**/ String GETSTATE = "con"; // Minta string dari aplikasi seluler untuk mengetahui status setiap keluaran String SETON = "on="; // Meminta string dari aplikasi seluler untuk mengaktifkan keluaran String SETOFF = "of="; // Meminta string dari aplikasi seluler untuk mematikan keluaran String TIMER = "tm="; // Baris permintaan dari aplikasi seluler untuk menyetel pengatur waktu keluar /**************/ void setup() ( Serial.begin(HWSBaudRate); // Port serial untuk mengirim pesan dari Arduino ke komputer esp8266.begin(ESPBaudRate); // Port serial perangkat lunak untuk mengirim pesan dari Arduino ke ESP8266 pinMode(OUTPUT1, OUTPUT); pinMode(OUTPUT2, OUTPUT3, OUTPUT); modul sendCommand("AT+RST\r\n", 2000, DEBUG); // konfigurasikan sebagai titik akses sendCommand("AT+CWMODE=1\r\ n", 1000, DEBUG); * GANTI SSID dan PASSWORD SESUAI JARINGAN ANDA ******// sendCommand("AT+CWJAP=\"tur\",\"341983#tur\ "\r\n", 3000, DEBUG); dapatkan alamat IP sendCommand("AT+CIFSR\r\n", 1000, DEBUG); // konfigurasikan untuk beberapa koneksi sendCommand("AT+ CIPMUX=1\r\n", 1000, DEBUG); pada port 1337 sendCommand("AT+CIPSERVER=1,1337\r\n", 1000, DEBUG); if (DEBUG == true) Serial.println("Server Siap"); ) void loop() ( if (esp8266_Available()) // periksa apakah esp mengirim pesan ( if (esp8266_Find("+IPD,")) ( // tunggu hingga buffer serial penuh (baca semua data serial) tunda( 1000 ); // ambil id koneksi agar kita dapat memutuskan sambungan int connectionId = esp8266_Read() - 48 // kurangi 48 karena fungsi read() // mengembalikan nilai desimal dalam ASCII, dan 0 (angka desimal pertama) dimulai dengan 48 String closeCommand = "AT+CIPCLOSE="; // membuat perintah untuk menutup koneksi closeCommand += connectionId; // menambahkan id koneksi closeCommand += "\r\n"; "); // Karakter ini mendefinisikan awal perintah di badan pesan kita String InStream; InStream = (char) esp8266_Read(); InStream += (char) esp8266_Read(); InStream += (char) esp8266_Read() ; if (DEBUG == true) Serial.println(InStream); if (InStream.equals(GETSTATE)) ( // respons terhadap perintah Status=<состояние_выхода_1><состояние_выхода_2><состояние_выхода_3>Respon string = "Status="; respons += keadaan OUTPUT; respons += keadaan OUTPUT; respon += keadaan OUTPUT; sendHTTPResponse(connectionId, respons); sendCommand(closeCommand, 1000, DEBUG); // tutup koneksi ) else if (InStream.equals(SETON)) ( int pinNumber = (esp8266_Read() - 48); // ambil digit pertama, yaitu jika pinnya 13, maka digit pertama sama dengan 1 int SecondNumber = (esp8266_Read() - 48); if (secondNumber >= 0 && secondNumber<= 9) { pinNumber *= 10; pinNumber += secondNumber; // получить вторую цифру, т.е., если вывод 13, то 2-ая цифра равна 3, // и добавить ее к первой цифре } if (pinNumber == OUTPUT1) OUTPUTstate = 1; else if (pinNumber == OUTPUT2) OUTPUTstate = 1; else if (pinNumber == OUTPUT3) OUTPUTstate = 1; digitalWrite(pinNumber, 1); String response = "Confg="; // Отклик на команду Confg=<номер_вывода>respon += nomor pin; sendHTTPResponse(connectionId, respons); sendCommand(closeCommand, 1000, DEBUG); // tutup koneksi ) else if (InStream.equals(SETOFF)) ( int pinNumber = (esp8266_Read() - 48); // ambil digit pertama, yaitu jika pinnya 13, maka digit pertama sama dengan 1 int SecondNumber = (esp8266_Read() - 48); if (secondNumber >= 0 && secondNumber<= 9) { pinNumber *= 10; pinNumber += secondNumber; // получить вторую цифру, т.е., если вывод 13, то 2-ая цифра равна 3, // и добавить ее к первой цифре } if (pinNumber == OUTPUT1) OUTPUTstate = 0; else if (pinNumber == OUTPUT2) OUTPUTstate = 0; else if (pinNumber == OUTPUT3) OUTPUTstate = 0; digitalWrite(pinNumber, 0); // изменить состояние вывода String response = "Confg="; // Отклик на команду Confg=<номер_вывода>respon += nomor pin; sendHTTPResponse(connectionId, respons); sendCommand(closeCommand, 1000, DEBUG); // tutup koneksi ) else if (InStream.equals(TIMER)) ( int pinNumber = (esp8266_Read() - 48); // ambil digit pertama, yaitu jika pinnya 13, maka digit pertama sama dengan 1 int SecondNumber = (esp8266_Read() - 48); if (secondNumber >= 0 && secondNumber<= 9) { pinNumber *= 10; pinNumber += secondNumber; // получить вторую цифру, т.е., если вывод 13, то 2-ая цифра равна 3, // и добавить ее к первой цифре } if (esp8266_Read() == "n") { if (DEBUG == true) Serial.println("on"); if (pinNumber == OUTPUT1) OUTPUTTMRState = 1; else if (pinNumber == OUTPUT2) OUTPUTTMRState = 1; else if (pinNumber == OUTPUT3) OUTPUTTMRState = 1; } else { if (DEBUG == true) Serial.println("off"); if (pinNumber == OUTPUT1) OUTPUTTMRState = 0; else if (pinNumber == OUTPUT2) OUTPUTTMRState = 0; else if (pinNumber == OUTPUT3) OUTPUTTMRState = 0; } int j = 0; byte Atime; // Таймер может настроен на максимальное значение в 1 сутки // поэтому программа может принять 5 цифр, так как 1 сутки равны 86400 секундам long Time; // Прочитать секунды, значение имеет переменное количество цифр, поэтому читать, пока не получим "s", // что является символом завершения в теле моего сообщения от мобильного телефона while (1) { Time = esp8266_Read(); if (Time == "s") break; Atime[j] = Time - 48 ; j++; } switch (j) // секунды... { case 1: // одна цифра Time = Atime; break; case 2: // две цифры Time = Atime * 10 + Atime; break; case 3: // три цифры Time = Atime * 100 + Atime * 10 + Atime; break; case 4: // четыре цифры Time = Atime * 1000 + Atime * 100 + Atime * 10 + Atime; break; case 5: // пять цифр Time = Atime * 10000 + Atime * 1000 + Atime * 100 + Atime * 10 + Atime[j]; break; } if (DEBUG == true) { Serial.println("Timer:"); Serial.println(Time); } Time = Time * 1000 + millis(); if (DEBUG == true) { Serial.println("Pin:"); Serial.println(pinNumber); } if (pinNumber == OUTPUT1) { OUTPUTTMRIsSet = 1; OUTPUTTimer = Time; } else if (pinNumber == OUTPUT2) { OUTPUTTMRIsSet = 1; OUTPUTTimer = Time; } else if (pinNumber == OUTPUT3) { OUTPUTTMRIsSet = 1; OUTPUTTimer = Time; } String response = "tConfg="; // Отклик на команду tConfg=<номер_вывода>respon += nomor pin; sendHTTPResponse(connectionId, respons); sendCommand(closeCommand, 1000, DEBUG); // tutup koneksi ) lain // perintah yang tidak didukung diterima ( String respon = "ERROR"; sendHTTPResponse(connectionId, respon); sendCommand(closeCommand, 1000, DEBUG); // tutup koneksi ) ) ) /*** **Periksa pengatur waktu untuk setiap keluaran******/ if (OUTPUTTMRisSet != 0 && (OUTPUTTimer< millis())) { digitalWrite(OUTPUT1, OUTPUTTMRState); OUTPUTstate = OUTPUTTMRState; OUTPUTTMRIsSet = 0; } if (OUTPUTTMRIsSet != 0 && (OUTPUTTimer < millis())) { digitalWrite(OUTPUT2, OUTPUTTMRState); OUTPUTstate = OUTPUTTMRState; OUTPUTTMRIsSet = 0; } if (OUTPUTTMRIsSet != 0 && (OUTPUTTimer < millis())) { digitalWrite(OUTPUT3, OUTPUTTMRState); OUTPUTstate = OUTPUTTMRState; OUTPUTTMRIsSet = 0; } /***************************************/ } /* Name: sendData Description: Функция, используемая для отправки данных на ESP8266. Params: command - данные/команда для отправки; timeout - время ожидания отклика; debug - печатать в консоль?(true = да, false = нет) Returns: Отклик от esp8266 (если есть отклик) */ String sendData(String command, const int timeout, boolean debug) { String response = ""; int dataSize = command.length(); char data; command.toCharArray(data, dataSize); esp8266_Write(data, dataSize); // передача символов на esp8266 if (debug) { Serial.println("\r\n====== HTTP Response From Arduino ======"); Serial.write(data, dataSize); Serial.println("\r\n========================================"); } long int time = millis(); while ((time + timeout) >millis()) ( while (esp8266_Available()) ( // esp mempunyai data, jadi cetak ke konsol char c = esp8266_Read(); // baca karakter berikutnya. respon += c; ) ) if (debug) ( Respon pengembalian serial .print(response); ) /* Nama: sendHTTPResponse Deskripsi: Fungsi yang mengirimkan respons HTTP 200, HTML UTF-8 */ void sendHTTPResponse(int connectionId, String content) ( // membuat respons HTTP String httpResponse; String httpHeader; // HTTP header httpHeader = " HTTP/1.1 200 OK\r\nJenis Konten: teks/html; charset=UTF-8\r\n"; httpHeader += "Panjang Konten: "; httpHeader += konten.panjang(); = " \r\n"; httpHeader += "Koneksi: close\r\n\r\n"; httpResponse = httpHeader + content + " "; " tidak terkirim, jadi saya menambahkan spasi ekstra sendCIPData(connectionId, httpResponse) /* Nama: sendCIPDATA Deskripsi: mengirimkan perintah CIPSEND= ,<данные>*/ void sendCIPData(int connectionId, String data) ( String cipSend = "AT+CIPSEND="; cipSend += connectionId; cipSend += ","; cipSend += data.length(); cipSend += "\r\ n"; sendCommand(cipSend, 1000, DEBUG); sendData(data, 1000, DEBUG); ) /* Nama: sendCommand Deskripsi: Fungsi yang digunakan untuk mengirim data ke ESP8266. Params: perintah - data/perintah untuk dikirim; batas waktu - waktu tunggu respons; debug - cetak ke konsol?(true = yes, false = no) Pengembalian: Respon dari esp8266 (jika ada respon) */ String sendCommand(Perintah string, const int timeout, boolean debug) ( String respon = ""; esp8266_Print(command ); // mentransfer karakter ke esp8266 long int time = millis(); while ((time + timeout) > millis()) ( while (esp8266_Available()) ( // esp mempunyai data, jadi cetaklah ke console char c = esp8266_Read(); // membaca karakter berikutnya += c) if (debug) ( Serial.print(response); ) mengembalikan respons;

Aplikasi Android

Untuk mengontrol semua komponen perangkat keras di atas, kita akan menggunakan aplikasi Android sederhana. Aplikasi ini memungkinkan kita untuk menghidupkan atau mematikan output secara langsung atau setelah jangka waktu tertentu.

Catatan: Aplikasi ini membutuhkan Android 4.0 (IceCreamSandwich) atau lebih tinggi.

  • Pertama-tama, Anda harus mengetahui alamat IP modul Anda. Jika Anda menggunakan port serial perangkat lunak, alamat IP akan dicetak di konsol. Jika Anda menggunakan port serial perangkat keras, maka Anda harus menggunakan kabel untuk memantau data pada jalur RX dan TX untuk melihat alamat IP. Anda juga perlu mengetahui nomor port yang ditentukan dalam sketsa Arduino. Setelah itu klik "connect" untuk mendapatkan status ketiga output. Anda perlu memastikan bahwa router Wi-Fi Anda dihidupkan dan Anda terhubung ke jaringan lokal.
  • Sekarang klik tombol mana saja yang ingin Anda nyalakan/matikan. Kapan pun Anda mau, Anda dapat mengklik "segarkan" untuk menyegarkan status semua keluaran.
  • Di tab "Pengatur Waktu", Anda dapat mengatur salah satu dari ketiga output ini untuk hidup/mati setelah jangka waktu tertentu (dari 0 hingga 24 jam).
  • Setelah tindakan apa pun, Anda akan menerima pesan konfirmasi yang menunjukkan apakah perintah berhasil diselesaikan atau terjadi kesalahan.

Video demo

Itu saja! Saya harap artikel itu bermanfaat. Tinggalkan komentar!