Isi kandungan:

NexArdu: Kawalan Pintar Pencahayaan: 5 Langkah
NexArdu: Kawalan Pintar Pencahayaan: 5 Langkah

Video: NexArdu: Kawalan Pintar Pencahayaan: 5 Langkah

Video: NexArdu: Kawalan Pintar Pencahayaan: 5 Langkah
Video: Легкие идеи акварельной живописи, цветы 2024, Julai
Anonim
NexArdu: Kawalan Pintar Pencahayaan
NexArdu: Kawalan Pintar Pencahayaan

Kemas kini

Sekiranya telah mengembangkan fungsi yang sama menggunakan Pembantu Rumah. Pembantu Rumah menawarkan banyak kemungkinan. Anda boleh menemui perkembangannya di sini.

Sketsa untuk mengawal pencahayaan rumah dengan cara pintar melalui peranti seperti X10 tanpa wayar 433.92MHz (aka 433MHz), mis. Nexa.

Latar belakang

Mengenai pencahayaan hiasan, entah bagaimana melelahkan saya bahawa setiap minggu kedua atau ketiga saya harus menyesuaikan semula pemasa yang menyalakan lampu kerana pergeseran jam solar berkenaan dengan CET. Pada masa yang sama, beberapa malam kami tidur lebih awal dari yang lain. Kerana itu, kadangkala lampu mati sama ada "terlambat" atau "terlalu awal". Perkara di atas mencabar saya untuk berfikir: Saya mahu pencahayaan hiasan sentiasa menyala pada tahap tahap cahaya yang sama dan kemudian dimatikan pada waktu tertentu bergantung pada sama ada kita terjaga atau tidak.

Objektif

Instruksional ini memanfaatkan kemungkinan peranti terkawal tanpa wayar seperti Sistem Nexa beroperasi pada frekuensi 433.92MHz. Di sini kita akan menampilkan:

  1. Kawalan pencahayaan automatik
  2. Kawalan web

Kawalan web. Pelayan Web Dalaman vs Luaran

Pelayan Dalaman memanfaatkan kemungkinan pelindung Ethernet Arduino untuk menyediakan pelayan web. Pelayan web akan menghadiri panggilan pelanggan web untuk memeriksa dan berinteraksi dengan Arduino. Ini adalah penyelesaian lurus ke hadapan dengan fungsi terhad; kemungkinan peningkatan kod pelayan web dibatasi oleh memori Arduino. Pelayan Luaran memerlukan penyediaan pelayan web PHP luaran. Persediaan ini lebih rumit dan tidak disokong oleh tutorial ini, namun kod / halaman PHP untuk memeriksa dan mengarahkan Arduino disediakan dengan fungsi asas. Kemungkinan meningkatkan pelayan web, dalam hal ini, dibatasi oleh pelayan web luaran.

Bil bahan

Untuk memanfaatkan sepenuhnya kemungkinan lakaran ini, anda memerlukan:

  1. Arduino Uno (diuji pada R3)
  2. Perisai Arduino Ethernet
  3. Satu set Nexa atau yang serupa beroperasi pada 433.92MHz
  4. Sensor PIR (Passive InfraRed) beroperasi pada 433.92MHz
  5. Perintang 10KOhms
  6. LDR
  7. RTC DS3231 (versi pelayan luaran sahaja)
  8. Pemancar 433.92MHz: XY-FST
  9. Penerima 433.92MHz: MX-JS-05V

Minimum yang disyorkan adalah:

  1. Arduino Uno (diuji pada R3)
  2. Satu set Nexa atau yang serupa beroperasi pada 433.92MHz
  3. Perintang 10KOhms
  4. LDR
  5. Pemancar 433.92MHz: XY-FST

(Peninggalan pelindung Ethernet memerlukan pengubahsuaian lakaran yang tidak disediakan dalam arahan ini)

Logik Nexa. Penerangan ringkas

Penerima Nexa mempelajari ID alat kawalan jauh dan ID butang. Dengan kata lain, setiap alat kawalan jauh mempunyai nombor pengirimnya dan setiap pasangan butang hidup / mati mempunyai ID butangnya. Penerima harus mempelajari kod tersebut. Beberapa dokumen Nexa menyatakan bahawa penerima dapat dipasangkan dengan hingga enam alat kawalan jauh. Parameter Nexa:

  • SenderID: ID alat kawalan jauh
  • ButtonID: nombor pasangan butang (hidup / mati). Ia bermula dengan nombor 0
  • Kumpulan: ya / tidak (aka butang "Semua mati / hidup")
  • Perintah: hidup / mati

