Kami membuat kabinet kontrol untuk rumah di
sini , mengembangkan pengontrol di
sini .
Lampu dapat dihidupkan / dimatikan dari telepon, pemberitahuan tentang kebocoran air, dimasukkannya penyiraman datang ke telegram dan Tuhan masih tahu apa.
Tetapi seluruh sistem ini jauh dari sekadar rumah pintar, itu hanya perpanjangan tangan dan kaki Anda, dan satu-satunya bantuan dari itu adalah Anda tidak perlu bangun dari tempat tidur untuk mematikan lampu.
Artikel ini adalah tentang apa yang dapat membuat rumah Anda lebih dekat dengan orang pintar, dan Anda dapat menebaknya dengan benar - ini adalah pengembangan sensor. Ini adalah mata, telinga, dan sedikit lagi untuk rumah Anda. Berdasarkan informasi dari sensor, sudah mungkin untuk menulis skrip otomatis yang akan merevitalisasi rumah dan diam-diam akan membantu Anda dan membuat hidup Anda lebih nyaman.
Pasar sekarang memiliki berbagai macam perangkat seperti itu, baik dari produsen terkemuka dan asal tidak diketahui. Dan jika Anda tidak terlalu repot, maka Anda dapat menggunakannya, tetapi ada satu, atau bahkan beberapa. Pertama, kebanyakan dari mereka menggunakan protokol milik mereka dan hanya bekerja dengan hub mereka. Dan setiap saat API dari hub ini dapat ditutup, dan kontrol hanya akan mungkin melalui aplikasi pabrikan (ingat cerita dari google nest), sehingga semua otomasi Anda akan macet pada satu titik.
Kedua, semua pabrikan, tanpa kecuali, berusaha mendapatkan untung dari ini, dan karena ini bukan fenomena besar, Anda harus keluar, dan masing-masing sensor dibuat dalam wadah tersendiri dengan baterainya sendiri. Dan sekarang mari kita hitung, Anda memiliki 5 kamar di masing-masing, saya ingin memiliki sensor suhu, gerakan, cahaya dan CO. Bukan tikar yang rumit. perhitungan menyebabkan 20 kotak di langit-langit. Pertama, itu tidak indah, dan kedua, dalam satu atau dua tahun akan diperlukan untuk mengganti baterai dalam sensor ini dalam setengah hari dengan tangga dan obeng, kemungkinan besar merusak beberapa pengencang dan menjatuhkan obeng beberapa kali pada laminasi. Ya, dan ketiga, ketika salah satu sensor rusak dalam beberapa tahun, maka Anda tidak akan dapat membeli yang sama, dan kemungkinan besar hub lama tidak akan mendukung sensor baru (keuntungan penting) dan Anda harus mengubah semua sensor dan mengintegrasikannya ke dalam sensor Anda. sistem. Jalan keluarnya adalah dengan melihat sesuatu dari opensource, atau melakukannya sendiri, setidaknya kodenya akan selalu bersama Anda. Jadi dalam terang yang dijelaskan, pengembangan kotaknya dengan sensor bukanlah tugas yang berlebihan.
Jadi dalam mengembangkan sensor saya, saya mencoba untuk menghindari 'tetapi' yang dijelaskan di atas:
- Kami menggabungkan semua sensor dalam satu rumah
- Kami melakukan daya kabel (membangun dari awal)
- Kami membuat antarmuka sesuai dengan protokol standar
Sekarang mari kita beralih ke bagaimana perangkat seperti itu seharusnya bekerja.
Ada dua opsi yang memungkinkan, dan mereka bergantung pada lingkungan mana perangkat itu digunakan, dalam sistem dengan kontrol terpusat, dalam sistem terdistribusi, atau secara umum sebagai perangkat independen.
Opsi pertama lebih sederhana karena hanya data mentah dari sensor yang diperlukan, dan kemudian pengontrol pusat, yang menginterogasi perangkat, memutuskan apa yang harus dilakukan dengannya, contoh dari alat tersebut adalah sensor asap kantor. Sebagai contoh, data dari sensor datang di atas ambang tertentu, sementara pengontrol pusat tahu bahwa mode bersenjata sekarang aktif dan karenanya perlu untuk meningkatkan alarm.
Opsi kedua mengasumsikan bahwa perangkat itu sendiri harus tahu dalam mode apa sekarang, dapat mengkonversi data mentah dari sensor, membuat keputusan tentang memberi tahu pengguna. Pengembangan perangkat semacam itu, tentu saja, membutuhkan lebih banyak upaya baik dalam hal menulis program dan dalam hal memanfaatkan kegunaan.
Saya awalnya berencana untuk membuat perangkat sesuai dengan opsi kedua, dan meletakkan dua saluran komunikasi - mqtt dan modbus. Mqtt via WIFI sehingga untuk bermain-main dan modbus via RS-485 untuk terhubung ke sistem kontrol rumah.
Mqtt via WIFI tidak sulit dilakukan berkat pustaka ESP8266 lua dan algoritmenya cukup standar:
- pada permulaan pertama atau jika Anda tidak dapat terhubung ke WIFI, Anda perlu membuat jalur akses dari ESP8266
- menyebarkan server web kecil di atasnya dengan parameter WIFI dan parameter server mqtt (dapat dilakukan secara gratis di Amazon misalnya)
- simpan semua data yang dimasukkan dalam memori ESP8266
- setelah reboot, coba sambungkan ke mqtt melalui WIFI rumah
Namun, ketika muncul pertanyaan untuk mengintegrasikan perangkat ke sistem rumah melalui modbus, saya mulai kehilangan data mentah dari sensor, dan akhirnya saya memasukkan semua data mentah dalam tabel modbus juga. Sebagai contoh, akan tampak peristiwa yang tidak perlu dari sensor gerak, dalam mode dilucuti, bahkan dapat digunakan untuk semua jenis fungsi rumah pintar.
Tabel modbus adalah sebagai berikut:
Deskripsi tipe N
0. -r - status sensortag (1 - mode idle / 2 - idle ke proteksi / 3 - mode proteksi)
1. -r - alasan alarm bitfield (bit 1 - gas / 2 - temperature / 3 - motion)
2. -r - deteksi gerakan dalam status siaga dan proteksi (0/1 - tidak ada gerakan / gerakan)
3. -r - konsentrasi gas (nilai mentah dari adc)
4. -r - suhu dalam C deg
5. -r - nilai cahaya yang sudah diproses sebelumnya (ruang malam <17 / kamar gelap <50 / twilight <150 cerah <250)
6. -r - nilai cahaya (nilai mentah dari adc)
7. -r - jumlah acara alarm dalam siklus hidup ini
8. -r - jumlah restart sensortag
9. -r - tidak digunakan
Aktivasi alarm 10-w- (0 - beralih ke siaga / 1 - beralih ke alarm)
11. -wr- sensitivitas gerakan (0 - 100%, berarti 0 - paling sensitif)
12. -w- batas konsentrasi gas
Lebih jauh lagi, seperti biasa, ia datang ke pengembangan papan dan perangkat lunak. Dan dalam hal ini, pengembangan dewan lebih sulit bagi saya, karena ada bagian analog (daya, pengikatan sensor gerak dan CO) yang saya tidak terlalu ramah, dan tidak ada banyak yang harus ditulis tentang perangkat lunak, karena semuanya sangat sederhana di sana. Yaitu bukan hanya tapi biasa, saya membaca bacaan dari ADC, mengubahnya, memprosesnya (menggunakan metode sliding window pada semua saluran) dan meletakkannya di sebuah tabel. Tidak buruk untuk membuat kompensasi suhu dari sinyal dari sensor PIR. di musim panas, ketika suhu kamar di atas +30 derajat, sensor memiliki respons yang jauh lebih lemah. Jadi, dalam artikel ini saya ingin menggambarkan pengembangan papan itu sendiri dan memperhatikan sedikit kegunaan.
Mari kita mulai dengan forum, inilah yang perlu Anda lakukan untuk melakukan ini:
- pilih mikrokontroler dan sensor (sensor pir, cahaya, suhu, CO)
- pilih driver rs-485 untuk komunikasi modbus
- ESP8266 untuk komunikasi mqtt (apa yang harus dipilih)
- pilih RGB LED untuk memvisualisasikan status perangkat
- mengembangkan modul daya
- mengembangkan diagram sirkuit, berkembang biak dan membuat papan
Pilihan mikrokontroler tidak sulit, Anda hanya perlu menjangkau kotak dengan devboards dan mendapatkan satu papan - itu akan dilakukan. Tapi serius, saya tidak bisa membanggakan pengetahuan banyak keluarga mikrokontroler, jadi saya terbiasa dengan STM32, ATSAM, dan AVR. Saya memilih yang terakhir, dan hanya karena saya hanya punya beberapa Arduino Leonardo tergeletak di sekitar dan kehilangan masa lalu MK2. Saya tidak akan menyebutkan bahwa AVR menarik kakinya pada frekuensi kuarsa, dan ini berguna bagi saya, dan bahwa ia memiliki berbagai periferal dan ADC yang agak cepat, jauh lebih penting bagi saya bahwa ia memiliki paket TQFP dan saya dapat menyoldernya sendiri, tanpa mikroskop dan menari dengan rebana . Jika pilihan mikrokontroler adalah masalah sepuluh menit, maka pilihan sensor bukanlah masalah sepele. Pada awalnya kita harus berpikir tentang bagaimana menghubungkan mereka, bagaimana memproses sinyal mereka dan bagaimana mereka akan saling mempengaruhi. Jika beberapa sensor dapat diambil dari set Arduino dan harganya satu sen, maka dengan yang lain, lebih jarang, Anda dapat bermain-main lebih lama dan menghabiskan lebih banyak. Selain itu, pemilihan sensor juga dibatasi oleh kriteria tambahan saya:
- Sensor dapat dihubungkan sesuka Anda, tetapi tidak melalui I2C. Begitulah cara itu tidak berhasil bagi saya untuk mengimplementasikan I2C dengan andal pada mikrokontroler, di mana dukungan untuk bus ini setengah sebagai perangkat keras dan setengah sebagai perangkat lunak (seperti dalam AVR). Kebetulan ia berfungsi, bekerja selama satu bulan, dan kemudian rusak, dan tidak ada urutan pemulihan yang membantu, jadi diputuskan untuk menggunakan sebanyak mungkin sensor analog yang terhubung ke ADC dan menggunakan SPI hanya untuk suhu (omong-omong, persahabatan itu kuat dan dapat diandalkan).
- Mereka cukup andal dan tidak mengubah karakteristik mereka selama masa kerja (saya definisikan sebagai 10 tahun)
- Mereka tersedia di pasar kami, agar tidak mengacaukan pesanan dari Mauser, dll.
Sebagai hasil dari semua penelitian, kami mendapatkan set ini:
- Sensor PIR - D203S
- Sensor cahaya - GL5516
- Sensor suhu - LM95071
- Sensor CO - TGS5141
Dan jika dengan tiga posisi pertama, saya pikir tidak ada yang akan memiliki pertanyaan, maka mengapa TGS5141 diperlukan segera tidak jelas. Anda mungkin mengatakan - "mengapa hal itu mahal, karena ada sensor CO sen dari set Arduino tipe MQ-7." Memang, saya bereksperimen dengan mereka, dan sebagai hasilnya saya menolak mereka karena beberapa alasan. Pertama, ini adalah sensor katalitik, dan memanas, yang sangat memengaruhi suhu dalam casing perangkat dan tidak memungkinkan kompensasi suhu untuk sinyal dari sensor PIR. Kedua, sensitivitas MQ-7 meninggalkan banyak yang harus diinginkan, bahkan dalam spesifikasi dikatakan 10 hingga 1000ppmm, tetapi pada kenyataannya itu masih lebih menyedihkan, ditambah lagi tidak ada stabilitas dari sensor ke sensor. Ketiga, kehidupan sensor itu sendiri tidak jelas, saya berasumsi bahwa karakteristiknya akan sangat berubah selama bertahun-tahun karena bersifat katalitik. Dan sekarang tentang kelebihan TGS5141 elektrokimia - tidak memanas, kepekaannya adalah 0 ~ 5000ppm (dengan karakteristik linier), kehidupan pelayanan terjamin 10 tahun, ukuran kecil dan banyak lagi plus. Saya pikir pilihannya jelas jika Anda benar-benar ingin melakukan hal yang berharga, dan bukan kerajinan yang sembrono.
Kami memilih mikrokontroler, sensor, sekarang saatnya mengurus bagaimana memberi tahu pengguna apa yang kami maksudkan. Seperti yang saya tulis sebelumnya, saya memiliki dua saluran komunikasi untuk ini, rs-485 modbus dan mqtt via WIFI. Apa yang memungkinkan untuk menggunakan sensororteg saya sebagai perangkat individu, dan karena itu, penting adalah indikasi negara, dalam beberapa cara, pada perangkat itu sendiri, misalnya, LED.
Setelah memutuskan konsepnya, Anda dapat sedikit memperhatikan sisa elemen dasar. 485go driver Saya menggunakan ADM2587E, chip tidak hanya mencakup driver itu sendiri, tetapi juga isolasi transformator galvanik pada RX, TX dan DE, minus hanya dalam harga. Kami akan menggunakan ESP-07 untuk komunikasi mqtt melalui WIFI, di sini, saya pikir, tidak ada komentar yang diperlukan, karena hanya yang malas tidak melakukan sesuatu pada ESP8266. Saya harus lebih mengutak-atik tampilan visual, untuk ini saya memutuskan untuk menggunakan sk6812 RGBW LED. Ternyata dengan AVR, mengelola mereka tidak terlalu sederhana, timing mereka cukup sulit, jadi saya harus menambahkan beberapa bagian dari kode assembler, yang pada awalnya tidak direncanakan. Tetapi hasilnya dibenarkan sendiri, ternyata secara informatif dan indah, terutama jika Anda bersinar dengan LED ini di ujung ring plexiglass. Indikasi ini disarankan kepada saya oleh seorang karyawan yang sudah makan seekor anjing dalam hal ini (terima kasih kepada Sasha).

