- Bahan yang Dibutuhkan:
- Bagaimana semuanya bekerja?
- Memprogram ESP8266-01:
- Menghubungkan ESP8266-01 dengan Arduino:
- Program Arduino dan Bekerja:
ESP8266-01 telah menjadi modul yang bagus untuk memuaskan semua dahaga kami akan proyek IOT. Sejak dirilis, itu telah mengembangkan komunitas yang kuat dan berkembang menjadi modul Wi-Fi yang mudah digunakan, murah dan kuat. Platform open-source lain yang jauh lebih populer adalah Arduino, sudah memiliki banyak proyek yang dibangun di sekitarnya. Menggabungkan kedua platform ini akan membuka pintu bagi banyak proyek inovatif, jadi dalam tutorial ini kita akan belajar cara menghubungkan modul ESP8266-01 dengan Arduino. Dengan cara ini kita akan dapat mengirim atau menerima data antara Arduino dan Internet.
Untuk keperluan tutorial ini kita akan membaca waktu, tanggal, suhu dan kelembaban dari internet menggunakan API dengan ESP8266-01. Kemudian kirimkan nilai-nilai ini ke papan Arduino dan tampilkan di layar LCD 16 * 2. Kedengarannya keren kan !! Jadi mari kita mulai.
Bahan yang Dibutuhkan:
- Arduino Board (Versi apa pun)
- ESP8266-01
- Papan programmer FTDI dengan opsi 3.3V
- LCD 16x2
- Potensiometer
- Tekan tombol
- Menghubungkan kabel
- Papan tempat memotong roti
Bagaimana semuanya bekerja?
Sebelum kita menyelami, penting untuk mengetahui bagaimana sebenarnya hal ini akan bekerja. Pada dasarnya, kita harus mulai dengan modul ESP8266-01. Kami akan menggunakan Arduino IDE untuk memprogram ESP8266 dan kode akan ditulis untuk menggunakan API untuk membaca file JSON melalui permintaan http. Kemudian kami akan menyusun file JSON ini untuk mengekstrak hanya informasi yang diperlukan dari file JSON lengkap.
Setelah informasi diutarakan, kami akan mencetaknya menggunakan komunikasi serial. Jalur serial ini kemudian akan dihubungkan ke Arduino, sehingga Arduino dapat membaca informasi yang dikirim dari ESP8266. Setelah informasi dibaca dan diproses, kami akan menampilkannya di layar LCD.
Tidak apa-apa, jika Anda belum sepenuhnya memahami ini, karena kita akan mempelajari hal yang sama di sisa tutorial ini.
Memprogram ESP8266-01:
Tutorial ini mengasumsikan bahwa Anda memiliki pengalaman dengan modul ESP8266. Jika tidak, maka disarankan untuk membaca tiga tutorial berikut untuk memahami sepenuhnya.
- Memulai ESP8266-01
- Pemrograman ESP8266-01 menggunakan perintah AT
- Pemrograman ESP8266-01 menggunakan Arduino IDE dan Flashing memorinya
Anda juga dapat memeriksa semua proyek ESP8266 kami di sini.
Di sini kita akan memprogram modul ESP8266-01 menggunakan Arduino IDE. Untuk perangkat keras kami menggunakan papan FTDI dengan 3.3V untuk memprogram ESP8266, karena ini akan membuat perangkat keras lebih sederhana. Diagram sirkuit untuk menghubungkan ESP8266 Anda dengan papan FTDI ditunjukkan di bawah ini.
Pastikan kondisi berikut terpenuhi
1. ESP8266-01 hanya toleran 3.3V, jangan gunakan 5V. Jadi atur FTDI hanya dalam mode 3.3V.
2. GPIO_0 harus diarde untuk mode pemrograman
3. Pin reset harus dihubungkan melalui tombol ke pin ground. Tombol ini harus ditekan sebelum kode diunggah. Setiap kali tombol ditekan, LED biru pada modul ESP8266-01 akan menyala tinggi untuk menunjukkan bahwa modul tersebut disetel ulang.
Setelah koneksi selesai, buka Arduino IDE dan periksa apakah Anda berhasil mengunggah program sampel. Jika Anda tidak yakin bagaimana menggunakan Arduino IDE untuk mengunggah program ke ESP8266, ikuti Pemrograman ESP8266 dengan Arduino untuk mempelajarinya. Pada titik ini saya berasumsi bahwa Anda telah berhasil mengunggah program blink.
. Program lengkap diberikan di akhir halaman ini lebih jauh di bawah saya menjelaskannya sebagai cuplikan kecil. Program ini juga membutuhkan pustaka Arduino JSON untuk dikompilasi, jadi jika Anda belum menambahkan pustaka ke Arduino IDE Anda, maka tambahkan dengan mengunduh dari pustaka Arduino JSON dari Github.
ESP8266 harus terhubung dengan internet untuk mendapatkan data tentang tanggal, waktu, suhu dan kelembaban. Jadi, Anda harus mengizinkannya terhubung ke Wi-Fi Anda dengan membuktikan SSID dan Kata Sandi di baris di bawah ini
const char * ssid = "JIO-Fi"; // Masukkan Wi-Fi SSID const char * password = "Pas123"; // Masukkan Sandi Wi-Fi Anda
Di dalam fungsi setup () kami memeriksa apakah ESP dapat terhubung dengan Wi-Fi, jika tidak akan menunggu di sana selamanya hanya dengan mencetak "Menghubungkan.." pada monitor serial.
while (WiFi.status ()! = WL_CONNECTED) {// Tunggu sampai Wi-Fi terhubung delay (1000); Serial.print ("Menghubungkan.."); // Print Connecting.. sampai koneksi dibuat }
Langkah selanjutnya adalah langkah yang sangat penting. Jika koneksi Wi-Fi berhasil, kita harus menjalankan http get request untuk membaca file JSON dari internet. Dalam tutorial ini saya menggunakan API yang disediakan oleh wunderground.com. Jadi, jika Anda berencana untuk menggunakan yang sama, Anda bisa masuk ke tautan dan mendaftar untuk kunci API gratis atau menggunakan API apa pun pilihan Anda. Setelah Anda selesai dengan API Anda, Anda akan mendapatkan tautan seperti ini di bawah
Catatan: Saya telah mengubah kunci API dari tautan ini sehingga ini tidak akan berfungsi. Jaga keamanan kunci API Anda dan jangan bagikan.
API saya di sini digunakan untuk mendapatkan data cuaca di Chennai. Anda dapat menggunakan API apa pun. Tetapi ketika Anda memuat API di browser apa pun, itu harus mengembalikan file JSON. Misalnya API saya mengembalikan file JSON berikut
Anda mungkin mengembalikan file dengan data berbeda. Kami dapat memeriksa apakah file JSON ini juga diterima oleh ESP8266 kami dengan membacanya dan mencetak JSON pada monitor serial kami menggunakan baris berikut
int httpCode = http.GET (); // berikan permintaan get if (httpCode> 0) {// Periksa kembali kode // payload = http.getString (); // Simpan nilai pada varibale Payload untuk debugging // Serial.println (payload); // Cetak payload untuk debugging jika tidak komentari kedua baris
Saya telah mengomentari baris-baris ini, karena hanya diperlukan untuk pengujian. Setelah Anda memastikan bahwa ESP8266 dapat memperoleh data JSON, inilah saatnya menyusun Data. Seperti yang Anda lihat, data ini sangat besar dan sebagian besar nilainya tidak berguna kecuali yang diperlukan bagi kami seperti tanggal, waktu, suhu, dan kelembaban.
Jadi kami menggunakan perpustakaan Arduino JSON untuk memisahkan nilai yang diperlukan untuk kami dan menyimpannya dalam variabel. Ini dimungkinkan karena nilai dalam file JSON ditetapkan sebagai pasangan nilai nama. Jadi nama ini adalah string yang akan menampung nilai yang dibutuhkan untuk kita.
Untuk melakukan ini kita harus pindah ke situs web yang akan menganalisis file JSON dan memberi kita kode Arduino. Ya semudah itu. Lanjutkan ke https://arduinojson.org/assistant/ dan tempel file JSON yang kami muat di browser kami dan tekan enter. Setelah selesai, milik saya terlihat seperti ini di bawah
Gulir ke bawah sedikit untuk melihat program frase yang dibuat secara otomatis
Yang harus Anda lakukan adalah memilih variabel yang Anda inginkan, salin dan tempelkan di Arduino IDE Anda, seperti yang telah saya lakukan di sini
/ * Data Frase menggunakan JSON librarey * / // Gunakan https://arduinojson.org/assistant/ untuk mendapatkan nilai frase untuk string JSON Anda size_t bufferSize = JSON_OBJECT_SIZE (0) + JSON_OBJECT_SIZE (1) + JSON_OBJECT_SIZE (2) + 2 * JSON_OBJECT_SIZE (3) + JSON_OBJECT_SIZE (8) + JSON_OBJECT_SIZE (12) + JSON_OBJECT_SIZE (56) + 2160; DynamicJsonBuffer jsonBuffer (bufferSize); JsonObject & root = jsonBuffer.parseObject (http.getString ()); / * Akhir dari Data Frase * / // Tujukan nilai sin ke variabel yang diinginkan JsonObject & current_observation = root; // di bawah current_observation JsonObject & current_observation_observation_location = current_observation; // di bawah observasi_lokasi const char * current_observation_station_id = current_observation; // "ICHENNAI1" // dapatkan detail lokasi const char * current_observation_local_time_rfc822 = observasi_kini; // Waktu lokal // dapatkan waktu lokal const char * current_observation_temperature_string = current_observation; // "90,7 F (32,6 C)" // dapatkan nilai suhu const char * current_observation_relative_humidity = current_observation; // "73%" // dapatkan nilai kelembaban
Saya baru saja menyalin variabel current_observation_station_id, current_observation_local_time_rfc822, current_observation_temperature_string dan current_observation_relative_humidity . Karena kami berencana menampilkan hanya empat data itu di layar LCD kami.
Akhirnya, kami telah mendapatkan data yang kami butuhkan dari internet dan menyimpannya sebagai variabel yang dapat kami gunakan dengan nyaman. Untuk mengirim data ini ke Arduino kita tinggal menulisnya secara serial melalui monitor Serial. Baris berikut akan melakukan hal yang persis sama
// Cetak variabel melalui monitor serial Serial.print (current_observation_station_id); // kirim detail lokasi ke Arduino delay (100); // penundaan stabilitas Serial.print (current_observation_local_time_rfc822); // kirim detail waktu lokal ke Arduino delay (100); // penundaan stabilitas Serial.print (current_observation_temperature_string); // kirim detail suhu ke Arduino delay (100); // penundaan stabilitas Serial.print (current_observation_relative_humidity); // kirim detail kelembapan ke Arduino delay (100); // penundaan stabilitas
Perhatikan bahwa saya telah menggunakan Serial.print () dan bukan Serial.println () karena perintah Serial.println () akan menambahkan / n dan / r bersama dengan data yang tidak diperlukan untuk kita. Kami juga telah menambahkan penundaan 10 detik sehingga ESP akan mengirimkan nilai-nilai ini hanya pada interval 10 detik ke Arduino.
Menghubungkan ESP8266-01 dengan Arduino:
Sejauh ini kami telah memprogram ESP8266-01 kami untuk membaca data yang diperlukan dari internet dalam interval 10 detik dan mengirimkannya secara serial. Sekarang kita harus menghubungkan ESP dengan Arduino sehingga kita dapat membaca data serial ini. Kami juga harus menambahkan layar LCD 16 * 2 ke Arduino sehingga kami dapat menampilkan data yang diterima dari modul ESP8266. The diagram sirkuit untuk antarmuka ESP8266 modul dengan Arduino ditunjukkan di bawah ini
Pastikan pin GPIO_0 dibiarkan bebas, nyalakan modul hanya dengan pin 3.3V Arduino dan tekan tombol push untuk meletakkan modul ESP di modul operasi. Sekarang program yang kita unggah ke ESP seharusnya sudah mulai bekerja dan modul harus mengirim data melalui pin serial ke Arduino. Pin serial ini terhubung dengan pin nomor 6 dan 7 pada Arduino. Jadi kita dapat menggunakan opsi serial perangkat lunak di Arduino untuk membaca data serial ini dari pin.
Program Arduino dan Bekerja:
Program Arduino lengkap juga diberikan bersama dengan kode ESP di akhir halaman ini. Anda dapat menggulir ke bawah untuk melihat program atau membaca lebih lanjut jika Anda ingin memahami program tersebut.
Program interfacingnya cukup sederhana, kita hanya perlu menggunakan software serial library untuk membaca data dari pin 6 dan 7 dan menampilkannya di layar LCD. Karena data yang diterima dalam format string kita harus menggunakan opsi substring untuk memecah payload menjadi persyaratan kita atau bahkan mengubahnya menjadi integer jika diperlukan. Jadi kita mulai dengan menentukan pin yang dihubungkan dengan LCD.
const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Pin yang dihubungkan ke LCD LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
Karena kita telah menghubungkan pin Rx dan Tx dari ESP8266 dengan 6 dan 7 th pin Arduino kita harus menginisialisasinya Software seri bagi mereka pin sehingga kita dapat menerima data serial dari mereka.Saya memiliki nama ini sebagai ESP_Serial, Anda bisa beri nama apa pun yang Anda inginkan
SoftwareSerial ESP_Serial (6,7); // Tx, Rx
Di dalam fungsi setup () kami menginisialisasi komunikasi serial untuk monitor Serial dan juga untuk serial perangkat lunak. Jika Anda ingat, kami membuat program ESP untuk berkomunikasi pada 9600 baud rate sehingga kami harus menggunakan baud rate yang sama untuk port serial perangkat lunak. Kami juga menampilkan pesan intro kecil di LCD selama 2 detik.
void setup () {lcd.begin (16, 2); // Kami menggunakan layar LCD 16 * 2 lcd.print ("Arduino & ESP"); // Tampilkan pesan intro Serial.begin (115200); ESP_Serial.begin (9600); penundaan (2000); lcd.clear (); }
Di dalam fungsi loop utama () kita harus memeriksa apakah ESP8266 mengirim sesuatu. Jika ya, maka kita membaca string dari ESP8266 dan menyimpannya ke variabel yang disebut payload. Muatan variabel adalah tipe String dan itu akan menyimpan informasi lengkap yang dikirim dari modul ESP8266.
sementara (ESP_Serial.available ()> 0) {payload = ESP_Serial.readString ();
Sekarang kita harus membagi string ini menjadi potongan-potongan kecil sehingga kita dapat menggunakannya untuk tujuan kita sendiri, dalam hal ini kita harus membaginya untuk ditampilkan di layar LCD. Ini dapat dilakukan dengan mudah dengan menggunakan fungsi substring di Arduino. Anda harus mengetahui posisi setiap karakter untuk menggunakan fungsi substring ini. Anda dapat mencetak payload pada monitor serial untuk mengetahui posisi karakter dan menggunakannya untuk mengkategorikan substring seperti yang ditunjukkan di bawah ini
local_date = payload.substring (14, 20); local_time = payload.substring (26, 31); temperatur = payload.substring (48, 54); Kelembaban = payload.substring (55, 60);
Sekarang saya dapat melanjutkan dan menggunakan variabel ini untuk mencetaknya di monitor serial atau hanya mencetaknya di LCD. Namun mencetaknya pada monitor Serial akan membantu kami untuk memeriksa apakah substring dipisahkan dengan benar. Selanjutnya kita tinggal mencetaknya pada layar LCD menggunakan baris berikut
lcd.clear (); lcd.setCursor (1, 0); lcd.print (tanggal_lokal); lcd.setCursor (8, 0); lcd.print (waktu_lokal); lcd.setCursor (1, 1); lcd.print (suhu); lcd.setCursor (10, 1); lcd.print (Kelembaban);
Unggah program ke Arduino, dan pastikan koneksinya seperti yang ditunjukkan pada diagram rangkaian di atas. Sesuaikan kontras layar LCD sampai Anda melihat semuanya dengan jelas. Anda akan melihat pesan Intro pada LCD dan setelah beberapa detik rincian seperti tanggal, waktu, suhu dan Kelembaban akan ditampilkan di layar LCD seperti yang ditunjukkan di bawah ini.
Anda juga dapat melihat led biru pada ESP8266 berkedip setiap kali Data masuk. Jika Anda tidak dapat melihat ini berarti ESP tidak dalam mode pemrograman, coba tekan tombol Reset juga periksa koneksi.
Mirip dengan ini, Anda dapat menggunakan API apa pun untuk mendapatkan data yang diperlukan dari internet dan memasukkannya ke Arduino dan proses pekerjaan Anda dengan Arduino. Ada banyak sekali API yang tersedia di internet dan dengan semua itu Anda dapat membuat proyek yang tak terbatas. Harap Anda memahami proyek tersebut dan menikmati membangunnya. Jika Anda mengalami masalah, posting di bagian komentar di bawah atau di forum kami.
Anda dapat menemukan semua proyek terkait ESP8266 kami di sini.