Langkah-Langkah yang Boleh Diajar. Catatan

Langkah-langkah berbeza yang dijelaskan di sini adalah dengan menawarkan dua rasa yang berbeza mengenai bagaimana mencapai objektif. Jangan ragu untuk memilih yang sesuai dengan keinginan anda. Inilah indeksnya:

Langkah # 1: Litar

Langkah # 2: Nexardu dengan Pelayan Web Dalaman (menampilkan NTP)

Langkah # 3: Nexardu dengan Pelayan Luaran

Langkah # 4: Maklumat Berharga

Langkah 1: Litar…

Litar…
Litar…

Kabel komponen yang pelbagai seperti yang ditunjukkan dalam gambar.

Arduino pin # 8 ke pin Data pada modul RX (penerima) Arduino pin # 2 ke pin Data pada modul RX (penerima) Arduino pin # 7 ke pin Data pada modul TX (pengirim) Arduino pin A0 ke LDR

Konfigurasi RTC. Hanya diperlukan pada konfigurasi Pelayan Luaran. Pin Arduino A4 hingga pin SDA pada modul RTCArduino pin A5 hingga pin SCL pada modul RTC

Langkah 2: Nexardu Dengan Pelayan Web Dalaman (menampilkan NTP)

Perpustakaan

Kod ini menggunakan banyak perpustakaan. Sebilangan besar dari mereka boleh didapati melalui "Pengurus Perpustakaan" dari Arduino IDE. Sekiranya anda tidak menemui perpustakaan yang tersenarai, sila google.

Wire.hSPI.h - Dikehendaki oleh perisai Ethernet Pelanggan NTP

Lakaran

Kod di bawah memanfaatkan kemungkinan menggunakan papan Arduino UNO bukan hanya sebagai alat untuk mengawal peranti Nexa tetapi juga dilengkapi pelayan Web Dalaman. Satu komen untuk ditambahkan ialah modul RTC (Jam Waktu Sebenar) diselaraskan secara automatik melalui NTP (Protokol Masa Rangkaian).

Sebelum memuat naik kod ke Arduino, anda mungkin perlu mengkonfigurasi yang berikut:

  • SenderId: anda perlu menghidu SenderId terlebih dahulu, lihat di bawah
  • PIR_id: anda perlu menghidu SenderId terlebih dahulu, lihat di bawah
  • Alamat IP LAN: tetapkan IP LAN anda ke pelindung Ethernet Arduino anda. Nilai lalai: 192.168.1.99
  • Pelayan NTP: Tidak semestinya diperlukan tetapi bagus untuk google untuk pelayan NTP di kawasan berdekatan anda. Nilai lalai: 79.136.86.176
  • Kod tersebut disesuaikan untuk zon waktu CET. Sesuaikan nilai ini -jika diperlukan, ke zon waktu anda untuk menampilkan waktu yang betul (NTP)

Mengendus kod Nexa

Untuk ini, anda perlu memasang sekurang-kurangnya komponen RX ke Arduino seperti yang ditunjukkan dalam litar.

Cari di bawah lakaran Nexa_OK_3_RX.ino yang, pada masa penulisannya, serasi dengan peranti Nexa NEYCT-705 dan PET-910.

Langkah-langkah yang harus diikuti adalah:

  1. Pasangkan penerima Nexa dengan alat kawalan jauh.
  2. Muat Nexa_OK_3_RX.ino ke Arduino dan buka "Serial Monitor".
  3. Tekan butang alat kawalan jauh yang mengawal penerima Nexa.
  4. Perhatikan "RemoteID" dan "ButtonID".
  5. Tetapkan nombor ini di bawah SenderID dan ButtonID pada deklarasi pemboleh ubah lakaran sebelumnya.

Untuk membaca Id PIR, gunakan lakaran yang sama (Nexa_OK_3_RX.ino) dan baca nilainya pada "Serial Monitor" apabila PIR mengesan pergerakan.

Langkah 3: Nexardu Dengan Pelayan Luaran

Perpustakaan

Kod ini menggunakan banyak perpustakaan. Sebilangan besar boleh didapati melalui "Pengurus Perpustakaan" dari Arduino IDE. Sekiranya anda tidak menemui perpustakaan yang tersenarai, sila google.

Wire.hRTClib.h - ini adalah perpustakaan dari https://github.com/MrAlvin/RTClibSPI.h - Diperlukan oleh perisai EthernetNexaCtrl.h - Pengawal peranti NexaEthernet.h - Untuk mengaktifkan dan menampilkan perisai EthernetRCSwitch.h - Diperlukan untuk PIRTime.h - Diperlukan untuk RTCTimeAlarms.h - Pengurusan penggera masa aREST.h - untuk perkhidmatan RESTful API yang dieksploitasi oleh serverair luaran / wdt.h - Pengendalian pemasa pengawas