Setelah bereksperimen sedikit dengan kecerahan, menjadi jelas bahwa satu tingkat kecerahan bukan keputusan saya - sulit untuk melihat di siang hari, dan sangat cerah di malam hari. Oleh karena itu, saya harus membuat perubahan dalam kecerahan cahaya LED ini tergantung pada pencahayaan di ruangan. Yah, itu saja, Anda tahu indikasinya, Anda berpikir, tetapi tidak, hal yang paling sulit bagi saya adalah menemukan pola cahaya dan timing untuk mereka.
Saya berhenti di opsi ini:
- biru lambat - idle, hanya komunikasi melalui wifi (modbus hilang)
- biru cepat - beralih dari mode siaga ke alarm, hanya komunikasi melalui wifi (modbus hilang)
- hijau lambat - idle (komunikasi modbus OK)
- hijau cepat - beralih dari mode siaga ke alarm (komunikasi modbus OK)
- merah lambat - mode alarm
- alarm gerakan cepat merah
- alarm gas cepat kuning

Kami menemukan indikasinya, bagian selanjutnya adalah kekuatan.
Seperti yang saya katakan sebelumnya, saya memiliki 24V tegangan rendah di rumah saya, sehingga kekuatan modul akan seperti itu. Ke depan, saya akan mengatakan bahwa setelah saya membuat papan pertama saya harus mengulang banyak nutrisi. Kemudian saya menjadi yakin bahwa Anda perlu membaca spesifikasi pada konverter step-down, terutama tempat-tempat di mana nuansa kabel dijelaskan. Berdasarkan hasil penelitian, saya berhenti di step-down converter MCP16311 dan ternyata menjadi sangat pemilih, hanya setelah saya melakukan persis apa yang tertulis dalam spesifikasi - itu berhasil. Tapi ini bukan masalah terbesar, karena ternyata kemudian, mengubah kecerahan LED menyebabkan penarikan daya kecil, yang akan cukup untuk merusak sinyal dari sensor D203S, adalah mungkin untuk mengatasi masalah ini dengan kapasitor tambahan di sirkuit operasi sensor dan di sirkuit step-down converter. Setelah men-debug semuanya menggunakan mqtt (melalui ESP8266), saya menghubungkan rs-485 dan di sana lagi ada kegagalan yang menunggu saya, pada keluaran opamp di saluran sensor D203S saya kembali melihat sampah, dan sampah ini jelas berhubungan dengan pertukaran pada rs-485. Secara umum, ternyata untuk mengatasi ini dengan konverter LDO tambahan untuk seluruh bagian analog, dan kemudian kebahagiaan datang.
Dan jika Anda menggabungkan semuanya bersama, Anda mendapatkan gambar berikut:

