Daftar Isi:

Sensor Gerak ESP-01 Dengan Deep Sleep: 5 Langkah
Sensor Gerak ESP-01 Dengan Deep Sleep: 5 Langkah

Video: Sensor Gerak ESP-01 Dengan Deep Sleep: 5 Langkah

Video: Sensor Gerak ESP-01 Dengan Deep Sleep: 5 Langkah
Video: Voltlog #257 - ESP32 PIR Motion Sensor With Deep Sleep & MQTT (revB part2) 2024, November
Anonim
Image
Image

Saya telah bekerja membuat sensor gerak buatan sendiri yang mengirim pesan email saat dipicu. Ada banyak contoh instruksi dan contoh lain untuk melakukan ini. Baru-baru ini saya perlu melakukan ini dengan sensor gerak PIR yang dioperasikan dengan baterai dan ESP-01. ESP-01 sangat fungsional dan memiliki semua kemampuan yang diperlukan, jadi mengapa tidak menggunakan kebutuhan minimum dan paling murah? Ditambahkan ke dalam campuran adalah modul ESP-01 terpisah dan jarak jauh lainnya yang memicu bel ketika sensor gerak dipicu.

Kode dan tata letak sirkuit akhirnya telah dikumpulkan dari berbagai sumber di seluruh web dan saya rasa saya tidak dapat mengidentifikasinya secara spesifik. Gagasan mengirim email melalui gmail berasal dari sumber yang dapat diinstruksikan dan lainnya dan kode terakhir adalah campuran dari sumber tersebut. Tidur nyenyak untuk bekerja membawa saya ke banyak jalan yang sering kali terbukti tidak membuahkan hasil. Lucunya, begitu sebuah jalan terbukti membuahkan hasil, Anda berhenti mencari jalan lagi. Jadi saya mengucapkan terima kasih kepada semua orang yang telah berkontribusi pada kesuksesan saya dan belum diketahui.

Saya memiliki masalah yang sama untuk membuat sensor PIR bekerja memicu tidur nyenyak ESP-01. Banyak jalan sampai ada satu yang berhasil.

Tak perlu dikatakan, ada beberapa rintangan yang menarik atau mungkin lebih relevan, pemahaman yang lebih baik tentang elektronik yang saya butuhkan. Anda terus belajar sampai sesuatu berhasil dan kemudian Anda tidak perlu belajar lagi.

ESP-01 melakukan tidur nyenyak serta modul ESP8266 lainnya selama Anda tidak memerlukan tidur waktunya. Jika Anda ingin modul bangun setelah waktu yang ditentukan, ESP-01 bukanlah modul yang akan digunakan. Tapi bukan itu yang saya inginkan. Waktu yang berlalu tidak ada gunanya saat menggunakan PIR. Saya ingin ESP-01 bangun hanya ketika dipicu oleh gerakan yang dirasakan oleh PIR. Jika tidak ada gerakan yang terdeteksi selama berjam-jam atau berhari-hari, ESP-01 tetap tertidur menggunakan daya baterai minimal.

Anda akan melihat banyak sirkuit yang menggunakan GPIO16 terhubung ke Reset ESP8266 karena GPIO16 adalah sinyal bangun. Ini benar, tetapi ini adalah sinyal bangun dari tidur waktunya. Kita bisa mengabaikan PIN ini, yang bagus karena tidak tersedia di ESP-01.

Pada dasarnya, yang kita butuhkan hanyalah mendapatkan sinyal dari PIR untuk memicu pin Reset ESP-01. Kesulitan pertama yang akan Anda duga adalah bahwa Reset dipicu pada sinyal RENDAH dan PIR mengirimkan sinyal TINGGI saat dipicu. Reset juga harus TINGGI atau mengambang saat boot. Jadi untuk mempersingkat ini, setelah mencoba beberapa rangkaian yang berbeda saya memutuskan menggunakan transistor NPN dengan resistor pull-up untuk menjaga pin RESET TINGGI saat boot. Output dari PIR minimal tetapi menyediakan arus basis yang cukup untuk menghidupkan transistor.

Seperti yang akan Anda lihat pada diagram sirkuit di bawah ini, ESP-01 dibangunkan dari tidur nyenyak setiap kali PIR merasakan gerakan.

Tapi ada masalah lain. Reset ESP-01 hanya terjadi setelah PIR berhenti merasakan gerakan dan kembali ke sinyal rendah mematikan transistor dan mengembalikan pin Reset ke HIGH karena resistor pullup. Ini berarti bahwa email tidak akan terkirim, bel juga tidak akan diaktifkan sampai SETELAH PIR berhenti merasakan gerakan. Saya ingin pemicunya terjadi segera setelah gerakan dirasakan.

