
Maaf, saya belum lama bersenang-senang dengan penamaan, serta periferal untuk otomatisasi rumah. Khususnya, benda ini - remote control lampu - ternyata karena saya menginginkan sesuatu dengan antarmuka push-twist-klik, dan bukan dengan hamburan tombol biasa. Efek wow belum tercapai: di rumah saya tidak melihat remote pada jarak dekat, tapi setidaknya saya menutup gestalt.
TOR singkat:
1) Manajemen tiga kelompok pencahayaan di dapur
2) Manajemen tiga kelompok pencahayaan di dalam ruangan
3) Manajemen semua sumber cahaya secara bersamaan
4) masa pakai baterai yang wajar (dari seminggu)
5) Kompatibel dengan coding Livolo, SC2260, EV1527
Jadi, Anda tidak perlu membaca lebih lanjut jika Anda tidak suka Arduino, saklar Livolo, dan soket radio Cina. Karena yang pertama adalah dasar untuk remote, dan yang kedua dan ketiga adalah pinggiran.
Konsep
Logika kontrol menurut saya adalah sebagai berikut:
- Menekan "kenop" akan mengubah zona grup pencahayaan dalam sebuah cincin (dapur - ruangan - semuanya).
- Memutar knob, tergantung pada arah rotasi, menghidupkan atau mematikan pencahayaan dari grup yang dipilih.
- Mode operasi (grup yang dipilih) ditampilkan oleh indikasi LED yang tidak mencolok.
Karena saya menggunakan kontrol radio sesuai dengan opsi yang paling dibenci, tanpa perlindungan dari gangguan dan umpan balik, pada saat yang sama sedikit trik disediakan jika terjadi operasi yang tidak terjawab.
Jika memutar kenop tidak mengarah ke hasil yang diinginkan, maka kombinasi menekan dan memutar ke arah yang berlawanan memungkinkan Anda untuk melewati perintah. Maka perintah itu bisa diulang seperti biasa.
Yaitu, jika saya memutar kenop searah jarum jam dan lampu utama tidak menyala, maka saya bisa menekan kenop, putar berlawanan arah jarum jam, lalu lepas dan putar searah jarum jam lagi untuk mengulang menyalakannya.
Kenapa begitu sulit? Kemudian, selain protokol yang aneh, saya juga punya perangkat yang aneh. Sebagai contoh, lampu radio yang dikendalikan menghidupkan Livolo dan relay radio, yang memiliki perintah yang sama untuk menghidupkan dan mematikan, bersama dengan soket radio biasa, di mana perintah untuk menghidupkan dan mematikan terpisah.
Trik skipping tim memungkinkan Anda untuk mengalahkan secara kreatif inklusi (non-pengecualian) tanpa melanggar skema umum pencahayaan. Selain itu, melewatkan perintah memungkinkan Anda untuk melompati sumber cahaya yang tidak perlu Anda nyalakan atau matikan.
Yah, tentu saja, untuk memahami apa yang terjadi dengan remote, ia memiliki indikator terpisah yang menyala saat mengirim perintah.
Jika konsol tidak disentuh untuk beberapa waktu (dikonfigurasi dalam kode), maka controller akan tertidur. Namun, dia tidak menyimpan status terakhir, dan ketika dia bangun dengan menekan pena, dia memulai hidup dari awal.
Ini bukan kesalahan. Saya ulangi, saya memiliki saklar tanpa umpan balik, dan konsol secara fisik tidak dapat memperoleh informasi tentang keadaan saat ini dari setiap perangkat periferal yang dikendalikan.
Oleh karena itu, segera setelah bangun tidur, kenop tombol dapat menyalakan atau mematikan lampu dari awal.
Pendekatan pertama
Konsep visual dari tipe "box with twist" diperlukan, seperti yang Anda duga, dua hal: kotak dan tikungan. Dalam versi pertama, peran kotak dimainkan oleh bank daya tipis, yang penggunaannya memecahkan dua masalah sekaligus: Saya punya kasing dan skema pengisian baterai, apalagi dengan konektor. Baterai itu sendiri, tentu saja, harus diganti dengan yang lebih ringkas, jika tidak maka isiannya tidak lagi muat.