Lakaran

Sketsa di bawah menampilkan rasa lain yang sama, kali ini memperkasakan kemungkinan yang dapat diberikan oleh pelayan web luaran. Seperti yang telah disebutkan dalam pengenalan, Pelayan Luar memerlukan penyiapan pelayan web PHP luaran. Persediaan ini lebih rumit dan tidak disokong oleh tutorial ini, namun kod / halaman PHP untuk memeriksa dan mengarahkan Arduino disediakan dengan fungsi asas.

Sebelum memuat naik kod ke Arduino, anda mungkin perlu mengkonfigurasi yang berikut:

  • SenderId: anda perlu menghidu SenderId terlebih dahulu, lihat Mengendus kod Nexa pada langkah sebelumnya
  • PIR_id: anda perlu menghidu SenderId terlebih dahulu, lihat Mengendus kod Nexa pada langkah sebelumnya
  • Alamat IP LAN: tetapkan IP LAN anda ke pelindung Ethernet Arduino anda. Nilai lalai: 192.168.1.99

Untuk prosedur mengendus kod Nexa, sila lihat Langkah # 1.

Fail pelengkap

Muat naik fail nexardu4.txt yang dilampirkan ke pelayan PHP luaran anda dan namakan semula menjadi nexardu4.php

Masa RTC ditetapkan

Untuk menetapkan waktu / tarikh pada RTC saya menggunakan sketsa SetTime yang menyatukan perpustakaan DS1307RTC.

Langkah 4: Maklumat Berharga

Maklumat Berharga
Maklumat Berharga
Maklumat Berharga
Maklumat Berharga

Selamat mengetahui tingkah laku

  1. Ketika Arduino berada di bawah "Kontrol Otomatis Ringan", Arduino dapat melalui empat keadaan yang berbeza berkaitan dengan pencahayaan sekitar dan waktu sehari:

    1. Berjaga-jaga: Arduino menunggu malam yang akan tiba.
    2. Aktif: Malam telah tiba dan Arduino telah menyalakan lampu.
    3. Somnolent: Lampu menyala tetapi masa untuk mematikannya akan tiba. Dimulai pada "time_to_turn_off - PIR_time" iaitu, jika time_to_turn_off ditetapkan ke 22:30 dan PIR_time ditetapkan menjadi 20 minit, maka Arduino akan memasuki keadaan sombong pada pukul 22:10.
    4. Tidak aktif: Malam berlalu, Arduino telah mematikan lampu dan Arduino menunggu waktu subuh menjadi terjaga.
  2. Arduino selalu mendengar isyarat yang dihantar oleh alat kawalan jauh. Ini menampilkan kemungkinan menunjukkan keadaan lampu (hidup / mati) di web ketika alat kawalan jauh digunakan.
  3. Semasa Arduino bangun, ia berusaha untuk mematikan lampu sepanjang masa oleh itu, isyarat ON yang dihantar oleh alat kawalan jauh untuk menghidupkan lampu mungkin ditangkap oleh Arduino. Sekiranya ini berlaku, Arduino akan cuba mematikan lampu lagi.
  4. Semasa Arduino aktif, ia akan menyala lampu sepanjang masa, isyarat OFF yang dihantar oleh alat kawalan jauh untuk mematikan lampu mungkin ditangkap oleh Arduino. Sekiranya ini berlaku, Arduino akan cuba menyalakan semula lampu.
  5. Dalam keadaan suram, lampu dapat dihidupkan / dimatikan dengan alat kawalan jauh. Arduino tidak akan melawan.
  6. Dalam keadaan sombong, hitung mundur PIR akan mula diset semula dari "time_to_turn_off - PIR_time" dan waktu_to_turn_off semakin diperpanjang 20 minit setiap kali PIR mengesan pergerakan. "Isyarat PIR Dikesan!" mesej akan ditunjukkan di penyemak imbas web apabila ini berlaku.
  7. Sementara Arduino tidak aktif lampu boleh dinyalakan dan dimatikan melalui alat kawalan jauh. Arduino tidak akan melawan.
  8. Kitaran semula atau kuasa Arduino akan membawanya ke mod aktif. Ini bermaksud bahawa jika Arduino telah diset semula setelah time_turn_off maka Arduino akan menyalakan lampu. Untuk mengelakkan ini, Arduino perlu dibawa ke mod manual (tandakan "Light Automatic Control") dan tunggu hingga pagi untuk mendapatkannya kembali ke "Light Automatic Control".
  9. Seperti yang disebutkan di atas, Arduino menunggu waktu subuh untuk kembali aktif. Oleh kerana itu, sistem dapat tertipu dengan mengarahkan cahaya yang cukup kuat ke arah sensor cahaya yang melepasi ambang "minimum luminosity". Sekiranya ini berlaku, maka Arduino akan berubah menjadi keadaan aktif.
  10. Nilai Toleransi sangat penting untuk mengelakkan sistem mengaktifkan dan mematikan sekitar nilai ambang Luminositi Minimum. Lampu LED, kerana kerlipannya dan daya tindak balasnya yang tinggi, boleh menjadi sumber tingkah laku mengepak. Tingkatkan nilai toleransi sekiranya anda mengalami masalah ini. Saya menggunakan nilai 7.

Selamat mengetahui kod

  1. Seperti yang anda perhatikan, kodnya sangat besar dan menggunakan sejumlah besar perpustakaan. Ini menjejaskan jumlah memori percuma yang diperlukan untuk timbunan. Saya melihat perilaku tidak stabil pada masa lalu menyebabkan sistem dihentikan, terutamanya selepas panggilan web. Oleh itu, cabaran terbesar yang saya hadapi adalah menghadkan ukurannya dan penggunaan pelbagai pemboleh ubah untuk menjadikan sistem stabil.
  2. Kod yang mengeksploitasi pelayan dalaman yang digunakan oleh saya di rumah, telah berjalan sekarang sejak Februari 2016 tanpa masalah.
  3. Saya telah berusaha keras untuk memperkayakan kod dengan penjelasan. Manfaatkan ini untuk bermain dengan pelbagai parameter seperti jumlah penghantaran kod Nexa setiap pecah, masa penyegerakan NTP, dll.
  4. Kod ini tidak mempunyai penjimatan siang. Ini perlu disesuaikan melalui penyemak imbas web apabila berlaku.

Beberapa perkara yang perlu dipertimbangkan

  1. Tambahkan antena ke modul frekuensi radio (RF) TX dan RX. Ini akan menjimatkan masa anda mengeluh mengenai dua perkara utama: ketahanan dan jangkauan isyarat RF. Saya menggunakan wayar 50Ohms 17.28cm (6.80in) panjang.
  2. Ini boleh dilakukan dengan sistem automasi rumah lain seperti Proove, misalnya. Salah satu syarat yang harus dipenuhi adalah menjadikannya beroperasi pada frekuensi 433.92MHz.
  3. Sakit kepala dengan Arduino adalah menangani perpustakaan yang mungkin dikemas kini sepanjang masa dan tiba-tiba tidak sesuai dengan lakaran "lama" anda; masalah yang sama mungkin timbul semasa menaiktaraf Arduino IDE anda. Berhati-hatilah bahawa ini boleh menjadi masalah kita di sini - ya, masalah saya juga.
  4. Pelbagai pelanggan web serentak dengan mod cahaya yang berbeza mewujudkan keadaan "berkelip".

Tangkapan Skrin

Dalam karusel gambar di atas, anda dapat melihat tangkapan skrin halaman web yang dipaparkan semasa anda memanggil Arduino melalui penyemak imbas web anda. Memandangkan konfigurasi IP lalai kod, URL akan menjadi

Salah satu aspek yang mungkin perlu diperbaiki adalah penempatan tombol "kirim" kerana ia berlaku pada semua kotak input dan tidak hanya pada "Kontrol Otomatis Ringan" seperti yang orang sangka. Dengan kata lain, jika anda ingin mengubah salah satu nilai yang mungkin, anda selalu perlu menekan butang "hantar".

Dokumentasi terperinci / lanjutan

Saya telah melampirkan fail berikut supaya fail dapat membantu anda memahami keseluruhan penyelesaiannya, khas untuk penyelesaian masalah dan penambahbaikan.

Arduino_NexaControl_IS.pdf menyediakan dokumentasi mengenai penyelesaian Pelayan Dalaman.

Arduino_NexaControl_ES.pdf menyediakan dokumentasi mengenai penyelesaian Pelayan Luaran.

Rujukan luaran

Sistem Nexa (Bahasa Sweden)

Langkah 5: Selesai

Selesai!
Selesai!

Di sana anda telah menyelesaikan semuanya dan beraksi!

Sarung Arduino Uno boleh didapati di Thingiverse sebagai "Arduino Uno Rev3 with Ethernet Shield XL-case".

Disyorkan: