![Dekoder Sensor RF Arduino: 5 Langkah Dekoder Sensor RF Arduino: 5 Langkah](https://i.howwhatproduce.com/images/002/image-3086-57-j.webp)
Isi kandungan:
2025 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2025-01-23 15:01
![Penyahkod Sensor RF Arduino Penyahkod Sensor RF Arduino](https://i.howwhatproduce.com/images/002/image-3086-58-j.webp)
Rumah saya sebelumnya dilengkapi dengan sistem keselamatan yang telah dipasang sebelumnya yang mempunyai sensor pintu, sensor gerakan, dan panel kawalan. Segala-galanya disambungkan dengan kuat ke kotak elektronik besar di dalam almari dan terdapat arahan untuk memasang telefon bimbit ke darat untuk memanggil secara automatik sekiranya terdapat penggera. Semasa saya mencuba bermain, saya dapati salah satu sensor pintu dipasang dengan tidak lengkap dan yang lain berselang-seling kerana penyelarasan yang tidak betul. Begitu banyak untuk pemasangan profesional yang disebut-sebut pada kad perniagaan syarikat keselamatan. Penyelesaian saya pada masa itu adalah membeli beberapa kamera keselamatan internet dan penggera keselamatan tanpa wayar yang murah.
Laju ke hari ini dan penggera tanpa wayar ada di dalam kotak di ruang bawah tanah saya. Setelah memperoleh penerima RF yang murah, saya memutuskan untuk melihat apakah saya dapat menyahkod mesej yang dihantar oleh pelbagai sensor penggera dan alat kawalan jauh yang saya ada. Saya mengira bahawa kerana mereka semua bekerja dengan kotak penggera yang murah maka mereka semua mesti menggunakan format mesej yang sama dengan hanya ID yang berbeza. Saya segera mengetahui bahawa mereka serupa hanya dalam struktur umum mesej. Oleh itu, projek ini dengan cepat berubah dari sepele menjadi sangat menarik.
Langkah 1: Modul Sensor
![Modul Sensor Modul Sensor](https://i.howwhatproduce.com/images/002/image-3086-59-j.webp)
![Modul Sensor Modul Sensor](https://i.howwhatproduce.com/images/002/image-3086-60-j.webp)
![Modul Sensor Modul Sensor](https://i.howwhatproduce.com/images/002/image-3086-61-j.webp)
![Modul Sensor Modul Sensor](https://i.howwhatproduce.com/images/002/image-3086-62-j.webp)
Seperti yang anda lihat dalam gambar di atas pemancar termasuk sensor pintu terbuka, pengesan gerakan, alat pelindung jarak jauh, dan papan kekunci tanpa wayar yang digunakan untuk memprogram kotak penggera. Ternyata, tidak ada dua peranti ini yang menggunakan panjang penyegerakan atau tempoh bit yang sama. Satu-satunya kesamaan, selain panjang mesej, adalah format asas bit. Setiap bit memerlukan tempoh masa yang tetap dengan perbezaan antara sifar dan satu menjadi kitaran tugas bahagian tinggi / rendah.
Bentuk gelombang cantik yang ditunjukkan di atas BUKAN apa yang pertama kali saya terima. Oleh kerana terdapat begitu banyak lalu lintas di jalur frekuensi 433-MHz, saya harus memastikan untuk mengaktifkan sensor sebelum saya menetapkan skop untuk melakukan satu pencetus. Nasib baik sensor mengeluarkan beberapa salinan mesej data apabila diaktifkan dan alat kawalan jauh dan papan kekunci terus mengeluarkan mesej selagi kekunci ditekan. Dengan menggunakan skop saya dapat menentukan panjang penyegerakan dan jangka masa bit data untuk setiap item. Seperti yang dinyatakan sebelum ini, masa penyegerakan berbeza dan masa bit berbeza tetapi format mesej semuanya mempunyai penyegerakan tahap rendah diikuti oleh 24 bit data dan satu bit berhenti. Itu sudah cukup bagi saya untuk dapat membina penyahkod generik dalam perisian tanpa perlu membuat kod keras semua butiran yang berbeza untuk setiap peranti.
Langkah 2: Perkakasan
![Perkakasan Perkakasan](https://i.howwhatproduce.com/images/002/image-3086-63-j.webp)
![Perkakasan Perkakasan](https://i.howwhatproduce.com/images/002/image-3086-64-j.webp)
Pada asalnya saya membina penyahkod sensor menggunakan mikrokontroler PIC dan bahasa pemasangan. Saya baru-baru ini bermain dengan varian Arduino jadi saya fikir saya akan melihat sama ada saya dapat menirunya. Skema ringkas ditunjukkan di atas dan terdapat juga gambar prototaip saya. Yang saya lakukan hanyalah menggunakan tiga wayar pelompat biasa untuk pergi dari Arduino Nano ke papan penerima RF. Kuasa dan satu baris data adalah semua yang diperlukan.
Sekiranya anda membaca Instructable saya pada "Paparan Waktu dan Cuaca 3-dalam-1" anda akan melihat bahawa saya menggunakan penerima RXB6, 433-MHz biasa. Anda mungkin dapat membuat penerima yang sangat murah berfungsi pada jarak pendek yang diperlukan untuk projek ini tetapi saya tetap mengesyorkan menggunakan penerima super-heterodyne.
Langkah 3: Perisian
Perisian menukar bit yang diterima menjadi watak ASCII yang dapat dipaparkan. Ia mengeluarkan nilai panjang penyegerakan, dan panjang bit 1 dan 0. Oleh kerana saya sudah mengetahui panjang penyegerakan dan format bit, saya boleh menulis perisian khusus untuknya. Sebagai gantinya, saya memutuskan untuk melihat apakah saya dapat menulisnya untuk menyelesaikan panjang penyegerakan dan untuk mengetahui bit data secara automatik. Perkara itu akan memudahkan pengubahsuaian sekiranya saya ingin mengesan format lain pada suatu masa. Penting untuk diperhatikan bahawa perisian tidak tahu sama ada bit pertama dari mesej adalah 1 atau 0. Ia menganggap bahawa ia adalah 1 tetapi, jika mengetahui bahawa ia sepatutnya menjadi sifar, ia akan membalikkan bit dalam mesej yang lengkap sebelum menghantarnya ke port bersiri.
Waktu nadi penyegerakan dan bit data ditentukan dengan menggunakan input gangguan luaran INT0 untuk mencetuskan pengendali gangguan. INT0 boleh mencetuskan kenaikan, jatuh, atau kedua-dua tepi, atau pada tahap rendah yang stabil. Perisian terganggu di kedua-dua bahagian dan mengukur jumlah masa nadi tetap rendah. Itu menyederhanakan perkara kerana permulaan / penyegerakan mesej adalah nadi tahap rendah dan bit dapat ditentukan berdasarkan masa tahap rendahnya.
Pengendali interrupt terlebih dahulu menentukan apakah kiraan yang ditangkap cukup lama untuk menjadi nadi permulaan / penyegerakan. Pelbagai peranti yang saya gunakan menggunakan denyutan segerak 4, 9, 10, dan 14 milisaat. Pernyataan menentukan untuk nilai penyegerakan minimum / maksimum yang dibenarkan berada di hadapan dalam perisian dan pada masa ini ditetapkan untuk 3 dan 16 milisaat. Masa bit juga berbeza antara sensor sehingga algoritma bit penyahkodan perlu mengambil kira. Masa bit bit pertama disimpan seperti masa bit seterusnya yang mempunyai perbezaan yang signifikan dari bit pertama. Perbandingan langsung masa bit berikutnya tidak mungkin dilakukan oleh faktor "fudge factor" ("Variation"). Penyahkodan bit dimulakan dengan menganggap bahawa bit data pertama selalu direkodkan sebagai logik 1. Nilai itu disimpan dan kemudian digunakan untuk menguji bit berikutnya. Sekiranya pengiraan bit data berikutnya berada dalam tetingkap varians dari nilai yang disimpan maka ia juga direkodkan sebagai logik 1. Sekiranya berada di luar tetingkap varians dari nilai yang disimpan maka ia dicatat sebagai logik 0. Jika logik 0 masa bit lebih pendek daripada waktu bit pertama maka bendera ditetapkan untuk memberitahu perisian bahawa bait perlu dibalik sebelum memaparkan. Satu-satunya kes di mana algoritma ini gagal adalah apabila bit dalam mesej semuanya 0. Kita boleh menerima batasan itu kerana mesej seperti itu tidak bermakna.
Sensor yang saya minati semuanya mempunyai panjang mesej 24 bit data tetapi perisiannya tidak terhad pada panjangnya. Terdapat penyangga hingga tujuh bait (lebih banyak dapat ditambahkan) dan menentukan panjang mesej minimum dan maksimum dalam bait. Perisian disediakan untuk mengumpulkan bit, mengubahnya menjadi bait, menyimpannya sementara, dan kemudian mengeluarkannya dalam format ASCII melalui port bersiri. Peristiwa yang mencetuskan output mesej adalah penerimaan nadi permulaan / penyegerakan baru.
Langkah 4: Pembalakan Data
![Pembalakan Data Pembalakan Data](https://i.howwhatproduce.com/images/002/image-3086-65-j.webp)
Perisian ini disiapkan untuk mengeluarkan data yang ditukar sebagai watak ASCII melalui output siri (TX) Arduino. Semasa membuat versi PIC, saya perlu menyambung ke program terminal pada PC untuk memaparkan data. Satu kelebihan dari Arduino IDE ialah ia mempunyai fungsi Serial Monitor yang terpasang. Saya menetapkan kadar port bersiri ke 115.2k dan kemudian menetapkan tetingkap Monitor Serial ke kadar yang sama. Tangkapan skrin di sini menunjukkan paparan khas dengan output dari pelbagai sensor yang saya miliki. Seperti yang anda lihat, data kadangkala tidak sempurna tetapi anda dapat dengan mudah menentukan nilai sebenar setiap sensor.
Langkah 5: Perisian Penerima Sampel
![Perisian Penerima Sampel Perisian Penerima Sampel](https://i.howwhatproduce.com/images/002/image-3086-66-j.webp)
Saya telah menyertakan contoh senarai perisian yang menunjukkan bagaimana anda dapat menggunakan maklumat yang dikumpulkan untuk menerima sekumpulan kod tertentu untuk aplikasi anda. Contoh ini disediakan untuk meniru salah satu kedai terpencil Etekcity saya. Satu arahan menghidupkan LED yang dibina ke dalam Nano (D13) dan arahan yang lain mematikan LED. Sekiranya anda tidak mempunyai LED yang dipasang di Arduino anda, kemudian tambahkan perintang dan LED seperti yang ditunjukkan dalam rajah. Dalam aplikasi yang sebenarnya, fungsi ini akan menghidupkan / mematikan daya untuk soket elektrik (menggunakan relay atau triac). Masa penyegerakan, masa bit, dan bait data yang diharapkan semuanya ditentukan di muka untuk kemudahan pengubahsuaian. Anda boleh menggunakan salah satu baris data yang tersisa untuk menghidupkan / mematikan sesuatu, dll untuk aplikasi khusus anda. Cukup tambahkan definisi kod arahan yang berlaku dan ganti logik hidup / mati LED dalam "gelung" untuk memenuhi keperluan anda.
Disyorkan:
Kipas Pendingin Auto Menggunakan Sensor dan Sensor Suhu dan Kelembapan DHT11 Dengan Arduino: 8 Langkah
![Kipas Pendingin Auto Menggunakan Sensor dan Sensor Suhu dan Kelembapan DHT11 Dengan Arduino: 8 Langkah Kipas Pendingin Auto Menggunakan Sensor dan Sensor Suhu dan Kelembapan DHT11 Dengan Arduino: 8 Langkah](https://i.howwhatproduce.com/images/002/image-4702-j.webp)
Kipas Pendingin Auto Menggunakan Servo dan DHT11 Sensor Suhu dan Kelembapan Dengan Arduino: Dalam tutorial ini kita akan belajar bagaimana memulakan & putar kipas apabila suhu meningkat di atas tahap tertentu
Dekoder Morse Tree Binary: 7 Langkah (dengan Gambar)
![Dekoder Morse Tree Binary: 7 Langkah (dengan Gambar) Dekoder Morse Tree Binary: 7 Langkah (dengan Gambar)](https://i.howwhatproduce.com/images/002/image-4706-14-j.webp)
Bode Tree Morse Decoder: a.articles {font-size: 110.0%; font-weight: tebal; gaya fon: miring; hiasan teks: tiada; background-color: red;} a.articles: hover {background-color: black;} Petunjuk ini menerangkan cara menyahkod Morse Code menggunakan Arduino Uno R3.T
Dekoder Protokol Kawalan Jauh RC5 Tanpa Perpustakaan: 4 Langkah
![Dekoder Protokol Kawalan Jauh RC5 Tanpa Perpustakaan: 4 Langkah Dekoder Protokol Kawalan Jauh RC5 Tanpa Perpustakaan: 4 Langkah](https://i.howwhatproduce.com/images/008/image-23667-j.webp)
Dekoder Protokol Kawalan Jauh RC5 Tanpa Perpustakaan: sebelum menyahkod rc5 terlebih dahulu kita membincangkan apa itu perintah rc5 dan apakah strukturnya. jadi pada dasarnya perintah rc5 digunakan dalam alat kawalan jauh yang digunakan di televisyen, pemain cd, d2h, sistem teater rumah dll. Ia mempunyai 13 atau 14 bit yang disusun dalam
Kotak Dekoder Bilik Escape: 7 Langkah (dengan Gambar)
![Kotak Dekoder Bilik Escape: 7 Langkah (dengan Gambar) Kotak Dekoder Bilik Escape: 7 Langkah (dengan Gambar)](https://i.howwhatproduce.com/images/002/image-4420-48-j.webp)
Escape Room Decoder Box: Escape Room adalah aktiviti yang sangat menyeronokkan yang sangat menarik dan bagus untuk kerja berpasukan. Pernahkah anda berfikir untuk membuat Escape Room anda sendiri? Dengan kotak penyahkod ini, anda boleh berada dalam perjalanan dengan baik! Lebih baik anda berfikir tentang menggunakan es
Dekoder Jalur Magnetik Arduino: 4 Langkah (dengan Gambar)
![Dekoder Jalur Magnetik Arduino: 4 Langkah (dengan Gambar) Dekoder Jalur Magnetik Arduino: 4 Langkah (dengan Gambar)](https://i.howwhatproduce.com/images/005/image-13990-37-j.webp)
Arduino Magnetic Stripe Decoder: Instruksional ini menunjukkan cara menggunakan beberapa kod yang tersedia secara bebas, arduino, dan pembaca jalur magnetik standard untuk mengimbas dan memaparkan data yang disimpan pada kad jalur magnetik seperti kad kredit, ID pelajar, dll. Saya mendapat inspirasi untuk siarkan ini selepas