Ternyata lebih rumit dengan twist. Ketika saya mencari, saya menemukan bahwa tombol potensiometer yang lebih cantik dan semakin besar, semakin dekat biaya gramnya dengan biaya satu gram emas. Karena itu, saya membeli pena, yang paling tidak cocok untuk properti estetika.

Bagian kontrol adalah hasil dari percobaan dengan ATmega328P dan kelanjutan logis dari alur cerita yang ditetapkan oleh otomatisasi rumah yang ada (pada protokol radio Arduino dan primitif yang sama).
Saya tidak terlalu mahal membeli sebaran kontroler yang disebutkan dan prototipe kondisional (pada kenyataannya, adaptor dari kasing kecil ke step besar) papan sirkuit dengan tujuan mencoba membuat versi Arduino yang murah dari mereka dengan jumlah elemen yang minimal (tapi masuk akal).



Eksperimen ini ternyata berhasil, dan pengontrol yang dikonfigurasi untuk lingkungan Arduino mem-flash LED dengan cukup sukses setelah menelan Blink klasik. Nah, kemudian, pada prinsip "menyelesaikan burung hantu", saya menambahkan encoder (dengan tombol), tiga LED dan pemancar normal dengan modulasi amplitudo pada pembawa 433,92 MHz ke papan yang dihasilkan.
Untuk meletakkan semua elemen dalam wadah kecil, saya harus sedikit menderita, tetapi kendali jarak jauh masih berfungsi. Dan meskipun, tampaknya, masalahnya selesai, saya ingin lebih - kasus aslinya.


Pendekatan kedua
Sebenarnya, versi pertama (mengeluh) dalam penampilan sekelompok kawan hancur, jadi saya menundanya tanpa batas waktu. Tapi dia tidak membukanya: sayang sekali.
Tetapi ketika printer 3D muncul, suatu hari dia berjanji pada dirinya sendiri untuk membuat case asli yang sama dan dengan demikian menutup pertanyaan dengan remote control.
Saya tidak tahu apakah hasilnya baik atau buruk - saya benar-benar tidak tahu cara mengevaluasi barang-barang saya. Tetapi pada 3DToday tim lebih ramah daripada di MySKU (yang tidak saya keluhkan - ini bukan hadiah sendiri), dan mereka menilai case lebih tinggi daripada saya.

Tetapi setelah sepenuhnya bebas bertindak, saya meninggalkan baterai Cina yang rapuh dan mencoreng, dan mengambil 18650 tua yang baik sebagai sumber listrik. Dan, seperti yang dapat Anda lihat dengan mudah, justru dimensinya yang sangat menentukan dimensi seluruh casing.
Saya mulai membuat casing itu sendiri modular, terdiri dari banyak bagian, yang memungkinkan saya untuk mencetak ulang hanya elemen individual (salah atau tidak terlalu optimal), dan bukan keseluruhan produk.
Poin lain adalah saya benar-benar tidak suka membuat guntingan untuk konektor, yang saya benar-benar tidak bisa lakukan. Karena itu, dalam rantai pasokan ada trik lain yang dikenal oleh
Evelyn si landak : pengisian nirkabel.

Di zashashnik saya hanya meletakkan penerima lain, yang saya segera beraksi.
Akhirnya, trik terakhir cukup jelas, tetapi tetap: agar kendali jarak jauh tidak merangkak di sekitar meja, saya menempelkan selembar tikar mobil yang tidak licin ke bagian bawah. Dan pada akhirnya, benda ini adalah monolit absolut, meskipun menatanya kembali ke tempat lain juga bukan masalah.
Apa yang diperlukan untuk mengulanginya
Sepotong besi
1) pengontrol ATmega328P - 1 pc. (dalam paket TQFP saya, tetapi siapa pun bisa)
2) 10 kOhm resistor - 5 pcs. (4 untuk menekan bouncing encoder, 1 ke controller)
3) 100 Ohm resistor - 3 pcs.
4) Kapasitor keramik 0,1 mikrofarad - 4 pcs. (untuk mengontrol dan menekan bouncing encoder)
5) Push encoder (valcoder) - 1 pc. (Saya punya
PEC12-4220F-S0024 )
6) LED - 3 pcs. (diameter 3 mm)
7) Papan pengisian baterai Lithium - 1 pc. (dari bank daya yang datang ke tangan, secara teori, siapa pun dengan pengaktifan otomatis di bawah beban akan dilakukan)
8) penerima pengisian nirkabel Qi - 1 pc.
9) Sebuah pemancar dengan modulasi amplitudo pada 433 MHz - 1 pc. (
seperti ini )
10) Beberapa fiberglass untuk papan encoder
11) printer 3D
12) Plastik yang cocok (Saya cetak PLA)
13) sekrup M4x30 - 4 pcs.
Secara umum, jumlah komponen dapat dikurangi. Sebagai contoh, dalam versi yang sangat minim, controller tidak memerlukan pengikat sama sekali, meskipun saya memutuskan untuk mengikuti
saran Nick Gammon dan tidak menyisakan beberapa kapasitor dan resistor.
Dengan cara yang sama, Anda tidak bisa repot-repot dengan penekanan perangkat keras dari bouncing kontak, dan mencoba bergaul dengan perangkat lunak. Kemudian Anda dapat mencoret empat resistor lagi dan sepasang kapasitor.
Atau, Anda dapat menggunakan papan Arduino yang sudah jadi, seperti Pro Mini, tetapi dalam hal ini saya tidak dapat menjamin tingkat konsumsi energi yang rendah, dan Anda harus menyulapnya sendiri. Pada saat yang sama, kasing harus diperbaiki.
Skema:

Untuk referensi, ATmega328p pinout dalam paket TQFP-32 dari
Hobby Electronics :

Untuk pembuat enkode, saya menggambar papan kecil:



Jika itu baik, itu harus dibor untuk memasang encoder, atau ditekan dengan "perutnya ke papan (menjaga isolasi sehingga tidak ada hubungan pendek) sehingga encoder dipasang a) kurang lebih merata dan b) tidak akan goyah. Secara historis, saya memiliki opsi kedua.
Untuk kasus ini, penting bahwa ketinggian papan dengan bagian-bagian, tidak termasuk encoder, tidak lebih (atau tidak lebih) 5 mm.
Jika papan Arduino tidak siap, maka agar semuanya berfungsi, Anda harus terlebih dahulu menulis bootloader Arduino ke pengontrol ATmega328P.Untuk melakukan ini, pertama, tambahkan deskripsi pengontrol ke lingkungan Arduino. Untuk melakukan ini, buka
situs web Arduino resmi dan unduh arsip deskripsi yang sesuai untuk versi lingkungan Anda (
untuk 1.6 ,
untuk 1.5 ,
untuk 1.0 ).
Isi arsip harus diekstraksi ke folder perangkat keras folder lingkungan Arduino. Di masa depan, saya menggambarkan apa yang terjadi pada contoh lingkungan 1.0.3, yang masih saya gunakan.
Ketika deskripsi disalin, Anda harus memulai Arduino dan memuat sketsa programmer ke Arduino, yang akan digunakan sebagai programmer ini sendiri. Sketsa terletak di menu File - Contoh - ArduinoISP.

Tentu saja, Anda harus memilih board dan port Anda. Saya memilih Mega, karena saya memilikinya:

Setelah memuat sketsa programmer, Anda perlu beralih ke papan target. Yaitu dalam kasus kami - ATmega328 dengan frekuensi 8 MHz dan osilator master internal. Itu akan ada dalam daftar papan jika deskripsi yang disebutkan di atas disalin dengan benar:

Sekarang Anda perlu menghubungkan garis MISO, MOSI dan SCK dari papan programmer dan papan dengan Arduino masa depan, dan juga menghubungkan RESET, GND dan VCC. Kekuatan plus adalah yang terbaik di tempat terakhir.
Berdasarkan infografik dan deskripsi Arduino Mega di atas, gambar berikut muncul:
SPI - Arduino Mega - ATmega328p
MISO - 50 - 16
MOSI - 51 - 15
SCK - 52 - 17
SS (RESET) - 53 - 29
Koneksi fisik sesuai dengan selera Anda, saya menggunakan metode barbar khusus - kabel papan tempat memotong roti langsung ke lubang papan, tanpa menyolder dan insulasi:

Jika semuanya siap, tulis bootloader. Pertama, pastikan bahwa pemrogram yang benar dipilih (Layanan - Programmer - Arduino sebagai ISP):

Kemudian kami melakukan Layanan - Rekam bootloader:

Setelah itu, hasilnya adalah papan Arduino minimalis, untuk memuat sketsa di mana Anda dapat menggunakan adaptor USB-Serial atau papan Arduino penuh dengan adaptor seperti di papan. Dalam kasus pertama, Anda harus menghubungkan RX dan TX, dan jangan lupa untuk menghubungkan landasan bersama. Dalam kasus kedua, juga perlu untuk mempersingkat RESET Arduino, yang digunakan sebagai adaptor, ke ground.
Jika Anda, seperti saya, tidak memiliki sirkuit untuk menyetel ulang pengontrol secara otomatis sebelum mengunduh sketsa, maka ada dua opsi: tarik tarikannya, atau cukup nyalakan daya ketika lingkungan Arduino mengatakan bahwa pengunduhan telah dimulai.
Perumahan
Kasing, seperti yang saya katakan, adalah modular. Ini berarti bahwa pada bagian dalam tersembunyi dari mata, Anda dapat membiarkan plastik yang sudah basi dan tidak cocok lagi. Anda dapat meletakkan barang elektronik di atasnya:

Saya menarik perhatian pada fakta bahwa case ini spesifik dan dirancang agar sesuai dengan versi pengisian saya.
Saya mengusulkan membuat rotor transparan sehingga mencerahkan lampu indikator. Untuk bobot yang lebih besar, kacang M16 dapat dimasukkan ke dalam rotor:

Masih membutuhkan baju rotor dan penutup untuk itu. Tutupnya hanya dimasukkan ke dalam dan bersandar pada gesekan. Dan, tentu saja, Anda tidak dapat melakukannya tanpa bagian atas dan bawah dari casing luar.
Saya mencetak rotor dengan isian 10%, sisanya elemen dengan isian 5%. Plastik - PLA. Suhu nosel yang diatur pada printer saya adalah 200C pada tiga lapisan pertama, 185C pada lapisan berikutnya. Sayangnya, saya tidak bisa mengatakan berapa suhu sebenarnya dari nozzle itu. Meja itu dingin.
Perakitan sederhana.

Papan ditempatkan di alur case tahan lama, LED - kaki di alur bagian bawah case tahan lama. Antena pemancar diturunkan, penerima pengisian nirkabel diturunkan dengan cara yang sama - sehingga lebih dekat dengan muatan yang sama.

Pengisian diperbaiki oleh pelat perantara, dalam alur yang melewati harness kawat encoder.
Encoder diperbaiki dengan pelat atas, semuanya dikencangkan dengan sekrup M4x30, yang memotong sendiri benang dalam plastik.
Sekarang case yang tahan lama dapat tertutup di bagian luar case luar. Sebuah rotor diletakkan pada poros encoder, dan sebuah kemeja diletakkan di rotor. Opsinya, non-slip mat direkatkan ke bagian bawah tubuh. Pilihan lain adalah insert dekoratif yang menyembunyikan jahitan di antara dua bagian tubuh.
KodeDalam kode, Anda perlu menentukan perintah untuk menghidupkan dan mematikan perangkat periferal Anda. Opsional - ubah batas waktu mati otomatis.
Ini semua terletak di bagian variabel.
Model kasus
dengan referensi .
Itu saja.
PS: Saya berusaha untuk tidak melupakan apa pun, tetapi saya bisa. Jika demikian, saya minta maaf dan akan melakukan yang terbaik untuk menjawab pertanyaan utama dan memperbaiki kesalahan dengan benar.