Apa yang saya tentukan dari perilaku ini adalah bahwa ESP-01 sebenarnya memicu di tepi naik sinyal. Menahan pin Reset ke ground sebenarnya tidak memicu ESP-01 dari deep sleep tetapi saat tegangan naik ke sinyal HIGH, maka reset terjadi.

Tanggapan saya yang sangat sederhana terhadap perilaku ini adalah menambahkan kapasitor ke saluran antara keluaran PIR dan basis transistor. Hal ini menyebabkan transistor hanya menyala saat kapasitor sedang diisi. Setelah diisi, tidak ada arus lebih lanjut dan transistor dimatikan. Resistor 5k memungkinkan arus mengalir ke ground. Saya menguji ini dengan LED sebagai pengganti ESP-01 dan dapat melihat lampu kilat LED menyala selama sepersekian detik sebelum dimatikan. Pulsa kecil ini cukup untuk menarik pin Reset ke ground sesaat dan cukup lama untuk memicu Reset dari tidur nyenyak.

Langkah 1: Modul Deep Sleep ESP-01

Modul Tidur Dalam ESP-01
Modul Tidur Dalam ESP-01
Modul Tidur Dalam ESP-01
Modul Tidur Dalam ESP-01

Modul tidur nyenyak menggunakan dua tegangan kerja. Paket baterai 5v+ acak untuk PIR dan juga papan pengatur 3,3 volt untuk ESP-01. Saya juga memasukkan dioda ke dalam rangkaian untuk mencegah bagian yang rusak dari tegangan balik. Ini memang menggunakan sedikit daya ekstra dan menjatuhkan tegangan baterai sebesar 0,7 volt. Dioda dapat dibiarkan keluar dari rangkaian jika Anda yakin tidak akan pernah membalikkan kabel baterai. Sebuah saklar juga ditambahkan untuk kenyamanan.

Modul ini adalah pembaruan kecil untuk tata letak non-tidur nyenyak asli saya. Dalam konfigurasi non deep sleep, PIR terhubung langsung ke pin RX dari ESP-01. Saya menggunakan pin RX dari ESP-01 sebagai pin input untuk PIR karena beberapa alasan. GPIO0 tidak berfungsi karena saat boot PIN output PIR akan LOW menyebabkan ESP-01 masuk ke mode flash. Saya tidak menggunakan GPIO2 karena saya tidak dapat menggunakan LED bawaan untuk umpan balik visual. Pin RX dan TX sering digambarkan sebagai pin IO tambahan tetapi pengalaman saya adalah bahwa RX adalah pin INPUT tambahan dan TX adalah pin OUTPUT tambahan.

Dalam konfigurasi deep sleep, koneksi RX tidak sepenuhnya diperlukan. Saya menggunakannya hanya untuk memantau berapa lama PIR dipicu dengan menyalakan LED saat input TINGGI. Seperti yang disebutkan sebelumnya, jika Anda menghapus fungsi loop dan hanya menggunakan rutinitas pengaturan, maka koneksi RX tidak diperlukan.

Berikut adalah daftar bagian untuk modul tidur nyenyak ESP-01:

Papan Prototipe PCB 1 - 5 x 7 cm

Konektor 1 - 2 pin

2 - 1 x 3 header wanita

1 - AMS1117 - papan sirkuit pengatur tegangan 3.3

1 - 1 x 3 Pin header Pria Sudut Kanan

1 - 1 x 3 pin tajuk soket perempuan

1 - 1 x 4 pin tajuk soket perempuan

1 - 2 x 4 tajuk wanita

1 - 1uf kapasitor

1 - Sensor Gerak PIR HC-SR501

1 - 2N2222 Transistor

1 - 10k Resistor

1 - 4.7k Resistor

1 - 1k Resistor

1 - 1N4148 dioda

1 - alihkan SS12D00G4 SPDT

1 - ESP-01

1 - Paket Baterai 4AA

Harap dicatat bahwa dalam video papan sirkuit menggunakan adaptor papan tempat memotong roti ESP-01 alih-alih header 2 x 4. Meskipun adaptor ini lebih mudah disolder, header 2 x 4 berfungsi dengan baik dan sebenarnya lebih pas.

Langkah 2: Kode Deep Sleep ESP-01

Kode Deep Sleep melakukan dua fungsi. Kirim pesan email (melalui gmail sebagai default) dan kirim permintaan web http ke modul buzzer ESP-01 terkait untuk memicu buzzer.

Saat dipicu, modul ini menyediakan dua opsi notifikasi dan mungkin sangat berguna saat Anda tidak memperhatikan pesan email.

Anda perlu memperbarui enam baris kode dengan nilai spesifik Anda untuk membuat sketsa berfungsi:

const char* ssid = "xxxxx"; // Kata sandi SSIDconst char* WiFi Anda = "xxxxx"; // String Kata Sandi WiFi Anda Senders_Login = "xxxxx"; // login penyedia email Anda String Senders_Password = "xxxxx"; // kata sandi penyedia email Anda

Kepada = "xxxxxx"; Dari = "xxxxxx"; // Gmail umumnya lebih suka ini sama dengan Senders_Login dan dapat menggantikan

Saya menemukan modul tidur nyenyak bekerja secara tidak terduga ketika sensor PIR disetel ke bawah 10 detik untuk durasi peristiwa pemicu. Saya telah mengatur saya ke 20 detik. Ini terbukti sangat andal tetapi juga berarti bahwa peristiwa pemicu dapat terjadi dengan frekuensi itu.

Saya juga telah menambahkan kode ke fungsi loop untuk menjaga agar LED ESP-01 tetap menyala selama PIR masih merasakan gerakan. Semua kode dalam fungsi loop dapat dihapus dan panggilan untuk tidur nyenyak dipindahkan ke akhir fungsi pengaturan.

Saya menggunakan fungsi kedip untuk indikator visual aktivitas dengan modul ESP-01.

Meskipun saya telah menggunakan dan menguji konektivitas dengan gmail, penyedia email lain juga berfungsi. Saya telah mencoba beberapa. Bahkan, saya telah menemukan gmail lebih merepotkan. Gmail mengharuskan Anda mengonfigurasi akun agar dapat diakses oleh aplikasi yang kurang aman. Pengaturan akun ini NONAKTIF secara default jadi pastikan Anda menemukannya dan mengubahnya menjadi kurang aman. Gmail TIDAK akan bekerja sebaliknya.

Jika Anda memilih untuk memiliki lebih dari satu modul buzzer, tambahkan saja panggilan tambahan dari klien http (ulangi tiga baris kode tetapi ubah alamat ip yang digunakan dan juga hanya tentukan variabel httpCode sebagai int sekali!

Perhatikan bahwa alamat ip buzzer dikodekan dalam modul ini. Anda tidak harus menggunakan alamat ip yang saya pilih, tetapi Anda harus mencocokkan alamat ip panggilan web dalam modul ini dengan alamat ip pengaturan server web di modul berikutnya.

Langkah 3: Modul Buzzer ESP-01

Modul Buzzer ESP-01
Modul Buzzer ESP-01
Modul Buzzer ESP-01
Modul Buzzer ESP-01
Modul Buzzer ESP-01
Modul Buzzer ESP-01

Modul buzzer memiliki pengaturan yang cukup sederhana. Ini menggunakan konektor USB sebagai pengganti baterai karena menurut saya modul ini tidak cocok untuk baterai. Itu harus tetap menyala dan jaringan/wifi terhubung setiap saat karena tidak pernah tahu kapan permintaan web akan dibuat. Ini membutuhkan daya yang lebih berkelanjutan daripada kegunaan paket baterai.

Modul buzzer dapat ditempatkan dengan nyaman di beberapa lokasi yang memberikan pemberitahuan tentang peristiwa pemicu sensor gerak di mana pun Anda berada!

Buzzer terhubung ke konektor USB 5v dan ada papan pengatur 3.3v lain yang memberikan daya ke ESP-01.

Modul buzzer akan berfungsi menggunakan TX, GPIO0 atau GPIO2 untuk outputnya. Dalam konfigurasi saya, saya menggunakan GPIO0. (Dalam gambar modul, kabel terhubung ke GPIO2 tetapi saya telah memindahkannya.) Meskipun GPIO0 tidak berfungsi untuk modul tidur nyenyak (sebagai INPUT), ia berfungsi baik dengan tata letak ini sebagai OUTPUT. Itu tidak ditarik ke ground saat boot yang akan menyebabkan masalah. Saya memang menggunakan GPIO2 tetapi kemudian saya tidak dapat menggunakan LED onboard untuk umpan balik apa pun tetapi dengan menggunakan GPIO0 untuk OUTPUT saya dapat menggunakan LED on board.

Saya mencoba menggunakan transistor NPN untuk menyalakan buzzer di sirkuit ketika ESP-01 memberi sinyal HIGH pada pin GPIO0 tetapi hasilnya sangat tidak konsisten. Buzzer sepertinya ingin berbunyi setiap saat, bahkan dengan daya yang sangat kecil. Jadi alih-alih saya menggunakan MOSFET saluran N (2n7000) dan hasilnya luar biasa. Pin IO menggerakkan Gerbang sesuai kebutuhan.

Sementara kita hanya membutuhkan dua pin dari konektor USB Vcc(+) dan Gnd(-) saya menggunakan header 5 pin untuk menghubungkan ke papan PCB untuk stabilitas ekstra dan untuk menyolder sebelum menghubungkan USB ke regulator. Papan regulator 3.3v saya datang dengan pin yang sudah terpasang dan dalam pikiran saya, terbalik. Jadi untuk menempatkan regulator ke pin header Anda dapat melihat bahwa papan sirkuit tersembunyi, tetapi lebih buruk dari itu, vcc dan gnd pada regulator terbalik dari vcc dan gnd pada konektor USB. Jadi kabel menyeberang.

Perhatikan juga bahwa + daya untuk buzzer aktif berasal dari 5v USB. Juga, header soket perempuan 4 pin bekerja dengan baik dengan penempatan pin bel.

Daftar Bagian Modul Buzzer ESP-01:

1 - 5 x 7 Papan PCB

1 - Konektor mini USB dengan header pin (7 pin)

2 - 1 x 3 header wanita

1 - papan pengatur tegangan AMS1117-3.3 v

1 - 2 x 4 tajuk wanita

2 - 1 x 4 header soket perempuan

1 - 2N7000 N-channel MOSFET

Resistor 1 - 10 ohm

1 - Buzzer Aktif 5v

Langkah 4: Kode Modul Buzzer ESP-01

Modul buzzer bertindak sebagai server web ESP-01 sederhana. Ini merespons dengan pesan sederhana ke permintaan root dan ketika mendapat permintaan buzz, itu akan memicu bel. GPIO0 digunakan untuk pin GPIO untuk sinyal buzzer.

Perhatikan bahwa ESP-01 dikonfigurasi dengan alamat ip kode keras. Ini diperlukan agar modul deep sleep digabungkan ke alamat buzzer.

Seperti modul sebelumnya, Anda harus memperbarui dua baris kode dengan nilai spesifik Anda:

//SSID dan Kata Sandi router WiFi Andaconst char* ssid = "xxxxxxx";

const char* kata sandi = "xxxxxxxxx";

Jika Anda memiliki beberapa modul buzzer yang dibuat, masing-masing modul harus dimuat dengan alamat ip uniknya sendiri.

Anda juga dapat menambahkan metode buzz berbeda yang menghasilkan melodi buzzer berbeda. Misalnya, jika Anda memiliki sensor PIR di pintu depan dan satu di pintu belakang, mereka masing-masing dapat membuat permintaan web ke masing-masing modul buzzer Anda tetapi satu sensor mungkin memiliki sketsa yang memanggil buzz dan sketsa lainnya dapat memanggil buzz2 sehingga Anda dapat mengetahui dari suara sensor mana yang dipicu. Dan seterusnya dan seterusnya! Fungsi buzz2 tidak ada tetapi cukup salin fungsi buzz dan ubah nilai penundaan.

Untuk server web Anda hanya perlu menambahkan baris kode seperti ini:

server.on("/buzz2", buzz2);

Langkah 5: Pikiran Terakhir

Ini adalah instruksi pertama saya jadi saya mungkin melewatkan beberapa hal praktis yang seharusnya saya sertakan. Papan regulator AMS1117-3.3 yang saya gunakan termasuk led kecil yang menyala saat dinyalakan. Untuk modul tidur nyenyak, saya tidak ingin lampu ini menyala dan menguras daya secara tidak perlu. Jadi saya melepas solder apa yang saya bisa di satu sisi led di papan dan kemudian menggunakan pisau utilitas untuk memotong garis jejak. Ini lebih mudah dari yang saya kira dan mencegah LED menyala. Saya belum dapat menentukan apa yang menarik daya ketika ESP-01 dalam tidur nyenyak tetapi saya mungkin memiliki jawaban dalam beberapa minggu. Seorang rekan saya menjalankan sensor (tidak dalam tidur nyenyak) dan menemukan baterai terkuras (5AA) dalam waktu sekitar seminggu. Saya pikir pengaturan ini harus memberikan satu bulan atau bahkan lebih. Kita akan melihat.

Modul tidur nyenyak berharga sekitar $8 CDN per bagian (baterai tidak termasuk!) dan modul buzzer $5.

Direkomendasikan: