Ketel WiFi di rumah, atau cara membuat ketel biasa benar-benar pintar

gambar

Kata Pengantar



Jika Anda membaca artikel saya sebelumnya ( Running line on Arduino ), maka Anda mungkin sudah tahu bahwa kami memiliki kesempatan untuk melakukan proyek kursus perangkat keras di universitas kami. Dan saya, terinspirasi oleh pekerjaan saya sebelumnya, memutuskan untuk mencoba lagi melakukan sesuatu dengan tangan saya sendiri. Hanya sekarang topiknya seharusnya lebih serius. Ngomong-ngomong, saya mulai berpikir tentang apa yang harus dilakukan selama liburan musim dingin, yaitu sebelum semester. Saya ingin melakukan sesuatu yang menarik dan bermanfaat sekaligus.


Cari ide



Suatu kali, berpasangan dengan Fundamentals of Information Protection, kami memiliki topik yang berkaitan dengan kekayaan intelektual dan paten. Guru memberi kami tugas untuk mengeluarkan paten untuk perangkat apa pun sesuai dengan semua persyaratan dan menyebutkan ketel wifi sebagai contoh.
Dia berkata - dan lupa. Dan semua orang lupa, tetapi di kepala saya topik ini tetap ada. Dan ketika tiba saatnya untuk memikirkan apa yang harus dilakukan sebagai tugas kuliah di semester berikutnya, saya ingat tentang teko ini.

Hal pertama yang saya putuskan untuk dilihat adalah apa yang sudah dilakukan. Dan apa yang mengejutkan saya ketika saya melihat bahwa hanya ada tiga model boneka dengan dukungan kontrol WiFi yang dijual, dan kemudian dua dari mereka milik perusahaan yang sama. Ini adalah Smarter iKettle 1.0 dan 2.0 dan Russian Polaris PWK 1792CGL.

gambar

Sangat menarik bahwa hampir setiap rumah memiliki ketel listrik biasa, dan ada beberapa yang pintar. Membandingkan fitur yang ditawarkan oleh iKettle dan Polaris, saya membuat daftar yang paling penting. Inilah yang terjadi:

  1. menghidupkan / mematikan dari smartphone;
  2. pengaturan suhu apa pun untuk air pemanas;
  3. kemampuan untuk mengetahui suhu saat ini;
  4. melacak volume air saat ini dalam ketel;
  5. peringatan dan perlindungan terhadap pengaktifan dengan volume air yang kecil;
  6. mengatur waktu bangun otomatis;
  7. pemberitahuan kesiapan;


Tampaknya terlihat nyata, saatnya turun ke bisnis.

Cari komponen yang diperlukan



Karena tidak mungkin membuat ketel yang sama sekali baru, diputuskan untuk memodifikasi ketel listrik biasa yang sudah jadi. Tepat di rumah ada ketel yatim dengan sakelar yang rusak.

Jadi, fondasinya sudah ada di sana, pikirku.

Sekarang saya harus mulai mencari komponen untuk perangkat keras. Karena sudah ada sedikit pengalaman bekerja dengan Arduino, saya memutuskan untuk mengimplementasikan semuanya. Selain itu, Arduin sendiri dan modul untuk itu tidak mahal.

Karena saya harus memasukkan seluruh bagian kendali ketel ke dalam ketel, pilihan jatuh pada Arduino Nano. Ini kecil dan memiliki antarmuka untuk menghubungkan kabel, tidak seperti Pro Mini, yang harus di-flash melalui UART.

gambar

Komponen utama ketel wifi tentu saja adalah modul wifi. Mencari di Internet untuk sesuatu yang terjangkau dan banyak tutorial, berlari ke ESP8266. Yaitu, pada versi 01. Saya melihat itu murah (sekitar $ 2) dan ada banyak instruksi untuk menghubungkan. Berhenti di situ. Sedangkan untuk modul itu sendiri, frasa di sini bagus: murah dan ceria. Tetapi lebih lanjut tentang itu nanti.

gambar

Untuk mengontrol suhu, kami membutuhkan semacam sensor suhu tahan air. Saya menemukan termistor tahan air NTC di aliexpress, yang dapat menahan suhu lebih dari 100 derajat. Saya juga menemukan contoh bekerja dengannya, jadi di sini saya segera memutuskan.

gambar

Itu perlu untuk memutuskan bagaimana mengaktifkan ketel pada titik waktu tertentu, tentu saja, Anda bisa membuat jam program pada Arduino dan menghidupkan ketel ketika waktu bertepatan, tetapi ini akan bekerja tidak stabil, dan jika program diatur ulang secara tidak sengaja, semuanya akan salah. Oleh karena itu, jam waktu nyata datang untuk menyelamatkan di sini. Yaitu DS1307. Mereka memiliki kekuatan independen (dari baterai 3 V), dan ada juga chip memori EEPROM 32K bit pada modul yang saya hentikan, yang saya gunakan untuk menghemat waktu.

gambar

Oh ya, karena ketel sekarang harus dihidupkan secara pemrograman, itu juga membutuhkan relay 1-saluran.

gambar

Sedangkan untuk sensor level cair, itu harus dilakukan secara manual. Detail di bawah.

Dari yang lain, beberapa resistor dari denominasi yang berbeda masih diperlukan, papan tempat memotong roti untuk tes, papan sirkuit untuk instalasi sebenarnya, kabel, besi solder dengan fluks dan solder, dan bagian terbesar dari kesabaran.

Pengembangan dimulai



Karena proyek ini adalah ketel wifi, hal pertama yang saya inginkan dan perlu untuk berurusan dengan modul wifi. Begitu bungkusan itu tiba, saya langsung membongkar dan mulai menghubungkan.

Menemukan banyak contoh di Internet. Semuanya sebagaimana mestinya, regulator tegangan 3,3 V, pembagi tegangan untuk RX dan TX. Saya mengumpulkan semuanya dengan contoh, saya menghubungkannya - itu tidak terbang! Banyak teks ditampilkan di monitor port COM, ternyata, modul itu terus direset. Itu tidak menanggapi perintah AT yang dikirim. Penulis artikelnya berfungsi, saya tidak.

Ada apa? Saya mencoba mencari skema koneksi lain, dan seterusnya, dan seterusnya, tetapi modul masih baik reset atau tidak menampilkan apa pun. Dan di mana-mana tertulis dalam font merah: "Jangan diterapkan pada modul 5 V, jika tidak maka akan gagal." Jadi mencari solusi kadang-kadang berlangsung di malam hari, saya sudah berpikir untuk membeli modul lain, tetapi memutuskan untuk memeriksa tegangan dengan multimeter.

Ternyata ketika modul terhubung ke 3,3 V, tegangan turun di bawah 3,2 V. Tampaknya, well, oke, itu jatuh dan jatuh. Saya memutuskan untuk menyalakannya dari sumber listrik lain dan ternyata modul bekerja normal dengan tegangan di atasnya 3,2 V, dan di bawahnya tidak cukup dan terus-menerus diatur ulang.

Akibatnya, dengan risiko dan risiko saya sendiri, saya menghubungkannya ke 5 V dan semuanya bekerja dan masih berfungsi dengan baik.



Tidak ada masalah dengan komponen lain.

Setelah saya menemukan wifi, saya harus memutuskan apa yang harus dilakukan dengan sensor level cairan. Googling, saya menemukan sebuah artikel di mana penulis membuat sensor kelembaban tanah. Ketika tanah mengering, resistansi sensor meningkat dan tegangan di port analog Arduino meningkat. Dengan mendeteksi perubahan tegangan, penampilan cairan dapat dideteksi. Alih-alih dua kontak, 6 digunakan untuk menentukan tingkat cairan dalam proyek saya.Salah satunya terhubung ke output 5 V, dan sisanya ke input analog dan 10 kΊ resistor ke GND.

Berikut foto-foto tes.




Berikut adalah sensor level apa hasilnya.



Hal berikutnya yang saya uji adalah jam waktu nyata. Tetapi bekerja dengan mereka pada dasarnya sederhana. Untuk mengatur waktu dan mendapatkan informasi tentang itu, saya menggunakan contoh eksklusif yang datang dengan perpustakaan untuk bekerja dengan DS1307.

Sebagai hasilnya, ketika semuanya dipasang di atas papan tempat memotong roti, kami mendapatkan persilangan antara kabel dan modul. Omong-omong, di foto-foto ini ada sensor suhu lain.



Memulai



Sekarang semua ini harus disolder di papan sirkuit. Tidak ada yang istimewa untuk dikomentari, jadi hanya ada foto. Seperti yang Anda lihat, tombol lain ditambahkan sehingga Anda dapat menghidupkan ketel tidak hanya dari smartphone, tetapi juga dengan cara biasa.





Selanjutnya, Anda harus meletakkan segala sesuatu di dalam ketel.






Sisipan asbes ditambahkan untuk melindungi semua bagian dalam dari panas berlebih.



Benar, case harus sedikit dinaikkan dengan insert plastik tambahan.




Sekarang, masuklah ke bagian seluler.



Adapun aplikasi, karena dikembangkan di bawah OS Android, pada awalnya direncanakan untuk menggunakan Android Studio. Tetapi untuk mempelajari teknologi baru, diputuskan untuk menggunakan platform yang siap pakai untuk mengembangkan program di bidang Internet hal. Akibatnya, pilihan jatuh pada produk Evothings - Evothings Studio.

gambar

Berikut ini keunggulan utamanya:

- Sejumlah besar contoh standar untuk bekerja dengan berbagai modul (Wifi, Bluetooth);
- pengembangan aplikasi menggunakan JS, HTML, CSS, yang memungkinkan Anda untuk menulis satu kode yang akan berfungsi sama di Android dan iOS, mis. mengikat hanya pada satu platform menghilang;
- kemudahan menguji aplikasi: aplikasi diinstal pada smartphone untuk melihat perkembangannya, dan semua pesan pengujian dan pesan kesalahan ditampilkan dalam program di komputer;
- Sejumlah besar informasi di Internet tentang pengembangan menggunakan JS, HTML, CSS;

Di Evothings Studio ini ada contoh menyalakan LED dengan mengirimkan permintaan menghidupkan melalui ESP8266. Saya memutuskan untuk mengambil contoh ini sebagai dasar, karena ada hal yang paling berharga bagi saya - komunikasi dengan modul WiFi melalui soket tcp. Dan serupa dengan bagaimana permintaan untuk menyalakan LED ditransmisikan, saya membuat permintaan untuk memperbarui sensor ketel, untuk mengatur waktu, mengatur suhu, dll.

Lalu saya mengacaukan pemberitahuan tentang kesiapan dan sedikit air, manfaatnya adalah bahwa segala sesuatu di zaman kita mudah di-Google. Hasilnya adalah aplikasi seperti itu (yang menyenangkan adalah melakukan antarmuka aplikasi menggunakan CSS):







Deskripsi singkat tentang interaksi ponsel cerdas dan ketel



Komunikasi antara server dan klien dilakukan menggunakan modul WiFi. Ketika Anda menghidupkan modul kontrol ketel, modul WiFi mulai mendistribusikan jaringan yang disebut artKettle. Ini dilakukan dengan menggunakan perintah AT di sisi server. Jadi, misalnya, untuk menempatkan modul ke mode titik akses, perlu mengirim perintah AT + CWMODE = 2. Selanjutnya, menggunakan perintah ini, Anda perlu menetapkan parameter jaringan, mengizinkan koneksi beberapa perangkat dan mendapatkan alamat ip wifi itu sendiri.

Dari sisi klien, koneksi melalui port tertentu dan dengan alamat ip modul wifi menggunakan chrome.tcp.socket.

Setelah menghubungkan klien ke server, Anda dapat mengontrol ketel dari ponsel cerdas Anda. Perhatikan contoh menyalakan ketel.

Ketika Anda mengklik tombol daya di aplikasi artKettle, fungsi yang sesuai dari dimasukkannya app.kettleOn () dipanggil. Di dalam fungsi ini, dua baris ditransfer ke sisi server:

app.sendString('H');
app.sendString('U');


Selanjutnya adalah pekerjaan yang sudah ada di pihak Arduino. Setelah baris pertama tiba dengan karakter 'H', kode berikut dijalankan:
if(message.indexOf("H") >= 0 && waterDetected())  {
      digitalWrite(POWER_PIN, LOW); 
      IS_ON = true;
      Serial.println("ON");
      sendCIPData(0, "ON"); 
}


Pertama, ia memeriksa untuk melihat apakah ada air dalam ketel dengan memanggil metode waterDetected (). Pertimbangkan pilihan saat air hadir dalam ketel.

Level tegangan rendah diterapkan pada pin kontrol relai, yang sesuai dengan inklusi, yaitu. sirkuit daya ditutup:
digitalWrite(POWER_PIN, LOW); 


Kemudian bendera diatur untuk menunjukkan bahwa ketel aktif, dan sebuah pesan pada output ke monitor port serial ditampilkan.

Setelah itu, sebuah fungsi dipanggil yang mentransmisikan pesan respon ke sisi klien bahwa seluruh inklusi berhasil:

sendCIPData(0, "ON");


Di sisi klien, setelah memeriksa pesan yang masuk, tombol daya diatur ke status Nyala:
if (buf.substr(0, 2) == "ON") {
	app.setButtonOn();
}


Setelah itu, pesan teks diproses dengan karakter 'U' yang dikirim dari klien ke server. Di sini, dengan cara yang mirip dengan inklusi, informasi tentang suhu saat ini dan volume cairan dalam ketel diperbarui.

Dengan demikian, komunikasi dua arah antara klien dan server diatur, sehingga salah satu dari mereka tahu tentang keadaan yang lain pada waktu tertentu.

Kesimpulan



Sebagai hasil dari proyek pelatihan, sebuah modifikasi dikembangkan untuk ketel listrik konvensional, yang memungkinkan pengontrolan dari smartphone melalui wifi. Sekarang teko ini dapat dikaitkan dengan perwakilan dari Internet hal. Kami berhasil sepenuhnya mengimplementasikan semua fungsi, jadi sekarang ketel ini memiliki fitur berikut:

- hidup / mati dari telepon pintar;
- pengaturan suhu apa pun untuk air pemanas;
- kemampuan untuk mengetahui suhu saat ini;
- Melacak volume air saat ini dalam ketel;
- peringatan dan perlindungan terhadap pengaktifan dengan volume air yang kecil;
- mengatur waktu untuk menghidupkan;
- pemberitahuan kesiapan;

Kelebihan dari proyek yang diimplementasikan adalah aksesibilitas dari elemen dasar, karena semua yang Anda butuhkan dapat ditemukan di toko komponen elektronik, perpanjangan proyek. Karena ketel memiliki semua sensor yang diperlukan terpasang, ketel dapat dimodifikasi secara pemrograman dan dibuat tidak lebih buruk dari analog. Mengingat fleksibilitas dari modul wifi yang digunakan, Anda dapat menghubungkannya ke Internet dan mengatur kontrol ketel, berada di mana saja di dunia, dan menggunakan layanan online untuk memproses pesan SMS, Anda dapat mengatur inklusi melalui SMS. Yaitu proyek masih sangat diperluas, ada peluang untuk ini, tetapi mereka tidak dilaksanakan, karena mereka bukan bagian dari tujuan proyek yang sedang dikembangkan.

Tentu saja, ada kerugian pada proyek. Yang pertama adalah pengoperasian modul Wifi yang tidak stabil. Modul terkadang kehilangan jaringannya, mulai mengatur ulang pengaturan, atau tidak memproses sinyal yang masuk. Selain itu, ini adalah masalah yang populer di kalangan pengguna modul ini. Kelemahan kedua adalah kurangnya shutdown mekanis ketel. Shutdown diimplementasikan dalam perangkat lunak, ketika titik didih tercapai, sirkuit terputus dengan bantuan relay. Jika program tiba-tiba macet, ketel tidak dapat dimatikan. Kelemahan ketiga adalah masalah pemantauan suhu pemanasan. Jadi, misalnya, jika Anda mematikan ketel pada suhu 60 derajat, pemanas sepuluh akan terus mengeluarkan panas, dan setelah beberapa saat suhu air sudah sekitar 70 derajat. Tetapi ini diperbaiki dengan membuat penyesuaian pada program.

Source: https://habr.com/ru/post/id393785/


All Articles