Dan jika semua ini diambil dan disolder, maka akan terlihat seperti ini:

Mereka menyolder papan, mencetak kasing, menyatukan semuanya, menggantungnya di langit-langit, data masuk ke sistem. Jadi mari kita bayangkan bagaimana Anda dapat menerapkan data ini dalam sistem rumah pintar, selain tentu saja, Anda dapat mengirim alarm ke telegram. Saya belum melakukan apa pun, kecuali untuk poin pertama, tetapi saya telah melemparkan skrip berikut:
- Dimasukkannya cahaya di tangga, jika lampu ini tidak dinyalakan, jika gerakan muncul di ruangan mana pun, plus gelap sekarang, ditambah waktu malam
- pembukaan otomatis dari rana lantai pertama, jika ditutup, jika sudah pagi dan gerakan terdeteksi di ruang tamu untuk pertama kalinya dalam sehari
- membuka penutup ventilasi jika konsentrasi CO melebihi level apa pun, dan menutupnya jika level CO telah jatuh (sebenarnya di ruangan dengan perapian)
- buka ventilasi flaps jika suhunya telah melebihi batas tertentu dan dengan demikian tutuplah sebaliknya
- shutdown otomatis dari shutter lantai pertama jika daun jendela terbuka dan jika sensor gerak telah bekerja di jalan di malam hari dan rumah ada di penjaga malam.
Jadi pelengkap, kami akan membuat rumah lebih pintar ...