Cara Membuat Butang Bersambung Wi-Fi Anda Sendiri Dengan ESP8266

Cara Membuat Butang Bersambung Wi-Fi Anda Sendiri Dengan ESP8266

Internet of Things mempunyai potensi DIY yang luas. Dengan pengetahuan yang mencukupi dan beberapa komponen yang murah, anda dapat membina sistem peranti bersambung yang kompleks.





Kadang kala, anda menginginkan sesuatu yang sederhana. Tidak ada loceng atau wisel, hanya butang yang melakukan satu tugas. Anda mungkin sudah biasa dengan sesuatu seperti ini jika anda pernah menggunakan butang Dash Amazon untuk menyusun semula barang-barang rumah tangga setiap hari.





Hari ini kita akan membuat butang Wi-Fi menggunakan NodeMCU, dan memprogramkannya untuk menggunakan IFTTT untuk melakukan… baiklah, apa sahaja! Arahan bertulis mengikuti video, jika anda mahu.





Apa yang Anda Perlu

Anda perlu:

  • 1 x papan NodeMCU (ESP8266), tersedia untuk $ 2-3 untuk AliExpress
  • 1 x Butang tekan
  • 1 x LED (pilihan)
  • Perintang 1 x 220 Ohm (pilihan)
  • Papan roti dan wayar penyambung
  • USB mikro untuk pengaturcaraan
  • Komputer dengan Arduino IDE dipasang

Selain dari NodeMCU, anda mungkin dapat mencari sebahagian besar bahagian ini dalam mana-mana kit permulaan Arduino. Tutorial ini akan menganggap anda menggunakan LED dan perintang pilihan, tetapi tidak penting.



Langkah 1: Menyiapkan Litar

Penyediaan perkakasan sangat mudah untuk projek ini. Sediakan papan anda mengikut rajah ini.

Kawat ungu melekat pin D0 ke satu sisi butang. Kawat hijau menghubungkan bahagian lain butang ke Pin RST . Kawat biru berlari dari pin D1 ke perintang dan LED. Kaki negatif LED melekat pada Pin GND daripada NodeMCU.





Apabila papan roti disediakan, ia akan kelihatan seperti ini:

fail dibuka dalam sistem tidak dapat dipadam

Sekiranya anda tertanya-tanya bagaimana saya membawa LED saya ke pin ground hanya menggunakan sebilangan kecil kabel, cepat kami kursus kemalangan papan roti harus membantu membersihkannya! Periksa persediaan anda dan pasangkan NodeMCU anda ke komputer melalui USB.





Langkah 2: Menyiapkan IDE

Sebelum memulakan pengekodan, anda perlu membuat persiapan. Sekiranya anda belum melakukannya, sediakan Arduino IDE untuk mengenali papan NodeMCU anda. Anda boleh menambahkannya ke senarai papan anda melalui Fail> Keutamaan .

Anda boleh mendapatkan penjelasan yang lebih terperinci mengenai langkah ini dalam artikel pengenalan NodeMCU kami.

Dua perpustakaan diperlukan untuk projek ini. Navigasi ke Lakarkan> Sertakan Perpustakaan> Urus Perpustakaan . Carian untuk ESP8266WIFI oleh Ivan Grokhotkov dan memasangnya. Perpustakaan ini ditulis untuk membuat sambungan Wi-Fi dengan papan NodeMCU.

Carian seterusnya untuk IFTTTWebhook oleh John Romkey dan pasang versi terkini. Perpustakaan ini dirancang untuk mempermudah proses menghantar webhook ke IFTTT.

Itu semua persiapan yang kami perlukan, mari kod!

Bagaimana Kod Akan Berfungsi

Kami akan menggunakan ESP8266WIFI perpustakaan untuk mewujudkan sambungan Wi-Fi. The IFTTTWebhooks perpustakaan membuat permintaan kepada IFTTT --- dalam kes ini, untuk menghantar ke Twitter. Kemudian, suruh papan NodeMCU tidur ketika tidak digunakan untuk menjimatkan kuasa.

Apabila butang ditekan, ia akan menghubungkan D0 dan RST pin. Ini menetapkan semula papan, dan prosesnya berlaku lagi.

Sebilangan besar kod dalam tutorial ini cukup mudah untuk pemula. Walaupun begitu, jika anda memulakannya, anda akan merasa lebih mudah difahami setelah mengikuti kami Panduan pemula Arduino .

Tutorial ini menggunakan kod dalam potongan untuk membantu memahami. Sekiranya anda ingin terus berniaga, anda boleh mendapatkannya kod lengkap di Pastebin . Perhatikan bahawa anda masih perlu mengisi kelayakan Wi-Fi dan IFTTT anda dalam kod ini agar berfungsi!

Langkah 3: Menguji Tidur Dalam

Untuk memulakan, kami akan membuat ujian mudah untuk menunjukkan bagaimana tidur nyenyak berfungsi. Buka lakaran baru di Arduino IDE. Masukkan dua bahagian kod berikut.

#include
#include
#define ledPin 5
#define wakePin 16
#define ssid 'YOUR_WIFI_SSID'
#define password 'YOUR_WIFI_PASSWORD'
#define IFTTT_API_KEY 'IFTTT_KEY_GOES_HERE'
#define IFTTT_EVENT_NAME 'IFTTT_EVENT_NAME_HERE'

Di sini, kami memasukkan perpustakaan kami, bersama dengan menentukan beberapa pemboleh ubah yang kami perlukan dalam lakaran kami. Anda akan melihat bahawa ledPin dan wakePin diberi nombor berbeza di sini berbanding dengan gambarajah Fritzing di atas. NodeMCU mempunyai pinout yang berbeza dengan papan Arduino. Ini bukan masalah kerana rajah berguna ini:

Sekarang buat fungsi persediaan:

void setup() {
Serial.begin(115200);
while(!Serial) {
}
Serial.println(' ');// print an empty line before and after Button Press
Serial.println('Button Pressed');
Serial.println(' ');// print an empty line
ESP.deepSleep(wakePin);
}

Di sini, kami menyediakan port bersiri kami, dan menggunakan loop sementara untuk menunggu sehingga ia bermula. Oleh kerana kod ini akan dipicu setelah menekan butang reset, kami mencetak 'Butang Ditekan' ke monitor bersiri. Kemudian, kami memberitahu NodeMCU untuk tidur nyenyak sehingga butang yang menghubungkan bangunkan pin kepada RST pin ditekan.

Akhirnya, untuk ujian, tambahkan ini pada anda gelung () kaedah:

void loop(){
//if deep sleep is working, this code will never run.
Serial.println('This shouldn't get printed');
}

Biasanya, lakaran Arduino menjalankan fungsi gelung secara berterusan selepas penyediaan. Oleh kerana kami menghantar papan tidur sebelum persediaan berakhir, gelung tidak akan berjalan.

Simpan lakaran anda dan muat naik ke papan. Buka monitor bersiri dan anda mesti melihat 'Butang Ditekan.' Setiap kali butang dicetuskan, papan tetapan semula dan mesej dicetak semula. Ianya berfungsi!

Catatan Tentang Monitor Serial

Anda mungkin telah melihat beberapa watak tidak masuk akal dalam monitor bersiri semasa beberapa projek anda. Ini biasanya disebabkan oleh tidak menetapkan monitor bersiri pada kadar baud yang sama dengan Serial.begin (XXXX) kadar.

Banyak panduan mencadangkan memulakan sambungan bersiri pada kadar baud 115200 untuk projek seperti ini. Saya mencuba banyak kombinasi, dan mereka semua mempunyai pelbagai tahap omong kosong sebelum dan selepas pesanan bersiri. Menurut pelbagai catatan forum, ini mungkin disebabkan oleh masalah keserasian papan atau perisian yang salah. Oleh kerana ia tidak terlalu menjejaskan projek, saya memilih untuk berpura-pura tidak berlaku.

bagaimana untuk mendapatkan penapis snap anda sendiri

Sekiranya anda menghadapi masalah dengan monitor bersiri, cubalah kadar baud yang berbeza dan lihat mana yang paling sesuai untuk anda.

Langkah 4: Menyambung ke Wi-Fi

Sekarang buat fungsi untuk menyambung ke rangkaian Wi-Fi anda.

void connectToWifi() {
Serial.print('Connecting to: SSID NAME'); //uncomment next line to show SSID name
//Serial.print(ssid);
WiFi.begin(ssid, password);
Serial.println(' ');// print an empty line
Serial.print('Attempting to connect: ');
//try to connect for 10 seconds
int i = 10;
while(WiFi.status() != WL_CONNECTED && i >=0) {
delay(1000);
Serial.print(i);
Serial.print(', ');
i--;
}
Serial.println(' ');// print an empty line
//print connection result
if(WiFi.status() == WL_CONNECTED){
Serial.print('Connected.');
Serial.println(' ');// print an empty line
Serial.print('NodeMCU ip address: ');
Serial.println(WiFi.localIP());
}
else {
Serial.println('Connection failed - check your credentials or connection');
}
}

Kaedah ini cuba menyambung ke rangkaian anda sepuluh kali dengan detik di antara. Kejayaan atau kegagalan cetakan sambungan ke monitor bersiri.

Langkah 5: Memanggil Kaedah Sambungan

Sekarang ini, sambungToWifi () tidak pernah dipanggil. Tambahkan panggilan ke fungsi penyediaan anda antara mesej 'Button Ditekan' dan hantarkan papan tidur.

connectToWifi();

Sekiranya anda tertanya-tanya di mana ini sesuai, ia akan kelihatan seperti ini:

Di bahagian atas lakaran ganti ssid dan kata laluan pemboleh ubah dengan kelayakan Wi-Fi anda. Simpan lakaran anda dan muat naik ke papan.

Sekarang apabila papan boot, ia akan cuba menyambung ke rangkaian Wi-Fi anda, sebelum kembali ke fungsi penyediaan. Sekarang, mari sediakan integrasi IFTTT.

Langkah 6: Menyiapkan Integrasi IFTTT

IFTTT membolehkan penyatuan dengan pelbagai perkhidmatan web. Kami menggunakannya dalam tutorial LED menara PC Wi-Fi kami untuk mengirim peringatan setiap kali e-mel baru diterima. Hari ini kita akan menggunakannya untuk menghantar tweet dengan menekan butang.

Navigasi ke Applet Saya halaman, dan pilih Applet Baru

Klik pada + ini dan sambung ke Webhooks . Pilih 'Terima permintaan web' dan namakan acara anda. Pastikan ia sederhana ! Catat nama acara, anda perlu menambahkannya ke kod NodeMCU anda kemudian. Klik 'Buat Pencetus' .

Sekarang pilih + itu . Cari untuk Twitter servis dan sambungkan kepadanya --- anda perlu membenarkannya untuk menghantar ke akaun Twitter anda. Pilih 'Kirim tweet' dan pilih mesej anda.

Skrin seterusnya akan meminta anda menyemak applet. Klik selesai. Itu sahaja!

Langkah 7: Menambah Kepujian IFTTT ke Kod

Kembali ke Arduino IDE, anda perlu menambahkan kunci API dan nama acara IFTTT anda ke pemboleh ubah yang anda tetapkan. Untuk mencari kunci API, arahkan ke Applet Saya dan pilih Webhooks di bawah Perkhidmatan tab. Pilih Dokumentasi untuk mengakses kunci anda.

Salin kunci, dan nama acara ke dalam kod anda, ganti nama sementara yang disediakan untuknya.

#define IFTTT_API_KEY 'IFTTT_KEY_GOES_HERE'
#define IFTTT_EVENT_NAME 'IFTTT_EVENT_NAME_HERE'

Perhatikan, koma terbalik harus kekal, hanya ganti teksnya.

Antara memanggil sambungToWifi () dan menghantar papan tidur, buat contoh objek perpustakaan IFTTTWebhook. LED menandakan penyelesaian tugas sebelum tidur nyenyak bermula lagi.

pindahkan kenalan dari iphone ke android
//just connected to Wi-Fi
IFTTTWebhook hook(IFTTT_API_KEY, IFTTT_EVENT_NAME);
hook.trigger();
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);
delay(200);
digitalWrite(ledPin, LOW);
//now sending board to sleep

Pencetus panggilan pada cangkuk objek melepaskan applet IFTTT, dan harus menghantar ke akaun Twitter anda. Simpan lakaran anda dan muat naik. Anda kini harus mempunyai butang tweet yang berfungsi sepenuhnya.

Sekiranya nampaknya tidak berfungsi, periksa kod dan bukti kelayakan anda dengan teliti untuk kesilapan. Sekiranya anda benar-benar tersekat, dapatkan kod lengkap dari atas dan bandingkan dengan kod anda sendiri.

Selesai! Bagaimana Anda Boleh Memperbaikinya Lebih Lanjut?

Ini adalah versi asas butang Wi-Fi, tetapi ada banyak cara untuk diperbaiki. Untuk kesederhanaan, sambungan USB digunakan untuk kuasa di sini. Bateri akan menjadikannya mudah alih sepenuhnya, dan casing yang memegang litar akan menjadi projek percetakan 3D pemula yang sempurna.

Walaupun menggunakan tidur nyenyak, bateri anda akan habis dengan cepat. Terdapat banyak Petua penjimatan kuasa Arduino yang membantu dalam projek jenis ini. Walaupun lebih sukar daripada tutorial ini, jika anda membuat Arduino yang sedar akan kekuatan anda sendiri dari awal, butang Wi-Fi berkuasa bateri dapat bertahan selama berbulan-bulan!

Projek ini akan menjadikan alat kawalan jauh yang sempurna untuk aplikasi rumah pintar. Sudah ada sejumlah besar applet automasi rumah boleh didapati di IFTTT. Setelah anda meletakkan asasnya, anda boleh menggunakan hampir semua sensor atau beralih untuk mencetuskan perkhidmatan yang anda bayangkan.

Kredit Gambar: Vadmary / Depositphotos

Berkongsi Berkongsi Tweet E-mel 6 Alternatif yang didengar: Aplikasi Buku Audio Percuma atau Murah Terbaik

Sekiranya anda tidak gemar membayar buku audio, berikut adalah beberapa aplikasi hebat yang membolehkan anda mendengarkannya secara percuma dan sah.

Baca Seterusnya
Topik-topik yang berkaitan
  • DIY
  • Arduino
  • Tutorial Projek DIY
Mengenai Pengarang Ian Buckley(216 Artikel Diterbitkan)

Ian Buckley adalah wartawan bebas, pemuzik, pemain dan penerbit video yang tinggal di Berlin, Jerman. Ketika dia tidak menulis atau di atas pentas, dia bermain-main dengan elektronik DIY atau kod dengan harapan menjadi saintis gila.

Lagi Dari Ian Buckley

Langgan buletin kami

Sertailah buletin kami untuk mendapatkan petua, ulasan, ebook percuma, dan tawaran eksklusif!

Klik di sini untuk melanggan